【问题标题】:Collision Rate With NTLMv2 Hashing Technique In WindowsWindows 中 NTLMv2 散列技术的冲突率
【发布时间】:2010-12-03 14:54:52
【问题描述】:

我在 Uni 做一项研究任务,我正在研究哈希函数。

使用 SHA1 和(据我所知)所有散列技术都存在(非常少见的)散列冲突。 See here

谁能告诉我在 NTLMv2(在 Windows 7 中使用)中发生哈希冲突的可能性有多大?

谢谢

汤姆

【问题讨论】:

  • 碰撞的概率是随机发生的,或者攻击者需要多久尝试一次?
  • 嗨 CodeInChaos,随机发生碰撞的可能性会很大。我知道 NTLMv2 使用 3 个 MD4 函数来实现哈希。
  • 您为什么对密码哈希冲突感兴趣?这在实践中完全无关紧要。有趣的是原像攻击。
  • 感谢您清理 CodeInChaos。我所寻找的只是一个展示随机碰撞发生的极其罕见的数字。再次感谢

标签: security windows-7 hash ntlmv2


【解决方案1】:

NTLMv2 是一个hmac-md5 实现。需要注意的是collisions do not affect HMACs。为了让攻击者为md5 has a complexity of (2^24.1)/2=2^23.1 产生冲突,但是我不相信这样的攻击可以针对 NTLMv2。所以我相信答案是 (2^128)/2=2^127。这个数字是把 md5 看作是一个理想的消息摘要函数,当然不可能存在这样的理想函数。

除以 2 来计算 birthday paradox

【讨论】:

  • 只是澄清/扩展您所说的内容:两个不同输入具有相同哈希的概率是 1/2^128,但您只需要大约 2^64 个哈希即可获得冲突(请参阅生日悖论)
  • @CodeInChaos Aaah 是的,您对生日悖论的解释是正确的。但是,您的数学不正确,1/2^128 是一个非常小的小数。但实际上概率应该是总数的1/2。
  • 总共 1/2 是什么意思?生日悖论并没有将可能性减半,而是将这些可能性减半。由于您需要 Sqrt(x) 散列,因此对于 x=2^128,您需要 sqrt(x) = Sqrt(2^128) = 2^(128/2)=2^64 散列。但是那个 Sqrt 只是一个近似值,你需要能够保存 2^64 个哈希值。
  • @codeinchaos 我仍然认为它是 50% 的标记,除非你有一个链接来支持你的声明。还有(1/2)^128=.00000000000000000000000000000000000000293873588。
  • @Rook:您自己的链接显示,在发现冲突之前,它是近似需要保存的哈希数的平方根。
猜你喜欢
  • 1970-01-01
  • 2012-12-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-04
  • 2020-03-03
  • 1970-01-01
相关资源
最近更新 更多