消息认证码

(一)介绍

消息的认证( authentication)指的是“消息来自正确的发送者”这一性质。如果能够确认汇款请求确实来自Alice银行,就相当于对消息进行了认证,也就意味着消息不是其他人伪装成发送者所发出的。

消息认证码( message authentication code )是一种确认完整性并进行认证的技术,取三个单词的首字母,简称为MAC。

消息认证码的输人包括任意长度的消息和一个发送者与接收者之间共享的密钥,它可以输出固定长度的数据,这个数据称为MAC值。

根据任意长度的消息输出固定长度的数据,这一点和单向散列函数很类似。但是单向散列函数中计算散列值时不需要密钥,而消息认证码中则需要使用发送者与接收者之间共享的密钥。

要计算MAC必须持有共享密钥,没有共享密钥的人就无法计算MAC值,消息认证码正是利用这一性质来完成认证的。此外,和单向散列函数的散列值一样,哪怕消息中发生1比特的变化,MAC值也会产生变化,消息认证码正是利用这一性质来确认完整性的。

后面我们会讲到,消息认证码有很多种实现方法,大家可以暂且这样理解:消息认证码是一种与密钥相关联的单向散列函数。

(二)消息认证码的使用步骤

以Alice银行和Bob银行的故事为例,来讲解一下消息认证码的使用步骤
在这里插入图片描述
(1)发送者Alice 与接收者Bob事先共享密钥。
(2)发送者Alice根据汇款请求消息计算MAC值(使用共享密钥)。
(3)发送者Alice将汇款请求消息和 MAC值两者发送给接收者Bob。
(4)接收者Bob根据接收到的汇款请求消息计算MAC值(使用共享密钥)。
(5)接收者Bob将自己计算的MAC值与从Alice处收到的MAC值进行对比。
(6)如果两个MAC值一致,则接收者Bob就可以断定汇款请求的确来自Alice(认证成功);如果不一致,则可以断定消息不是来自Alice(认证失败)。

(三)消息认证码的密钥配送问题

发送者和接收者需要共享密钥,这一点和对称密码很相似。实际上,对称密码的密钥配送问题在消息认证码中也同样会发生。要解决密钥配送问题,我们需要像对称密码一样使用一些共享密钥的方法,例如公钥密码、Diffie-Hellman密钥交换、密钥分配中心,或者使用其他安全的方式发送密钥等。至于使用哪种配送方法,则需要根据具体的目的来进行选择。

(四)应用实例

SWIFT
SWIFT的全称是Society for Worldwide Interbank Financial Telecommunication(环球银行金融电信协会),是于1973年成立的一个组织,其目的是为国际银行间的交易保驾护航。该组织成立时有15个成员国,2008年时已经发展到208个成员国。
银行和银行之间是通过SWIFT来传递交易消息的。而为了确认消息的完整性以及对消息进行验证,SWIFT中使用了消息认证码。这正好就是我们开头提到的Alice银行和 Bob银行的场景。在使用公钥密码进行密钥交换之前,消息认证码所使用的共享密钥都是由人来进行配送的。

IPsec
IPsec是对互联网基本通信协议——IP协议(Internet Protocol )增加安全性的一种方式。在IPsec 中,对通信内容的认证和完整性校验都是采用消息认证码来完成的。

SSL/TLS
SSL/TLS是我们在网上购物等场景中所使用的通信协议。SSL/TLS中对通信内容的认证和完整性校验也使用了消息认证码。

(五)消息认证码的实现方式

1、使用单向散列函数实现
使用SHA-1、MD5之类的单向散列函数可以实现消息认证码,其中一种实现方法称为HMAC

2、使用分组密码实现
使用DES、AES之类的分组密码可以实现消息认证码。
将分组密码的密钥作为消息认证码的共享密钥来使用,并用CBC模式将消息全部加密。由于消息认证码中不需要解密,因此将除最后一个分组以外的密文部分全部丢弃,而将最后一个分组用作MAC值。由于CBC模式的最后一个分组会受到整个消息以及密钥的双重影响,因此可以将它用作消息认证码。

3、其他实现方法
此外,使用流密码和公钥密码等也可以实现消息认证码。

(六)HMAC介绍

HMAC是一种使用单向散列函数来构造消息认证码的方法(RFC2104),其中HMAC的H就是Hash的意思。
HMAC中所使用的单向散列函数并不仅限于一种,任何高强度的单向散列函数都可以被用于HMAC,如果将来设计出新的单向散列函数,也同样可以使用。
使用SHA-1、MD5、RIPEMD-160所构造的HMAC,分别称为HMAC-SHA-1、HMAC-MD5和 HMAC-RIPEMD。

基本步骤
1、密钥填充,如果分组长度不足,需要末尾补0
2、填充后的密钥与ipad的XOR运算,这个比特序列称为ipadkey
3、将ipadkey与消息进行组合
4、将上一步的结果作为输入到单向散列函数,计算散列值
5、填充的密钥与opad的XOR运算
6、将第4步散列值拼在opadkey后面
7、将第6步的输入单向散列函数,计算散列值,这个散列值就是最终的MAC值

(七)分析

(1)攻击者可以通过重放攻击方式攻击消息认证码。该种方式就是在通信双方建立连接后,攻击者获取通信过程中正确的MAC值,然后利用这个MAC值不断的重复发送消息给接收者。攻击者不需要破解消息认证码,只是将发送者正确的MAC值保存下来重复利用。
有几种方式可以防御重放攻击:序号、时间戳、随机数nonce

(2)消息认证对于下面俩个问题无法处理

1、第三方证明,接收者无法验证消息是否是Alice发送的
2、上面说到接受者无法验证消息发送方,因此这样就会导致接收者可以否认接受到某条信息

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ZWZhangYu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值