1

在滚动浏览所有python选项时,我发现 python 包含一个选项“[turns] on hash randomization,因此__hash__()str、bytes 和 datetime 对象的值被“salted”为不可预测的随机值。尽管它们在个体中保持不变Python 进程,它们在 Python 的重复调用之间是不可预测的。” (来源)

官方文档参考了这个文档http://www.ocert.org/advisories/ocert-2011-003.html应该提供更多信息,但是,它没有提供任何信息,比如“精心制作的 HTTP 请求”好像。网站上的所有相关链接都已失效。我知道这可以通过调用来解决python -R,但是,我对细节更感兴趣。
一个 HTTP 请求如何在几个小时内使用 100% 的服务器 CPU,随机化哈希值如何解决这个问题?它是否会造成某种死锁?(我知道如果脚本被破坏(无限 for/while 循环,gotos)或正在执行一项非常昂贵的任务,则 HTTP 请求可能需要很长时间,但我认为情况并非如此)。

4

1 回答 1

1

使用不可预知的盐对哈希进行盐渍化以防止碰撞攻击

在一个世界中,碰撞攻击是针对哈希表算法的攻击,该算法通常在 O(1) 中运行,但可以被欺骗在 O(n) 中运行。

欺骗哈希表算法很简单:当存储具有公共哈希值的对象时,哈希表实现通常较慢,它被称为冲突。它比较慢,因为这两个值一起存储在一个链表中。因此,如果您可以生成大量冲突的键,那么您将强制哈希表将它们全部存储在链表中,这非常慢并且会占用大量 CPU。

要利用这一点,您必须了解哈希算法,才能预测和生成冲突的密钥。如果散列被您不知道的值加盐,您将无法生成冲突键。

于 2014-07-13T18:58:02.787 回答