首页 > 其他 > 详细

消息认证码

时间:2021-06-19 09:18:34      阅读:21      评论:0      收藏:0      [点我收藏+]

1. 消息认证码

  消息认证码是一种确认完整性并进行认证的技术,Message Authentication Code,简称MAC。

  消息认证码的输入是任意长度的消息,一个发送者和接收者之间共享的密钥。输出是固定长度的MAC值。

 

2. 消息认证码的特点

  消息认证码是一种与密钥相关联的单向散列函数。消息认证码需要预先共享密钥。

  消息认证码也存在密钥配送问题,解决方案与对称密码相似:公钥密码,Diffie-Hellman,密钥分配中心等。

  消息认证码可以判断消息是否被篡改,是否有人伪装成发送者发送了该消息。

 

3. 应用实例

  SWIFT:国际组织,为国际银行间的交易保驾护航,使用了消息认证码技术。

  IPsec:对消息的认证和完整性校验都通过消息认证码来完成。

  SSL/TLS:通信内容的认证和完整性校验也使用了消息认证码。

 

4. 消息认证码的实现

  消息认证码的实现方式有很多种。

  使用单向散列函数实现

    使用SHA-2之类的单向散列函数可以实现消息认证码,其中一种叫做HMAC。

  使用分组密码实现

    分组密码的密钥作为消息认证的共享密钥来使用,用CBC模式将消息全部加密。

    将最后一个密文做MAC值。由于CBC模式的最后一个分组会受整个消息和密钥的双重影响,因此可以将它作为消息认证码。

 

5. 认证加密

  认证加密是把对称密码和消息认证码结合,同时满足了机密性,完整性和认证三大功能。

  步骤是先把明文进行对称加密,计算密文的MAC值,通过MAC值可以判断“这段密文是由知道明文和密钥的人生成的”。

  GCM,一种认证加密方式,使用AES等128比特分组密码的CTR模式,并使用一个反复进行加法和乘法运算的散列函数计算MAC值。

      专门用于消息认证码的GCM称为MMAC。

 

6. HMAC

  使用单向散列函数构造消息认证码的方式,任何高强度的散列函数都可被用于HMAC,HMAC的H就是hash的意思。

  HAMC的步骤:

  技术分享图片

 

  ipad是将00110110这一比特序列不断反复循环,直到达到分组长度所形成的比特序列。

  opad是将01011100这一比特序列不断反复循环 ,直到达到分组长度形成的比特序列。

 

7. 对消息认证码的攻击

  重放攻击:截获消息和MAC值,不破解消息认证码,把正确的消息+MAC重复利用。

         抵御重放攻击:

       ①序号:约定每次都对发送的消息赋予一个递增的编号,计算MAC时将序号也包含在消息里。

       ②时间戳:消息中包含当前的时间。

          ③nonce:通信之前,接收者先向发送者发一个一次性随机数nonce,发送者在消息中包含nonce并计算MAC值,每次通信nonce都会变化。

  密钥推测攻击:

       对单向散列函数的攻击一样,对消息认证码也可以进行暴力破解和生日攻击。

       对消息认证码来说,不能根据MAC值推测出通信双方所使用的密钥。

 

8. 消息认证码不能解决的问题

  对第三方证明:对于第三方,无法证明消息是对方生成的,而不是自己生成的。解决方法是数字签名。

  防止否认:发送方对已经发送消息进行否认,消息认证码无法防止否认。解决方法是数字签名。

消息认证码

原文:https://www.cnblogs.com/yangdadahome/p/14901726.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!