ChaCha20-Poly1305 Зашифровать

Бесплатный онлайн-инструмент ChaCha20-Poly1305 Зашифровать. 100% локальная обработка — ваши данные никогда не покидают устройство.

National Standards
Legacy
Вывод

Результат будет отображен здесь...

Ввод Зашифровать

Usage Guide

О ChaCha20-Poly1305

ChaCha20-Poly1305 — это шифр аутентифицированного шифрования с ассоциированными данными (AEAD), объединяющий потоковый шифр ChaCha20 с кодом аутентификации сообщений Poly1305. Разработанный Дэниелом Дж. Бернштейном, он стандартизирован в RFC 8439 и принят в TLS 1.3, SSH и WireGuard в качестве основного набора шифров. В одной операции обеспечивает как конфиденциальность (шифрование), так и целостность (аутентификацию), предотвращая перехват и подмену шифротекста. ChaCha20-Poly1305 был разработан как программно-ориентированная альтернатива AES-GCM для платформ без аппаратного ускорения AES.

Современный стандарт TLS: ChaCha20-Poly1305 — один из двух обязательных наборов шифров в TLS 1.3 (наряду с AES-256-GCM). Это предпочтительный выбор на мобильных и IoT-устройствах, и он сопоставим по безопасности с AES-256-GCM на всех платформах.

Шаги использования

Этот инструмент поддерживает как шифрование, так и дешифрование. Ключ обязателен; нонс генерируется автоматически, если оставить поле пустым:

1. Сгенерировать или ввести ключНажмите кнопку случайной генерации рядом с 'Secret Key', чтобы сгенерировать случайный 32-байтный (256-битный) ключ, или введите собственную 32-символьную строку
2. Нонс (необязательно)Оставьте пустым для автоматической генерации случайного 12-байтного нонса при каждом шифровании. При дешифровании нонс встроен в шифротекст — оставьте это поле пустым
3. ЗашифроватьВведите открытый текст в поле ввода, выберите 'Зашифровать' и нажмите 'Зашифровать'. Результат — строка base64, содержащая 12-байтный нонс перед шифротекстом+тегом
4. РасшифроватьВставьте шифротекст base64 в поле ввода, выберите 'Расшифровать', введите тот же ключ, который использовался при шифровании, и нажмите 'Расшифровать'
Защита конфиденциальности: Все операции ChaCha20-Poly1305 выполняются полностью в вашем браузере с использованием WebAssembly. Никакие данные никогда не отправляются на сервер — полностью автономная обработка.

Формат ключа и нонса

ChaCha20-Poly1305 использует параметры фиксированного размера:

Ключ32 байта (256 бит) — вводить как 32-символьную строку или использовать генератор случайных чисел
Нонс12 байт (96 бит) — вводить как 12-символьную строку или оставить пустым для автоматической генерации. Никогда не используйте один и тот же нонс с одним и тем же ключом
Формат шифротекстаbase64(нонс[12 байт] + шифротекст + тег аутентификации[16 байт]). Нонс добавляется в начало, чтобы дешифрование было самодостаточным
Тег16 байт (128 бит) тег аутентификации Poly1305, автоматически добавляется при шифровании и автоматически проверяется при дешифровании
Никогда не повторяйте нонсы: Повторное использование одной и той же пары (ключ, нонс) полностью нарушает безопасность ChaCha20-Poly1305 — это позволяет злоумышленнику восстановить ключевой поток и расшифровать все сообщения. Всегда используйте уникальный нонс для каждого шифрования или позвольте инструменту автоматически сгенерировать его.

ChaCha20-Poly1305 против AES-GCM

Оба являются шифрами AEAD в TLS 1.3. Вот когда выбирать каждый:

ChaCha20-Poly1305Предпочтителен на мобильных, ARM и IoT-устройствах без аппаратного AES. Постоянное время в программном обеспечении, устойчив к атакам по времени. Не требует аппаратного ускорителя
AES-GCMПредпочтителен при наличии аппаратных инструкций AES-NI (большинство современных процессоров x86/x64). Значительно быстрее с аппаратным ускорением
Эквивалентность безопасностиОба обеспечивают 256-битную мощность ключа и 128-битные теги аутентификации. Ни один не считается более надёжным с точки зрения безопасности
Стратегия TLS 1.3Реализации TLS 1.3 согласовывают: AES-GCM на серверах/десктопах с AES-NI; ChaCha20-Poly1305 на мобильных клиентах без аппаратного AES

FAQ

Q: Почему результат длиннее исходных данных?

A: Зашифрованный результат кодируется в base64 и включает: 12 байт нонса + длина открытого текста + 16 байт тега аутентификации Poly1305. Таким образом, бинарные накладные расходы составляют 28 байт (12 нонс + 16 тег), а кодирование base64 добавляет ещё около 33% длины.

Q: Что произойдёт, если я подделаю шифротекст?

A: ChaCha20-Poly1305 откажется расшифровывать подделанный шифротекст. Тег Poly1305 — это код аутентификации сообщения, вычисленный по всему шифротексту. Любое изменение — даже один бит — приводит к сбою проверки тега, и функция дешифрования возвращает ошибку вместо повреждённого открытого текста.

Q: Чем ChaCha20-Poly1305 отличается от обычного ChaCha20?

A: Обычный ChaCha20 обеспечивает только конфиденциальность — шифрует данные, но не обнаруживает подделку. ChaCha20-Poly1305 объединяет шифрование ChaCha20 с тегом аутентификации Poly1305, обеспечивая как конфиденциальность, так и целостность. Всегда отдавайте предпочтение ChaCha20-Poly1305 перед обычным ChaCha20 в любом практическом применении.

Q: Можно ли использовать один и тот же ключ для нескольких сообщений?

A: Да, но каждое сообщение должно использовать уникальный нонс. Пара (ключ, нонс) никогда не должна повторяться. При 12-байтных нонсах случайная генерация нонсов даёт вероятность коллизии по дню рождения приблизительно 1 из 296 — безопасно для миллиардов сообщений.

Q: Устойчив ли ChaCha20-Poly1305 к квантовым компьютерам?

A: Как и все симметричные шифры, ChaCha20-Poly1305 подвержен алгоритму Гровера, снижающему 256-битную безопасность до 128-битного эквивалента. 128-битная постквантовая безопасность считается достаточной для большинства приложений. Поэтому ChaCha20-Poly1305 с ключом 256 бит считается устойчивым к квантовым атакам на уровне безопасности 128 бит, так же как и AES-256-GCM.

Q: Почему дешифрование завершается ошибкой 'неверный ключ, нонс или шифротекст'?

A: Эта ошибка означает, что проверка тега аутентификации не прошла. Распространённые причины:
Неверный ключ: Ключ не совпадает с использованным при шифровании.
Повреждённый шифротекст: Строка base64 была изменена, усечена или вставлена неправильно.
Дешифрование данных, не зашифрованных ChaCha20-Poly1305: Входные данные были зашифрованы другим алгоритмом или инструментом.

Use Cases

Рекомендуется: Симметричное шифрование файлов и сообщений

ChaCha20-Poly1305 — отличный выбор симметричного шифрования общего назначения. Используется в WireGuard VPN для всего туннельного трафика и является одним из двух основных наборов шифров в TLS 1.3. Всегда генерируйте новый случайный нонс для каждого сообщения (этот инструмент добавляет его автоматически).

Recommended Configuration:
  • ✅ ChaCha20-Poly1305 (рекомендуется для мобильных, кроссплатформенных, только программных решений)
  • AES-256-GCM (рекомендуется при наличии аппаратного AES-NI)
  • ✅ XChaCha20-Poly1305 (расширенный 24-байтный нонс, для большого объёма сообщений)
  • ❌ Не используйте неаутентифицированные шифры (AES-CBC, обычный ChaCha20) для новых проектов
Рекомендуется: Шифрование для мобильных устройств и IoT

На платформах без аппаратного ускорения AES ChaCha20-Poly1305 превосходит AES-GCM. Поскольку ChaCha20 является программно-ориентированным, он работает с постоянным временем на всех платформах без риска временных атак по сторонним каналам. Google выбрал ChaCha20-Poly1305 в качестве предпочтительного шифра для TLS-трафика Android.

Recommended Configuration:
  • ✅ ChaCha20-Poly1305 (лучшая производительность без аппаратного AES)
  • ✅ AES-256-GCM (приемлемо на устройствах с аппаратным AES)
  • 💡 TLS 1.3 согласовывает автоматически — оба набора шифров обязательны
  • ❌ Не используйте AES-CBC на устройствах с ограниченными ресурсами (нет аутентификации, медленнее)
Допустимо: Зашифрованное локальное хранилище

ChaCha20-Poly1305 может защитить конфиденциальные данные, хранящиеся локально. Получайте ключ из пользовательского пароля с помощью Argon2id вместо прямого использования пароля.

Recommended Configuration:
  • ✅ ChaCha20-Poly1305 + получение ключа Argon2id (шифрование на основе пароля)
  • ✅ AES-256-GCM + PBKDF2 (среды, совместимые с FIPS)
  • 💡 Хранить: параметры Argon2id + соль + нонс ChaCha20 + шифротекст
  • ❌ Не используйте режим ECB или неаутентифицированные шифры для локального хранилища
Не рекомендуется: Шифрование больших файлов

Стандартный ChaCha20-Poly1305 буферизует весь шифротекст перед аутентификацией, что является ресурсоёмким для больших файлов. Для файлов размером более нескольких мегабайт используйте специализированный инструмент или библиотеку, поддерживающую блочное шифрование (например, libsodium secretstream, age).

Recommended Configuration:
  • 💡 Используйте блочный AEAD для файлов размером более нескольких МБ
  • ✅ libsodium secretstream (потоковый ChaCha20-Poly1305)
  • ✅ инструмент шифрования age (ориентированный на файлы, внутренне использует ChaCha20-Poly1305)
  • ✅ AES-256-GCM в потоковом режиме (для сред с аппаратным ускорением)
Не рекомендуется: Обмен ключами или аутентификация

ChaCha20-Poly1305 — это симметричный шифр — обе стороны уже должны иметь общий секретный ключ. Он не решает проблему распределения ключей. Для безопасного обмена ключами используйте асимметричный протокол или полный протокол, такой как TLS 1.3. Для аутентификации без общих секретов используйте цифровые подписи RSA или ECDSA.

Recommended Configuration:
  • ❌ ChaCha20-Poly1305 не решает проблему распределения ключей
  • ✅ TLS 1.3 (обрабатывает обмен ключами + шифрование данных ChaCha20-Poly1305)
  • ✅ X25519 + ChaCha20-Poly1305 (паттерн протокола Noise)
  • ✅ RSA / ECDSA для цифровых подписей и верификации личности
Не рекомендуется: Хеширование паролей

ChaCha20-Poly1305 — это алгоритм шифрования, а не функция хеширования паролей. Шифрование обратимо — любой, у кого есть ключ, может расшифровать пароль. Используйте Argon2id (предпочтительно) или bcrypt для хранения паролей.

Recommended Configuration:
  • ❌ Не используйте ChaCha20-Poly1305 для хранения паролей (это обратимо)
  • Argon2id (предпочтительный алгоритм хеширования паролей)
  • bcrypt (широко поддерживается, существующие системы)
  • ✅ scrypt / PBKDF2 (альтернативные KDF для паролей)

Краткое изложение рекомендаций

  • Используйте ChaCha20-Poly1305 для симметричного шифрования там, где аппаратное ускорение AES недоступно — мобильные устройства, IoT и кроссплатформенное ПО.
  • Всегда используйте уникальный случайный нонс для каждого шифрования. Инструмент автоматически генерирует его, если оставить поле нонса пустым.
  • Выходной шифротекст содержит встроенный 12-байтный нонс и 16-байтный тег аутентификации — для дешифрования нужно хранить только одну строку base64.
  • Никогда не используйте пару (ключ, нонс) повторно. Повторное использование нонса полностью нарушает безопасность ChaCha20-Poly1305.
  • Для шифрования на основе пароля сначала получите ключ с помощью Argon2id — никогда не используйте пароль напрямую в качестве ключа ChaCha20-Poly1305.

Обсуждение и отзывы

0 комментариев
Я