Перейти к содержимому
ecdsa.com
РекомендуемаяФорма Монтгомери

curve25519

Curve25519 — кривая Монтгомери, на которой построен X25519, обмен ключами по умолчанию в TLS 1.3, SSH и WireGuard.

curve25519 — кривая Монтгомери By² = x³ + Ax² + x над 255-битным простым полем с 253-битной подгруппой простого порядка и кофактором 8; оценочный уровень стойкости — 128 бит. Статус: рекомендуется для новых систем.

Curve25519 — кривая Монтгомери y² = x³ + 486662x² + x над полем по модулю простого числа 2^255 − 19; её разработал Дэниел Бернштейн (Daniel J. Bernstein) в 2006 году, а описана она в RFC 7748. Порядок её группы равен 8·n, где n — 253-битное простое число, что даёт около 128 бит стойкости; квадратичное скручивание этой кривой тоже стойкое.

X25519, функция Диффи — Хеллмана на этой кривой, использует только координату u: ключи — 32-байтовые строки, а в закрытых ключах по RFC 7748, § 5 принудительно выставляются отдельные биты («clamping»), чтобы через кофактор не утекала информация. Функция принимает в качестве открытого ключа любые 32 байта; входные значения малого порядка дают общий секрет из одних нулей, и протоколам следует отвергать такой секрет.

В TLS 1.3 группа x25519 отмечена как рекомендуемая (Recommended) и служит классической половиной гибридной схемы X25519MLKEM768; в SSH она используется как curve25519-sha256 (RFC 8731), а WireGuard, Signal и age построены на ней. Её двойник в скрученной форме Эдвардса — кривая edwards25519, на которой работают подписи Ed25519.

Названия в стандартах

СтандартНазвание
RFC 7748curve25519
RFC 7748 / RFC 8410X25519
SSHcurve25519-sha256

Идентификаторы объектов

Параметры кривой

255-битное простое поле · примерно 128-битная стойкость

Простой модуль поля p
0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffed
Коэффициент a
0x76d06
Коэффициент b
0x1
Координата x базовой точки
0x9
Координата y базовой точки
0x20ae19a1b8a086b4e01edd2c7748d14c923d4d7e6d7c61b229e9c5a27eced3d9
Порядок n базовой точки
0x1000000000000000000000000000000014def9dea2f79cd65812631a5cf5d3ed
Кофактор h
0x8

Где используется

  • TLS 1.3 (x25519, X25519MLKEM768)
  • SSH (curve25519-sha256)
  • Signal
  • WireGuard
  • age
  • HPKE

Идентификаторы в реестрах

Поддерживаемые группы TLS
x25519 0x001DMLKEM512X25519 0x11EAX25519MLKEM768 0x11ECX25519Kyber768Draft00 0x6399
Алгоритмы JOSE
HPKE-3HPKE-3-KEHPKE-4
Кривые JWK
X25519
Эллиптические кривые COSE
X25519 4
Методы обмена ключами SSH
curve25519-sha256gss-curve25519-sha256-*mlkem768x25519-sha256sntrup761x25519-sha512
Идентификаторы KEM в HPKE
DHKEM(X25519, HKDF-SHA256) 0x0020DHKEM(X25519+Elligator, HKDF-SHA256) 0x0022X25519Kyber768Draft00 0x0030X-Wing 0x647A

Стандарты и ссылки

Все кривые