ProtonMail 密钥是如何分配的?

信息安全 加密 电子邮件 密钥管理 质子邮件
2021-08-14 02:04:07

有一个名为ProtonMail的服务。

它在客户端加密电子邮件,在他们的服务器上存储加密的消息,然后收件人解密它,也在客户端和系统“不存储密钥”。

我的问题是:解密是如何工作的?

我有点困惑。我必须先将解密密钥发送给每个收件人,然后他才能阅读我的消息吗?

4个回答

我是 Jason,ProtonMail 的开发者之一。

解密使用非对称 (RSA) 和对称 (AES) 加密的组合。

对于 PM 到 PM 的电子邮件,我们使用 PGP 的实现来处理密钥交换。所以我们有所有的公钥。至于私钥,当您创建帐户时,它会在您的浏览器上生成,然后用您的邮箱密码(我们无权访问)加密。然后将加密的私钥推送到服务器,以便我们可以在您登录时将其推送回您。我们是否存储您的私钥,是的,但由于它是加密的私钥,我们实际上无法访问您的密钥。

对于 PM 到外部电子邮件,加密是可选的。如果您选择加密,我们会使用您为该消息设置的密码使用对称加密。这个密码可以是任何东西。它不应该是您的邮箱密码。您需要以某种方式将此密码传达给收件人。

我们还有一些其他技巧可以绕过 RSA 的糟糕性能。

我们最终将编写一份白皮书,其中包含任何人都可以理解的全部细节。但类似的事情本身就是一个为期一周的项目。如果我的回答只对加密货币人士有意义,我提前道歉。

在杰森的回答和电子邮件对话之后,我已经大大改变了这个答案。原件在编辑历史中仍然可用。

这里有两种不同的情况:ProtonMail-to-ProtonMail 和 ProtonMail-to-Other 邮件。

对于 PM 到 PM 的电子邮件,系统能够处理公钥/私钥分发。由于他们编写了生成私钥并将公钥发送到服务器的代码,并且他们在加密之前知道电子邮件的收件人,因此他们可以使用收件人的公钥进行加密,收件人可以使用他们的私钥进行解密。这对系统的用户是透明的。他们没有提到使用您的私钥签署电子邮件,但这也应该同样可行且透明。

PM-to-Other 电子邮件不使用非对称加密。在为未使用 ProtonMail 的收件人创建电子邮件时,您会生成一个新密码,该密码用于派生用于加密邮件的对称密钥。然后,您必须使用不同的、独立的安全方法将此密码传达给您的收件人。如果您的威胁模型包含可以拦截您的电子邮件的攻击者,则通过电子邮件向您的收件人发送解密密钥然后加密电子邮件与不使用加密相同。(如果您的威胁模型包含此功能,您为什么还需要加密邮件?)

您的收件人在其邮件客户端中实际收到的邮件未加密,也不是您的原始邮件。它只是一个指向 ProtonMail 网站的链接,他们可以在其中使用您已经传达给他们的密码来解密您的邮件。

在这两种情况下,都声称加密和解密是在您的浏览器中使用 Javascript 完成的,而集中式服务器只能看到加密数据。

如果你有一个独立、安全的解密密码通信方法,为什么不直接使用它而不是 ProtonMail?

一个原因可能是您的独立方法不方便。它可能是亲自拜访收件人或打电话给他们。另一个潜在原因是出于广告或促销目的。如果您喜欢 ProtonMail 并希望您的联系人使用它,那么从 ProtonMail 向他们发送电子邮件会促进这一点。

但是,如果您有一种您认为安全方便的方法(OTR、Cryptocat、Skype,无论您信任什么),那么为什么不直接使用它呢?


我生性谨慎并对这项服务持保留态度,至少在它受到火灾考验之前是这样。

  1. 无法撤销或更改邮箱密码。 如果您的邮箱密码泄露,您唯一的办法就是关闭您的帐户并创建一个新帐户大概,这很像现在获得一个新的电子邮件地址,这意味着很多电子邮件将在您关闭旧地址后发送到您的旧地址,并且没有人会知道您的新地址。我希望您也将无法访问所有旧电子邮件。您的收件人将无法访问您发送给他们的电子邮件,这没有加密原因,但是当发件人被删除时,系统可能会删除所有电子邮件,因为它们都存储在他们的服务器上。
  2. 对于从 ProtonMail 用户接收大量加密电子邮件的非 ProtonMail 用户,他们必须将每封电子邮件的解密密码存储在某处以及它们之间的映射。每封电子邮件都需要查找并输入新密码。我会断言这是不可的。
  3. 提出索赔很容易。 Ladar Levison 说,Lavabit 没有存储密钥,因此他不能被迫透露它们。 事实证明这是错误的。ProtonMail 的设计看起来要好得多,但在得到证实之前,“即使我们无法阅读您的邮件”的说法仍然值得怀疑。
  4. 他们在常见问题解答/说明中省略了重要细节例如,当声称能够在某个时间删除电子邮件时,他们并没有提到用户可以在该电子邮件被删除之前将其复制到另一个程序中,并且该副本不会被删除。他们还省略了您必须找到自己的安全方法来分发 PM-to-Other 电子邮件的解密密码的细节。
  5. 到期时间功能引用了 SnapChat ,臭名昭著的是它实际上并没有删除图像,而是停止在应用程序中列出它们
  6. 一些聪明人也对此有所保留
  7. 唯一提到的元数据是 IP 地址和访问时间。To: 和 From: 地址等元数据必须以可访问的格式(即纯文本或可用的加密密钥)存储在其服务器上,以使电子邮件能够发送给正确的人。IP 地址和访问时间显然仍然可以被攻击者捕获和存储。
  8. 如果您处于离线状态,系统将无法使用。在飞行过程中或在地铁上无需查看您的电子邮件。如果服务关闭,您将没有电子邮件副本。
  9. 您的私钥存储在 ProtonMail 服务器上,使用您的邮箱密码使用 AES256 加密。这可能是因为您可以在另一台计算机上使用 ProtonMail,他们只需将您的私钥推送到该计算机,以便您使用邮箱密码解密。这是对可用性/便利性的安全性妥协。这也与网站上的安全页面相矛盾,该页面说它们没有发送到服务器。
  10. Jason 的回答提到了提高 RSA 性能的“技巧”。之前已经对完全损害其安全性的加密代码进行了看似良性的更改。

它绝对不是 NSA 证明的,但所有关于它的嗡嗡声都使用这个确切的短语来声称它是。他们自己关于威胁模型的博客文章说它不是 NSA 证明的。

它可能对你有用,但如果你试图组织一场革命,它就没有用了。

“ProtonMail 的隔离认证和解密系统是指登录一个 ProtonMail 帐户,需要两个密码。第一个密码用于验证用户并检索正确的帐户。之后,将加密数据发送给用户。第二个密码是解密从未发送给我们的密码。[第二个密码]用于在浏览器中解密用户的数据,因此我们永远无法访问解密的数据或解密密码。因此,我们也无法进行密码恢复. 如果您忘记了解密密码,我们将无法恢复您的数据。”

作为对此的评论,我想说这仍然容易受到 NSA-vs-Lavabit 风格的 SSL 密钥妥协的影响。如果你能得到他们的 SSL 密钥,你就可以冒充 ProtonMail 并使用 javascript 窃取所有用户的第一个和第二个密码。这可能会破坏整个加密协议。

因此,这样它就不会成为“NSA 无法访问的唯一电子邮件系统”:http ://www.forbes.com/sites/hollieslade/2014/05/19/the-only-email-system-该-nsa-无法访问/

在他们页面的“安全”选项卡下,他们声明:

我们支持通过对称加密向非 ProtonMail 用户发送加密通信。当您向非 ProtonMail 用户发送加密邮件时,他们会收到一个链接,该链接将加密邮件加载到他们的浏览器上,他们可以使用您与他们共享的解密密码来解密该链接。

看起来您必须先与接收者共享解密密码。