免责声明:我从未尝试过使用蜘蛛橡木,所以我只是按照他们声称的去做,他们告诉你他们做了什么以及最终结果是什么样的。
鉴于他们声称将您的数据加密存储并且永远无法访问它,我认为他们唯一可以访问的实际上是您数据的加密版本。这意味着客户端上的应用程序执行所有加密/解密操作,并且只存储结果数据(以及可能在服务器上额外加密的元数据)。
这些数据必须被某种东西加密。现在根据他们对您的回应,我假设他们有一些键层次结构。我的猜测至少是 2 个级别,但为简单起见,我们只假设一个。
这意味着数据是由一些随机生成的密钥 K 1(在您的机器上)加密的。然后这个密钥被密钥 K 2 =PBKDF(32 字节盐,密码,16384 轮)加密。通过前面的丑陋描述,我的意思是他们使用 PBKDF2(基于密码的密钥派生函数 v2.)算法(使用 SHA-2)从您的密码生成加密密钥。此密钥 K 2永远不会存储在任何地方(客户端内存除外)。当您想要访问数据时,它总是会即时生成。
然后将发送到并存储在 Spider Oak 服务器上的包将是 E K 1 (data),E K 2 (K 1 )。然后,当您想要检索数据时,您会得到加密发送给您的数据,并且发送给您的密钥也被加密。当您输入密码时,PBKDF2 用于生成 K 2用于解密 K 1,然后用于解密您的数据。
那么当您更改密码时会发生什么?那么服务器向您的客户端发送所有包 E K 2 (K 1 )$ 用于它为您的数据提供的任何 K 1 。在本地,这些由旧密码生成的密钥解密,并由新密码生成的密钥重新加密,从而得到一个新的 K' 2。
然后,当您使用不同的设备,启动您的客户端并尝试检索您的数据时,加密的数据会伴随着使用您的新密码加密的密钥。你输入密码,PBKDF2 很神奇,瞧你解密 K 1然后解密你的数据。
编辑:GAH 如何让 TeX 在我的帖子中工作?
Edit2.:重新阅读您从代表那里获得的信息,实际上似乎所有新的 K 1也都生成了。这似乎有点可疑,因为他们要么在他们的服务器上进行加密/解密(因此它不是完全零知识),要么当你更改密码并且你的客户端重新加密它时,他们将所有数据发送回给你。其中第一个似乎更可能是诚实的,因为否则客户端的开销将非常大。当然,代表也有可能并不真正知道他在说什么。我已经多次发生这种情况。