ChaCha20-Poly1305
Что такое 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
● Примеры
- 01
Шифр-набор TLS 1.3 TLS_CHACHA20_POLY1305_SHA256.
- 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.