理论教育 数字签名标准及其应用-安全协议

数字签名标准及其应用-安全协议

时间:2023-10-28 理论教育 版权反馈
【摘要】:1994年美国政府颁布了数字签名标准,这标志着数字签名已得到政府的支持。SM2是我国的数字签名算法标准。数字签名算法DSA描述如下。参数x和k用于产生签名,必须保密。首先检验是否有0<r P<q,0<sP<q,若其中之一不成立,则签名为假。

数字签名标准及其应用-安全协议

1994年美国政府颁布了数字签名标准(Digital Signature Standard,DSS),这标志着数字签名已得到政府的支持。和当年推出DES时一样,DSS一提出便引起了一场激烈的争论。反对派的代表人物是MIT的Rivest和Standford的Hellman。反对的意见主要认为,DSS的密钥太短,效率不如RSA高,不能实现数据加密,并怀疑NIST在DSS中留有“后门”。尽管争论十分激烈,最终美国政府还是颁布了DSS。针对DSS密钥太短的批评,美国政府将DSS的密钥从原来的512位提高到512~1 024位,从而使DSS的安全性大大增强。SM2是我国的数字签名算法标准。

数字签名算法DSA描述如下。

1.算法参数

DSS的签名算法称为DSA,DSA使用以下参数:p为素数,要求2L-1<p<2L,其中L=512+64j(j=0,1,2,…,8);q是(p-1)的素因子,2159<q<2160;g=h(p-1)/q mod p,其中1<h<p-1,且满足使g=h(p-1)/q mod p>1;x为一随机数,0<x<q;y=gx mod p;k为一随机数,0<k<g。

这里参数p、q、g可以公开,且可为一组用户公用。x和y分别为一个用户的私钥和公开钥。所有这些参数可在一定时间内固定。参数x和k用于产生签名,必须保密。参数k必须对每一签名都重新产生,且每一签名使用不同的k。

2.签名的产生

对数据M的签名为r和s,它们分别如下计算产生:

其中,k-1为k的乘法逆元,即k-1k=1 mod q,且0<k-1<q。SHA是安全的Hash函数,它从数据M抽出其摘要SHA(M),SHA(M)为一个160位的二进制数字串。(www.daowen.com)

应该检验计算所得的r和s是否为零,若r=0或s=0,则重新产生k,并重新计算产生签名r和s。

最后,把签名r和s附在数据M后面发给接收者:(M,r,s)。

3.验证签名

为了验证签名,要使用参数p、q、g,用户的公开密钥y及其标识符。

令MP、r P、sP分别为接收到的M、r和s。首先检验是否有0<r P<q,0<sP<q,若其中之一不成立,则签名为假。计算:

若v=r P,则签名为真,否则签名为假或数据被篡改。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈