前段时间,某互联网大公司承认用纯文本格式存储密码。 这个行为就像在记事本中存储密码并将其保存为 TXT文件。 我们都知道,为了安全,密码应该经过加密处理,都9102年了,果然这种让密码“luoben”的事情还是经常在发生呢......

输入密码

为什么密码不应该存储在纯文本中

当企业以纯文本形式存储密码时,任何拥有数据库(或者其他任何存储了密码的文件)密码的人都可以读取这些密码。 如果黑客获得了文件的访问权限,他们可以看到所有的密码。
用纯文本存储密码是一种糟糕的做法。 企业应该对密码进行密码加盐(Salting)和 Hash 处理,即“向密码添加额外数据,然后以一种无法逆转的方式进行排列”,即使有人从数据库中窃取了密码,它们也用不了。 当你登录时,企业可以检查你的密码是否与存储的加密版本匹配,但他们无法从数据库“反向工作”并获得你的密码。

那么为什么要用明文存储密码呢?

将密码写在文本中

显示总有不幸,有时候这些公司并不把安全当回事,有的为了方便忽略安全。 一般情况下,企业在存储你的密码时都会做加密,但它们可能会增加额外的日志记录功能,以纯文本形式记录密码。

在国外爆出不少互联网平台的密码存储不当

看新闻都会知道我这里要说的是哪些公司了。一大批国外企业,如:Robinhood、 GoogleFacebook、 GitHub、 Twitter 等将密码以纯文本形式存储。当然,国内的一般用户应该没用这些产品,大可不必担心。当然,也希望国内的公司以此警示,保护用户隐私。

以谷歌为例,该公司对大多数用户的密码进行了充分的密码加盐和 Hash 处理。 但是 G Suite 企业账户密码是以纯文本形式存储的。 该公司表示,这是它给域名管理员提供恢复密码工具遗留下来的问题。 如果谷歌正确地存储了密码,这种事情不会发声。 只有当密码被正确存储时,密码重置过程才能恢复。

当 Facebook 也承认用纯文本存储密码时,它并没有给出问题的确切原因。 但是你可以从他们的后续更新推断出这个问题:

…we discovered additional logs of Instagram passwords being stored in a readable format(.... 我们发现更多的 Instagram 密码日志以可读的格式存储。)

有时候,一个网站在最初存储你的密码时会做好所有的事情。 然后,通过一些列更新之后,就出问题了——日志记录泄露密码。

日志记录对于查找应用程序、硬件问题甚至系统代码中的问题非常有用。 但是,如果一家公司没有彻底测试这种日志记录功能,可能得不偿失。

在 Facebook 和 Robinhood 的例子中,当用户提供他们的用户名和密码登录时,日志功能可以看到并记录他们输入的用户名和密码。 然后它将这些信息储存在其他地方。 任何能接触到这些日志的人都可以接管账户。
也许有的企业会存在侥幸心理,但是,事实总会打脸的,所以,加密处理这一步不能忽略。

企业应该如何负责任地保存密码

数据库

企业或网站永远不应该存储纯文本密码。 相反,密码应该加密,然后哈希。 重要的是要知道什么是 salting (密码加盐),以及加密和 Hash 之间的区别。

密码加盐添加额外的文本到密码

密码加盐是一个直接的概念。 这个过程实际上为密码添加了额外的文本。可以把它想象成在常规密码的末尾加上数字和字母。输入“ Password123”(请不要使用这两个密码中的任何一个) ,而不必使用“ Password”作为密码。 Salting 是一个类似的概念:在系统 Hash 你的密码之前,它会向其中添加额外的文本。

因此,即使黑客闯入数据库窃取用户数据,也很难确定真正的密码是什么。 黑客不会知道哪一部分是 salting 后的,哪一部分是密码。

企业不应该重复使用从密码到密码的加盐数据。 否则,它可能会被偷或损坏,从而变得毫无用处。 适当地改变已加盐的数据也可以防止冲突(稍后将详细讨论)。

加密不是密码的下一个选项

正确存储密码的下一步是对其进行 Hash。 哈希不应与加密混淆。

在加密数据时,可以根据密钥对其进行适当的转换。 如果有人知道密钥,他们可以将数据更改回来。

如果一个黑客带着加密的数据入侵系统,他们也设法窃取了加密密钥,那么你的密码也可能是纯文本。

Hash 将密码转换为乱码

密码哈希从根本上将密码转换成一串莫名其妙的文本,应该没人愿意看。 如果使用“ Password123” ,哈希法可能会将数据更改为“873kldk # 49lkdfld # 1”,企业应该在存储密码之前对其进行哈希处理,这样它就不会有你实际的密码记录。

哈希的这种特性使它成为比加密更好的存储密码的方法。 虽然你可以解密加密的数据,但你不能“去除”数据。 因此,如果黑客真的闯入了数据库,他们不会找到解锁 Hash 数据的密钥。

相反,他们不得不在你登录密码是和企业网站做同样的事情。加盐密码猜测(如果黑客知道) ,然后 Hash它,对文件的 Hash 匹配。 当你把你的密码提交到谷歌或者银行系统时,他们会遵循同样的步骤走一遍。 一些公司,甚至可能采取额外的策略来处理。

Hash 的主要缺点是,如果两个人拥有相同的密码,需要添加 salt 的原因,salt 可以将密码更改为另外的密码。 一个经过适当处理的哈希密码不会有任何匹配项。

黑客们最终可能会破解哈希数据,但这主要会出现在测试环境,所有能想到的密码并希望找到匹配的游戏中。而且 这个过程仍然需要时间,这给了我们保护密码的时间。

如何防止资料外泄

密码管理工具lastpass

你不能阻止某些企业不正确地处理你的密码。 不幸的是,这种情况比正常情况更常见。 即使企业正确地存储了你的密码,黑客也可能侵入公司的系统,窃取 Hash 数据。
考虑到这一现实,请永不重复使用密码。 相反,你应该为你使用的每个服务输入一个不同的复杂密码。 这样,即使攻击者在一个网站上发现了你的密码,他们也不能用它登录到你在其他网站上的账户。 复杂的密码非常重要,因为密码越容易被猜测,黑客就能越快破解 Hash 过程。 通过使用更加复杂的密码,你可以争取到更多时间来减少损失。

使用独特的密码也可以将损害降到最低。 黑客最多只能访问一个账户,而且修改一个密码比修改几十个密码更容易。 复杂的密码很难记住,所以我们建议使用密码管理器。 密码管理器生成并记住密码,你可以调整它们。
有些公司,比如 LastPass 和1Password,甚至会提供检查当前密码是否泄露的服务。

另一个好的选择是启用两步身份验证。 这样,即使黑客泄露了你的密码,你仍然可以阻止未经授权的访问。

虽然你不能阻止企业不当地处理你的密码,但是你可以通过正确地保护你的密码和账户来最大限度地减少负面影响。

图片来源:互联网

参考:https://crackstation.net/hashing-security.htm

 

推荐阅读:

WiFi6将如何改变你的工作方式和工作环境?

FaceApp——火爆到被美国封杀的AI变脸工具,确定不试试?

需要智能客服机器人营销策略?分享10个AI智能机器人营销技巧