Кибербезопасность

Учебник Криптография для начинающих для начинающих

52 урока · 14 разделов · бесплатно, без регистрации

Каждый раз, когда ты заходишь на сайт по HTTPS, отправляешь сообщение в мессенджере или вводишь пароль, в дело вступает криптография. В этом курсе мы разберёмся, как работает шифрование — от простого шифра Цезаря, который придумали две тысячи лет назад, до современных алгоритмов, защищающих весь интернет. Будет много запускаемого кода на Python: ты сам зашифруешь сообщение, взломаешь слабый шифр частотным анализом и посчитаешь хеш. Цель курса — понимание, а не взлом чужих систем.

Курс «Криптография для начинающих» состоит из 14 разделов и 52 уроков: Введение в криптографию, Классические шифры, Симметричное шифрование, Хеш-функции, Асимметричная криптография, Криптография вокруг нас, История криптографии, Криптография в коде: как делать ПРАВИЛЬНО, Блокчейн и криптовалюты под капотом, Продвинутые темы простыми словами, Постквантовая криптография, Криптопротоколы на практике, Криптоанализ и атаки на реализации и Продвинутая прикладная криптография. Уроки идут по порядку — от основ к более сложным темам, в каждом есть объяснение с примерами, а в конце — вопросы для самопроверки. К урокам привязаны задачи с автоматической проверкой: прочитали тему — сразу закрепили её кодом.

Программа курса

  1. 1 Введение в криптографию

    1. Зачем нужна криптография

      Зачем нужна криптография в повседневной жизни: конфиденциальность, целостность и подлинность данных на простых примерах.

    2. Открытый текст, ключ и шифр

      Главные термины криптографии: открытый текст, шифр-текст, ключ, алгоритм шифрования. Принцип Керкгоффса простыми словами.

    3. Кодирование — это не шифрование

      Чем кодирование отличается от шифрования. Почему Base64 — это не защита, а просто другой способ записать те же данные.

  2. 2 Классические шифры

    1. Шифр Цезаря

      Шифр Цезаря на Python: как работает сдвиг букв, как зашифровать и расшифровать сообщение и почему его легко взломать перебором.

    2. Шифр простой подстановки

      Шифр простой подстановки: каждая буква заменяется на свою. Огромное число ключей, но уязвимость к частотному анализу.

    3. Взлом частотным анализом

      Частотный анализ на Python: как взломать шифр подстановки, считая частоты букв. Учебная классика, объясняющая слабость простых шифров.

    4. Шифр Виженера

      Шифр Виженера на Python: многоалфавитная замена с ключевым словом. Почему он сильнее Цезаря и в чём всё равно его слабость.

  3. 3 Симметричное шифрование

    1. Один ключ на двоих

      Симметричное шифрование простыми словами: один общий секретный ключ для шифрования и расшифровки. Плюсы, минусы и главная проблема.

    2. Блочные и потоковые шифры

      Блочные и потоковые шифры: в чём разница. Как данные шифруются блоками или побитово и где какой подход применяется.

    3. AES и режимы шифрования

      AES концептуально и режимы работы блочного шифра. Почему режим ECB небезопасен и зачем нужны режимы вроде CBC.

  4. 4 Хеш-функции

    1. Что такое хеш

      Что такое хеш-функция: цифровой отпечаток данных. Необратимость, фиксированная длина и детерминированность на примерах с hashlib.

    2. Лавинный эффект и коллизии

      Лавинный эффект хеш-функций: одно изменённое слово полностью меняет хеш. Что такое коллизии и почему MD5 устарел.

    3. Хеширование паролей и соль

      Как безопасно хранить пароли: хеширование и соль. Почему нельзя хранить пароли в открытом виде и что такое радужные таблицы.

    4. Проверка целостности

      Проверка целостности данных хешами: контрольные суммы файлов и HMAC. Как убедиться, что файл не подменили при скачивании.

  5. 5 Асимметричная криптография

    1. Два ключа вместо одного

      Асимметричное шифрование: открытый и закрытый ключ простыми словами. Аналогия с почтовым ящиком и решение проблемы обмена ключами.

    2. Идея RSA простыми словами

      Как работает RSA простыми словами: умножение больших простых чисел и сложность факторизации. Почему алгоритм надёжен.

    3. Цифровая подпись

      Цифровая подпись простыми словами: как подтвердить авторство и целостность сообщения с помощью закрытого ключа и хеша.

  6. 6 Криптография вокруг нас

    1. HTTPS и TLS

      Как работает HTTPS и TLS: что значит замочек в браузере, сертификаты и почему асимметрия и симметрия работают вместе.

    2. Сквозное шифрование в мессенджерах

      Сквозное шифрование (E2E) в мессенджерах: как работает, чем отличается от обычного шифрования и почему сервер не читает сообщения.

    3. Пароли и менеджеры паролей

      Менеджеры паролей и безопасность аккаунтов: почему важны уникальные длинные пароли, как работает мастер-пароль и зачем нужна 2FA.

    4. Блокчейн и главные правила

      Блокчейн кратко через хеши и подписи. Главные правила криптографии: не изобретай свой шифр, используй проверенные библиотеки.

  7. 7 История криптографии

    1. Древние шифры: скитала, Цезарь и первые секреты

      Спартанская скитала, шифр Цезаря и первые способы прятать сообщения. Запускаемые Python-демо древних шифров для начинающих.

    2. Аль-Кинди и частотный анализ

      Как арабский учёный Аль-Кинди в IX веке изобрёл частотный анализ и научился взламывать шифры подстановки. Запускаемое демо.

    3. Шифр Виженера и его эпоха

      Шифр Виженера — неуязвимый код, который три века считали невзламываемым. Как он работает и почему частотный анализ его не берёт. Демо на Python.

    4. Энигма, Тьюринг и рождение современной криптографии

      Машина Энигма, взлом в Блетчли-парке, Алан Тьюринг и как это сократило Вторую мировую. Рождение современной криптографии.

  8. 8 Криптография в коде: как делать ПРАВИЛЬНО

    1. Не изобретай свой шифр

      Главное правило криптографии: не изобретай свой шифр. Почему любительские шифры ломаются и зачем доверять проверенным библиотекам.

    2. Случайность, которой можно доверять: secrets vs random

      Почему random нельзя использовать для паролей и ключей, а secrets — можно. Предсказуемость генератора и безопасная случайность в Python.

    3. Хеширование паролей: соль и медленные хеши

      Как правильно хранить пароли: почему нельзя в открытом виде и обычным SHA-256, зачем нужна соль и медленные хеши bcrypt и Argon2.

    4. Кодирование для передачи: Base64 и hex

      Чем кодирование отличается от шифрования. Base64 и hex для безопасной передачи двоичных данных. Запускаемые примеры на Python.

  9. 9 Блокчейн и криптовалюты под капотом

    1. Цепочка блоков: как хеши делают историю неизменяемой

      Как блокчейн использует SHA-256, чтобы любое изменение прошлого было заметно. Запускаемое демо цепочки блоков на Python.

    2. Цифровые подписи и кошельки

      Как цифровые подписи доказывают, что транзакцию отправил владелец, и почему кошелёк — это пара ключей. Концепция на простом демо.

    3. Доказательство работы и майнинг

      Что такое proof-of-work простыми словами и как майнеры ищут хеш с нулями. Запускаемое демо майнинга на SHA-256 в Python.

  10. 10 Продвинутые темы простыми словами

    1. Эллиптические кривые: новый стандарт

      Почему эллиптические кривые (ECC) вытесняют RSA: та же стойкость при коротких ключах. Концепция простыми словами для начинающих.

    2. Квантовая угроза и постквантовая криптография

      Почему квантовые компьютеры угрожают RSA и ECC, что такое алгоритм Шора и как готовится постквантовая криптография. Простыми словами.

    3. Стеганография: прятать данные в картинках

      Стеганография прячет сам факт сообщения в картинках через младшие биты. Чем она отличается от шифрования. Запускаемое демо на Python.

    4. Zero-knowledge: доказать, не раскрывая

      Доказательства с нулевым разглашением (zero-knowledge): как доказать, что знаешь секрет, не раскрывая его. Простое объяснение и аналогии.

  11. 11 Постквантовая криптография

    1. Квантовая угроза: алгоритмы Шора и Гровера

      Почему квантовый компьютер ломает RSA и ECC через алгоритм Шора, как Гровер бьёт по симметричному шифрованию и хешам, и что такое угроза «harvest now, decrypt later».

    2. Решёточная криптография

      Решёточная криптография простыми словами: что такое решётки, почему задача обучения с ошибками LWE считается квантово-стойкой и как на ней строятся Kyber и Dilithium.

    3. Стандарты NIST PQC и миграция

      Стандарты NIST по постквантовой криптографии: ML-KEM, ML-DSA и SLH-DSA, зачем нужны гибридные схемы, как индустрия переходит на новые алгоритмы и какие сроки реалистичны.

    4. Хеш-подписи и другие подходы

      Хеш-подписи SPHINCS+ (SLH-DSA): почему подпись на основе хеш-функций считается самой консервативной постквантовой схемой, её плюсы, большие размеры подписи и где её применяют.

  12. 12 Криптопротоколы на практике

    1. TLS 1.3: рукопожатие изнутри

      Как устроено рукопожатие TLS 1.3: обмен ключами ECDHE, аутентификация сертификатом, forward secrecy, 0-RTT и его риски, чем 1.3 лучше TLS 1.2.

    2. Сквозное шифрование: протокол Signal

      Как мессенджеры защищают переписку сквозным шифрованием: протокол Signal, X3DH для начала диалога, Double Ratchet, forward secrecy и post-compromise security.

    3. PGP/GPG: шифрование и подпись

      PGP и GPG на практике: ключевые пары, шифрование почты и файлов, цифровая подпись и проверка, web of trust и частые ошибки при работе с ключами.

    4. Обмен ключами и согласование

      Обмен ключами вглубь: алгоритм Диффи-Хеллмана, эллиптический ECDH, защита от MITM через аутентификацию, согласование сессионных ключей и роль KDF.

  13. 13 Криптоанализ и атаки на реализации

    1. Атаки по сторонним каналам

      Что такое атаки по сторонним каналам: утечки через время выполнения и энергопотребление. Почему «правильный» алгоритм небезопасен и как писать constant-time-код.

    2. Padding oracle и ошибки режимов

      Padding oracle: как утечка одного бита «корректен ли паддинг» расшифровывает CBC без ключа. Почему опасны MAC-then-Encrypt и режимы без аутентификации, защита — AEAD.

    3. Слабая случайность и предсказуемые ключи

      Почему плохой ГПСЧ губит криптографию: предсказуемые ключи, nonce и токены. Энтропия на пальцах, реальные провалы и защита — CSPRNG и модуль secrets в Python.

    4. Грабли реализации криптографии

      Типичные ошибки реализации крипто: самописные алгоритмы, повтор nonce, небезопасное сравнение, плохие дефолты. Принципы и защита — проверенные библиотеки, AEAD, secrets.

  14. 14 Продвинутая прикладная криптография

    1. Доказательства с нулевым разглашением (ZKP)

      Что такое zero-knowledge proof: доказать знание секрета, не раскрывая его. Интерактивные доказательства, zk-SNARK и zk-STARK простыми словами, применения в приватности и блокчейне.

    2. Гомоморфное шифрование

      Гомоморфное шифрование: вычисления прямо над зашифрованными данными. Частичное и полное (FHE), приватные вычисления в облаке, bootstrapping, реальные ограничения и накладные расходы.

    3. Многосторонние вычисления и пороговая криптография

      Secure multi-party computation (MPC): посчитать результат, не раскрывая входы. Разделение секрета Шамира с Python-демо, пороговые подписи и схемы (t,n), применения в кошельках и аукционах.

    4. Схемы обязательств и проверяемая случайность

      Commitment schemes: запечатать значение и раскрыть позже без подмены. Проверяемая случайная функция (VRF), свойства hiding/binding, применения в протоколах, лотереях и блокчейне.