信息安全中的HMAC是什么?
HMAC 代表消息认证密钥散列 (Keyed-Hashing for Message Authentication)。它是一个消息认证码,通过对信息(待认证)和共享密钥运行加密散列函数(如 MD5、SHA1 和 SHA256)获得。HMAC 在 RFC 2104 中定义。
HMAC 与数字签名相同。它们都提供完整性和真实性。它们都需要加密密钥,并且都应用散列函数。主要区别在于数字签名需要非对称密钥,而 HMAC 需要对称密钥(没有公钥)。
HMAC 可以与一些迭代加密散列函数一起使用。MD5 和 SHA-1 是散列函数的实例。HMAC 还需要私钥来计算和验证消息认证值。
散列消息认证码可以同时检查消息的认证及其相关的数据完整性。使用的密钥大小决定了散列消息认证码的加密强度。
散列消息认证码可以利用包括 SHA-1 和 MD-5 在内的迭代加密散列函数以及密钥。散列消息认证码为服务器和客户端都提供公钥和私钥。虽然公钥是已知的,但私钥只有确定的客户端和服务器知道。
整个过程从客户端根据请求的信息创建唯一的散列消息认证码开始,并将请求的数据与私钥一起进行散列。
这作为请求的一部分发送到服务器,服务器依次关联两个散列消息认证码,如果发现相同,则允许客户端可信赖,并执行请求。整个过程也称为秘密握手。
HMAC 的主要目标如下:
它可以使用现有的散列函数,无需修改。具体来说,是那些在软件中实现良好的散列函数,并且其代码可以自由广泛地获得。
它可以在不产生显著性能下降的情况下保持散列函数的原始性能。
它可以以简单的方式使用和管理密钥。
它对基于基本散列函数的合理假设的认证结构的强度具有易于理解的密码分析。
如果发现或需要更快或更安全的散列函数,它可以方便地替换基本散列函数。
散列消息认证码的主要目标是它受碰撞的影响较小,并且被认为是暴力破解获取密钥。
散列消息认证码提供了一种方便的方法来检查信息是否被篡改以及用户的真实性。