【问题标题】:Python -R functionPython -R 函数
【发布时间】:2014-07-13 18:20:45
【问题描述】:

在滚动浏览所有python 选项时,我发现python 包含一个“[turns] 散列随机化选项”,因此 str、bytes 和 datetime 对象的__hash__() 值被不可预知的随机数“加盐”值。尽管它们在单个 Python 进程中保持不变,但在 Python 的重复调用之间它们是不可预测的。 (source).

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

【问题讨论】:

    标签: python security denial-of-service


    【解决方案1】:

    使用不可预知的盐对哈希进行加盐处理以防止collision attacks

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

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

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

    【讨论】:

      猜你喜欢
      • 2012-08-21
      • 2014-10-02
      • 2017-05-10
      • 2019-07-06
      • 1970-01-01
      • 2017-06-06
      • 2021-04-13
      • 2017-08-21
      • 1970-01-01
      相关资源
      最近更新 更多