curve25519 は、255 ビットの素体上のモンゴメリ形式の曲線 By² = x³ + Ax² + x で、位数が 253 ビットの素数である部分群とコファクター 8 を持ちます。推定セキュリティレベルは 128 ビットです。ステータス:新しいシステムに推奨。
Curve25519 は、素数 2^255 − 19 上のモンゴメリー曲線 y² = x³ + 486662x² + x で、2006年に Daniel J. Bernstein が設計し、RFC 7748 で規定されました。群の位数は 8·n(n は 253 ビットの素数)で、約 128 ビットのセキュリティを提供します。また、その二次ツイストも安全です。
X25519 はこの曲線上のディフィー・ヘルマン関数で、u 座標だけを使います。鍵は 32 バイトの文字列で、秘密鍵は、コファクターを通じて情報が漏れないよう RFC 7748 §5 の規定どおりに「クランプ」されます。この関数は任意の 32 バイトを公開鍵として受け入れます。位数の小さい点を入力すると共有秘密がすべてゼロになるため、プロトコルはこれを拒否すべきです。
TLS 1.3 では x25519 が「推奨」のグループとされ、ハイブリッド方式 X25519MLKEM768 の古典暗号側の要素としても使われています。SSH では curve25519-sha256(RFC 8731)として使われ、WireGuard、Signal、age もこの曲線の上に構築されています。ツイストエドワーズ形式の対となる曲線は edwards25519 で、Ed25519 署名に使われます。
規格での名称
| 規格 | 名称 |
|---|
| RFC 7748 | curve25519 |
| RFC 7748 / RFC 8410 | X25519 |
| SSH | curve25519-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
← すべての曲線