【密码学百科】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等方法来防止重放攻击。
➡️