九年来,Mozilla 都在通过不够强大的加密机制保护“主密码”功能。
火狐浏览器和雷鸟 (Thunderbird) 均允许用户通过设置面板设置一个“主密码”。该主密码相当于一个密钥的作用,用于加密用户保存在浏览器或邮件客户端的每个密码字符串。
当时该功能赢得安全专家的好评,因为当时浏览器会将密码以明文形式存储在本地,因此易受恶意软件或能物理访问受害者电脑的攻击者的攻击。
但 AdBlock Plus 扩展的作者 Wladimir Palant 表示,主密码功能使用的加密机制安全性薄弱,可轻易遭暴力破解。
主密码加密使用迭代次数少的 SHA1加密算法
Palant 表示,“通过查看源代码,我终于找到了将网站密码转换为加密密钥的 sftkdb_passwordToKey() 函数。转换方法是将 SHA-1 哈希应用于由随机盐和用户实际主密码构成的一个字符串。曾经设置过网站登录功能的任何人都能看出这里的危险性。”
Palant 所说的危险是指,这个 SHA-1 函数的迭代次数为1,也就是说它仅应用了一次,而行业实践对这个值的最低限是1万次,而如 LastPass 密码管理器等应用的迭代次数为10万次。
这种低下的迭代次数导致攻击者非常容易暴力破解主密码,随后解密存储在火狐或雷鸟数据库中的加密密码。
Palant 指出,GPU 卡技术的发展能够让攻击者在不到1分钟的时间里就能暴力破解简化的主密码。
Mozilla 早在9年前就获知该问题
但是 Palant 并非首个注意到此问题的人。Justin Dolske 就曾在9年前通过 Mozilla 的漏洞追踪系统报告了同样的问题,也就是在这个主密码功能刚上线不久后。
Dolske 也同样提到了主密码迭代次数仅为1的这个主要问题,但尽管收到了这份报告,Mozilla 这么多年来均未采取任何官方措施。
也就是当 Palant 在上周重提这个问题后,Mozilla 才终于提供了一则官方回复,表示将在火狐浏览器以扩展的形式推出新的密码管理器组件 Lockbox 中解决这个问题。
使用主密码要比不用强得多。就目前情况来看,选择长且复杂的主密码能缓解这个功能的内在薄弱加密计划。用户可使用第三方密码管理器应用确保他人无法接触到自己的 web 密码。
Palant 表示,最佳方案是 Mozilla 工程师使用 Argon2 库而非 SHA1 作为密码哈希。