一、历史
1991年8月,NIST(Nation Institute of Standards and Technology,美国国家标准技术研究所)提出了数字签名算法(DSA)用于他们的数字签名标准(DSS)中。
DSA是算法,DSS是标准。标准采用算法,算法是标准的一部分。
但是NIST的通告引起了大量谴责,这些谴责的政治性多于学术性。许多已经取得RSA算法专利许可权的大型软件公司也站出来反对DSS,他们已经投入大量的资金来实现RSA算法,他们当然不希望这些资金白白流失。
1994年5月19日,该标准最终颁布。
二、DSA算法的描述
DSA是Schnorr和ElGamal签名算法的变形,该算法的安全性依赖于计算模数的离散对数的难度。
DSA签名中的公开密钥:
p | 512~1024位的素数(可以在一组用户中共享) |
---|---|
q | 160位长,并与 p-1 互素的因子(可以在一组用户中共享) |
g | g=h(p-1)/q mod p,其中 h 小于 p-1 并且 h(p-1)/q mod p > 1 |
y | y=gx mod p (一个p位的数) |
在标准最初版本中&#x