在…之间最好使用什么(用于消息完整性)
…为什么?
发布于 2013-11-01 23:07:54
如果加密使用像CTR这样的可伸缩模式,则“加密散列”完全失败。CTR在类似于流密码的模式下运行AES,在这种模式下,要加密的数据仅仅是带有依赖于密钥的流的XORed,因此攻击者可以非常精确地翻转比特;因此,如果攻击者猜测内容,他可以修改它们并很容易地修复哈希。
更普遍的情况是,如果您想要一个MAC,那么使用一个MAC。“加密散列”只是一种自制的MAC算法尝试,我们知道自制算法很少强大,即使是这样,我们也无法确定它们是否真正强大。
至于如何将加密和MAC结合起来,这是一个众所周知的问题,已经积累了大量的理论和实践;参见这个问题。总结一下:您想要计算加密数据上的MAC,因为它避免了MAC算法在处理的数据上泄漏信息的任何问题,并且它保护解密实现不受格式错误的数据的影响。
现在,HMAC似乎表现得相当好,并且没有泄露应用它的数据的信息。您的设置1和2分别用于SSH和SSL/TLS。在这两种情况下,都没有证明是致命的;然而,对加密格式缺乏保护使各种填充甲骨文攻击在实现方面取得了一些成功,而在解密格式错误的输入数据时,这些实现不够仔细。
发布于 2013-11-01 22:31:28
https://crypto.stackexchange.com/questions/11440
复制相似问题