【密码学百科】MAC 与 HMAC:消息认证的正确姿势

💡 原文中文,约23700字,阅读约需57分钟。
📝

内容提要

加密可以保证机密性,但不保证完整性,可能会遭到恶意篡改。消息认证码(MAC)用于验证消息的来源和完整性,HMAC是一种安全的MAC方案,利用哈希函数构造,防止长度扩展攻击。设计MAC时需避免简单拼接密钥和消息,以确保安全性。常见的误用包括重放攻击和不当的加密顺序。选择合适的MAC方案至关重要,HMAC是安全的默认选择。

🎯

关键要点

  • 加密保证机密性,但不保证完整性,可能遭到恶意篡改。

  • 消息认证码(MAC)用于验证消息的来源和完整性,HMAC是一种安全的MAC方案。

  • 设计MAC时需避免简单拼接密钥和消息,以确保安全性。

  • 常见的误用包括重放攻击和不当的加密顺序。

  • 选择合适的MAC方案至关重要,HMAC是安全的默认选择。

延伸问答

什么是消息认证码(MAC)?

消息认证码(MAC)是一种用于验证消息来源和完整性的密码学原语。

HMAC与普通MAC有什么区别?

HMAC是一种安全的MAC方案,利用哈希函数构造,能够防止长度扩展攻击。

设计MAC时需要注意哪些安全性问题?

设计MAC时需避免简单拼接密钥和消息,以确保安全性,并防止重放攻击和不当的加密顺序。

为什么Hash(key||message)构造不安全?

这种构造容易遭受长度扩展攻击,攻击者可以在不知道密钥的情况下伪造新消息的合法标签。

HMAC的安全性是如何证明的?

HMAC的安全性证明依赖于底层哈希函数的压缩函数是伪随机函数(PRF)。

在实际应用中,如何防止重放攻击?

可以通过使用序列号、时间戳或nonce等方法来防止重放攻击。

➡️

继续阅读