SpiderOak 真的是“零知识”吗?

信息安全 加密 密码 审计 云计算
2021-08-26 23:42:41

我最近更改了计算机 A 上的 SpiderOak 密码。因为我在计算机 B 上也安装了 SpiderOak,我想我必须更新它的密码,以便应用程序可以连接到服务器。

当我发现密码自动更新时,我感到非常惊讶。

所以我向 SpiderOak 发送了一个问题。以下是他们的回复:

我必须指出,如果您更改密码,这些更新将在您的所有机器上检测到,因为 SpiderOak 会加密您的密码,然后将加密密码发送到服务器,然后分发到每台设备。每个设备都能够解密密码并更新到新的更改。

通过更改密码,您创建了一组新的加密密钥。所有密钥都使用 256 位 AES 加密,使用通过密钥派生/加强算法 PBKDF2(使用 sha256)从您的密码创建的密钥,最少 16384 轮和 32 字节的随机数据(“盐”)。这种方法可以防止针对密钥的暴力破解和预计算或数据库攻击。

我真的不明白。设备如何能够解密新创建的密码?

3个回答

免责声明:我从未尝试过使用蜘蛛橡木,所以我只是按照他们声称的去做,他们告诉你他们做了什么以及最终结果是什么样的。

鉴于他们声称将您的数据加密存储并且永远无法访问它,我认为他们唯一可以访问的实际上是您数据的加密版本。这意味着客户端上的应用程序执行所有加密/解密操作,并且只存储结果数据(以及可能在服务器上额外加密的元数据)。

这些数据必须被某种东西加密。现在根据他们对您的回应,我假设他们有一些键层次结构。我的猜测至少是 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也都生成了。这似乎有点可疑,因为他们要么在他们的服务器上进行加密/解密(因此它不是完全零知识),要么当你更改密码并且你的客户端重新加密它时,他们将所有数据发送回给你。其中第一个似乎更可能是诚实的,因为否则客户端的开销将非常大。当然,代表也有可能并不真正知道他在说什么。我已经多次发生这种情况。

好吧,他们可以通过旧密码或密码更改之前机器之间交换的某些密钥来加密新密码。这是他们可以做到的方式。

但是,我没有源代码,也不确定。

DRF 可能是正确的,因为密码是用您的私钥在本地加密的,SpiderOak 本身无法访问。

但是对于标题中更一般的问题,我不会说。

重复数据删除是一种信息韭菜。 https://spideroak.com/faq/what-is-deduplication

想想这如何工作。它们要么存储未加密数据的散列,要么对两个文件使用相同的 AES 加密密钥和盐。两者都不理想。

他们位于美国,因此受当地数据保护法的约束 - 或缺乏。

共享文件以解密的方式存储在他们的服务器上,这对那些可能不以为然的人来说是一个陷阱。 https://spideroak.com/faq/do-sharerooms-violate-zero-knowledge 我们希望共享文件需要在本地下载、解密并以明文形式重新上传,而不是在服务器上解密。

他们具有设备注册功能,可让您的计算机始终保持登录状态。如果您丢失了设备,则必须从另一台计算机手动注销该设备。这迫使用户始终记住要注销。 https://spideroak.com/manual/security--access

当您关闭您的帐户时,他们最终会删除您的文件,这意味着他们知道哪些文件属于您,这也是一种信息韭菜。

这不是 SpiderOak 的错误,并且可能对所有具有类似“功能”的提供商都很常见。对我来说,功能通常意味着增加风险,特别是如果它们在事后得到加密的支持。