Безопасность
Curve25519
Эллиптическая кривая, спроектированная Дэниелом Бернштейном в 2005. Основа Diffie-Hellman (X25519) в WireGuard, TLS 1.3, Signal, SSH. Стандарт де-факто для современной асимметричной криптографии.
Что это
Curve25519 — это эллиптическая кривая Монтгомери над полем GF(2²⁵⁵ − 19), спроектированная Дэниелом Бернштейном в 2005 году специально для быстрого и безопасного Diffie-Hellman. Используется в двух режимах:
- X25519 — Diffie-Hellman key exchange (RFC 7748). Применяется в TLS 1.3, WireGuard, Noise Protocol, Signal Protocol, SSH.
- Ed25519 — цифровые подписи на той же кривой через схему EdDSA (RFC 8032). Применяется для подписи TLS-сертификатов, SSH-ключей, transparency-логов.
К 2026 году Curve25519 — самая распространённая ECC-кривая в практической криптографии, обогнавшая NIST-кривые P-256/P-384 из-за подозрений к константам последних.
Как это работает
Кривая определяется уравнением y² = x³ + 486662·x² + x над простым полем 2²⁵⁵ − 19. Базовая точка имеет порядок чуть меньше 2²⁵². Private key — 32 байта (256 бит), public key тоже 32 байта (только x-координата точки).
Diffie-Hellman через X25519:
Alice: a (private), A = a·G (public)
Bob: b (private), B = b·G (public)
Shared: Alice вычисляет a·B, Bob вычисляет b·A — оба получают a·b·G
Ключевое преимущество — операция X25519 реализуется через Montgomery ladder, который выполняется за константное время (constant-time) на любой архитектуре, без branch’ей по секретным данным. Это отрезает целый класс side-channel атак — таймингов, кэш-атак, power analysis.
Применение в WireGuard:
[Interface]
PrivateKey = <base64 32 байт x25519>
ListenPort = 51820
[Peer]
PublicKey = <base64 32 байт x25519 публичного ключа peer'а>
Endpoint = vpn.example.com:51820
Handshake WireGuard — это IK-pattern Noise Protocol, основанный целиком на X25519 + ChaCha20-Poly1305 + BLAKE2s.
Почему это важно для пользователя VPN
Если VPN-сервис говорит “WireGuard” или “modern crypto” — за этим почти наверняка стоит Curve25519. Это не маркетинг, а инженерное решение: 32-байтные ключи помещаются в QR-код или в одну строку Telegram, handshake занимает 1 RTT, на ARM-смартфоне Curve25519 опережает RSA-2048 в 10-20 раз по скорости.
Что юзеру стоит знать:
- TLS 1.3 в Chrome/Firefox по умолчанию предпочитает X25519 для key exchange (ECDHE). При подключении к HTTPS-сайту через VPN на этой кривой строится session key для каждого соединения.
- Forward secrecy. Ephemeral X25519 (новая ключевая пара на каждую сессию) гарантирует PFS — даже если завтра украдут долговременный приватный ключ сервера, прошлый трафик не расшифруют.
- Post-quantum угроза. X25519 уязвим к гипотетическому квантовому компьютеру (алгоритм Шора). В 2026 году TLS 1.3 уже переходит на гибридные kex (X25519 + ML-KEM), см. Post-quantum VPN.
Curve25519 — это не “ещё одна кривая”, это инженерное решение, на котором стоит почти вся современная end-to-end-криптография.
Связанные термины
X25519 — это Curve25519 в режиме DH. ChaCha20-Poly1305 — обычно идёт в паре в одной cipher suite. Noise Protocol — фреймворк, использующий X25519 как стандартный примитив. WireGuard handshake целиком построен на Curve25519. TLS 1.3 ECDHE по умолчанию предпочитает X25519.
Источники
- RFC 7748 — Elliptic Curves for Security
- RFC 8032 — EdDSA Signature Schemes
- cr.yp.to/ecdh.html — оригинальная страница Бернштейна
- Bernstein D.J. — Curve25519: new Diffie-Hellman speed records (PKC 2006).