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

ChaCha20-Poly1305

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

Что такое ChaCha20-Poly1305?

ChaCha20-Poly1305AEAD-конструкция, объединяющая поточный шифр ChaCha20 и одноразовый аутентификатор Poly1305; стандартизована в RFC 8439 для TLS 1.3 и WireGuard.


ChaCha20-Poly1305 — AEAD-шифр, описанный в RFC 8439 (заменившем RFC 7539). ChaCha20 — поточный ARX-шифр с 256-битным ключом, спроектированный Дэниелом Бернштейном; он использует 96-битный nonce и 32-битный счётчик, выдавая 512-битный блок гаммы за вызов. Poly1305 — 128-битный одноразовый MAC по шифротексту и присоединённым данным, ключ для которого берётся из первого блока гаммы ChaCha20. Поскольку связка работает в постоянном времени и быстра в чисто программных реализациях без AES-NI, Google развернул её в Chrome и Android в 2014 году (при участии Адама Лэнгли), чтобы защитить мобильные клиенты без аппаратного AES и обойти уязвимости AES с таблицами к атакам по времени кэша.

Сегодня она повсюду: наборы TLS 1.2 (RFC 7905), обязательный набор TLS 1.3 (RFC 8446), QUIC (RFC 9001), chacha20-poly1305@openssh.com в OpenSSH начиная с 6.5, OpenVPN и каждый кадр данных WireGuard. Вариант с расширенным nonce — XChaCha20-Poly1305 (192-битный nonce, популяризированный libsodium) — позволяет выбирать nonce случайно, не опасаясь «парадокса дней рождения».

Как и AES-GCM, при повторе nonce она разрушается катастрофически: повтор nonce под одним ключом раскрывает XOR двух открытых текстов и обнажает ключ Poly1305, что позволяет подделывать сообщения. Поэтому реализации применяют детерминированные счётчики и меняют ключ до переполнения счётчика.

flowchart LR
  K[256-битный ключ] --> CC[ChaCha20]
  N[96-битный nonce] --> CC
  CC -->|блок 0| PK[Одноразовый ключ Poly1305]
  CC -->|блоки 1..n| KS[Гамма]
  P[Открытый текст] --> X((XOR))
  KS --> X
  X --> CT[Шифротекст]
  AD[Присоединённые данные] --> PM[MAC Poly1305]
  CT --> PM
  PK --> PM
  PM --> TAG[128-битный тег]
  CT --> OUT[Шифротекст + тег]
  TAG --> OUT

Примеры

  1. 01

    Шифр-набор TLS 1.3 TLS_CHACHA20_POLY1305_SHA256.

  2. 02

    Туннельные кадры WireGuard шифруются ChaCha20-Poly1305.

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

Что такое ChaCha20-Poly1305?

AEAD-конструкция, объединяющая поточный шифр ChaCha20 и одноразовый аутентификатор Poly1305; стандартизована в RFC 8439 для TLS 1.3 и WireGuard. Относится к категории Криптография в кибербезопасности.

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

AEAD-конструкция, объединяющая поточный шифр ChaCha20 и одноразовый аутентификатор Poly1305; стандартизована в RFC 8439 для TLS 1.3 и WireGuard.

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

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

Какие есть другие названия ChaCha20-Poly1305?

Распространённые альтернативные названия: ChaCha20/Poly1305, RFC 8439, ChaPoly.

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