MAC和HMAC的其他安全属性是什么?
#1 楼
消息验证码(MAC)是随消息一起发送的一串比特。 MAC取决于消息本身和密钥。没有人不应该知道密钥就不能计算出MAC。这样,共享密钥的两个人就可以向每个人发送消息,而不必担心其他人会篡改消息。 (至少,如果有人确实篡改了一条消息,可以通过检查MAC是否正确来检测到此消息。)术语“ MAC”可以指代字符串(也称为比特串) HMAC是将哈希函数(例如MD5或SHA256)转换为MAC的方法。因此,HMAC-MD5和HMAC-SHA256是特定的MAC算法,就像QuickSort是特定的排序算法一样。
还有其他构造MAC算法的方法;例如,CMAC是将分组密码转换为MAC的方法(为我们提供CMAC-AES,CMAC-DES,CMAC-PRINCE等)。
一些MAC算法使用IV。
MAC算法应具有在选择消息攻击下不可伪造的安全性。假设Alice和Bob共享一个秘密MAC密钥(它们在相互发送消息时使用),而Eve监视了他们,并看到了他们的消息和相应的标签。
夏娃(Eve)不能使用她学到的东西来伪造有效标签。如果Eve可以说服Bob发送特定的消息,甚至应该是真的。
例如,假装Eve告诉Bob发送消息:
亲爱的爱丽丝,
夏娃说“嗨。”
爱,鲍勃
,夏娃看到了相应的标签。
夏娃应该仍然无法“伪造”消息的标签:
亲爱的爱丽丝,
请给我夏娃100美元。我会还你的。
爱,鲍勃
除了在选择消息攻击(UF-CMA)下不可伪造之外,HMAC还具有作为伪随机函数(PRF)的强大特性。这意味着如果Eve不知道密钥,那么即使Eve知道甚至选择Bob发送的消息,Bob的所有HMAC标签都看起来像是完全随机的比特串。这是一个更强大的属性,因为每个PRF都是UF-CMA(您不能猜出很大的随机数),但是并非每个UF-CMA MAC算法都是PRF(对于某些MAC算法,所有标记都可能以10开头零---看起来不是很随意,但是在不知道键的情况下仍然很难猜出其他位。)
评论
$ \ begingroup $
对于这个问题,我认为这个答案非常直接和全面。
$ \ endgroup $
–卡尔
16年2月9日在6:51
$ \ begingroup $
HMAC除了可用作PRF外,还继承了其基础哈希函数的单向性和抗冲突性。如果密钥已知,则通用PRF不提供任何保护。可以使用该密钥制作一条消息,从而产生选定的PRF输出值。对于HMAC来说,无论是否知道密钥,这都是不可能的。 (假设哈希值是安全的,并且HMAC输出不会被截断为可以蛮力使用的长度。)
$ \ endgroup $
–未来的安全性
20 Mar 3 '20 at 21:08
#2 楼
MAC是描述message authentication code
的通用术语。该标签将验证您数据的完整性。您可以说出攻击者是否篡改了您收到的数据。一种构造是HMAC
,它使用哈希函数作为基本构造块。还有另一种方法是CBC-MAC
及其改进的版本CMAC
,它基于分组密码。
评论
我想在此指出,术语MAC通常以两种不同的方式使用:1.消息认证代码的通用术语;以及2.用于基于分组密码的MAC的术语(例如CBC-MAC,CMAC) -主要区别于HMAC。注意,HMAC是Seth正确描述的一种特定方案。 SHA-3使用KMAC,因此它是另一个基于哈希的MAC。缩写词CBMAC和HBMAC可以用于基于密码的MAC,而HBMAC可以用于基于哈希的MAC吗?