首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么LastPass会在服务器上存储密码散列呢?

为什么LastPass会在服务器上存储密码散列呢?
EN

Security用户
提问于 2015-10-23 02:22:05
回答 2查看 1.2K关注 0票数 4

在阅读有关LastPass漏洞的文章时,我想知道为什么LastPass商店会在服务器端增加密码哈希呢?他们是否只能存储AES加密的数据,当用户获得加密数据时,他可以在客户端执行密码增强+解密,并对所有数据进行重新加密,这样LastPass所暴露的唯一信息就是AES 256位加密数据,这将是他们在出现漏洞时唯一会存储的信息。

当我写这篇文章时,我在想,也许存储的哈希是身份验证步骤的一部分,不会将AES加密的数据提供给任何人,但这是否是将哈希存储在服务器上的唯一原因呢?

假设有一种向试图访问特定加密数据的用户验证特定加密数据的替代方法,例如客户端和服务器之间的共享随机字符串,而不是从存储在服务器端的主密码派生的,那么哈希/密码增强+加密/解密是否可以在客户端完成,而不需要在服务器端存储除AES 256位以外的任何其他内容?

因为仅仅从哈希推断密码不是比用强化密码哈希加密的最终AES加密产品更容易吗?我的猜测是,AES加密的数据要花费更长的时间才能打破,这仅仅是因为计算哈希然后加密的额外步骤。因此,不管哈希算法多么复杂,这不是另一个不将增强的散列存储在服务器上的要点,因为它是主密码的函数。

EN

回答 2

Security用户

回答已采纳

发布于 2015-10-23 08:09:07

是的,您是对的--哈希值用于身份验证,以便在没有向服务提供正确的凭据的情况下,不会给出加密的数据。

另一个类似的服务,Roboform,对每个帐户都有不同的身份验证和解密密码。然而,当使用接口时,存在一个严重的缺陷--主密码被发送给Robofom,尽管他们从来没有接收过它..

有关这个答案身份验证和加密过程的详细信息,请参阅LastPass,尽管该过程是从Security播客派生的。

根据这些详细信息,我最好的猜测是,LastPass解密密钥是通过以下方法计算的:

代码语言:javascript
运行
复制
DK = PBKDF2(HMAC-SHA256, password, email, <user set>, 256)

客户端JavaScript或应用程序在LastPass服务之前提供的身份验证密钥允许您访问加密的blob:

代码语言:javascript
运行
复制
AK = PBKDF2(HMAC-SHA256, DK, password, <user set>, 256)

然而,这是存储在他们的后端哈希:

代码语言:javascript
运行
复制
Stored_AK = PBKDF2(HMAC-SHA256, AK, salt, 100000, 256)

正如您所看到的,要从明文密码获得存储在后端的散列格式,还有很多工作要做。客户端回合的数量(如<user set>所示)也可以增加,这取决于每个用户最不强大的设备的功能,然后在客户机上再次散列,最后在与存储的哈希比较之前对服务器端进行散列。这意味着如果攻击者能够访问服务器存储哈希(就像他们已经做的那样),还有很多工作要做。

票数 2
EN

Security用户

发布于 2015-10-23 07:06:05

已泄漏的散列用于验证用户。

然而,调查显示,LastPass帐户的电子邮件地址、密码提醒、每个用户盐的服务器以及身份验证散列都受到了破坏。

如果您不想将加密的数据提供给每个人,则必须进行某种身份验证。当然,可以有第二个密码,用于解密数据,当然也可以在客户端完成。但这将引发一个问题,为什么需要像LastPass这样的服务,因为加密数据的服务可以使用任何类型的在线存储。

这是用户舒适与安全权衡的典型案例。

票数 1
EN
页面原文内容由Security提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://security.stackexchange.com/questions/103483

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档