Skip to content
Vol. 1 · Ed. 2026
CyberGlossary
Entry № 181

ChaCha20

ПроверилCybersecurity entrepreneur & security researcher

Что такое 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[Тег аутентификации]

Примеры

  1. 01

    TLS 1.3 и QUIC применяют TLS_CHACHA20_POLY1305_SHA256 на мобильных устройствах.

  2. 02

    WireGuard шифрует все пакеты данных с помощью ChaCha20-Poly1305.

Частые вопросы

Что такое ChaCha20?

Современный поточный шифр Дэниела Бернштейна с 256-битным ключом и 96-битным nonce, широко применяемый совместно с Poly1305 в AEAD-схеме ChaCha20-Poly1305. Относится к категории Криптография в кибербезопасности.

Что означает ChaCha20?

Современный поточный шифр Дэниела Бернштейна с 256-битным ключом и 96-битным nonce, широко применяемый совместно с Poly1305 в AEAD-схеме ChaCha20-Poly1305.

Как защититься от ChaCha20?

Защита от ChaCha20 обычно сочетает технические меры и операционные практики, как описано в определении выше.

Связанные термины

См. также