Digital Signature Algorithm(DSA)是Schnorr和ElGamal签名算法的变种,被
美国国家标准技术研究院(NIST)作为DSS(Digital Signature Standard)。
y:y = g^x mod p ,( p, q, g, y )为
公钥;
H( x ):One-Way
Hash函数。DSS(FIPS186-4)中选用SHA-1或者SHA-2( Secure Hash Algorithm系列中的2个较新版本,其中SHA-2有4个,SHA-224,SHA-256,SHA-384,SHA-512,最原始的SHA已经不再被使用)。
p, q, g可由一组用户共享,但在实际应用中,使用公共
模数可能会带来一定的威胁。签名及验证协议如下:
2. P计算 r = ( g^k mod p ) mod q
3. 验证时计算 w = s^(-1)mod q
DSA是基于整数
有限域离散对数难题的,其安全性与
RSA相比差不多。DSA的一个重要特点是两个素数公开,这样,当使用别人的p和q时,即使不知道私钥,也能确认它们是否是随机产生的,还是做了手脚。
RSA算法却做不到。