楕円曲線DSA
楕円曲線暗号で一般的に言われるように、ECDSAにおいて必要とされる公開鍵のサイズはセキュリティビット数のおよそ2倍であると考えられている。例えば、80ビットのセキュリティビット数(攻撃者が秘密鍵を取得するために 2 80 {\displaystyle 2^{80}} 回の計算を必要とする)を得るために、DSAでは最低でも1024ビットの公開鍵が必要であるが、ECDSAでは160ビットの公開鍵で十分である。一方、署名のサイズはDSAでもECDSAでも同じであり、必要とするビット安全性の4倍のビット長を要する(80ビットのビット安全性を保つためには320ビットの長さの署名が必要)。
ボブがアリスの署名を検証するためには、アリスの公開鍵 Q A {\displaystyle Q_{A}} が必要である。公開鍵 Q A {\displaystyle Q_{A}} が正当なものであるかの検証は以下のとおりである。
Q A {\displaystyle Q_{A}} が O {\displaystyle O} でないことを確認する。
Q A {\displaystyle Q_{A}} が曲線上にあることを確認する。
n ∗ Q A = O {\displaystyle n*Q_{A}=O} であることを確認する。
メッセージ m {\displaystyle m} と署名 ( r , s ) {\displaystyle (r,s)} の検証は以下のように行われる。
r {\displaystyle r} および s {\displaystyle s} がいずれも [ 1 , n − 1 ] {\displaystyle [1,n-1]} の範囲にある整数であることを確認する。これを満たさない場合には署名は不正なものである。
e = HASH ( m ) {\displaystyle e={\textrm {HASH}}(m)} を計算する。ここで HASH は署名生成に用いられたハッシュ関数と同一のものである。