在一些学术文献中,成品MACs一词经常被使用。我想知道,这真的是MAC还是HMAC?我正在看TLS 1.2和TLS 1.2规范中的文献。TLS1.2完成消息的规范这里说:此消息的结构:
结构{ verify_data验证_数据_长度;}已完成;verify_data PRF(master_secret,finished_label,Hash(handshake_messages)) 0.验证_数据_长度-1;finished_label用于完成客户端发送的消息,字符串“客户端已完成”。对于服务器发送的已完成的消息,字符串“服务器完成”。
据我所知,如果使用PFR,那么它就是HMAC,而不是MAC。请你向我澄清:
1)在TLS中,它是已完成的MACs还是HMACs的成品?当一些文献使用已完成的MACs时,它是否正确(即它是否可以接受缩写)?
( 2)用MAC代替HMAc是否正确?
发布于 2017-08-11 10:30:14
用MAC代替HMAC是正确的吗?
一般情况下,不。
MAC是一个比HMAC更普遍的概念,因此这种等价的说法显然是不可接受的。但是,如果您讨论的是验证其有效负载的特定协议,则说“MAC”指定消息的MAC算法或标记,即使它们使用HMAC,也是完全可以接受的,因为这里使用的是更一般的概念和具体的实例化。
现在,要回答标题中的问题(这也会捕获问题1):
TLS完成的消息:是MAC还是HMAC?
答案是两者都是。
是的,这里总是使用HMAC来计算(正确的) PRF值,只有在看到相同的文本并生成相同的master_secret时才有可能。因此,身份验证是内置的。
然而,在此消息之前,ChangeCipherSpec消息是为记录层协议发送的,允许使用协商的密码套件。因此,Finished消息实际上是使用加密和身份验证的记录层协议发送的,该协议确实使用密码套件中指定的MAC (例如GMAC或Poly1305)。
ChangeCipherSpec消息是在安全参数商定之后,但在发送验证完成消息之前,在握手期间发送的。
发布于 2017-08-11 10:32:25
据我所知,如果使用PRF,那么它就是HMAC,而不是MAC。
首先,HMAC是一种MAC。
MAC是一个具有某些安全属性的密码原语(大约,如果您不知道密钥,那么很难预测任何给定输入的输出)。
HMAC是一个特定的设计,它产生一个MAC;它在内部使用一个哈希函数。
现在,我所知道的每个TLS加密套件(我刚刚检查了IANA密码套件注册中心)都使用HMAC作为PRF;然而,这可能不能保证是正确的。例如,如果有人使用KMAC (基于SHA-3的MAC)设计密匙套件,那就不足为奇了。
为了回答你的问题:
1)在TLS中,它是已完成的MACs还是HMACs的成品?
是的,很明显。
2)用MAC代替HMAC是正确的吗?
这就像说“狗”而不是‘狮子狗’是对的吗?“
https://crypto.stackexchange.com/questions/50770
复制相似问题