Учебник Криптография для начинающих для начинающих
Каждый раз, когда ты заходишь на сайт по HTTPS, отправляешь сообщение в мессенджере или вводишь пароль, в дело вступает криптография. В этом курсе мы разберёмся, как работает шифрование — от простого шифра Цезаря, который придумали две тысячи лет назад, до современных алгоритмов, защищающих весь интернет. Будет много запускаемого кода на Python: ты сам зашифруешь сообщение, взломаешь слабый шифр частотным анализом и посчитаешь хеш. Цель курса — понимание, а не взлом чужих систем.
Курс «Криптография для начинающих» состоит из 14 разделов и 52 уроков: Введение в криптографию, Классические шифры, Симметричное шифрование, Хеш-функции, Асимметричная криптография, Криптография вокруг нас, История криптографии, Криптография в коде: как делать ПРАВИЛЬНО, Блокчейн и криптовалюты под капотом, Продвинутые темы простыми словами, Постквантовая криптография, Криптопротоколы на практике, Криптоанализ и атаки на реализации и Продвинутая прикладная криптография. Уроки идут по порядку — от основ к более сложным темам, в каждом есть объяснение с примерами, а в конце — вопросы для самопроверки. К урокам привязаны задачи с автоматической проверкой: прочитали тему — сразу закрепили её кодом.
Программа курса
1 Введение в криптографию
- Зачем нужна криптография
Зачем нужна криптография в повседневной жизни: конфиденциальность, целостность и подлинность данных на простых примерах.
- Открытый текст, ключ и шифр
Главные термины криптографии: открытый текст, шифр-текст, ключ, алгоритм шифрования. Принцип Керкгоффса простыми словами.
- Кодирование — это не шифрование
Чем кодирование отличается от шифрования. Почему Base64 — это не защита, а просто другой способ записать те же данные.
- Зачем нужна криптография
2 Классические шифры
- Шифр Цезаря
Шифр Цезаря на Python: как работает сдвиг букв, как зашифровать и расшифровать сообщение и почему его легко взломать перебором.
- Шифр простой подстановки
Шифр простой подстановки: каждая буква заменяется на свою. Огромное число ключей, но уязвимость к частотному анализу.
- Взлом частотным анализом
Частотный анализ на Python: как взломать шифр подстановки, считая частоты букв. Учебная классика, объясняющая слабость простых шифров.
- Шифр Виженера
Шифр Виженера на Python: многоалфавитная замена с ключевым словом. Почему он сильнее Цезаря и в чём всё равно его слабость.
- Шифр Цезаря
3 Симметричное шифрование
- Один ключ на двоих
Симметричное шифрование простыми словами: один общий секретный ключ для шифрования и расшифровки. Плюсы, минусы и главная проблема.
- Блочные и потоковые шифры
Блочные и потоковые шифры: в чём разница. Как данные шифруются блоками или побитово и где какой подход применяется.
- AES и режимы шифрования
AES концептуально и режимы работы блочного шифра. Почему режим ECB небезопасен и зачем нужны режимы вроде CBC.
- Один ключ на двоих
4 Хеш-функции
- Что такое хеш
Что такое хеш-функция: цифровой отпечаток данных. Необратимость, фиксированная длина и детерминированность на примерах с hashlib.
- Лавинный эффект и коллизии
Лавинный эффект хеш-функций: одно изменённое слово полностью меняет хеш. Что такое коллизии и почему MD5 устарел.
- Хеширование паролей и соль
Как безопасно хранить пароли: хеширование и соль. Почему нельзя хранить пароли в открытом виде и что такое радужные таблицы.
- Проверка целостности
Проверка целостности данных хешами: контрольные суммы файлов и HMAC. Как убедиться, что файл не подменили при скачивании.
- Что такое хеш
5 Асимметричная криптография
- Два ключа вместо одного
Асимметричное шифрование: открытый и закрытый ключ простыми словами. Аналогия с почтовым ящиком и решение проблемы обмена ключами.
- Идея RSA простыми словами
Как работает RSA простыми словами: умножение больших простых чисел и сложность факторизации. Почему алгоритм надёжен.
- Цифровая подпись
Цифровая подпись простыми словами: как подтвердить авторство и целостность сообщения с помощью закрытого ключа и хеша.
- Два ключа вместо одного
6 Криптография вокруг нас
- HTTPS и TLS
Как работает HTTPS и TLS: что значит замочек в браузере, сертификаты и почему асимметрия и симметрия работают вместе.
- Сквозное шифрование в мессенджерах
Сквозное шифрование (E2E) в мессенджерах: как работает, чем отличается от обычного шифрования и почему сервер не читает сообщения.
- Пароли и менеджеры паролей
Менеджеры паролей и безопасность аккаунтов: почему важны уникальные длинные пароли, как работает мастер-пароль и зачем нужна 2FA.
- Блокчейн и главные правила
Блокчейн кратко через хеши и подписи. Главные правила криптографии: не изобретай свой шифр, используй проверенные библиотеки.
- HTTPS и TLS
7 История криптографии
- Древние шифры: скитала, Цезарь и первые секреты
Спартанская скитала, шифр Цезаря и первые способы прятать сообщения. Запускаемые Python-демо древних шифров для начинающих.
- Аль-Кинди и частотный анализ
Как арабский учёный Аль-Кинди в IX веке изобрёл частотный анализ и научился взламывать шифры подстановки. Запускаемое демо.
- Шифр Виженера и его эпоха
Шифр Виженера — неуязвимый код, который три века считали невзламываемым. Как он работает и почему частотный анализ его не берёт. Демо на Python.
- Энигма, Тьюринг и рождение современной криптографии
Машина Энигма, взлом в Блетчли-парке, Алан Тьюринг и как это сократило Вторую мировую. Рождение современной криптографии.
- Древние шифры: скитала, Цезарь и первые секреты
8 Криптография в коде: как делать ПРАВИЛЬНО
- Не изобретай свой шифр
Главное правило криптографии: не изобретай свой шифр. Почему любительские шифры ломаются и зачем доверять проверенным библиотекам.
- Случайность, которой можно доверять: secrets vs random
Почему random нельзя использовать для паролей и ключей, а secrets — можно. Предсказуемость генератора и безопасная случайность в Python.
- Хеширование паролей: соль и медленные хеши
Как правильно хранить пароли: почему нельзя в открытом виде и обычным SHA-256, зачем нужна соль и медленные хеши bcrypt и Argon2.
- Кодирование для передачи: Base64 и hex
Чем кодирование отличается от шифрования. Base64 и hex для безопасной передачи двоичных данных. Запускаемые примеры на Python.
- Не изобретай свой шифр
9 Блокчейн и криптовалюты под капотом
- Цепочка блоков: как хеши делают историю неизменяемой
Как блокчейн использует SHA-256, чтобы любое изменение прошлого было заметно. Запускаемое демо цепочки блоков на Python.
- Цифровые подписи и кошельки
Как цифровые подписи доказывают, что транзакцию отправил владелец, и почему кошелёк — это пара ключей. Концепция на простом демо.
- Доказательство работы и майнинг
Что такое proof-of-work простыми словами и как майнеры ищут хеш с нулями. Запускаемое демо майнинга на SHA-256 в Python.
- Цепочка блоков: как хеши делают историю неизменяемой
10 Продвинутые темы простыми словами
- Эллиптические кривые: новый стандарт
Почему эллиптические кривые (ECC) вытесняют RSA: та же стойкость при коротких ключах. Концепция простыми словами для начинающих.
- Квантовая угроза и постквантовая криптография
Почему квантовые компьютеры угрожают RSA и ECC, что такое алгоритм Шора и как готовится постквантовая криптография. Простыми словами.
- Стеганография: прятать данные в картинках
Стеганография прячет сам факт сообщения в картинках через младшие биты. Чем она отличается от шифрования. Запускаемое демо на Python.
- Zero-knowledge: доказать, не раскрывая
Доказательства с нулевым разглашением (zero-knowledge): как доказать, что знаешь секрет, не раскрывая его. Простое объяснение и аналогии.
- Эллиптические кривые: новый стандарт
11 Постквантовая криптография
- Квантовая угроза: алгоритмы Шора и Гровера
Почему квантовый компьютер ломает RSA и ECC через алгоритм Шора, как Гровер бьёт по симметричному шифрованию и хешам, и что такое угроза «harvest now, decrypt later».
- Решёточная криптография
Решёточная криптография простыми словами: что такое решётки, почему задача обучения с ошибками LWE считается квантово-стойкой и как на ней строятся Kyber и Dilithium.
- Стандарты NIST PQC и миграция
Стандарты NIST по постквантовой криптографии: ML-KEM, ML-DSA и SLH-DSA, зачем нужны гибридные схемы, как индустрия переходит на новые алгоритмы и какие сроки реалистичны.
- Хеш-подписи и другие подходы
Хеш-подписи SPHINCS+ (SLH-DSA): почему подпись на основе хеш-функций считается самой консервативной постквантовой схемой, её плюсы, большие размеры подписи и где её применяют.
- Квантовая угроза: алгоритмы Шора и Гровера
12 Криптопротоколы на практике
- TLS 1.3: рукопожатие изнутри
Как устроено рукопожатие TLS 1.3: обмен ключами ECDHE, аутентификация сертификатом, forward secrecy, 0-RTT и его риски, чем 1.3 лучше TLS 1.2.
- Сквозное шифрование: протокол Signal
Как мессенджеры защищают переписку сквозным шифрованием: протокол Signal, X3DH для начала диалога, Double Ratchet, forward secrecy и post-compromise security.
- PGP/GPG: шифрование и подпись
PGP и GPG на практике: ключевые пары, шифрование почты и файлов, цифровая подпись и проверка, web of trust и частые ошибки при работе с ключами.
- Обмен ключами и согласование
Обмен ключами вглубь: алгоритм Диффи-Хеллмана, эллиптический ECDH, защита от MITM через аутентификацию, согласование сессионных ключей и роль KDF.
- TLS 1.3: рукопожатие изнутри
13 Криптоанализ и атаки на реализации
- Атаки по сторонним каналам
Что такое атаки по сторонним каналам: утечки через время выполнения и энергопотребление. Почему «правильный» алгоритм небезопасен и как писать constant-time-код.
- Padding oracle и ошибки режимов
Padding oracle: как утечка одного бита «корректен ли паддинг» расшифровывает CBC без ключа. Почему опасны MAC-then-Encrypt и режимы без аутентификации, защита — AEAD.
- Слабая случайность и предсказуемые ключи
Почему плохой ГПСЧ губит криптографию: предсказуемые ключи, nonce и токены. Энтропия на пальцах, реальные провалы и защита — CSPRNG и модуль secrets в Python.
- Грабли реализации криптографии
Типичные ошибки реализации крипто: самописные алгоритмы, повтор nonce, небезопасное сравнение, плохие дефолты. Принципы и защита — проверенные библиотеки, AEAD, secrets.
- Атаки по сторонним каналам
14 Продвинутая прикладная криптография
- Доказательства с нулевым разглашением (ZKP)
Что такое zero-knowledge proof: доказать знание секрета, не раскрывая его. Интерактивные доказательства, zk-SNARK и zk-STARK простыми словами, применения в приватности и блокчейне.
- Гомоморфное шифрование
Гомоморфное шифрование: вычисления прямо над зашифрованными данными. Частичное и полное (FHE), приватные вычисления в облаке, bootstrapping, реальные ограничения и накладные расходы.
- Многосторонние вычисления и пороговая криптография
Secure multi-party computation (MPC): посчитать результат, не раскрывая входы. Разделение секрета Шамира с Python-демо, пороговые подписи и схемы (t,n), применения в кошельках и аукционах.
- Схемы обязательств и проверяемая случайность
Commitment schemes: запечатать значение и раскрыть позже без подмены. Проверяемая случайная функция (VRF), свойства hiding/binding, применения в протоколах, лотереях и блокчейне.
- Доказательства с нулевым разглашением (ZKP)