一 什么是DSA
DSA-Digital Signature Algorithm 是Schnorr和ElGamal签名算法的变种,被美国NIST作为DSS(DigitalSignature Standard)。简单的说,这是一种更高级的验证方式,用作数字签名。不单单只有公钥、私钥,还有数字签名。私钥加密生成数字签名,公钥验证数据及签名。如果数据和签名不匹配则认为验证失败!数字签名的作用就是校验数据在传输过程中不被修改。数字签名,是单向加密的升级!
DSA是算法,DSS是标准。标准采用算法,算法是标准的一部分。
二 DSA 参数
常见DSA参数(p、q、签名)长度为:
• 1024 160 320
• 2048 224 448
• 3072 256 512
三 密钥生成
以下为长度1024位的标准
DSA的核心思想包含两个循环群。第一个为大的循环群Zp,其阶对应的长度为1024位。
第二个为长度160位的Zq的子群。
四 签名生成
对数据x散列后做签名,签名结果为一对整数(r, s)。
五 签名验证
验证过程如下:
证明过程如下: