使用MD5签名时,为什么秘密必须在结尾很重要?


16

人们常说,当使用MD5算法对某些任意信息进行签名时,共享密钥必须位于末尾。为什么?


2
您能否更具体些,而不要说“经常说”。您可以引用参考文献,还可以扩展问题的相关性吗?
Suresh Venkat 2010年

您的问题标题中有错别字:您可以将“和”更改为“结束”吗?
卡洛斯·谢德格

Answers:


16

请参阅Merkle-Damgard构造中的“扩展攻击” 。在使用哈希函数进行消息身份验证时会出现此问题。

简而言之,将机密放在开头可以使攻击者(在获得了消息及其散列的情况下)伪造以给定消息为前缀的任何消息。对于朴素的代码,这是一个问题,但是像HMAC这样的众所周知的代码可以避免这种情况。


1
据我了解,如果您中断输入流,并且共享密钥是流的开始,那么第一个块几乎总是会得到相同的哈希值,因此可以通过使用Rainbow攻击来猜测共享密钥,对吗?
亚历山德鲁
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.