众所周知,我们正计划成为首个后量子时代的安全电子邮件和云服务提供商,我们非常高兴地宣布,我们现在已经实现了该项目的第一个里程碑!
此次更新后,您的密码(用于生成加密密钥,对您在 Tutanota 中的所有数据进行加密)将不再由 bcrypt 保护,而是由Argon2 保护:这是一种新的先进算法,将带来更好的安全性。
为什么要改用Argon2?
在Tutanota诞生之初,bcrypt是将密码转化为加密密钥的最佳方式。它能将密码转化为 192 个随机比特,供我们用于加密目的。这比大多数人的密码的熵要大得多,所以肯定够用了,对吗?
那么,作为量子安全的一部分,我们要把所有的 AES 密钥都改成 256 位,因为一旦能运行格罗弗算法的量子计算机出现,128 位的密钥就不再安全了。但是,喜欢数学的人会注意到,256 比 192 大。
** 那我们该怎么办呢?
例如,我们可以用 SHA-256 算法对这 192 个比特进行散列,在大多数情况下都没问题。
但如果我们能做得更好,为什么还要这么做呢?
进入 Argon2
Argon2 是密码散列竞赛的冠军,这是有原因的。目前,包括OWASP 基金会在内的大多数现代指南都推荐使用这种算法。
与 bcrypt 相比,Argon2 带来了许多改进,如内存硬度和抗侧信道能力。
Argon2 可以用于所有客户端吗?
一旦确定了要使用的算法,我们就面临着如何在所有支持平台中实际使用的问题:安卓、iOS、桌面客户端和网页。主要问题是没有 JavaScript 实现,或者至少没有我们考虑使用的 JavaScript 实现。不过,对于编译成 WebAssembly 的参考 C 实现,有许多 JavaScript 绑定。
WebAssembly 是一种允许在网络浏览器上运行几乎任何编程语言编写的代码的技术。
这也是我们决定使用的技术,但我们选择编写自己的最小胶水,以最简洁的代码获得最佳加载时间。
我们为什么使用 WebAssembly?
长期以来,所有主流浏览器都支持 WebAssembly。这就是我们选择这一解决方案的原因,因为它在安全性和速度方面为所有Tutanota用户带来了最佳效果。
一个小插曲是,虽然所有主流浏览器都支持 WebAssembly,但在某些情况下,例如在 iOS 的锁定模式下,WebAssembly 仍然不可用。
我们曾考虑将 C 代码编译成纯 JavaScript (asm.js),从而完全避免这一要求,但这样做会使应用程序速度太慢,不实用。
不过,我们打算在移动应用程序中使用本地实现,这样性能会更好,也不需要这些客户端。
为了让每个人都能使用 Argon2 提供的更安全的新密码保护,我们让所有可能存在 WebAssembly 问题的环境中的用户知道,他们需要这样做来提高安全级别。
其他供应商在做什么?
与Google或Outlook等提供商不同的是,我们并不只是使用密码来进行身份验证,我们还使用密码来生成密钥,以解锁所有加密数据,因此我们真正需要的是基于密码的密钥生成功能,而不是密码哈希函数或基于密码的身份验证协议。
就这一要求而言,如上所述,Argon2 远远领先于 bcrypt,将使您的加密数据更加安全。
迄今為止,我們的競爭對手都沒有使用Argon2,因此升級至Argon2這一步,再次證明我們是最安全的電郵供應商。
您需要做什么?
大多數用戶不需要做任何事情,他們只需在系統推出後,從安全性的提升中獲益即可。
一些使用 WebAssembly 问题系统的用户可能会看到一个警告。
如果你在Tor 浏览器上收到了这样的警告,你可以采取以下两种方法:
- 在 Tor 浏览器中更改为标准安全级别,或者
- 使用运行中的 Tor 实例作为代理,启动另一个浏览器。
如果你在 iOS 上处于封锁模式,我们强烈建议你使用 Tutanota 应用程序,而不是浏览器。如果在 iOS 禁用模式下使用浏览器,则需要为 Tutanota 网络客户端添加一个例外。
如果在安卓系统上遇到问题,请更新WebView(只有在安卓系统上使用浏览器时才需要更新)。
确保使用支持的浏览器或Tutanota桌面客户端。
我们很高兴能通过从bcrypt转换到Argon2提高您的安全级别!