0Pricing
Cryptology Academy · Урок

AEAD ChaCha20-Poly1305 в TLS 1.3

Узнайте, как ChaCha20 используется в качестве шифра AEAD в современном TLS

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

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

ChaCha20-Poly1305 объединяет потоковый шифр ChaCha20 с MAC Poly1305, создавая защищённый набор шифров AEAD, используемый в TLS 1.3, WireGuard и мобильных приложениях.

Обзор MAC Poly1305

Poly1305 — это одноразовый MAC, разработанный Bernstein. Он аутентифицирует сообщение с помощью вычисления значения многочлена по простому числу 2^130-5. Одноразовый характер означает, что при каждом использовании требуется новый 32-байтный ключ.

Безопасность Poly1305

Poly1305 обеспечивает 128-битную стойкость, если ключ никогда не используется повторно. Ключ MAC заново создаётся для каждого сообщения из ключевого потока ChaCha20. Эта комбинация имеет доказанную защищённость.

Конструкция ChaCha20-Poly1305

1. Сгенерировать 64-байтный ключевой поток из блока ChaCha20 0 2. Первые 32 байта = ключ Poly1305 3. Оставшиеся 32 байта отбросить 4. Зашифровать открытый текст блоками ChaCha20 1,2,3,... 5. Вычислить MAC Poly1305 для AAD + шифротекста

Структура RFC 8439

Формат вывода: шифротекст || тег (16 байт) Входные данные MAC: AAD || заполнение1 || шифротекст || заполнение2 || длина(AAD) || длина(шифротекста) Заполнение: дополнение нулевыми байтами до выравнивания по 16 байт. Длины кодируются как 64-битные целые числа с младшим байтом вперёд.

Наборы шифров TLS 1.3

Обязательные наборы шифров TLS 1.3: - TLS_AES_256_GCM_SHA384 - TLS_AES_128_GCM_SHA256 - TLS_CHACHA20_POLY1305_SHA256 CHACHA20_POLY1305 предпочтителен для клиентов без аппаратного ускорения AES.

Использование ChaCha20-Poly1305 в WireGuard

WireGuard использует ChaCha20Poly1305 исключительно для шифрования всех туннелей. Согласование шифров отсутствует — применяется один тщательно изученный алгоритм. Такая простота значительно уменьшает поверхность атаки.

Секретный контейнер libsodium

crypto_secretbox_easy() в libsodium использует XSalsa20-Poly1305 (вариант с расширенным одноразовым номером): ciphertext = crypto_secretbox_easy(message, nonce, key) Высокоуровневый интерфейс: всё работает корректно без выбора параметров.

Производительность на мобильных устройствах

Устройства Android и iOS часто не имеют AES-NI. Анализ Google, проведённый в 2014 году, показал, что ChaCha20-Poly1305 в 3 раза быстрее AES-GCM на ARM. Поэтому Google сделал его обязательным в Android и Chrome.

Реализация на Python

from cryptography.hazmat.primitives.ciphers.aead import ChaCha20Poly1305 import os key = ChaCha20Poly1305.generate_key() nonce = os.urandom(12) aad = b'header_data' cipher = ChaCha20Poly1305(key) ct = cipher.encrypt(nonce, b'plaintext', aad) pt = cipher.decrypt(nonce, ct, aad)

Сравнение: AES-GCM и ChaCha20-Poly1305

AES-GCM: быстрее при наличии AES-NI, 96-битный одноразовый номер, возможность подделки тега GCM при повторном использовании одноразового номера. ChaCha20-Poly1305: быстрее без аппаратного ускорения, 96-битный одноразовый номер, ключ Poly1305 создаётся заново для каждого сообщения. Оба варианта превосходны. Используйте AES-GCM на серверах, а ChaCha20-Poly1305 — на мобильных устройствах.

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

Как создаётся ключ Poly1305 в ChaCha20-Poly1305?

Итоги

ChaCha20-Poly1305 — оптимальный для мобильных устройств вариант AEAD. Далее Вы изучите обмен ключами Диффи—Хеллмана: как две стороны устанавливают общий секрет по незащищённому каналу.

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

Урок «AEAD ChaCha20-Poly1305 в TLS 1.3» бесплатный?

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

Чему я научусь в уроке «AEAD ChaCha20-Poly1305 в TLS 1.3»?

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

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

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

Сколько времени занимает урок «AEAD ChaCha20-Poly1305 в TLS 1.3»?

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