離散対数問題を安全性の根拠にするデジタル署名。
Note
現在の新規用途では、ECDSA や EdDSA の方が一般的。
署名者 A と検証者 B の間のやり取りを考える。
- 素数 p,q と g∈Fp を固定し、
A と B で共有する
q∣p−1,gq≡1modp
A 秘密鍵 x∈{1,…,q−1} を決め、公開鍵 y を共有する
y≡gx(modp)
A はメッセージ m に署名 (r,s) を作り、B に送る
krs∈{1,…,q−1},=(gkmodp)modq,≡k−1(H(m)+xr)(modq)
Note
r=0 または s=0 の場合、この後に困るので、nonce k を選び直す。
B は (r,s) を検証する
wu1u2v≡s−1(modq)≡H(m)w(modq)≡rw(modq)=(gu1yu2modp)modqv=r なら正しい署名