【问题标题】:is possible to bruteforce my Sha512 Authenication algorithm?可以暴力破解我的 Sha512 身份验证算法吗?
【发布时间】:2013-10-01 03:15:39
【问题描述】:

我有一个身份验证应用程序,但不知道它的安全性。

这是算法。

1) 使用 SHA512 散列新的 guid 生成 clientToken。我生成了大约 1000 个 ClientsToken 并存储在数据库中。

每次调用者调用我的web服务时都需要提供clientToken,如果clienttoken在数据库中不存在,那么它不是有效的客户端。

问题是暴力破解获取现有ClientToken需要多长时间?

【问题讨论】:

  • 散列 guid 不会改进令牌。最好将 GUID 本身作为令牌发送,并将 GUID 的哈希存储在数据库中。

标签: hash sha512


【解决方案1】:

GUID 是一个 128 位的值,其中 6 位保持不变,因此总共有 122 位可用。由于这是您对哈希的输入,因此您的应用程序中不会有 2^512 个唯一的哈希。这大约需要检查 5.3*10^36 个值。

假设您的攻击者能够每秒计算 1,000,000 (10^6) 个哈希值(我不确定这对于 SHA-512 是否合理,但在这种大小下,几个数量级不会影响很多)。这大约需要 5.3*10^30 秒来检查空间(作为参考,这将远远超过所有星星都变暗的时间)。此外,除非您有数十亿客户,否则birthday attack 可能不会从中删除太多数量级。

但是,为了好玩,假设攻击者有一些技巧可以让他将要检查的哈希数量减少一半(或者通过减少检查空间和提高速度的某种组合),或者通过您拥有这么多用户,或者你的 GUID 生成器中的一些缺陷,或者你有什么。我们仍在寻找超过 1 亿年的时间来寻找碰撞。

我认为你已经超出了安全范围,进入了有点矫枉过正的领域。另请注意,对 GUID 进行散列实际上没有任何作用,并且 GUID 可能不是通过安全随机数生成器生成的。实际上,通过您的平台使用的任何安全随机数生成器生成 128 位(16 字节)的随机性,并将其用作共享机密,您实际上会好一些。

【讨论】:

  • 大约80 Mega SHA-512 每秒哈希值在普通硬件上是可能的。
  • 其实PC3那一栏不是说220Ms吗?我必须说,这很重要。尽管如此,我们仍然在寻找一个后恒星宇宙,甚至是 100 万年,因为我假设的空间减半。
  • 是的,没错,更令人印象深刻的是 10 Giga MD5 哈希。这就是为什么发明 BCrypt 来散列短密码的原因,因为强令牌 SHA-512 可以很好地工作,正如您已经指出的那样。
猜你喜欢
  • 2017-07-04
  • 1970-01-01
  • 2014-12-05
  • 1970-01-01
  • 2015-12-27
  • 2016-03-25
  • 1970-01-01
  • 2019-02-14
  • 1970-01-01
相关资源
最近更新 更多