有一个名为ProtonMail的服务。
它在客户端加密电子邮件,在他们的服务器上存储加密的消息,然后收件人解密它,也在客户端和系统“不存储密钥”。
我的问题是:解密是如何工作的?
我有点困惑。我必须先将解密密钥发送给每个收件人,然后他才能阅读我的消息吗?
有一个名为ProtonMail的服务。
它在客户端加密电子邮件,在他们的服务器上存储加密的消息,然后收件人解密它,也在客户端和系统“不存储密钥”。
我的问题是:解密是如何工作的?
我有点困惑。我必须先将解密密钥发送给每个收件人,然后他才能阅读我的消息吗?
我是 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,无论您信任什么),那么为什么不直接使用它呢?
我生性谨慎并对这项服务持保留态度,至少在它受到火灾考验之前是这样。
它绝对不是 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 用户发送加密邮件时,他们会收到一个链接,该链接将加密邮件加载到他们的浏览器上,他们可以使用您与他们共享的解密密码来解密该链接。
看起来您必须先与接收者共享解密密码。