数字签名标准(DSS)
来自EEWiki.
DSS是Data Signature Standard的缩写。包括数字签名和验证两部分。DSS的主要参数有:
1.素数2511<p<2512。
2.q是p-1的一个因子,2159<p<2160。
1。
4.正整数x,0<x<q.x作为密钥。
5.y≡gxmod p,
6.K为尾随机数,0<K<q。
其中p,q,g公开,也可以为用户公用。一个用户的私钥为x,y为公钥。
签名的过程为
用户随机选择数K,计算
r≡(gkmod p)mod q
s≡[K-1(H(m)+xr)]]mod q
其中K-1K mod q≡1,0< K-1<q,则(r,s)构成了对信息m的数字签名。
验证过程:
如果接收者收到m,r,s后,若0<r<q, 0<s<q,则计算
ω≡(s)-1mod q
u1≡((H(m)ω) mod q
u2≡((r)ω) mod q
若r=v,则确认签名正确。可以证明当m=m’,r=r’,v=v’时,必然v=v'
从上可见DSS基于一般的公钥密码体制的理论基础是一个公钥数字签名系统。如果说公呀密码需要一陷门单向函数,而公钥签名系统由于无需加密,只需要单向函数就可以了。所谓单向函数就是已知自变量不难求的函数值,但是已知函数值反过来求自变量确是不可能的一类函数。
DSS的实现要解决寻找满足条件2511<p<2512的素数p,以及满足条件2159<p<2160的p-1的素因子q,素因子的产生多采用概率算法,至于q的产生可以按照如下步骤进行:
1.设q为素数,2159<p<2160。
2.在((2511-1)/2q,(2512-1)/2q)之间产生一个整数n..
3.tß2nq+1.
4 测试t是否为素数,若t是素数,则作始pßt,结束。终止。否则转2。
可见,实际上先产生q,再去生成p,而不是生成p,然后印数分解(p-1)产生q.
