Firefox Send 端到端加密有多安全?

Firefox Send 端到端加密有多安全?

Firefox 最近推出了文件共享服务,发送。它承诺端到端加密:要共享的文件在发送者的浏览器中加密,并在接收者的浏览器中使用嵌入在共享 URL 中的密钥解密。

共享文件的 URL 格式如下:

https://send.firefox.com/download/03837dac3928b1d1/#lIFX1W1S2oXSwJF0QgMe_A

我猜想 URL 的一部分代表文件在 Mozilla 服务器上的位置,另一部分代表加密密钥。但是,对于有效的 URL,无论我更改哪一部分,都会收到错误“该链接已过期”。因此,我无法确定我的猜测是否正确。

无论如何,我的问题是我对这种端到端加密有多大信心。这种机制很聪明,但我注意到我能够从任何设备上的 Firefox 帐户中恢复任何共享的链接。这意味着整个链接以某种方式存储在 Mozilla 服务器上的我的帐户中。

如果是这样,那么 Mozilla 在技术上可以解密每个共享文件。我遗漏了什么吗?有谁了解 Firefox Send 的实际工作原理以及依赖该端到端加密机制是否安全?

多谢。

答案1

我也有同样的疑问,于是就想到了这个问题。好吧,我可以尝试自己做研究。

Mozilla 记录了所使用的加密这里用更简单的术语来解释:

上传

  1. 您的应用/浏览器生成加密密钥
  2. 该密钥用于生成 3 个附加密钥:一个用于文件加密本身,一个用于元数据,一个用于签名密钥
    • 如果您设置了密码,则密码和加密密钥将以安全的方式组合以创建签名密钥
  3. 文件和元数据被加密
  4. 加密数据和签名密钥被发送到 Mozilla
    • 请注意,由于签名密钥的生成方式,无法计算出用于生成任何密钥的原始加密密钥
  5. Mozilla 会向您发送文件的 URL(不包含 # 后面的部分)和一个令牌。此令牌可用于删除该文件。
  6. 您的应用程序附加#符号和加密密钥

下载

  1. 您进入下载页面。所有浏览器都不会将#后面的部分提交给服务器。(它们通常用于链接到同一页面的另一部分的锚链接)
  2. Mozilla 向您的应用发送一个“nonce”(仅使用一次的数字)或基本上是一些随机垃圾数据
  3. 由于您在 # 后有加密密钥,因此应用程序会按照上传步骤 2 生成所有 3 个密钥。您将获得与上传者完全相同的密钥。
  4. 应用程序使用签名密钥对服务器提供的随机数进行签名
  5. 应用程序将签名的随机数发送给 Mozilla
  6. 由于 Mozilla 也拥有相同的签名密钥,因此他们也会在他们那边执行第 4 步,并期望它与您发送的密钥匹配。此步骤可确保
    • 您知道正确的加密密钥
    • 或者如果文件受密码保护,您知道密码
  7. 一旦您验证您知道密钥(甚至无需向服务器透露密钥),Mozilla 就会向您发送加密的元数据。
  8. 该应用程序在您的计算机上解密此元数据并向您显示详细信息
  9. 你点击下载
  10. 该应用程序下载加密文件并在您的计算机上解密

因此,回答你的问题:

我猜想 URL 的一部分代表文件在 Mozilla 服务器上的位置,另一部分代表加密密钥。但是,对于有效的 URL,无论我更改哪一部分,都会收到错误“该链接已过期”。因此,我无法确定我的猜测是否正确。

从下载步骤 6 开始,如果您无法证明您知道正确的加密密钥,那么 Mozilla 将拒绝向您发送该文件。

无论如何,我的问题是我对这种端到端加密有多大信心。这种机制很聪明,但我注意到我能够从任何设备上的 Firefox 帐户中恢复任何共享的链接。这意味着整个链接以某种方式存储在 Mozilla 服务器上的我的帐户中。

我链接的文档中没有写这部分内容。我四处寻找来源发现他们将已上传文件的列表上传到您的帐户。我相信这些数据是经过加密的,加密过程与文件加密类似。

我查看了一下,发现加密密钥似乎是在本地生成的。不过我不确定密钥是如何同步的。

如果是这样,那么 Mozilla 在技术上可以解密每个共享文件。我遗漏了什么吗?有谁了解 Firefox Send 的实际工作原理以及依赖该端到端加密机制是否安全?

这里需要声明的是,我并不是加密专家,你可能想问加密对此的看法。

如果你问我,我认为这里的加密过程非常可靠,使用的算法是行业标准。Mozilla 无法解密每个文件,除非暴力破解每个使用的密钥(每个文件一个)。

然而,你应该意识到你必须相信 Mozilla 正在履行其职责的额外功能:

  • 密码仅由服务器验证。如果您碰巧获得了加密文件和加密密钥,那么您可以在不知道密码的情况下解密数据。通常这不会有问题,因为除非您证明您知道密码,否则服务器不会向您发送加密文件。但是,Mozilla 自己可以访问加密文件,因此加密密钥是这里唯一的保护。
    • 考虑到大多数用户提供的密码都很弱,生成随机的强加密密钥比直接使用密码加密数据更好。
  • 由于无法通过数学函数获得真实的当前时间,因此无法以加密安全的方式实现过期。因此,您必须相信 Mozilla 会删除您的过期文件。

请注意,Firefox Send 开源服务器支持 AWS 作为存储后端。我不确定 Firefox 在其公共服务中使用了什么,但如果是 AWS,那么您也必须在上述两个问题上信任 AWS。

相关内容