我最近收到一封来自一位读者的电子邮件,他强烈指责密码管理器并进一步指责PCMag煽动了这些谎言。具体地说,这位读者对零知识架构意味着没有其他人,甚至连公司都不能访问您的数据,因为只有您拥有主密码的说法提出了异议。他的理由是,既然你不提供密码就无法访问,公司就简单地必须知道密码,因此一定是在撒谎。
我不会直接回复攻击性的邮件,但这条信息让我思考。我能详细解释一下,密码管理器、云存储服务或其他在线系统是如何安全地存储你的数据,而完全没有能力解密这些数据的吗?我写下了我对这个过程的想法,并意识到我对一些步骤并不完全确定,所以我找来了Keeper Security的CTO克雷格·卢雷(Craig Lurey)帮我进行了一次心智检查。感谢他的帮助,以及激发我兴趣的电子邮件,我可以与你分享这些细节。
我们的顶级密码管理器选择
查看全部(5项)首先,什么是哈希?
我将在下面讨论哈希算法,很多人会觉得不熟悉,所以我应该提前澄清。哈希算法就像一个加密系统,只加密,从不解密。相同的输入总是会产生相同的输出,但是没有办法处理输出并返回输入。这些算法的设计也使得输入内容的微小变化会导致输出内容的巨大变化。
杀毒研究人员使用哈希来比较危险的恶意软件文件,而不必自己共享文件。如果散列相同,则文件相同。安全系统通过确认哈希值匹配来验证密码,而不需要访问密码本身。
它可能存在一个弱点:知道系统使用的确切哈希算法的攻击者可以通过该算法敲打数百万个常用密码,并记录结果。生成的表不能完全逆转散列过程,但它允许攻击者将数百万散列与相应的密码匹配。防御者通过在哈希过程中添加一个称为“salt”的随机值来防止这种攻击。这很复杂,但很有效。
安全注册密码管理服务
您可能熟悉注册密码管理服务的流程。你输入你的用户名,仔细地想一个强主密码你能记得,但别人猜不出来。您可能会想到,下一步是将用户名和强密码发送到服务器以存储在数据库中,但实际发生的事情要复杂得多。
首先要明白的是所有数据的加密和解密在本地进行。Keeper的Lurey向我证实,无论你是在网页、浏览器扩展还是使用本地安装的应用程序上与密码服务交互,都没有区别。所有的动作都发生在你的设备上。
该过程开始时,应用程序从你的主密码衍生加密密钥使用专门的算法(在新窗口打开)这种设计让破解变得异常困难。然后,它对该密钥进行哈希,并使用加密连接将用户名/哈希对传输到服务器,并将其放在加密存储中。
继续,应用程序再次处理你的主密码,以获得一个完全不同的密钥,用于加密和解密你的密码宝藏。卢里指出,出于实际原因,Keeper使用了这把钥匙不直接加密您的数据,但加密另一个用于加密的“数据密钥”。在对数据进行加密后,它会通过加密连接将数据发送到服务器。
服务器现在存储属于您的加密数据块,但解密该数据的密钥永远不会离开您的本地设备。在服务器上,没有你的主密码或密钥的记录。服务器持有不同密钥的哈希值,用于验证您是否被授权收到加密的数据。就这些。
获取你的数据
当你登录密码管理器时,你的本地应用程序也会经历许多相同的步骤。它以同样的方式处理您的密码,并将产生的散列(包含您的用户名)发送到服务器进行验证。如果一切正常,服务器将安全发送加密数据块到本地应用程序。
本地应用程序像以前一样派生加密密钥,并使用它在本地解密所需的数据。一旦数据达到了它的目的,比如填写网站登录凭据,应用程序就会从内存中删除这些明文数据。清除本地数据非常重要。2019年,研究人员发现LastPass浏览器扩展的bug这未能清除最后一次使用的登录凭据,为恶意网站捕获它们留下了可能。LastPass自然马上修复了这个问题。
密码管理器可以以加密形式保留下载的数据,并根据需要对其解密。这让你即使离线也能访问数据。
越来越安全
即使您的主密码又长又强,而且是随机的,可以想象,犯罪分子可能会以某种方式获得它并试图登录。许多密码管理器在从不熟悉的设备收到连接请求时应用额外的安全性。例如,他们可能会要求输入一个代码,发送到与你的账户相关的电子邮件地址,或者要求从已经受信任的设备进行应用内验证。一旦进行了身份验证,就可以决定下次是否应该信任该设备。至于密码窃贼,他们被困住了。如果没有额外的验证,被盗的密码就毫无用处。
我向Keeper的Lurey询问了这个过程的安全性:服务器端软件是如何跟踪你受信任的设备的?什么样的预防措施可以保护二次验证码?他证实了我的想法,这部分过程没有如上所述的相同的武器级保护。设备id存储在服务器上的加密数据库中,并根据需要进行检查或更新。可以想象,尽管不太可能,攻击者可以窃取或伪造设备ID,但即使这样,他们仍然需要您的主密码。
您可以使用以下方法显著增强密码库的安全性多因素身份验证,或MFA。使用MFA,身份验证至少需要以下两项:您知道的东西(例如主密码);你有的东西(如安全的关键);或者你是什么(比如指纹)。这意味着每次登录时都必须输入主密码并提供至少一个其他密码。当你激活MFA时,我之前提到的密码小偷就没有机会了。
这是真的,密码管理器真的不知道你的密码
密码管理公司可能也确实遭受数据泄露。LastPass最近报告了一次入侵在第三方云存储服务托管客户数据时,这样的泄露可能会暴露您的个人信息。黑客甚至可能获得你的信用卡数据,或者访问代表你密码的加密文件。他们永远得不到的是密码本身,因为解密密钥和解密密码在服务器上永远不存在。
这意味着当密码管理公司说他们没有办法访问你的数据时,他们并不是在撒谎或搪塞。唯一存储在他们服务器上的东西是你的加密数据块和一个哈希值(完全不同于解密密钥),以验证你接收该数据的权利。加密、解密和密码管理都在您的本地设备上进行。把强密码留给自己,考虑启用MFA,应该没问题。