LastPass团队在其常见问题中声明如下:
您是否使用咸散列登录?是的,我们首先在客户端使用用户名对您的LastPass密码执行“salt”操作(在您的计算机上,LastPass永远不会获得您的密码),然后服务器端从数据库中提取第二个256位随机十六进制哈希盐分,使用它生成一个与存储在数据库中的哈希值相比较的盐度哈希。
有没有人知道“我们首先在客户端使用您的用户名进行LastPass密码的'salt‘”部分是字面意思呢?
根据这个答案的说法,情况似乎是这样的:
根据这些详细信息,我最好的猜测是,LastPass解密密钥是通过以下方法计算的:
DK = PBKDF2(HMAC-SHA256, password, email, <user set>, 256)由于这似乎是伪代码,我只能猜测PBKDF2的第三个参数是salt。
我意识到,正确的做法是通过PBKDF2运行电子邮件,使其更适合作为盐。这当然是猫追逐自己尾巴的地方,这可能迫使它们首先使用电子邮件作为盐。
发布于 2018-01-16 16:37:47
我会将“我们首先在客户端使用您的用户名执行LastPass密码的盐分”解释为:我们在客户端执行一个PBKDF2函数,其中包括您的密码和用户名(电子邮件):
client_encryption_key = PBKDF2(HMAC-SHA256, password, salt_email, 5000, 256) // 5000 rounds, 256 bits
auth_key = sha256(client_encryption_key) // this is what is sent to the server for authentication
server_key = PBKDF2(HMAC-SHA256, auth_key, salt_random, 100000, 256) // this is what is stored in the auth db请注意,客户端密钥也用于加密/解密您的数据。
另外,回答NH关于电子邮件的评论,因为它可能不合适:盐通常不被认为是秘密的。它们的目的是确保两个相同密码的结果密钥是不同的。
https://security.stackexchange.com/questions/150503
复制相似问题