原文链接https://blog.cloudflare.com/keeping-passwords-safe-by-staying-up-to-date/,译者进行了少量的删除、评论和修改。

过去几周,多家公司发现其存储密码的数据库已在网上泄露。尽管采取了一些预防措施(例如加密),许多用户密码仍被黑客泄露。这就是当今互联网的丑陋现实之一:黑客齐心协力破解数据库文件,而且专业的密码破解软件随手可得。

为什么密码如此脆弱?这有助于理解密码的存储方式,所以让我们从一些基础知识和历史开始。

明文存储

存储密码的最简单方法是以明文形式将其存储在数据库中。当用户尝试登录并输入密码“supersecret”时,系统后台会将此字符串与数据库中的记录进行比较,然后判断登录是否成功。当然,以明文形式存储密码是非常危险的。如果数据库被泄露,黑客可以直接读取所有密码并破解每个帐户。

稍微好一点的解决方案是在将密码写入数据库之前对其进行加密,然后在用户登录时解密。但这只会为黑客增加一个小障碍:他们只需要多获取一个加密密钥即可。 (经验证明)这个key几乎肯定和数据库在同一台机器上,所以很容易做到。

译者注:即使黑客未能获得加密密钥,仍然有一种名为“词频分析”的攻击可以利用。我们知道许多人使用极其简单的密码,因此只需找到数据库中出现最频繁的密码即可。虽然它是加密的,但您猜测它是“123456”很可能不会错。尽管黑客无法侵入所有帐户,但大多数使用简单密码的帐户都面临风险。

您可以访问https://nordpass.com/most-common-passwords-list,其中列出了2020 年200 个最“常见”的密码,看看您的密码是否在其中。

尽管以明文形式保存密码的安全性较低,但许多公司仍在使用它们。那么你怎么知道你注册的网站是否很糟糕呢?一项测试是要求恢复密码:如果网站可以通过电子邮件或短信向您发送旧密码,则其密码存储一定不安全。

散列函数

如果不以某种方式存储密码,如何验证用户登录时密码是否一致?如果您学过密码学,您可能了解哈希函数(有时称为哈希函数)。是的,这可能是一个很好的补救措施。

哈希函数采用字符串(例如密码)并将其转换为长数字(称为摘要)。这样做可以确保两件事:第一,这个操作是不可逆的,即无法从摘要中推导出原始字符串;第二,这个操作是不可逆的,即无法从摘要中推导出原始字符串。第二,它生成的摘要是唯一的,即没有两个字符串具有相同的摘要(旁白:这两点在计算上都是不可能的,即无论是从摘要中解析出原始字符串还是找到两个字符串同样的摘要,计算资源的消耗是不可接受的)。

图1:哈希函数。请注意,输入字符串中的微小差异可能会导致输出数字发生较大变化。

哈希函数可用于密码系统。当用户访问该站点时,可以计算他们输入的密码摘要并将其与数据库中的摘要进行比较。由于哈希函数的唯一性,只要两者匹配,就可以确定用户输入了正确的密码。另一方面,由于哈希值无法反转,因此存储摘要而不是密码本身似乎是一种相对安全的方法。

是时候了解密码存储了

不幸的是,事实并非如此。

在过去的几周里,一些著名的互联网公司发现他们的用户密码尽管经过了哈希处理,但仍被泄露。要了解原因,请尝试搜索字符串“a761ce3a45d97e41840a788495e85a70d1bb3815”。您可能会惊讶地发现第一个结果告诉您这是字符串“supersecret”的SHA-1 哈希值。

简单地使用哈希函数很容易受到所谓的“字典攻击”。黑客可以预先建立一个庞大的数据库,导入所有常用的密码,并计算出相应的摘要。这种预先计算的“字典”有时称为“彩虹表”。一旦密码数据库泄露,黑客只需在彩虹表中找到对应的摘要即可破解你的密码。如果您的密码太简单,或者相同的密码已在其他网站上泄露,则该密码很有可能已经出现在彩虹表中。这就是为什么选择一个长而复杂的密码很重要:黑客将无法提前计算出其摘要。

译者注:除了又长又复杂之外,记住永远不要使用重复的密码也很重要。

图2:即使哈希函数本身无法逆转,彩虹表仍然可以破解配置不当的密码

为了处理彩虹表,可以使用“加盐”技术。假设您选择了密码“supersecret”,并且X 公司使用SHA-1 作为哈希函数。但Company 不是直接对“超级秘密”进行哈希处理,而是获取“33438b91ce09e6959232f698b7939e6ee1d0712a”。尝试搜索这个新的哈希值?你不会得到任何结果。

是的,这个随机附加的字符串就是盐。

图3:盐

由于每个用户都有不同的盐,彩虹表就失去了用处:不可能为所有可能的盐预先计算彩虹表。

译者注:有些公司对所有用户的密码使用统一的盐,这也是一个不好的做法。首先,一旦盐泄露,就可以有针对性地构建彩虹桌。其次,即使盐不泄露,也会遭受上述的词频攻击。

直到最近,CloudFlare 还采用这样的“加盐哈希”来存储用户密码。

不幸的是,由于哈希函数本身并不是为了保护密码而设计的,而是为了检查数据的完整性,因此它们被设计得足够快。另一方面,计算机的速度随着摩尔定律呈指数级增长,这使得黑客无需预先计算彩虹表就可以直接发起攻击。例如,当密码数据库泄露并且黑客获得盐时,他们可以每秒尝试数百万次不同的密码,并将它们与加盐哈希值进行比较。

这意味着只有经过盐散列处理的长而复杂的密码才是安全的。

是时候了解密码存储了

一劳永逸?

应对暴力破解,解决方案是使用较慢的哈希函数,这会相应减慢破解软件的攻击速度。如果可能的话,最好这个速度能随着时间的推移调整得越来越慢,以补偿摩尔定律给黑客带来的改进。令人高兴的是,这样的哈希函数已经存在,例如Cloudflare 最近升级使用的bcrypt。 bcrypt 与一般哈希函数的区别在于,多了一个“难度”参数,该参数通过调整哈希的迭代次数来调整最终的计算成本。

图4:减速

译者注:使用“慢哈希”函数本质上增加了黑客攻击的成本。不过,如果你是高价值用户,黑客可能会专门为你预先计算彩虹表,这可能还是“划算”的。这是划算的。

与安全的所有其他方面一样,密码存储解决方案需要不时地重新审视。然而许多公司没有花时间这样做,从而导致严重的安全问题。

当然,用户方也可以提供帮助:始终选择长而复杂的密码,并确保不要在任何其他网站上重复使用它们。

正文结束。

推荐阅读

什么是密码管理器?它有什么用?

关于KeyPod

KeyPod是国内首家以“个人数据安全”为核心价值,以“数据与应用分离”为核心理念,以其安全体系设计能力和先进密码学成果为技术支撑,为个人和企业提供服务的云服务公司。提供数据安全产品和解决方案。赋予个人控制其隐私和数据的能力,使组织能够为其用户提供更具竞争力和创新性的服务。

KeyPod 数字保险箱

KeyPod数字保险箱是一款隐私至上的个人云存储应用,采用端到端加密技术、数据与应用分离设计,具有数据隐私保护和身份隐私保护的特点。它可用于安全、私密地存储与密码、财务、健康、家庭和个人相关的重要数字信息。

用户评论

执念,爱

看了这篇文章,终于明白密码存储的重要性了。之前总是担心密码泄露,现在知道怎么安全存储了,太实用了!

    有14位网友表示赞同!

最怕挣扎

密码存储啊,这个话题太重要了,以前一直搞不清楚,现在终于搞懂了,感谢分享!

    有10位网友表示赞同!

不离我

是时候了解密码存储了?可是我连什么是密码存储都不清楚啊,能详细解释一下吗?

    有12位网友表示赞同!

(り。薆情海

这篇文章让我对密码存储有了全新的认识,以前都是随手记在纸上,现在知道了要好好保管。

    有11位网友表示赞同!

旧爱剩女

密码存储,听起来好复杂的样子,但文章解释得挺清楚的,感谢作者!

    有12位网友表示赞同!

妄灸

这篇文章让我对密码安全有了新的认识,但我觉得还是得定期更换密码,以防万一。

    有7位网友表示赞同!

清原

密码存储是个大问题,但我感觉现在的方法都太麻烦了,有没有更简单的办法呢?

    有11位网友表示赞同!

?亡梦爱人

是时候了解密码存储了,但我觉得现在的方法都太复杂,应该有更智能的解决方案。

    有14位网友表示赞同!

愁杀

文章说密码存储很重要,但我还是不太放心,有没有什么保险的方法呢?

    有8位网友表示赞同!

景忧丶枫涩帘淞幕雨

密码存储,这个话题真是老生常谈了,但还是有人不重视,希望这篇文章能提醒大家。

    有12位网友表示赞同!

凝残月

了解了密码存储的重要性,但我感觉现在的密码管理软件太多,不知道怎么选择。

    有20位网友表示赞同!

君临臣

是时候了解密码存储了,这篇文章让我意识到自己以前的做法是多么的危险。

    有20位网友表示赞同!

纯真ブ已不复存在

密码存储是个技术活,但我感觉现在的方法都不够安全,希望有更好的技术出现。

    有6位网友表示赞同!

蝶恋花╮

这篇文章让我对密码存储有了新的认识,但我还是担心自己记不住那么多复杂的密码。

    有5位网友表示赞同!

罪歌

密码存储确实重要,但我感觉现在的方法都不够人性化,希望能有更便捷的方式。

    有6位网友表示赞同!

予之欢颜

是时候了解密码存储了,这篇文章让我意识到自己以前的做法是多么的危险,得赶紧改过来。

    有8位网友表示赞同!

良人凉人

密码存储,这个话题让我想到了网络安全,现在这个社会,没有点网络安全知识真的不行。

    有14位网友表示赞同!

抓不住i

了解了密码存储的重要性,但我还是觉得现在的方法都太复杂,希望能有更简单的解决方案。

    有16位网友表示赞同!

惯例

是时候了解密码存储了,这篇文章让我意识到自己以前的做法是多么的危险,以后一定要重视密码安全。

    有10位网友表示赞同!

标签: