0Pricing
Cryptology Academy · Урок

Устройство Salsa20 и ChaCha20

Разберите четверть раунда ChaCha20 и его скорость на мобильном оборудовании

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

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

ChaCha20 — доминирующий потоковый шифр в современных системах: он используется в TLS 1.3, WireGuard, Signal и многих других системах. Давайте разберём его элегантную архитектуру.

Происхождение ChaCha20

Дэниел Дж. Бернштейн разработал Salsa20 в 2005 году, а затем усовершенствовал его до ChaCha20 в 2008 году. Префикс «Cha» указывает на 8 дополнительных улучшений диффузии. Стандартизирован в RFC 7539 (2015) и RFC 8439 (2018).

Состояние ChaCha20

ChaCha20 работает с матрицей 4×4, состоящей из 32-битных слов (всего 512 бит): - Слова 0–3: константы ('expa', 'nd 3', '2-by', 'te k') - Слова 4–11: 256-битный ключ (8 слов) - Слово 12: 32-битный счётчик блока - Слова 13–15: 96-битное одноразовое число

Четверть раунда

Основная операция ChaCha20 — четверть раунда над (a,b,c,d): a+=b; d^=a; d<<<= 16 c+=d; b^=c; b<<<= 12 a+=b; d^=a; d<<<= 8 c+=d; b^=c; b<<<= 7 Сложение, циклический сдвиг и XOR (ARX). S-блоки не нужны — шифр быстро работает на любом оборудовании.

20 раундов

ChaCha20 выполняет 20 раундов: чередующиеся раунды по столбцам и диагоналям, по 4 четверть-раунда в каждом. 8 раундов = ChaCha8 (быстро), 12 раундов = ChaCha12 (сбалансированный вариант). ChaCha20 — безопасный вариант по умолчанию.

Создание потока ключей

1. Инициализировать состояние из ключа, одноразового числа и счётчика 2. Выполнить 20 раундов четверть-раундов 3. Сложить начальное состояние с преобразованным состоянием (это предотвращает обратное преобразование) 4. Выдать 64-байтный блок потока ключей 5. Увеличить счётчик для следующего блока

Преимущества безопасности ARX

Шифры ARX (сложение, циклический сдвиг, XOR) естественным образом работают за константное время на большинстве CPU. Отсутствие обращений к таблицам означает отсутствие побочных каналов по времени доступа к кэшу. Это критически важно для безопасных реализаций.

Производительность ChaCha20

Без AES-NI ChaCha20 примерно в 3 раза быстрее AES-CBC. На телефонах (ARM Cortex-A) ChaCha20 работает быстрее. При наличии AES-NI (современная архитектура x86) AES-GCM быстрее. TLS 1.3 включает оба варианта.

Salsa20 и ChaCha20

ChaCha20 превосходит Salsa20 благодаря улучшенной диффузии на ранних раундах и большей устойчивости к дифференциальному криптоанализу. Инициализация состояния отличается. Оба шифра безопасны, но ChaCha20 является текущим стандартом.

ChaCha20 в Python

from cryptography.hazmat.primitives.ciphers.aead import ChaCha20Poly1305 import os key = ChaCha20Poly1305.generate_key() nonce = os.urandom(12) ct = ChaCha20Poly1305(key).encrypt(nonce, b'hello', None)

XChaCha20: расширенный одноразовый номер

ChaCha20 использует 96-битный одноразовый номер. XChaCha20 расширяет его до 192 бит с помощью функции HChaCha20. Более длинные одноразовые номера позволяют генерировать их случайным образом, не опасаясь коллизий. В libsodium используется XChaCha20-Poly1305.

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

Почему конструкция ARX в ChaCha20 устраняет побочные каналы по времени доступа к кэшу?

Итоги

ChaCha20 отличается элегантностью и высокой защищённостью. Далее Вы увидите его применение в TLS 1.3 в составе ChaCha20-Poly1305 AEAD.

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

Урок «Устройство Salsa20 и ChaCha20» бесплатный?

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

Чему я научусь в уроке «Устройство Salsa20 и ChaCha20»?

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

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

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

Сколько времени занимает урок «Устройство Salsa20 и ChaCha20»?

Большинство уроков 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