了解密码+腌制

时间:2013-09-18 06:14:57

标签: security encryption passwords salt

我无法理解使用salting将用户数据存储在数据库表中的好处。我设置的流程如下:

  1. 用户使用用户名/密码创建帐户
  2. 产生随机盐。
  3. 用户名存储在数据库中,密码加密并存储,盐存储在侧密码中。
  4. 现在,当用户尝试登录时,他们会提供用户名/密码,并且:

    1. 根据用户名在数据库中查找salt。
    2. 加密使用数据库中的salt提供的明文密码。
    3. 比较存储的密码和用户提供的密码。
    4. 这一切都很好,花花公子,但黑客不仅仅需要猜测用户名和密码组合吗?只要他们可以确定用户名,他们就可以检索盐。使用强力攻击他们只需要确定正确的用户名/密码组合。 只使用用户名检索盐并添加到提供的密码中,以便与存储的密码进行比较,那么最后使用盐的意义何在?它不像黑客那样猜测盐值。他们提供的密码会自动使用数据库中的salt加密,只要他们知道用户名,只需要用明文猜测密码即可。

1 个答案:

答案 0 :(得分:2)

盐的目的是强迫黑客一次攻击每个用户名,而不是让他立刻攻击所有用户名。因为每个用户名都有不同的salt,所以相同的密码将以不同的方式存储。这次defeats rainbow table攻击。