Cryptology Academy · Урок

Основы потоковых шифров и PRNG

Узнайте, как потоковые шифры создают поток ключей из начального значения

Урок 1 из 413 шагов

«Основы потоковых шифров и PRNG» — бесплатный урок Cryptology Academy на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Cryptology Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Cryptology Academy содержит 4 уроков всего.

Добро пожаловать

Потоковые шифры создают псевдослучайный поток ключей из ключа и одноразового числа и шифруют данные побайтно. На этом уроке Вы разберётесь, как работают потоки ключей и что делает потоковый шифр безопасным.

Модель потокового шифра

KeyGen(K, Nonce) → поток ключей K1, K2, K3, ... Ci = Pi XOR Ki Pi = Ci XOR Ki Шифрование и расшифрование идентичны: выполняется XOR с потоком ключей. Поток ключей должен быть псевдослучайным и никогда не использоваться повторно.

PRNG и CSPRNG

PRNG (генератор псевдослучайных чисел): детерминированный результат, который выглядит случайным. NOT криптографически безопасен — статистические тесты проходят успешно, но при наличии достаточного количества образцов результат предсказуем. CSPRNG: криптографически безопасен — результат вычислительно неотличим от случайного даже при неограниченных вычислительных ресурсах.

Требования к безопасности

Поток ключей безопасного потокового шифра должен быть: 1. Вычислительно неотличимым от случайного 2. Разным для каждой пары (ключ, одноразовое число) 3. Непредсказуемым по частичному результату 4. Необратимым — из потока ключей нельзя вывести ключ

Линейные конгруэнтные генераторы (небезопасны)

LCG: s(n+1) = (a × s(n) + c) mod m. Используется во многих реализациях rand(). Полностью небезопасен для криптографии — знание нескольких результатов математически раскрывает все будущие и прошлые результаты.

Размер начального значения и безопасность

Безопасность потока ключей потокового шифра не может быть выше безопасности его начального значения (ключа). Ключ размером 128 бит обеспечивает 128-битную безопасность независимо от объёма созданного потока ключей. Начальное значение является источником энтропии.

Синхронные и самосинхронизирующиеся шифры

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

Архитектура создания потока ключей

В большинстве современных потоковых шифров используется следующая схема: 1. Ключ + одноразовое число → начальное состояние 2. К состоянию многократно применяется функция перестановки 3. Некоторые биты состояния выдаются как поток ключей 4. Счётчик увеличивается для следующего блока AES-CTR следует этой схеме.

Портфель eSTREAM

Проект eSTREAM (2004–2008) стандартизировал потоковые шифры. Финалисты для программных реализаций: HC-128, Rabbit, Salsa20/12, SOSEMANUK. На основе Salsa20 был создан ChaCha20, который теперь является доминирующим потоковым шифром.

Повторное использование потока ключей: фатальная ошибка

Главный смертный грех потоковых шифров: никогда не используйте повторно пару (ключ, одноразовое число). C1 XOR C2 = P1 XOR P2. Многократное использование одного и того же IV в пакетах WEP (что эквивалентно повторному использованию ключа и одноразового числа) позволяло полностью расшифровывать данные.

Потоковый шифр и блочный шифр в режиме CTR

AES-CTR — это блочный шифр, используемый как потоковый. Специализированные потоковые шифры (ChaCha20) часто работают быстрее в программных реализациях. При правильном выборе ключа и одноразового числа их свойства безопасности схожи.

Быстрая проверка

Какова фундаментальная уязвимость повторного использования пары (ключ, одноразовое число) в потоковом шифре?

Итоги

Основы потоковых шифров стали понятны. Далее мы подробно изучим RC4 — его принцип работы и разрушительные уязвимости, из-за которых от него отказались.
Можно начать бесплатно

Изучай Cryptology Academy с ИИ-репетитором — бесплатно

Пиши и запускай код прямо в браузере, получай мгновенную помощь от ИИ-репетитора 24/7 и продолжи учиться на сайте или в приложении.

Курсы
67
Уроки
261

Часто задаваемые вопросы

Урок «Основы потоковых шифров и PRNG» бесплатный?

Да — полный текст урока «Основы потоковых шифров и PRNG» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Cryptology Academy, подпишись на CoddyKit PRO. Курс Cryptology Academy содержит 4 уроков всего.

Чему я научусь в уроке «Основы потоковых шифров и PRNG»?

Узнайте, как потоковые шифры создают поток ключей из начального значения Ты практикуешь Cryptology Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Cryptology Academy?

Предыдущий опыт не требуется. Cryptology Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.

Сколько времени занимает урок «Основы потоковых шифров и PRNG»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Cryptology Academy?

Да. Каждый урок Cryptology Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Основы потоковых шифров и PRNG
  2. RC4: устройство, слабые места и атаки на WEP
  3. Устройство Salsa20 и ChaCha20
  4. AEAD ChaCha20-Poly1305 в TLS 1.3
← Назад к Cryptology Academy