2、义nds=≡Sigm()m(mod)nk为m的签名。3第七章第七章HASHHASH函数与数字签名体制函数与数字签名体制对给定的m的签名s,可按以下验证条件验证其真假:eVerms(,)=⇔≡truems(mod)nk4第七章第七章HASHHASH函数与数字签名体制函数与数字签名体制基于离散对数的数字签名体制基于求解有限域上离散对数的困难性而设计的数字签名体制统称为离散对数数字签名体制。著名的体制有ElGamal体制,Schnorr体制,DSS数字签名标准。5第七章第七章HASHHASH函数与数字签名体制函数与
3、数字签名体制ElGamal数字签名体制ElGamal数字签名体制是由T.ElGamal于1985年提出的既可用于加密又可用于签名的密码体制,其修正形式已被美国NIST(美国国家标准技术研究所)作为数字签名标准.该体制的安全性基于求F上离散对数的困难性,且p是一种非确定性公钥体制.6第七章第七章HASHHASH函数与数字签名体制函数与数字签名体制对于K=(p,α,x,β)和一个秘密的随机数k∈Z*,其中,p为素数,α为Z的本原元,β=αx(modp)p−1p为公钥,x为私钥.定义消息m的签名为Sigk(m,k)
4、=(s,t),其中s=αk(modp),t=(m−xs)k-1(modp−1).对m,s∈Z*和t∈Z,签名的验证定义如下:pp−1Verk(m,(s,t))=true⇔βsst=αm(modp)7第七章第七章HASHHASH函数与数字签名体制函数与数字签名体制在使用ElGamal数字签名体制时,我们还应当注意:1)签名者不能泄露签某个消息的随机数k.否则,可以由签名解出用户的私人密钥x.2)签名者也不能用同一个随机数k来签两个不同的消息m和m.128第七章第七章HASHHASH函数与数字签名体制函数与数字签
5、名体制数字签名标准(DSS)DSA数字签名体制是1991年8月由美国NIST公布1994年12月1日正式采用的美国联邦信息处理标准DSS(DigitalSignatureStandard)。这个签名标准有较大的兼容性和适用性,已成为网络中安全体系的基本构件之一。9第七章第七章HASHHASH函数与数字签名体制函数与数字签名体制DSS中所采用的签名算法简记为DSA(DigitalSignatureAlgorithm),此算法是D.W.Kravits于1993年设计的。算法中使用的单向HASH函数为SHA-1。D
6、SA是基于离散对数的签名体制。DSA使用了Z*的一个q元子群。在DSA中,要求q是p160比特的素数,p是长为L比特的素数,其中L≡0(mod64)且512≤L≤1024。10第七章第七章HASHHASH函数与数字签名体制函数与数字签名体制DSA还规定了在消息被签名之前,要用SHA-1算法将消息压缩。结果是160比特的消息摘要有320比特的签名,并且计算是在Z和Z上进行pq的。DSA与ElGamal体制相比,签名长度缩短,计算速度加快。11第七章第七章HASHHASH函数与数字签名体制函数与数字签名体制数字签
7、名标准(DSS)-签名算法对于K=(p,q,α,x,β)和一个秘密的随机数k,1≤k≤q−1,定义Sig(m,k)=(r,s),其中kr=kα(modp)(modq)s=k−1(SHA−1(m)+xr)(modq)(如果r=0或s=0,应该为k另选一个随机数)12第七章第七章HASHHASH函数与数字签名体制函数与数字签名体制数字签名标准(DSS)-验证算法对于m∈{0,1}*和s,r∈Z*q,验证是通过下面的计算来完成的:计算e=SHA-1(m)s-1(modq)1e=rs-1(modq)2eeVer(m,
8、(r,s))=true⇔(α1β2)(modp)(modKq)=rr=αk(modp)(modq)s=(SHA-1(m)+xr)k-1(modq)13第七章第七章HASHHASH函数与数字签名体制函数与数字签名体制椭圆曲线DSA在2000年,椭圆曲线数字签名算法(ECDSA,Ellipticcurvesdigitalsignaturealgorithm)作为FIPS186-2得到了批准.14第七章第