隐私与加密

隐私

在 Anytype 中,你的所有数据都是保密的。只有你才拥有加密密钥。Anytype 的任何人都无法解密你的数据。因此,如果你丢失了短语,我们无法恢复你的访问权限。同样,Anytype 的任何人或其他任何人都无法读取你的 Anytype 内容。

由于 Anytype 的特性,你无法使用 Syncthing 或 iCloud 等服务来同步随时准备编辑的对象。

加密

  • 你的对象以一种加密格式存储在本地和节点上,只有使用加密密钥才能够解码。每个文档的加密密钥都不一样,我们有某种密钥层次结构。

  • 为了能够高效地搜索文件,我们会基于被加密的对象在本地创建你的数据的索引。这就好比两个不同的存储空间:一个存储数据,另一个存储索引。我们使用你的密钥对这些加密对象进行即时解密,执行一些逻辑,然后将结果(也即索引)保存在本地。这些索引没有被加密,但这里我们假定只有你才能访问本地数据,也就是说,你本地计算机的访问权限没有泄露。

  • 这些索引不会同步到任何地方,只会保存在你的电脑上。例如,如果你有两台设备,每台设备都有它自己的索引存储空间。

在这里,我们有一个前提条件,就是用户的机器没有被入侵,并且是可信任的。基本上,如果设备被入侵,就会有很多攻击媒介,包括 RAM 扫描和密码键盘记录,这会使得本地加密的作用大打折扣。我们之后一定会进行额外的加密。目前,我们建议开启硬盘加密和设备密码。

技术细节

下面是一些关于加密和数据存储的技术细节:

  • Anytype 存储你创建的每个对象的历史更改记录。

  • 每个对象的更改,都有 2 个具有不同密钥的加密层。

  • 第一层用于连接对象内部的更改,例如“所有这些加密数据都属于 id 为 <abc> 的对象”。

  • 第二层用于加密实际数据。我们使用带有 CFB 模式的 AES 流加密。

  • 当你为一个对象创建一个新更改时,我们会定期将其发送到我们的备份节点(仅使用第一层密钥)。有关同步的更多信息,见 此处

  • Anytype 备份节点可以访问第一层密钥,因此它可以将对象的更改分组,并在你要恢复数据时将它们打包发送。

  • Anytype 备份节点无法访问第二层密钥,因此无法读取数据的实际更改。

最后更新于