现代密码学复习总结(五)数字签名

杂凑函数

杂凑函数又称为:Hash编码;Hash函数;散列编码:散列函数;单向压缩函数。

杂凑函数是一种特殊的单向函数。

我们在密码学中希望有一种函数满足:

(1)将x压缩成为固定长度的比特串y。
(2)不同的x一定要生成不同的y。
(3)由y的值无法倒算x的值。

但实际上,1和2通常是互不相容的。

所以,当函数 y=H(x)满足

(1)将任意长度的比特串x压缩成为固定长度的比特串。
(2)已知x,计算y=H(x)很容易;已知y,找一个x满足y=H(x)却很困难。这一性质称为单向性。
(3)找(x1,x2),x1≠x2,H(x1)= H(x2),很困难。这一性质称为无碰撞性。

这样的函数称为杂凑函数

杂凑函数的性质(3)强于性质(2),即由无碰撞性能够得到单向性。

数字签名

数字签名应具备的性质

完整性:一个被签了名的消息,无法分割成为若干个被签了名的子消息。

身份唯一性(不可伪造性):被Alice签名的消息只能由Alice生成 。

不可否认性(公开可验证性):被Alice签名的消息,在未来不能被Alice否认。

几种数字签名算法

RSA数字签名

RSA的密钥生成和之前的加密算法一样:选择两个大的素数p和q。选择两个正整数e和d,满足:ed是(p-1)(q-1)的倍数加1,即e·d=1(mod (p-1)(q-1))

计算n=p·q。

Alice的公钥是(n,e),私钥是d。取杂凑函数y=H(x)。

(1) Alice用H将消息m进行处理,得散列值h=H(m)。
(2) Alice用自己的私钥d对h “解密”得s=hd(mod n) 。
(3) Alice将(m,s)发送给Bob。
(4) Bob用Alice的公钥e,检验是否H(m)= se(mod n)。若是,则(m,s)是Alice发送的签名消息。

ElGamal数字签名

ElGamal的密钥生成也和之前类似:选择一个大的素数p。选择g,1<g<p。选择x,1<x<p-1。计算y=gxmod p。

Alice的公钥是(p,g,y),私钥是x。

(1) Alice用H将消息m进行处理,得h=H(m)。
(2) Alice选择秘密随机数k,满足0<k<p-1,且(k, p-1)=1,计算r=gk(mod p); s=(h-x·r)k-1(mod (p-1))。
(3) Alice将(m,r,s)发送给Bob。
(4) Bob用Alice的公钥,检验是否yrrs=gH(m) ( mod p)。若是,则(m,r,s)是Alice发送的签名消息。

Schnorr数字签名

Alice拥有3个正整数(p,q,g),向自己的通信伙伴公开。其中:

p是模数,它是一个素数,值的范围在2511到2512之间(即p是一个长度为512的比特串)。

q也是模数,也是一个素数, 2159 < q(即q是一个长度不小于160的比特串),并且q是p-1的一个因子。

g是域GF(p )的元素,且gq=1(mod p)。

Alice选择x,其中1<x<q。

Alice计算y=gx(mod p)。

Alice的公钥是(p,q,g,y), Alice的私钥是x。

(1)Alice选择秘密随机数k,满足0<k<q,计算r=gk(mod p);e=H(r, m); s=k+xe(mod q)。
(2) Alice将(m,e,s)发送给Bob。
(3) Bob用Alice的公钥,计算r’=gsy-e(mod p)。检验是否e=H(r’, m)。若是,则(m,e,s)是Alice发送的签名消息。

ElGamal和Schnorr的不同

在ElGamal体制中,g为域GF(p )的本原元素;而在Schnorr体制中,g只是域GF(p )的阶为q的元素,而非本原元素。因此从这个角度上说, ElGamal的安全性似乎高于Schnorr 。

签名长度比较: Schnorr比ElGamal签名长度短。

数字签名算法DSA

Alice拥有3个正整数(p,q,g),向自己的通信伙伴公开。其中:

p是模数,它是一个素数,值的范围在2511到2512之间(即p是一个长度为512的比特串)。

q也是模数,也是一个素数, 2159 < q(即q是一个长度不小于160的比特串),并且q是p-1的一个因子。

g是域GF(p )的元素,且gq=1(mod p)。

Alice选择x,其中1<x<q。

Alice计算y=gx(mod p)。

Alice的公钥是(p,q,g,y), Alice的私钥是x。

PS:上面这些和Schnorr一样。

(1) Alice用H将消息m进行处理,得h=H(m)。
(2) Alice随机地选择一个整数k(0<k<q),计算r=(gk(mod p))(mod q);s=(k-1(h+x·r))(mod q)。

其中k-1是k的关于(mod q)的逆元,即k-1k(mod q)=1,0< k-1 <q。(r, s)就是对消息m的签名, (m, r, s)就是发送给Bob的签名消息。

Bob做如下的检验:

(1)是否0<r<q,0<s<q。若是则继续检验,否则拒收签名。
(2)计算h=H(m),w=s-1(mod q),u1=h·w(mod q),u2=r·w(mod q),v=(gu1yu2(mod p))(mod q)。

如果v=r,则验证了签名是有效的,否则拒收签名。

  • 16
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值