加解密算法、消息摘要、消息认证技术、数字签(2)

  无法保证数据的真实性即不能确定数据和散列值是来自发送方的,因为攻击者完全可以将数据和散列值一起替换。

问题

  如何验证发送的数据确实来自于发送方?

3.保证数据的真实性

  要保证数据来自发送方,即确认消息来自正确的发送者,称为消息认证

3.1 消息认证

  消息认证码(Message Authentication Code,简称MAC)是一种可以确认消息完整性并进行认证的技术。消息认证码可以简单理解为一种与密钥相关的单向散列函数。

  1).A把消息发送给B前,先把共享密钥发送给B。

  2).A把要发送的消息使用共享密钥计算出MAC值,然后将消息和MAC发送给B。

  3).B接收到消息和MAC值后,使用共享密钥计算出MAC值,与接收到的MAC值对比。

  4).如果MAC值相同,说明接收到的消息是完整的,而且是A发送的。

  这里还是存在对称加密的密钥配送问题,可以使用公钥加密方式解决。

优点

  可以保证数据的完整性和真实性。

缺点

  接收方虽然可以确定消息的完整性和真实性,解决篡改和伪造消息的问题,但不能防止A否认发送过消息。

  加入A给B发送了消息,B接收到之后,A否认自己发送过消息给B,并抵赖说,“虽然我和B都能计算处正确的MAC值,但是可能是B的密钥被攻击者盗取了,攻击者给B发的消息。”

问题

  如何让发送方无法否认发送过数据?

3.2 数字签名

  数字签名(Digital Signature)可以解决发送方否认发送过消息的问题

  数字签名的重点在于发送方和接收方使用不同的密钥来进行验证,并且保证发送方密钥的唯一性,将公钥算法反过来使用可以达到此目的:A发送消息前,使用私钥对消息进行签名,B接收到消息后,使用配对的公钥对签名进行验证;如果验证通过,说明消息就是A发送的,因为只有A采用配对的私钥;第三方机构也是依据此来进行裁决,保证公正性。

  1).A把消息用哈希函数处理生成消息摘要,并报摘要用私钥进行加密生成签名,把签名和消息一起发送给B。

  2). 数据经过网络传送给B,当然,为了安全,可以用上述的加密方法对数据进行加密。

  3). B接收到数据后,提取出消息和签名进行验签。采用相同的哈希函数生成消息摘要,将其与接收的签名用配对的公钥解密的结果对比,如果相同,说明签名验证成功。消息是A发送的,如果验证失败,说明消息不是A发送的。

问题

  依然是,如何确保公钥的合法性

4.公钥证书

  我们看到,上面的公钥加密,数字签名的问题都在于如何保证公钥的合法性。

  解决办法是将公钥交给一个第三方权威机构——认证机构(Certification Authority)CA来管理。接收方将自己的公钥注册到CA,由CA提供数字签名生成公钥证书(Public-Key Certificate)PKC,简称证书。证书中有CA的签名,接收方可以通过验签来验证公钥的合法性

  1).接收方B生成密钥对,私钥自己保存,将公钥注册到CA。

  2).CA通过一系列严格的检查确认公钥是B本人的。

  3).CA生成自己的密钥对,并用私钥对B的公钥进行数字签名,生成数字证书。证书中包含B的公钥和CA的签名。这里进行签名并不是要保证B的公钥的安全性,而是要确定公钥确实属于B。

  4).发送方A从CA获取B的证书。

  5).A使用CA的公钥对从CA获取的证书进行验签,如果成功就可以确保证书中的公钥确实来自B。

  6).A使用证书中B的公钥对消息进行加密,然后发送给B。

  7).B接收到密文后,用自己的配对的私钥进行解密,获得消息明文。

5.算法详解索引

     1.DES算法详解(已完成)

  2.RSA算法详解(已完成)

  3.SHA算法详解(已完成)

  4.AES算法详解

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/56046400e5f2ad43f69858f0bcff2391.html