X25519 Зашифровать

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

National Standards
Other
Вывод

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

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

Usage Guide

О X25519 (Curve25519 ECDH)

X25519 — это функция обмена ключами Диффи-Хеллмана на основе Curve25519, стандартизированная в RFC 7748. Это наиболее широко развёрнутый алгоритм обмена ключами на эллиптических кривых в мире — используется как стандартный механизм обмена ключами в TLS 1.3, WireGuard VPN, Signal Protocol и Noise Protocol Framework. X25519 обеспечивает ~128 бит безопасности при 32-байтных ключах, спроектирован устойчивым к атакам по сторонним каналам и создан Дэниелом Дж. Бернштейном.

Обмен ключами — не шифрование: X25519 выполняет только согласование ключей. Он производит общий секрет, который обе стороны могут вычислить независимо — сам по себе он не шифрует и не расшифровывает данные. Полученный общий секрет необходимо использовать как ключ для симметричного шифра, например ChaCha20-Poly1305 или AES-256-GCM, чтобы обеспечить конфиденциальность.

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

Этот инструмент вычисляет общий секрет Диффи-Хеллмана X25519 из вашего закрытого ключа и открытого ключа вашего собеседника:

1. Сгенерировать пару ключейНажмите «Сгенерировать пару ключей», чтобы создать новую пару ключей X25519. Закрытый ключ (64 шестнадцатеричных символа) заполняется в поле «Мой закрытый ключ». Соответствующий открытый ключ хранится внутри — скопируйте его и поделитесь с собеседником по другому каналу.
2. Обменяться открытыми ключамиОтправьте свой открытый ключ (64 шестнадцатеричных символа) собеседнику. Получите его ключ и вставьте в поле «Открытый ключ собеседника (Hex)». Этот обмен может происходить по любому каналу — открытый ключ не является секретом.
3. Вычислить общий секретНажмите «Зашифровать». Инструмент выполняет DH(ваш_закрытый_ключ, открытый_ключ_собеседника) и выводит 64-символьный шестнадцатеричный общий секрет (32 байта). Ваш собеседник выполняет ту же операцию в обратном порядке и получает идентичный общий секрет.
4. Использовать общий секрет для шифрованияВведите общий секрет (или KDF-производный ключ) в симметричный шифр, такой как AES-256-GCM или ChaCha20-Poly1305. В производственных системах общий секрет не следует использовать напрямую как ключ шифра без деривации ключа (например, HKDF).
Только в браузере: Все операции генерации ключей и вычисления DH выполняются полностью в вашем браузере с использованием WebCrypto API. Никакие ключи никогда не передаются на сервер.

Формат ключей

Ключи X25519 в этом инструменте используют компактный шестнадцатеричный формат:

Закрытый ключ64 шестнадцатеричных символа = 32 байта. Случайное скалярное значение. Держите в секрете. Пример: a3f1e2d4c5b6a7f8e9d0c1b2a3f4e5d6c7b8a9f0e1d2c3b4a5f6e7d8c9b0a1f2
Открытый ключ64 шестнадцатеричных символа = 32 байта. Результат умножения базовой точки на Curve25519 на закрытый скаляр. Можно свободно публиковать. Пример: 5b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0a1b2c3d4e5f6a7b8
Общий секрет64 шестнадцатеричных символа = 32 байта. Вычисляется как DH(мой_закрытый, открытый_собеседника) = DH(закрытый_собеседника, мой_открытый). Это равенство является математической основой обмена ключами Диффи-Хеллмана.
Ключи не взаимозаменяемыКлючи X25519 и Ed25519 выглядят одинаково (64 шестнадцатеричных символа, 32 байта), но используют разные внутренние представления и НЕ взаимозаменяемы. Никогда не используйте закрытый ключ Ed25519 как закрытый ключ X25519 и наоборот.

X25519 vs EdDSA (Ed25519)

X25519 и Ed25519 оба основаны на Curve25519, но служат совершенно разным криптографическим целям:

НазначениеX25519: обмен ключами (Диффи-Хеллман). Ed25519: цифровые подписи (аутентификация). Они не могут заменять друг друга.
Математическая формаX25519 использует форму Монтгомери Curve25519 для эффективного скалярного умножения. Ed25519 использует скрученную форму Эдвардса. Хотя они биррационально эквивалентны, кодировки ключей различаются.
Ключи не взаимозаменяемыКлючи НЕ взаимозаменяемы, несмотря на одинаковую длину в байтах. Использование пары ключей Ed25519 для X25519 DH является криптографическим нарушением, способным скомпрометировать безопасность.
Совместное использованиеНа практике протоколы вроде Signal используют оба вместе: X25519 для согласования ключей (установка ключа сессии) и Ed25519 для аутентификации (подпись обмена ключами для предотвращения атак MITM).
Связанные инструменты: Для цифровых подписей используйте инструмент EdDSA (Ed25519). Для симметричного шифрования с общим секретом используйте ChaCha20-Poly1305 или AES-256-GCM.

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.

Recommended Configuration:
  • ✅ Включить 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) — делает его поддающимся аудиту и быстрым.

Recommended Configuration:
  • ✅ 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, обеспечивая как прямую секретность, так и восстановление после взлома. Это считается золотым стандартом для защищённого обмена сообщениями.

Recommended Configuration:
  • ✅ 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 и отправляет эфемерный открытый ключ вместе с зашифрованным текстом.

Recommended Configuration:
  • ✅ Использовать HPKE (RFC 9180) для стандартизированного гибридного шифрования с X25519
  • ✅ Эфемерная пара ключей отправителя обеспечивает прямую секретность для каждого сообщения
  • ✅ Комбинация: X25519 (обмен ключами) + HKDF (деривация ключа) + AES-256-GCM (шифрование)
  • 💡 Этот паттерн используется в age (инструмент шифрования файлов) и библиотеке Tink
Не рекомендуется: Использование X25519 в одиночку для обеспечения конфиденциальности

X25519 только производит общий секрет — он не шифрует никакие данные. Сам общий секрет не является шифртекстом; любая сторона, выполнившая то же вычисление DH (с правильными ключами), его получит. Без применения симметричного шифра поверх данные остаются в открытом виде. Это фундаментальное злоупотребление алгоритмом. Всегда сочетайте X25519 с AES-256-GCM или ChaCha20-Poly1305, чтобы действительно защитить данные.

Recommended Configuration:
  • ❌ Не рассматривать общий секрет 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 для новых реализаций.

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

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