【问题标题】:Client Side MD5 Hash with Time Salt带有时间盐的客户端 MD5 哈希
【发布时间】:2010-09-25 19:26:38
【问题描述】:

我想在客户端的 JS 中使用更高阶的时间值(

这将对传递的哈希的有用性施加短暂的有效期。

如果他们检查 JS 并发现它使用了这次 salt,如果他们知道 salt 是什么,那么破解 MD5 的工作会容易多少?

斯蒂芬

【问题讨论】:

    标签: time hash md5 salt


    【解决方案1】:

    您可以使用代码混淆来使盐更难找到

    【讨论】:

      【解决方案2】:

      基于时间的盐不会使 MD5 更容易破解。您仍然依赖 1) 具有良好密码的用户来击败暴力计算,以及 2) MD5 是一个不错的哈希值。这是您问题的基本答案。但是,无论如何,这可能不是一个好主意。一些cmets--

      除非您可以确保客户端或服务器的时间是同步的(或者您使用 Javascript 来伪造同步),否则客户端将不得不发送它用作盐的时间。服务器必须决定使用的时间是否足够接近服务器的时间。

      即使是同步的,由于 Internet 上的延迟,您也可能不得不接受正负一分钟左右的哈希值。另一个问题是,如果我在嗅探,只要我还在这个时间窗口内,我就可以立即重用这个哈希。

      由于上述问题,一个更好的想法是使用带有哈希的一次性服务器分配的盐,因为听起来您不想使用 SSL。换句话说,每次向客户端发送登录表单时,服务器都会生成一个随机的唯一盐字符串,将其发送给客户端并跟踪这是一个可接受的盐。然后客户端将其用作带有密码的盐。提交一次后,服务器将其丢弃为可接受的盐字符串。没有两个哈希值应该是相同的。这样做的缺点是您必须跟踪这些可接受的盐字符串。

      【讨论】:

      • 时间是一次性的盐。当我说高阶时间时,我的意思是我会忽略秒数,所以我只需要确保服务器会在表单提交后的 60 秒内收到请求。所以我真的不需要同步。我会再给你发一条评论。感谢您的反馈!
      • 时间不是一次性的盐。它确实限制了攻击者可以攻击的时间,但可以在时间窗口内一遍又一遍地重复使用。如果我正在嗅探 wifi 连接并看到有人登录到您的网站,我也可以立即使用我的计算机登录,冒充他们。
      • 是的,您确实需要同步。如果服务器的时钟显示为下午 12:20,而我的客户端计算机时钟显示为下午 12:15,如果您不接受至少 5 分钟窗口的散列,我将无法登录。
      【解决方案3】:

      salt doesn't need to be secret。从这个意义上说,您的解决方案是可以的。

      MD5 在某些应用程序中被破坏;这个可能没问题,但为什么不使用来自SHA-2 family 的哈希呢?就此而言,为什么不使用 SSL 来提供机密通道和更好的安全性?

      【讨论】:

      • 您回答了我关于通过使盐可知来削弱哈希使用的基本问题。大家同意吗?我可能会使用 SHA-2,MD5 就是一个例子。由于我将在另一个问题中发布的原因,我试图避免使用 SSL。
      【解决方案4】:

      他们的工作将变得不可行,因为如果哈希正确加盐,您根本无法使用彩虹表,而且您无法在不到一分钟的时间内破解 MD5,届时哈希无论如何都会失效。

      【讨论】:

      • 这就是我想知道的:知道盐的价值是否会更容易使用彩虹表。很快你就可以打破 MD5
      猜你喜欢
      • 2017-05-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-03
      • 2019-10-02
      • 1970-01-01
      • 2012-06-15
      • 2012-08-17
      相关资源
      最近更新 更多