ChaCha20
Что такое ChaCha20?
ChaCha20Современный поточный шифр Дэниела Бернштейна с 256-битным ключом и 96-битным nonce, широко применяемый совместно с Poly1305 в AEAD-схеме ChaCha20-Poly1305.
ChaCha20 — 20-раундовый поточный шифр, разработанный Дэниелом Бернштейном в 2008 году как развитие его конструкции Salsa20. Он формирует ключевую последовательность из 256-битного ключа, 96-битного nonce и 32-битного счётчика блоков, используя только операции сложения, циклического сдвига и XOR (ARX) над 32-битными словами — «четвертьраунд» смешивает по четыре слова состояния за раз. Поскольку он не требует таблиц поиска, он быстр и естественным образом выполняется за постоянное время на CPU без аппаратной поддержки AES; именно поэтому Google впервые развернул его в 2014 году для защиты трафика Android и Chrome. В сочетании с MAC Poly1305 AEAD-схема ChaCha20-Poly1305 стандартизована в RFC 8439 (заменившем RFC 7539) и является одним из двух обязательных наборов шифров в TLS 1.3 наряду с AES-GCM. Она также лежит в основе QUIC, WireGuard, OpenSSH, протокола Signal и генератора случайных чисел ядра Linux.
Ключевая эксплуатационная опасность — повторное использование nonce: шифрование двух сообщений одним и тем же ключом и nonce раскрывает XOR их открытых текстов и разглашает одноразовый ключ Poly1305, нарушая и конфиденциальность, и аутентичность. 96-битный nonce вполне удобен для счётчика в рамках одного соединения, но рискован при случайной генерации в больших масштабах, поэтому XChaCha20 (draft-irtf-cfrg-xchacha) расширяет nonce до 192 бит через вывод подключа HChaCha20, делая случайные nonce безопасными. За более чем десятилетие криптоанализа ни одна атака не взламывает полную 20-раундовую версию шифра.
flowchart LR K[256-битный ключ] --> S[Инициализация состояния: константы, ключ, счётчик, nonce] N[96-битный nonce] --> S CTR[Счётчик блоков] --> S S --> R[20 раундов ARX-четвертьраундов] R --> KS[Блок ключевой последовательности] PT[Открытый текст] --> X((XOR)) KS --> X X --> CT[Шифртекст] CT --> P[MAC Poly1305] P --> TAG[Тег аутентификации]
● Примеры
- 01
TLS 1.3 и QUIC применяют TLS_CHACHA20_POLY1305_SHA256 на мобильных устройствах.
- 02
WireGuard шифрует все пакеты данных с помощью ChaCha20-Poly1305.
● Частые вопросы
Что такое ChaCha20?
Современный поточный шифр Дэниела Бернштейна с 256-битным ключом и 96-битным nonce, широко применяемый совместно с Poly1305 в AEAD-схеме ChaCha20-Poly1305. Относится к категории Криптография в кибербезопасности.
Что означает ChaCha20?
Современный поточный шифр Дэниела Бернштейна с 256-битным ключом и 96-битным nonce, широко применяемый совместно с Poly1305 в AEAD-схеме ChaCha20-Poly1305.
Как защититься от ChaCha20?
Защита от ChaCha20 обычно сочетает технические меры и операционные практики, как описано в определении выше.