Advertisement

数字签密综述

阅读量:

数字签密综述论文
数字签密综述PPT

DH提出公钥密码体制,解决对称密码体制密钥分配和数字签名

  • 因为单钥密码体制通信双方共享一个密钥,需要在通信前密钥分配,这增加密钥泄露的几率。 而公钥密码体制,通信双方都有自己的密钥对,发送方只需要拿自己的私钥签名,拿接收方的公钥加密即可;接收方拿自己的私钥解密,发送方的公钥验证签名。这中间没有共享同一私钥,也就不需要密钥分配。
  • 数字签名需要私钥,单钥密码体制由于共享同一密钥,就不能保证消息是发送方发的,如果发送方抵赖自己没有发,也没办法,因为接收方也可以发送这样的消息,没有不可否认性。 而公钥密码体制中通信双方都有自己的私钥,在没有敌手知道发送方的私钥前提下,拿自己的私钥对消息签名,接收方是不能对消息签名的,保证了不可否认性。当然还有身份认证性、数据完整性同理
  • 单钥密码体制还有个坏处就是和每个人通信都需要生成一对对称密钥,不然密钥大家都知道了。对称密钥实现是异或运算。

签密能够在一个合理的逻辑步骤内同时实现数字签名和公钥加密,其计算量和通信成本都要低于传统的“先签名后加密”。

在这里插入图片描述
在这里插入图片描述

  • 先签名后加密发送方操作步骤
  1. 用自己的私钥对消息m签名得到签名\sigma
  2. 拿随机产生对称密钥k对m和\sigma加密得到密文c1
  3. 拿接受者公钥对k公钥加密得到密文c2
  4. 将密文(c1,c2)发送给接收方
  • 先签名后加密接受方操作步骤
  1. 将(c1,c2)分解为c1、c2
  2. 用自己的私钥去解密c2得到k
  3. 用k去对称解密c1得到m、\sigma
  4. 用发送方的公钥去验证\sigma是否是m的签名

总结:

发送方私钥对消息签名使得发送方在拿到消息和签名时可以实现身份认证性、数据完整性、不可否认性; 这时候有了签名满足了身份认证性、数据完整性、不可否认性,就得把消息和签名对称加密给接收方; 利用接收方公钥加密对称密钥k使得接收方可以在不密钥共享的情况下利用自己的私钥解密出k,从而解密出明文和签名,对签名验证下就好了。

发送方对消息签名,用k对称加密明文和签名,虽然此时满足了机密性、完整性、认证、不可否认性,但是还得把k告诉接收方才能得到明文和签名,于是公钥加密k;接收方公钥解密出k后,对称解密出明文和签名,再验证签名即可;这样就实现了没有把对称密钥在信道上传输也能让接收方得到k

疑问:为什么不把明文和签名直接公钥加密给接收方,接收方拿自己私钥解密,得到明文和签名,拿发送方公钥验证签名不行吗?·

签密

签密分类

在这里插入图片描述

签密演化

  • 在原始的签密体制中,用户的公钥是从一个给定的集合中随机选取的。签密方案本身不能提供用户的认证功能,易受到“公钥替换攻击。也就是说原始签密不能确定所接收到的公钥不能确保和接收方私钥匹配这个问题可以通过公钥证书来解决。公钥证书利用CA的签名来绑定公钥和用户的身份。任何人都可以验证CA的签名来认证公钥。如果用户信任CA,在他验证一个用户证书有效性后,他就应该相信公钥的真实性。目前存在一个PKI的层次结构来管理证书。然而,证书管理限制了PKI发展
    在这里插入图片描述
    Bob想要发消息给Alice,首先A得有密钥对;现在A去产生并认证密钥对,A先自己产生密钥对,但是此时还是原始签密时候的密钥对,为了防止密钥替换攻击,我们去认证,把公钥和自己的名字Alice发给RA,RA也不能随便捆绑名字和公钥,所以需要验证公钥和申请方Alice私钥的匹配,如何验证?可以通过签名验签和加密解密来验证;签名验签方法是A发送一个消息和一个该消息的签名,RA接受到消息和签名后用A的公钥验证,验证成功就说明A的公钥和私钥匹配,从而公钥和名字是匹配的。在RA验证成功后,CA会给A颁发公钥证书,公钥证书上有A的名字、A的公钥以及CA对改证书的签名;然后CA把该证书存放到公钥目录,其他人就可以查了。Bob这时候把A的名字在公钥目录中查询,找到了该证书,拿到了A的公钥,首先去CRL查询该证书是否过期,过期就没用了,就删除了,没过期的话还要验证下证书是否真实性,用CA的公钥去验证证书签名,验证没问题的话就说明拿到的A的公钥没问题,之后公钥加密就可以了

  • 为了简化密钥管理,Shamir于1984年提出了基于身份的密码体制概念。用户公钥根据用户身份信息直接计算出来,用户私钥有PKG可信方生成。PKG知道所有用户的私钥不可避免的引起密钥托管问题。PKG可以冒充任何用户且不被发现。可以解密任何密文,也可以伪造任何消息的签名。
    在这里插入图片描述
    B给A发消息,先把A的名字放到散列函数的参数里,得到公钥,直接用公钥加密数据发给A。这样的好处就是A还不知道私钥的时候,其他人都可以发消息给A,当然A还是想知道别人发了什么消息,那么得知道自己私钥,A得问TA,TA就用自己主私钥对A名字散列值的签名发给A,A就可以解密了。因为TA知道所有人的私钥,坏处就有TA可以解密所有消息,还可以伪造签名等

  • 为了解决基于身份密码体制中的密钥托管问题,AlRiyami和Paterson提出了无证书密码体制的概念。无证书不需要公钥证书且没有密钥托管问题,是介于PKI和基于身份的密码体制之间的一种密码模式。
    无证书密码体制仍使用KGC,但KGC并不知道用户私钥。KGC对用户ID签名得到部分私钥并发给用户,用户联合自己的秘密信息生成实际的私钥。
    在这里插入图片描述
    B发消息给A还是直接用A的名字即可,不需要去公钥认证去请求了,也就没有了证书管理。
    无证书的私钥分为两部分后就只有用户自己知道私钥,CA也就不知道用户完全私钥,解决了密钥托管问题;

形式化模型及其算法

PKI

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 这里的r最好把它放到求s的公式里看
  • k2用于签名,s才是签名,c、r与签名没什么直接关系
  • B公钥的x次方放到哈希函数里,得到K1、k2;x起到随机性,B公钥的x次方就随机的让别人求不出k1、k2,k1,k2其实是随机求得,k1用于对称加解密,k2用于签名验签;然后用K1对明文加密,k2作为哈希函数的参数之一去哈希明文得到r,s=x/(r+Xa)中的x也是起到随机性,Xa就要用于签名的,签名肯定涉及到m,而r涉及到明文,所以Xa间接对明文签名,签密密文(c,r,s)也是通信量。密文发送给B后,B想办法拿到对称密钥才能解出c得到明文,那就要得到k1,那就得从已知求出未知,独门秘籍自己的私钥肯定参与,毕竟不能让别人求出来k1。既然用k1去对称加密就要让接收方求出k1,肯定会用到自己私钥,苦心根据已知条件凑出来求出k1,k2的公式后求出k1,k2,对称解密出明文,接下来就是验证明文的签名。
  • 验证签名就是看发送方公钥与发送方私钥匹配不,也就是签名和公钥匹配不,只要发送方是Xa签名的,通过Ya求出的k1、k2才符合,Xa对的就说明s对的、s对的就说明k1、k2对的,k1对的,那么求出来的m就是对的,既然m、k2是对的,那么r=KHk2(m)求出来的r就应该是对的,因为密文中的r肯定是对的,此时和密文中的r比较,如果相等就验证成功
    在这里插入图片描述

基于ID

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

无证书

在这里插入图片描述
在这里插入图片描述

全部评论 (0)

还没有任何评论哟~