第八章 数字签名技术

发布时间:2022-07-05 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了第八章 数字签名技术脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

转https://www.cnblogs.COM/WITtPEng/p/8978737.htML

第八章 数字签名技

数字签名概述

基本概念

  数字签名技术一般分为带仲裁和不带仲裁的两类。如果使用对称密钥进行数字签名,则必须使用仲裁者,非对称可以不带仲裁。

  数字签名可以实现不可否认性和消息完整性认证(检验是否被篡改或伪造)

原理

  (P,S,K,Sig,Ver),P:密钥生成算法,S:签名算法,K:验证算发,Sign,Verify

      过程简图

        

第八章 数字签名技术

数字签名的实现方案

@H_565_406@

        ECDSA安全性依赖于基于椭圆曲线的有限群上的离散对数难题,与RSA和有限域离散对数的数字签名相比,在相同的安全强度条件下,有如下特点

      签名长度短、密钥存储空间小,特别是用于存储空间有限、带宽受限、要求高速实现的场合。

基于RSA的签名方案  密钥生成算法
  1. 选取两个512位的大素数p和q,使得N(=pq)为1024位;
  2. 可得Φ(N)=(p-1)(q-1);
  3. 选取随机整数e(1<e<Φ(N)),满足gcd(e,Φ(N))=1;
  4. 计算d: d≡e-¹(mod Φ(N));
  5. 公钥Pk=(n,e),私钥为{d,Φ(N),p,q}。

  这里,先选择e再确定d的原因是:加密的重要性大于解密的重要性。

  签名算法
  1. 利用一个安全的Hash函数h来产生消息摘要h(m);
  2. s≡h(m)d(mod n),s就是消息m的签名;
  3. 将(s,m)发送给B。
   验证算法
  1.   利用上述Hash函数生成h(m);
  2. 检验等式h(m)mod n≡se(mod n)是否成立,成立则签名有效,否则签名无效。
    正确性   

第八章 数字签名技术

    安全性 
  1. 签名时使用了Hash函数可以止利用同态的伪造攻击,有很好的抗攻击性。
  2. RSA签名方案存在签名可重用的问题,同一消息在不同时刻签名不应是相同的。
 基于离散对数的签名方案                  ElGamal签名体制     密钥生成算法
  1.  选取一个1024位的大素数p;
  2. 选择一个生成元g和随机数x,计算y≡gx(mod p)

           签名者的公钥是(p,g,y),私钥是x。

 签名算法 签名者选取随机数k,计算r≡gk(mod p),s≡[h(m)-xr]K-1(mod(p-1)),签名为(r,s),其中h为安全的Hash函数
 验证算法 计算h(m)后,验证yxrs≡gh(m)(mod p)是否成立  
 正确性   

第八章 数字签名技术

 安全性
  1. 随机数k的选取和保管:首先k值不能泄露,否则签名者的私钥泄露;其次,k不能重复使用;最后,签名者多次签名的的多个k之间无关联。
  2. 如果不使用Hash函数,则签名方案容易受到伪造攻击
 Schnorr签名体制     特点  签名速度较快,签名长度较短   
 密钥生成算法
  1. 选取两大素数p(1024位)和q,q是p-1的大素因子且长度比p小得多;
  2. 选取一个生成元,且gq≡1(mod o),g≠1;
  3. 选取随机数1<x<q,计算y≡gx(mod p),公钥为(p,q,g,y),私钥为x。
 签名算法

签名者选择随机数k,1≤k≤q-1,然后进行如下计算:

            r≡gk(mod p)

            e=h(m,r)

            s≡(xe+k)(mod q)

签名为(e,s),其中h为安全的Hash函数。

 验证算法 签名接收者在收到消息m和签名(e,s)后,首先计算r1≡gsy-e(mod p) ,然后验证e=h(e,r1),如果等式成立则签名有效,否则无效。
 正确性和安全性

  

第八章 数字签名技术

 

 安全性和ElGaml类似

 DSA签名体制      密钥生成算法
  1.   选取160bite的素数q,选择512~1024bite的素数p,使得p-1能被q整除
  2. 选择g≡h(p-1)/q(mod p),h满足1<h<p-1,且g>1;
  3. 选择1~q之间的随机数x作为私钥,计算y≡gx(mod p),用户的公钥是(p,q,g,y)
 签名算法   选取随机数k,r=(gkmod p)mod q,s≡[h(m)+xr]k-1(mod q),其中h是SHA1的特定Hash函数
 验证算法

收到m和签名值(r,s)后,计算

  w≡s-1(mod q)  

  u1≡h(m)w(mod q)

  u2≡rw(mod q)

  v=(gu1yu2mod p)mod q

比较v和r,相同则签名有效,否则无效。

 正确性   

第八章 数字签名技术

 安全性 DSA是ElGamal的变形,因此安全性论述在此也同样使用。还有一点是签名算法计算的s正好为0时,会产生1除以0的情况,必须放弃这个签名。  
  三种签名体制的对比   

第八章 数字签名技术

 

 离散对数签名体制 

第八章 数字签名技术

 

        基于椭曲线的签名方案          密钥生成算法

  选择E上一点G∈E,G的阶为满足安全要求的素数n,即nG=O。

  选取一个随机数d∈[1,n-1],计算Q使得Q=dG,那么公钥为(n,Q),私钥为d。

签名算法
  1. 用户随机选取整数k∈[1,n-1],计算kG=(x,y),r≡x(mod n);
  2. 计算e=h(m);
  3. 计算s≡(e+rd)k-1(mod n),如果r=0或s=0,则另选随机数k,重新执行上面的过程,消息m的签名为(r,s)。
验证算法 
  1.   计算e=h(m);
  2. 计算u≡s-1e(mod n),v≡s-1r(mod n),(x1,y1)=uG+vQ,r1≡x1(mod n);
  3. 判断r和r1的关系,相等则签名有效,否则无效。
正确性    

第八章 数字签名技术

 

   安全性    

特殊数字签名

  • 代理签名
  • 盲签名
  • 群签名
  • 不可否认签名
  • 门限数字签名
  • 多重数字签名
  • ··· ··

脚本宝典总结

以上是脚本宝典为你收集整理的第八章 数字签名技术全部内容,希望文章能够帮你解决第八章 数字签名技术所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。