“你的数据已加密”是主打隐私的产品最常喊的口号之一,但单凭这句话却往往也是最没用的。加密描述的只是一种机制:用一把钥匙把可读数据变成不可读数据。它只字未提之后谁持有那把钥匙,而正是这个细节,几乎决定了到底是谁真正被锁在了门外。“零知识 (Zero-knowledge)”正是为了把这个关键细节做对而诞生的术语。

核心理念

零知识加密意味着,运营该服务的公司永远无法获取解密您数据所需的密钥。不是“选择不去偷看”,而是从系统结构上无法做到,因为密钥永远不会离开您的设备,也从未被传输到他们的服务器上。密钥通常派生自只有您知道的信息:密码、PIN 码或图案,这些信息在本地经过密钥派生过程处理,最终只有结果(加密的密文)才会离开您的掌控。

这很重要,因为“我们加密您的数据”和“我们无法读取您的数据”是两个截然不同的声明,而大多数产品只做到了第一个。一家公司可以在其服务器上使用诸如 AES-256 等强大的算法加密文件,同时仍然自己掌握解密密钥。这意味着这种加密能把外部攻击者挡在门外,但对于防范该公司自身、针对该公司的黑客攻击或向该公司下达的法律指令,却毫无用处。零知识恰恰是为了堵住这个漏洞而生的。

零知识 vs. 端到端加密

这两个术语经常被混着用,但它们提供的保证并不完全一样。端到端加密通常指的是数据在传输过程中被加密,这样中继服务器在数据传输时就无法读取它。这确实是一种实实在在的保护,但它对数据到达目的地后会发生什么只字未提;许多端到端加密系统在数据到达后仍然会进行解密并存储明文,或者在服务器端存储密钥的托管副本。

零知识是更强大、更完整的版本:无论数据是在传输中还是静止状态,服务提供商都拿不到密钥。一个真正的零知识系统会对静止数据进行加密,这意味着存储在那里的文件对服务提供商来说将无限期地保持不可读取状态,而不仅仅是在上传期间。

它防范的是什么

零知识设计的价值,恰恰体现在那些仅仅做了表面加密的系统会崩溃的场景中:

  • 服务器被攻破。 如果攻击者侵入了某家公司的服务器,而该公司掌握着用户的密钥,那么攻击者就有可能获得解密用户数据的途径。如果该公司从未掌握过密钥,那么这种入侵只能得到无法读取的密文。
  • 法律指令。 传票或法院禁令只能强迫一家公司交出它实际拥有的东西。零知识服务商可以交出加密文件,并如实声明他们也打不开,因为他们真的打不开。
  • 内鬼。 在非零知识系统中,拥有服务器访问权限的员工也许能够直接触及用户数据。但在零知识系统中,服务器端根本没有任何可以触及的实质内容。

以上这些,都不需要您去相信这家公司的“好意”。这是系统架构本身的属性,这也正是为什么它比隐私政策中的一纸空头承诺更有价值的原因。

如何辨别声明的真伪

有一个实用的测试,可以刺穿大多数营销术语的伪装:看看有没有“忘记密码”或账号恢复流程能让你重新访问你的加密数据。如果一家公司能够重置你的密码并让你重新进入文件,说明他们掌握了部分密钥——无论他们是否把这产品叫做零知识。一个真正零知识的产品是做不到这点的。如果您的密码或 PIN 码丢失了,并且没有独立生成的、保存在设备上的恢复方法,那么数据也就一起丢失了。这是设计使然,因为正是这个同样的属性,把除了你之外的所有人都挡在了门外。

这也是为什么零知识产品会依赖于在本地生成的恢复短语,而不是发送一封密码重置邮件。恢复短语也永远不会接触服务器;它只是密钥派生材料的第二份、离线的副本,并且只有您掌握着它。

Vaultine 是如何应用这一点的

Vaultine 的保险库加密密钥源自您自己的 PIN 码或图案,完全在您的设备上推算并使用,绝不发送到服务器(参阅为什么不用注册账号的保险库应用其实更安全,了解这同时也消除了注册账号的需求)。每个文件在触及存储空间之前,都会使用其独有的 AES-256 密钥进行加密。包括可选的 Dropbox 备份功能在内,文件都会先在设备本地加密,因此,任何到达 Dropbox 的数据都已经是密文,无论 Dropbox 自身的加密措施是好是坏(关于这个单独的问题,参阅Dropbox 的加密足以保护敏感文件吗?)。

如果您丢失了 PIN 码且没有保存恢复短语,Vaultine 无法为您找回文件。这不是服务上的缺失;这是为了防止数据泄露、传票或内鬼触碰您文件的同一个设计,所必然带来、无法避免的结果。

总结

“已加密”告诉你,这里有一把锁。“零知识”告诉你,谁没有这把钥匙。这两个声明听起来很像,在营销文案中几乎被当成同义词使用,但只有后者才真正决定了这家公司本身是否被挡在了你的数据之外。在相信任何一个声明之前,先检查一下有没有“密码重置”流程。

Vaultine 的加密密钥永远不会离开您的设备。前往 vaultine.app,免费使用前 10 个文件。