ChaCha20-Poly1305 Зашифровать
Бесплатный онлайн-инструмент ChaCha20-Poly1305 Зашифровать. 100% локальная обработка — ваши данные никогда не покидают устройство.
Результат будет отображен здесь...
Ввод → Зашифровать
Usage Guide
О ChaCha20-Poly1305
ChaCha20-Poly1305 — это шифр аутентифицированного шифрования с ассоциированными данными (AEAD), объединяющий потоковый шифр ChaCha20 с кодом аутентификации сообщений Poly1305. Разработанный Дэниелом Дж. Бернштейном, он стандартизирован в RFC 8439 и принят в TLS 1.3, SSH и WireGuard в качестве основного набора шифров. В одной операции обеспечивает как конфиденциальность (шифрование), так и целостность (аутентификацию), предотвращая перехват и подмену шифротекста. ChaCha20-Poly1305 был разработан как программно-ориентированная альтернатива AES-GCM для платформ без аппаратного ускорения AES.
Шаги использования
Этот инструмент поддерживает как шифрование, так и дешифрование. Ключ обязателен; нонс генерируется автоматически, если оставить поле пустым:
Формат ключа и нонса
ChaCha20-Poly1305 использует параметры фиксированного размера:
ChaCha20-Poly1305 против AES-GCM
Оба являются шифрами AEAD в TLS 1.3. Вот когда выбирать каждый:
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. Всегда генерируйте новый случайный нонс для каждого сообщения (этот инструмент добавляет его автоматически).
- ✅ 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.
- ✅ ChaCha20-Poly1305 (лучшая производительность без аппаратного AES)
- ✅ AES-256-GCM (приемлемо на устройствах с аппаратным AES)
- 💡 TLS 1.3 согласовывает автоматически — оба набора шифров обязательны
- ❌ Не используйте AES-CBC на устройствах с ограниченными ресурсами (нет аутентификации, медленнее)
Допустимо: Зашифрованное локальное хранилище
ChaCha20-Poly1305 может защитить конфиденциальные данные, хранящиеся локально. Получайте ключ из пользовательского пароля с помощью Argon2id вместо прямого использования пароля.
- ✅ ChaCha20-Poly1305 + получение ключа Argon2id (шифрование на основе пароля)
- ✅ AES-256-GCM + PBKDF2 (среды, совместимые с FIPS)
- 💡 Хранить: параметры Argon2id + соль + нонс ChaCha20 + шифротекст
- ❌ Не используйте режим ECB или неаутентифицированные шифры для локального хранилища
Не рекомендуется: Шифрование больших файлов
Стандартный ChaCha20-Poly1305 буферизует весь шифротекст перед аутентификацией, что является ресурсоёмким для больших файлов. Для файлов размером более нескольких мегабайт используйте специализированный инструмент или библиотеку, поддерживающую блочное шифрование (например, libsodium secretstream, age).
- 💡 Используйте блочный AEAD для файлов размером более нескольких МБ
- ✅ libsodium secretstream (потоковый ChaCha20-Poly1305)
- ✅ инструмент шифрования age (ориентированный на файлы, внутренне использует ChaCha20-Poly1305)
- ✅ AES-256-GCM в потоковом режиме (для сред с аппаратным ускорением)
Не рекомендуется: Обмен ключами или аутентификация
ChaCha20-Poly1305 — это симметричный шифр — обе стороны уже должны иметь общий секретный ключ. Он не решает проблему распределения ключей. Для безопасного обмена ключами используйте асимметричный протокол или полный протокол, такой как TLS 1.3. Для аутентификации без общих секретов используйте цифровые подписи RSA или ECDSA.
- ❌ ChaCha20-Poly1305 не решает проблему распределения ключей
- ✅ TLS 1.3 (обрабатывает обмен ключами + шифрование данных ChaCha20-Poly1305)
- ✅ X25519 + ChaCha20-Poly1305 (паттерн протокола Noise)
- ✅ RSA / ECDSA для цифровых подписей и верификации личности
Не рекомендуется: Хеширование паролей
Краткое изложение рекомендаций
- Используйте ChaCha20-Poly1305 для симметричного шифрования там, где аппаратное ускорение AES недоступно — мобильные устройства, IoT и кроссплатформенное ПО.
- Всегда используйте уникальный случайный нонс для каждого шифрования. Инструмент автоматически генерирует его, если оставить поле нонса пустым.
- Выходной шифротекст содержит встроенный 12-байтный нонс и 16-байтный тег аутентификации — для дешифрования нужно хранить только одну строку base64.
- Никогда не используйте пару (ключ, нонс) повторно. Повторное использование нонса полностью нарушает безопасность ChaCha20-Poly1305.
- Для шифрования на основе пароля сначала получите ключ с помощью Argon2id — никогда не используйте пароль напрямую в качестве ключа ChaCha20-Poly1305.