报文摘要和报文鉴别码
报文摘要(Message Digest)和报文鉴别码(Message Authentication Code, MAC)是保障数据完整性和认证性的核心技术,常用于网络安全协议(如SSL/TLS、IPsec)和数字签名中。
报文完整性与鉴别的概念
- 如果报文被攻击者篡改或伪造,则报文就不具备完整性。
- 对报文进行完整性验证就是进行报文鉴别,也就是鉴别报文的真伪。
- 使用加密技术通常就可以达到报文鉴别的目的,因为被篡改的报文解密后一般不能得到可理解的内容。
报文摘要和报文鉴别码
- 使用报文摘要对报文进行鉴别的好处是:只对长度固定且比整个报文长度短得多的报文摘要𝑯(𝒎)进行加密,比对整个报文𝒎进行加密要简单得多。
- 密钥𝑲仅在通信双方之间共享,没有第三方能用伪造报文产生出使用密钥𝑲加密的伪造报文摘要。
- 附加在报文后面用于报文鉴别的码串(即加密后的报文摘要),称为报文鉴别码MAC。
密码散列函数
报文摘要算法MD实际上与帧检验序列、首部检验和等都是散列函数(Hash Function)的一种应用,用于接收方对收到的数据进行检查以便发现是否有误码。
两个特点
- 散列函数的输入长度是可变的,并且可以很长,但其输出长度是固定的,并且较短。散列函数的输出称为散列值,也可简称为散列。
- 不同的散列值对应不同的输入,但不同的输入却可能得出相同的散列值。换句话说,散列函数的输入和输出并非一一对应,而是多对一的。
为了抵御攻击者的篡改,报文摘要算法必须满足以下条件
- 对于任意给定的某个报文摘要值𝑯(𝒙),若想找到一个报文y使得𝑯(𝒚)=𝑯(𝒙),在计算上是不可行的。
- 若想找到任意两个报文𝒙和𝒚,使得𝑯(𝒚)=𝑯(𝒙),在计算上是不可行的。
满足上述两个条件表明:对于发送方产生的报文x和其相应的报文摘要H(x),攻击者不可能伪造出另一个报文y,使得y与x具有同样的报文摘要。
满足上述条件的散列函数就称为密码散列函数或安全散列函数。密码散列函数实际上是一种单向函数,由于无法通过报文摘要还原出原文,因此可把密码散列函数运算看作没有密钥的加密运算。
散列算法
MD5
SHA-1
散列报文鉴别码HMAC
利用密码散列函数的特殊性质,可以设计出无需对报文摘要进行加密的报文鉴别方法,只要通信双方共享一个称为鉴别密钥的秘密比特串𝒔即可。
直接使用密码散列函数实现报文鉴别的技术又称为散列报文鉴别码HMAC。
攻击者不知道仅由通信双方共享的鉴别密钥𝒔,也不能从截获的散列报文鉴别码HMAC中计算出𝒔,因此不能伪造报文𝒎’,产生(𝒎’+𝒔)的HMAC。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 懒懒洋洋的blog!
评论