服务器上用于数据的解密密钥是否与本地使用 Lastpass 的解密密钥相同?

信息安全 加密 密码管理 云计算 最后一次
2021-08-22 03:39:58

Lastpass 将加密的密码数据库存储在服务器上。它会为任何询问的人提供数据库吗?如果不是,那么使用什么身份验证(即密码)?我在具有相同主密码的多台设备上使用 Lastpass,并且没有配置任何其他密码。如果在检索一个人的密码数据库时使用主密码对 Lastpass 服务器进行身份验证,那肯定会很愚蠢。

Lastpass 有什么特别之处吗,因为大多数服务器确实以加密形式存储某些东西时,他们知道如何解密它,例如法院命令可以迫使他们这样做?

2个回答

服务器上用于数据的解密密钥是否与本地使用 Lastpass 的解密密钥相同?

是的,服务器上的数据与本地数据使用相同的解密密钥。虽然如果您使用的是Yubikey,那么您也可以将本地密码数据库设置为使用公共标识符进行加密

它会为任何询问的人提供数据库吗?

不是任何人。LastPass 将遵守法律,因此如果相关执法机构要求获得正确授权的数据,LastPass 将为他们提供加密数据。

如果不是,那么使用什么身份验证(即密码)?

您的密码永远不会发送给 LastPass。根据Security Now 播客

当你登录时,当你给你的系统你的 LastPass 用户名和密码时,它做的第一件事就是通过这个 SHA 运行它——它把电子邮件地址小写,删除空格,添加密码,然后它做这个哈希到它,把它变成一个 256 位的 blob

强制减员链接

这是用于在将密码数据库发送到 LastPass 之前加密密码数据库以及在从 LastPass 服务器检索密码数据库时解密密码数据库的对称密钥。

因此,使用的密钥永远不会离开您的系统。

关于认证:

他们获取该密钥,即加密密钥,然后将您的密码添加到其中,也就是说,他们将您的密码连接到您的加密密钥,然后对其进行哈希处理。因此,他们使用您的密码对您的加密密钥执行另一种单向功能,他们不知道,因为他们从未得到它。但是他们得到了另一个blob

所以这第二个 blob,这个散列的第二个输出,就是你的唯一 ID。也就是说,获得它的唯一方法是,如果您获取您的用户名和密码,对其进行哈希处理,然后将密码添加到该密码并再次对其进行哈希处理。所以它绝对取决于这两条信息。那么您的用户名会转到 LastPass 以识别您的身份。而且因为其中包含您的密码两次散列到其中,所以没有您的密码的任何人,即使他们有您的电子邮件地址,也无法生成该 blob。所以你必须让你的电子邮件地址和你的密码通过这个哈希两次才能得到那个 blob。

但是请注意,您的加密密钥是第一个副产品,因为它是第一个散列的输出,它进入第二个散列但在散列过程中丢失,这要归功于它与您的密码混合。所以 LastPass 的人永远不会得到你的加密密钥。他们会获得一个不同的唯一令牌,用于向他们识别您的身份,以便您能够安全地登录到他们的设施。这些人太偏执了,他们甚至没有把它保存在他们的服务器上。他们甚至不保存那个特殊的登录 blob,即第二个散列过程的输出。

相反,他们在您创建帐户时提出,他们使用总部的随机数生成器创建一个唯一的 256 位令牌,并将其保存在您的帐户中。每当您登录时,他们就会获取您发送给他们的 256 blob,这是这两个散列过程的结果。他们将其添加到这个唯一的 256k 随机数中,并对其进行哈希处理。这就是他们与您帐户中存储的内容的比较。也就是说,他们从不存储该登录令牌。他们使用他们为您创建的唯一 256 位值存储该登录令牌的散列结果。所以他们动态地查看它是否相同,但他们从不保存您的登录令牌。他们只是——他们不想要它。他们不需要它。因此,他们能够在您需要进行身份验证时执行动态检查,

因此,总结一下播客,您的加密密钥是:

DK = sha256("foo@example.com" + password)

(请注意,LastPass声明他们使用 PBKDF2而不是 SHA-256)。

您的有效身份验证密钥是:

key = sha256(DK + password)

并且他们仅以带有 256 位盐(“随机数”)的盐渍散列形式将其存储在他们的系统中。

stored_value = sha256(key + salt)

(假设它再次是 sha256。这个答案表明这是 PBKDF2 over HMAC-SHA256 100,000 轮。)

他们知道如何解密它,例如法院命令可以迫使他们这样做吗?

由于他们没有 DK,他们无法解密您的数据。但是,请记住,许多国家/地区都有密钥披露法,可能会迫使您交出 LastPass 密码。

Lastpass 仅在本地加密和解密您的数据,可能在浏览器中使用 Javascript。Lastpass 服务器不会发送您的主密码。好吧,它不应该,直到现在我相信他们不会这样做。

它将加密的数据库发送到其服务器。当您在另一台计算机上登录时,您输入您的电子邮件地址和密码。然后 Lastpass 下载你的数据库,在本地解密,然后就可以了。

现在有一件事我不能告诉你。当有人输入您的电子邮件地址和错误密码时,您的数据库会下载到该计算机吗?由于密码没有上传到 Lastpass,所以在本地解密数据库之前,他们无法确定不是你。我的猜测是,他们会根据您的电子邮件地址和密码向他们的服务器发送某种(加密的)哈希值,从而无法在合理的时间内从中提取您的密码。

如果简单地输入电子邮件地址就足以下载数据库,那么就有可能发生本地暴力攻击。