2025年密码技术 (4) - 消息认证码

密码技术 (4) - 消息认证码一 前言 消息认证码 Message Authenticati Code 是一种确认完整性并进行认证的技术 简称为 MAC 消息认证码由三部分组成 任意长度的消息 发送者和接收者之间共享的秘钥 输出的固定长度的数据 称为 MAC 值 消息认证码的生成也借助单向散列函数

大家好,我是讯享网,很高兴认识大家。

一. 前言

        消息认证码(Message Authentication Code)是一种确认完整性并进行认证的技术,简称为MAC。消息认证码由三部分组成:任意长度的消息,发送者和接收者之间共享的秘钥,输出的固定长度的数据,称为MAC值。消息认证码的生成也借助单向散列函数,和散列值生成都是一样的,除了生成MAC值需要共享秘钥,区别如下图:


讯享网

        注意, 消息认证码和对称密码一样,也需要解决秘钥传送问题,这就需要配合公钥密吗等技术了。

二. 消息认证码的用途

1. SWIFT

        SWIFT的全称是Society for Worldwide Interbank Financial Telecommunication(环球银行金融电信协会)。于1973年成立,成立目的是为了保护国际银行间的交易,银行和银行间通过SWIFT来传递交易消息,为了验证消息的完整性以及对消息进行认证,SWIFT使用了消息认证码。

2. IPsec

        IPsec是对IP协议通信增加安全性的一种方式,在IPsec中,对通信的内容的完整性和认证也是采用消息认证码。

3. SSL/TLS

        SSL/TLS是一种应用于WEB场景的通信协议,SSL/TLS中对通信内容的认证和完整性校验也使用了消息认证码。

三. 消息认证码的实现方式

1. HMAC

        消息认证码可以使用单向散列函数来实现,其中的一种实现方式就是HMAC。其中的H就是hash的意思。

        使用SHA-1,SHA-224,SHA-256,SHA-384和SHA-512所构造的HMAC,分别称为HMAC-SHA1,HMAC-SHA-224,HMAC-SHA-256,HMAC-SHA-384和HMAC-SHA-512。

2. 使用分组密码实现
3. 其他办法

四. openssl实践

1. HMAC

或者通过文件获取消息,如下

infile内容:

hello,hmac

命令:

openssl dgst -hmac '' -sha256 -out hmac.txt infile 

hmac内容:

HMAC-SHA256(infile)= 0c0731d78b729a5dfe7fac5b9df0cf11943aac81d4

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

1. 向第三方证明消息来源        

        消息的接收者无法向第三方(例如法庭)证明消息就是来自消息的合法发送者,因为消息的接收方和发送方都能生成相同的MAC值,甚至消息就是接收者自己伪造的,或是秘钥泄露,其他人发送给接收方的。

2. 防止否认

        由于消息的发送者和接收者是预共享秘钥的,所以,接收者收到发送者的消息后,发送者可以否认消息是自己发送的,发送者可以说消息是接收者自己伪造的,也可以说接收者泄露了密码,消息是其他人发送给接收者的,所以,消息认证码无法解决否认问题

六. 总结

        消息认证码的生成同散列值的生成非常类似,除了消息认证码需要共享的秘钥除外。消息认证码目前的主要的实现方式是通过HMAC的方式。由于消息的发送者和接收者都拥有秘钥,消息认证码不能解决消息的真实来源问题,会出现消息的发行者否认的情况。

小讯
上一篇 2025-03-15 21:25
下一篇 2025-03-17 16:08

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/53929.html