为什么当服务的密码数据库泄露时您应该担心

enter-your-password

“我们的密码数据库昨天被盗。 但不要担心,你的密码是完全安全的。“我们经常看到这样的语句在线,但我们真的应该采取这些保证面对价值吗?

现实是密码数据库妥协是一个关注。 然而,如果你使用唯一的密码无处不在,你不应该需要太担心。

如何存储密码

以下是如何在一个理想世界中存储密码:您创建一个帐户并提供密码。 服务不是存储密码本身,而是从密码生成“哈希”。 这是一个不能逆转的唯一指纹。 例如,密码“password”可能变成看起来更像“4jfh75to4sud7gh93247g ...”的东西。 当您输入密码以登录时,服务将从其生成一个散列,并检查散列值是否与数据库中存储的值匹配。 该服务从未将密码本身保存到磁盘。

cryptographic-hash-function

要确定实际的密码,攻击者必须预先计算公共密码的哈希值,然后检查它们是否存在于数据库中。 攻击者用查找表来做到这一点 - 与密码匹配的大量哈希表。 然后可以将散列与数据库进行比较。 例如,攻击者将知道“password”的散列,然后查看数据库中的任何帐户是否使用该散列。 如果是,攻击者知道他们的密码是“密码”。

为了防止这种情况,服务应该“盐”他们的哈希。 它不是从密码本身创建一个哈希,而是在哈希前将一个随机字符串添加到密码的前面或末尾。 换句话说,用户将输入密码“password”,服务将添加salt和hash一个看起来更像“password35s2dg”的密码。每个用户帐户应该有自己唯一的盐,这将确保每个用户帐户将对数据库中的密码使用不同的哈希值。 即使多个帐户使用密码“密码”,他们将有不同的哈希值,因为不同的盐值。 这将击败试图预先计算密码哈希值的攻击者。 不能一次生成应用于整个数据库中每个用户帐户的哈希,他们必须为每个用户帐户及其唯一的salt生成唯一的哈希。 这将需要更多的计算时间和内存。

这就是为什么服务经常说不用担心。 使用正确的安全程序的服务应该说他们正在使用salted密码哈希。 如果他们只是说密码是“哈希”,这更令人担忧。 LinkedIn散列密码,但他们没有盐他们-所以这是一个大问题时,LinkedIn在2012年失去了650万散列密码

密码错误

这不是最难实现的,但许多网站仍然设法以各种方式混乱:

  • 采用明文存储密码 :而不是散列怕麻烦,一些最严重的罪犯可能只是转储明文形式的密码到数据库中。 如果这样的数据库被泄露,您的密码显然受损。 没关系他们有多强壮。
  • 散列密码,而腌制他们 :有些服务可能散列密码,并放弃在那里,选择不使用盐。 这样的密码数据库将非常容易受到查找表的影响。 攻击者可以为许多密码生成散列,然后检查它们是否存在于数据库中 - 如果没有使用盐,它们可以一次为每个帐户执行此操作。
  • 重用的盐 :某些服务可以使用的盐,但也可以重新用于每个用户的帐户密码相同的盐。 这是毫无意义的 - 如果每个用户使用相同的盐,则具有相同密码的两个用户将具有相同的散列。
  • 使用短的盐 :如果使用的只是几个数字的盐,这将是可能的,以产生并入每一个可能的盐查找表。 例如,如果单个数字用作盐,攻击者可以轻松地生成哈希表,其中包含了每个可能的盐。

plaintext-password-database

其他关注

很可能salt值也存在于密码数据库中。 这不是那么糟 - 如果每个用户使用独特的盐值,攻击者将不得不花费大量的CPU能力破坏所有这些密码。

在实践中,这么多人使用明显的密码,很可能很容易确定许多用户帐户的密码。 例如,如果攻击者知道你的哈希,他们知道你的盐,他们可以很容易地检查,看看你是否使用一些最常见的密码。

如果攻击者有它,并想要破解你的密码,他们可以用暴力做,只要他们知道盐价值 - 他们可能做的。 在当地,脱机访问数据库密码,攻击者可以利用所有的野蛮力量的攻击 ,他们想要的。

其他个人数据也可能在密码数据库被盗时泄漏:用户名,电子邮件地址等。

帮助,我该怎么办?

无论什么服务说,当其密码数据库被盗时,最好假设每个服务都是完全不胜任的,并据此行事。

首先,不要在多个网站上重复使用密码。 使用为每个网站唯一的密码密码管理器 如果攻击者设法发现您的服务密码为“43 ^ tSd%7uho2#3”,并且您只在该特定网站上使用该密码,他们没有学到什么有用的。 如果您在任何地方使用相同的密码,他们可以访问您的其他帐户。 这是很多人的帐户如何成为“黑客”。

generate-random-password

如果服务确实遭到入侵,请务必更改您在那里使用的密码。 如果您在其他网站上重复使用,您还应该更改其他网站的密码,但您不应该首先这样做。

你也应该考虑使用双因素身份验证 ,即使攻击者得知您的密码,这将保护你。


最重要的是不要重用密码。 如果您在任何地方使用唯一的密码,除非他们在数据库中存储其他重要的信息,例如您的信用卡号码,否则泄密密码数据库不会伤害您。

图片来源: 马克Falardeau在Flickr维基共享资源

赞 (0)
分享到:更多 ()