X25519 Зашифровать
Бесплатный онлайн-инструмент X25519 Зашифровать. 100% локальная обработка — ваши данные никогда не покидают устройство.
Результат будет отображен здесь...
Ввод → Зашифровать
Usage Guide
О X25519 (Curve25519 ECDH)
X25519 — это функция обмена ключами Диффи-Хеллмана на основе Curve25519, стандартизированная в RFC 7748. Это наиболее широко развёрнутый алгоритм обмена ключами на эллиптических кривых в мире — используется как стандартный механизм обмена ключами в TLS 1.3, WireGuard VPN, Signal Protocol и Noise Protocol Framework. X25519 обеспечивает ~128 бит безопасности при 32-байтных ключах, спроектирован устойчивым к атакам по сторонним каналам и создан Дэниелом Дж. Бернштейном.
Шаги использования
Этот инструмент вычисляет общий секрет Диффи-Хеллмана X25519 из вашего закрытого ключа и открытого ключа вашего собеседника:
Формат ключей
Ключи X25519 в этом инструменте используют компактный шестнадцатеричный формат:
X25519 vs EdDSA (Ed25519)
X25519 и Ed25519 оба основаны на Curve25519, но служат совершенно разным криптографическим целям:
FAQ
Q: В чём разница между X25519 и ECDH?
A: X25519 и есть ECDH — конкретно, эллиптический Диффи-Хеллман, реализованный на Curve25519, определённый в RFC 7748. По сравнению с ECDH на кривых NIST (P-256, P-384) X25519 быстрее, имеет более простую и безопасную реализацию (нет проблем с кофактором, не требуется проверка точек для типичных входных данных) и спроектирован с самого начала для устойчивости к атакам на реализацию. Когда люди говорят «ECDH с Curve25519», они имеют в виду X25519.
Q: Можно ли использовать ключи X25519 и Ed25519 взаимозаменяемо?
A: Нет. Хотя X25519 и Ed25519 оба основаны на Curve25519, они используют разные математические представления (форма Монтгомери против скрученной формы Эдвардса) и разные кодировки ключей. Закрытый ключ X25519 — это «сырой» 32-байтный скаляр; закрытый ключ Ed25519 — это 32-байтное начальное значение, которое хэшируется (SHA-512) перед использованием. Хотя формулы преобразования между двумя типами ключей существуют, использование их взаимозаменяемо без явного преобразования криптографически неверно и может привести к утечке информации или недействительным результатам. Всегда генерируйте отдельные пары ключей для каждой цели.
Q: Как зашифровать данные с помощью общего секрета?
A: 32-байтный общий секрет X25519 следует пропустить через функцию деривации ключа (KDF) перед использованием в качестве ключа шифра. На практике HKDF-SHA256 является наиболее распространённым выбором (используется в TLS 1.3, Signal). Передайте «сырой» общий секрет как входной ключевой материал, включите специфичные для протокола соль и info-строку, и получите 32 байта для AES-256-GCM или ChaCha20-Poly1305. Для простых случаев можно использовать общий секрет напрямую как 32-байтный ключ AES-256, но в продакшене настоятельно рекомендуется HKDF.
Q: Обеспечивает ли X25519 прямую секретность (forward secrecy)?
A: Да — при использовании с эфемерными парами ключей. Прямая секретность (также называемая Perfect Forward Secrecy, PFS) означает, что компрометация долгосрочного ключа не раскрывает прошлые ключи сессий. В TLS 1.3 обе стороны генерируют свежие пары ключей X25519 для каждого рукопожатия (эфемерный DH). Даже если злоумышленник впоследствии получит долгосрочный закрытый ключ сервера, он не сможет расшифровать ранее записанный трафик, так как эфемерные ключи X25519 были уничтожены после рукопожатия. Статические (повторно используемые) ключи X25519 прямой секретности не обеспечивают.
Q: Устойчив ли X25519 к квантовым атакам?
A: Нет — против достаточно мощного квантового компьютера нет. Квантовый компьютер, запускающий алгоритм Шора, мог бы взломать X25519, решив задачу дискретного логарифма на эллиптической кривой за полиномиальное время. Это в равной мере относится ко всем схемам Диффи-Хеллмана на эллиптических кривых и в конечных полях. Однако необходимый квантовый компьютер (тысячи логических кубитов с исправлением ошибок) пока не существует. Для постквантового обмена ключами NIST стандартизировал ML-KEM (ранее CRYSTALS-Kyber). TLS 1.3 в Chrome и Firefox уже развёртывает гибридный обмен ключами X25519+ML-KEM.
Use Cases
Рекомендуется: Обмен ключами TLS 1.3
X25519 является предпочтительным алгоритмом обмена ключами в TLS 1.3 (RFC 8446) и поддерживается всеми основными браузерами и серверами. В TLS 1.3 клиент и сервер генерируют эфемерные пары ключей X25519, обмениваются открытыми ключами в ClientHello/ServerHello и получают ключи рукопожатия с помощью HKDF. Это обеспечивает прямую секретность и завершается за одно круговое путешествие. X25519 заменил обмен ключами RSA и старые варианты ECDH в обязательном наборе шифров TLS 1.3.
- ✅ Включить TLS 1.3 на всех серверах — X25519 включён автоматически
- ✅ X25519 обеспечивает прямую секретность при каждом рукопожатии TLS 1.3
- ✅ Нативная поддержка в OpenSSL, BoringSSL, NSS и всех основных TLS-библиотеках
- ❌ Не использовать обмен ключами RSA в TLS 1.2 — отсутствует прямая секретность
Рекомендуется: WireGuard VPN
WireGuard использует X25519 как единственный механизм обмена ключами. Каждый пир WireGuard имеет статическую пару ключей X25519 (для аутентификации) и генерирует эфемерные пары ключей X25519 для каждого рукопожатия (для прямой секретности). Протокол также использует X25519 для смешивания предварительно общих ключей и применяет Noise Protocol Framework. Минималистичный дизайн WireGuard — один алгоритм обмена ключами, один симметричный шифр (ChaCha20-Poly1305), одна хэш-функция (BLAKE2s) — делает его поддающимся аудиту и быстрым.
- ✅ X25519 — единственный обмен ключами в WireGuard, ничего настраивать не нужно
- ✅ Генерация статической пары ключей: wg genkey | tee private.key | wg pubkey > public.key
- ✅ WireGuard автоматически обеспечивает прямую секретность через эфемерные пары ключей
- 💡 WireGuard сочетает: X25519 (обмен ключами) + ChaCha20-Poly1305 (шифрование) + BLAKE2s (хэширование)
Рекомендуется: Сквозное шифрование сообщений (Signal, WhatsApp)
Signal Protocol (используется Signal, WhatsApp и многими другими) активно использует X25519 в алгоритме Double Ratchet и согласовании ключей X3DH (Extended Triple Diffie-Hellman). X3DH использует несколько операций DH X25519 для установления начальных общих ключей между сторонами, которые могут быть офлайн. Double Ratchet затем непрерывно получает новые ключи из храповика X25519, обеспечивая как прямую секретность, так и восстановление после взлома. Это считается золотым стандартом для защищённого обмена сообщениями.
- ✅ X25519 лежит в основе согласования ключей Signal Protocol
- ✅ X3DH позволяет асинхронное установление ключей (одна сторона может быть офлайн)
- ✅ Double Ratchet + X25519 обеспечивает прямую секретность и постскомпрометационную безопасность
- 💡 WhatsApp, Wire, секретные чаты Facebook Messenger — все используют Signal Protocol
Рекомендуется: Гибридное шифрование (инкапсуляция ключей)
Гибридное шифрование использует X25519 для установления общего секрета, а затем шифрует реальные данные симметричным шифром. Этот паттерн (называемый ECIES или HPKE — Hybrid Public Key Encryption, RFC 9180) позволяет любому, кто имеет открытый ключ X25519 получателя, отправлять зашифрованные данные без предварительно общих секретов. Отправитель генерирует эфемерную пару ключей X25519, вычисляет общий секрет с открытым ключом получателя, получает симметричный ключ через HKDF, шифрует данные с помощью ChaCha20-Poly1305 и отправляет эфемерный открытый ключ вместе с зашифрованным текстом.
- ✅ Использовать HPKE (RFC 9180) для стандартизированного гибридного шифрования с X25519
- ✅ Эфемерная пара ключей отправителя обеспечивает прямую секретность для каждого сообщения
- ✅ Комбинация: X25519 (обмен ключами) + HKDF (деривация ключа) + AES-256-GCM (шифрование)
- 💡 Этот паттерн используется в age (инструмент шифрования файлов) и библиотеке Tink
Не рекомендуется: Использование X25519 в одиночку для обеспечения конфиденциальности
X25519 только производит общий секрет — он не шифрует никакие данные. Сам общий секрет не является шифртекстом; любая сторона, выполнившая то же вычисление DH (с правильными ключами), его получит. Без применения симметричного шифра поверх данные остаются в открытом виде. Это фундаментальное злоупотребление алгоритмом. Всегда сочетайте X25519 с AES-256-GCM или ChaCha20-Poly1305, чтобы действительно защитить данные.
- ❌ Не рассматривать общий секрет X25519 как шифртекст — это ключ, а не зашифрованные данные
- ❌ Не пропускать деривацию ключа — обработать секрет через HKDF перед использованием как ключ шифра
- ✅ X25519 + HKDF + AES-256-GCM — правильный паттерн гибридного шифрования
- 💡 X25519 решает проблему распределения ключей; симметричный шифр решает конфиденциальность данных
Сводка лучших практик
- X25519 — алгоритм обмена ключами: он производит общий секрет, а не шифртекст. Всегда сочетайте с AES-256-GCM или ChaCha20-Poly1305 для шифрования реальных данных.
- В продакшен-системах обрабатывайте общий секрет X25519 через HKDF-SHA256, прежде чем использовать его как ключ симметричного шифра.
- Используйте эфемерные пары ключей X25519 (генерируйте новую пару для каждой сессии), чтобы обеспечить прямую секретность.
- Не используйте ключи X25519 в качестве ключей подписи Ed25519 и наоборот — несмотря на одинаковую длину в 32 байта, внутренние представления различаются.
- X25519 является стандартом для TLS 1.3, WireGuard и Signal Protocol — предпочитайте его старому ECDH на кривых NIST для новых реализаций.