由于椭圆曲线在密钥长度和安全性方面具有优势,美国政府在1998年将椭圆曲线DSA写入标准。椭圆曲线DSA算法的过程和前述DSA算法基本相同,其签名也由一对整数( r , s )构成,其差别在于计算过程是基于椭圆曲线进行的。为方便起见,下面仅对差别部分进行描述。
在算法中, B 和 A 都是椭圆曲线上的点,且 B = mA 。我们已经知道,椭圆曲线上的数学难题是已知 B 和 A ,很难找到 m 。因此, m 是私钥,椭圆曲线采用的其他参数都是公钥。
在签名的过程中,Bob选择一个随机数 k ,使得1≤ k ≤ q -1,然后找到曲线上点 kA 的坐标( u , v )。Bob很容易通过坐标( u , v )确定签名{ r , s },即:
r = u mod q
以及
s = k -1 [SHA( x )+ mr ] mod q
验证的过程中,Alice计算:
w = s -1 mod q
i = w ×SHA( x ) mod q
j = w × r mod q
如果Alice计算点 F = iA + jB 的横坐标 u 满足 u mod q = r ,则通过验证;否则不通过。