在过去的九年中,Mozilla一直在使用不够强大的加密机制来实现“主密码”功能。


Firefox和Thunderbird都允许用户通过他们的设置面板设置“主密码”。此主密码扮演加密密钥的角色,用于加密用户保存在浏览器或电子邮件客户端中的每个密码字符串。


专家们称赞了这一功能,因为这之前,浏览器会以明文方式在本地存储密码,这使得它们容易受到恶意软件或攻击者的攻击而无法访问受害者的计算机。


Firefox 的主密码系统不安全,在过去9年里安全性一直很差_java

但AdBlock Plus扩展的作者弗拉基米尔帕兰特表示,主密码功能所使用的加密方案很薄弱,并且很容易被强制使用。


主密码加密使用低SHA1迭代次数

“我查看了源代码,”Palant说,“我最终发现了sftkdb_passwordToKey()函数,该函数通过将SHA-1哈希应用于由随机盐组成的字符串,将[网站]密码转换为加密密钥,你的实际主密码“。


“任何曾经在网站上设计登录功能的人都可能会在这里看到漏洞,”Palant说。


Palant指出的标志是,SHA-1函数的迭代次数为1,这意味着它只应用一次,而行业惯例认为10,000是该值的最小值,而像LastPass这样的应用程序使用的值为100,000。


这种低迭代次数使得攻击者很容易暴力破解主密码,并且稍后解密存储在Firefox或Thunderbird数据库中的加密密码。


Palant指出最近在GPU卡技术方面的进步,现在允许攻击者在一分钟之内暴力破解简单的主密码。


问题在九年前首次报道

但是Palant不是第一个注意到这种弱点的人。 Justin Dolske在9年前发布的一个Mozilla bug跟踪器条目在主密码功能启动后不久就报告了相同的问题。


Dolske还指出1的低迭代次数是主密码的主要问题。但是尽管有这份报告,Mozilla多年来并没有采取任何官方行动。


直到过去一周,当Palant重新渲染最初的bug报告时,Mozilla终于提供了正式的答案,这表明这将通过推出Firefox的新密码管理器组件,目前代号为Lockbox并作为扩展提供。

Firefox 的主密码系统不安全,在过去9年里安全性一直很差_java_02

使用主密码比不使用主密码更好。


目前,选择更长和更复杂的主密码可以缓解该功能固有的弱加密方案。 希望确保没有人可以触摸其网络密码的用户应使用第三方密码管理器应用程序。


根据Palant的说法,最佳解决方案是Mozilla工程师将使用Argon2库来散列密码而不是SHA1。

Firefox 的主密码系统不安全,在过去9年里安全性一直很差_java_03