EdDSA
RFC 8032 エドワーズ曲線デジタル署名アルゴリズム Edwards-Curve Digital Signature Algorithm (EdDSA)
RFC 7748 セキュリティのための楕円曲線 Elliptic Curves for Security
Curve22519
Ed448-Goldilocks
RFC 6090 基本的な楕円曲線暗号アルゴリズム Fundamental Elliptic Curve Cryptography Algorithms $ v^2 = u^3 + Au^2 + u
Ax^2 + y^2 = 1 + Dx^2y^2
$ x^2 + y^2 = 1 + d*x^2*y^2 for 素数 p p = 3 mod 4の場合
ツイストエドワーズ曲線$ -x^2 + y^2 = 1 + d*x^2*y^2 p = 1 mod 4 の場合
RFC 7748 4.1 Curve25519
$ v^2 = u^3 + Au^2 + u
A 486662
よくわからなパラメータ
table:Ed25519ph, Ed25519ctx, Ed25519
Parameter 値
p 2^255 - 19 edwards25519 in RFC 7748
b 256
GF(p)の符号化 255-bit little-endian of {0, 1, ... p-1}
H(x) SHA-512(dom2(phflag,context)||x) RFC 6234
c base 2 logarithm of cofactor of edwards 25519 in RFC 7748 (例 3)
n 254
d 例 -121665/121666 = ... RFC 7748
a -1
B (X(P),Y(P)) RFC 7748
L RFC 7748
PH(x) x
Ed25519
Ed25519ctx コンテキストそのまま?
Ed25519ph ハッシュから?
ECDSAと似ているが乱数っぽいもの(nonce)の生成が手順に入っているためより安全? ブラウザではSafari以外が未サポート
table:強度
種類 強度bit 公開鍵長byte 署名byte, ハッシュ長 ハッシュ関数
Ed25519 128 32 (256bit) 64 (512bit) SHA-512 Ed448 224 57 (456bit) 114 (912bit) SHAKE256 パラメータは11あるが多すぎるのでセットで定義されたものを使う
ECDSAでよく使われる曲線(NISTなどが定義しているもの)とは別のEd25519とEd448があるようだ。Ed25519が一般的に使われる
p の値が $ 2^{255} - 19 なところから Ed25519
Ed448 は $ 2^{448} - 2^{224} - 1
RFC 8032 の 3
1. 奇数の素数p, EdDSAは有限体GF(p)上の楕円曲線を使用する。
2. $ 2^{b-1}>pの整数b。EdDSA公開鍵はb bitで署名は2*b bit。bは8の倍数がおすすめ。
3. 有限体GF(p) の b-1 bit出力
4. 2*b ビット出力のハッシュ関数H SHAKE系がひつよう?
5. 2 または 3 の整数 c。秘密のEdDSAスカラーは 2^cの倍数。整数cは2を底とする補数の対数。
6. c <= n < b の整数 n。秘密のEdDSAスカラーは n + 1 ビットで、上位ビット(2^nの位置)は常に設定され、下位cビットは常にクリアされます。
7. GF(p)の非正方形要素(non-square element) d。通常の推奨は、許容できる曲線を与えるゼロに最も近い値としてそれをとることです。
8. GF(p)の非ゼロの正方形要素(non-zero square element) a。最高のパフォーマンスを得るための通常の推奨は、 p mod 4 = 1の場合は a = -1, p mod 4 = 3 の場合は a = 1 です。
ssh では利用できるがhttps TLSでは未対応の環境がまだある 利用
RFC 8419 Use EdDSA署名 in CMS