消息摘要用于验证消息是否是预期消息。
将散列摘要与内容捆绑在一起以形成消息会增加多少碰撞和原像攻击消息的难度?
例如编码:
message = data . hash1(data)
message_hash = hash2(message)
使用 message_hash 验证消息:
check(hash2(message) == message_hash)
data = message[:-digest_size]
check(hash1(data) == message[-digest_size:])
hash1
和 hash2
可以是完全不同类型的哈希函数。
我的理由是,任何攻击都必须破坏两个哈希函数——伪造外部摘要需要使用有效的内部哈希构建消息。
最佳答案
如果外部哈希算法被破坏,内部哈希可能会有所帮助,但您必须考虑使用备受推崇的算法时出现这种情况的可能性有多大。
如果外层哈希值太小以至于可以进行暴力攻击,那么内层哈希值就毫无用处。攻击者不必找到具有相同哈希值的消息,而是必须找到一条消息加上具有相同外部哈希值的内部哈希值,这几乎等同于同一件事。
因此,使散列尽可能大,并集中精力确保系统的其余部分没有后门。 64 位可能就差不多了,除非你预计政府或大公司会对破解你的哈希感兴趣。
关于cryptography - 消息中的内部散列摘要是否加强了外部摘要?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5587496/