服务
关于
CloudProse博客

2015年8月4日,星期二

在我们的 最后发表,我们回顾了为什么使用强密码并使用LastPass是个好主意,尤其对于像Trek10这样的MSP而言,他们需要确保使用最佳做法安全地存储了客户数据。我们还解释了彩虹表的工作原理,讨论了攻击者如何能够从加密数据库中破解密码。在第2部分中,我们将讨论LastPass的技术设计。为了更好地了解其实施,让我们首先回顾盐析的概念,这是LastPass如何确保客户数据安全的关键方面。

什么是盐? 正如我们在第1部分中讨论的那样,LinkedIn的密码存储设计在被破坏后被发现是非常不安全的。除了不使用过时的MD5哈希之外,LinkedIn还可以通过一种简单的方法来显着提高其密码数据库的安全性-这称为Salting。一种 是生成的数据,并作为附加输入添加到加密哈希函数中。盐的目的不是要使它对攻击者隐藏,而是要更改哈希函数输入,从而使彩虹表无用。例如,LastPass利用用户的电子邮件地址作为备用地址(稍后会详细介绍)。系统将对“ [email protected]”进行哈希处理,而不是对“ 123456”进行哈希处理并将此值存储在数据库中,从而产生完全不同的哈希值:

现在,如果攻击者拥有盐和哈希值(通常在系统受到破坏的情况下就是这种情况),那么他仍然可以锁定某些用户并破解单个弱密码,但是他将无法运行650万对彩虹表进行散列(对于LinkedIn而言)以破解所有弱密码。他将需要为创建一个单独的彩虹表 用户使用与每个哈希关联的适当盐。这在计算上是昂贵的,但是对于当今可用的处理能力而言,这当然并非不可能。为了提高安全性,可以将哈希迭代次数增加到这样的程度:对于攻击者而言,预先计算将破解所有弱密码的彩虹表在计算上变得不可行。

在下一节中,我们将讨论LastPass如何保持其密码的安全性,以便即使发生违规(确实如此),使用强密码的用户也不必担心。 LastPass为密码存储设计设置了标准,他们将其设置得很高!

LastPass实施:黄金标准 使用LastPass的实施,他们将无权访问您的加密密码保险库或主密码。两者都先经过哈希处理/加密,然后再存储在它们的服务器上。为了了解这种复杂的设计,让我们看看为验证用户身份和解密密码库而采取的每个步骤:

  • 安装LastPass浏览器插件后,用户输入她的电子邮件地址和主密码以检索其密码库。 LastPass接收电子邮件地址(一个盐),将其更改为所有小写字母,将其密码附加到其上,然后使用PBKDF2-SHA-256对其进行哈希处理(这是一种非常安全的散列方式,涉及许多额外的添加盐分,请牢记! )。默认情况下,此过程在用户计算机上本地进行5,000次。*
  • PBKDF2-SHA256算法生成一个AES-256位对称密钥(在步骤4中讨论),在该密钥上执行最后一轮PBKDF2哈希处理。然后, 最后,则此值通过SSL发送到服务器(还是应该说TLS?)以验证用户身份。
  • 通过添加另一种盐和另一种盐在服务器上处理来自最后一轮哈希处理的结果值 100,000 PBKDF2-SHA256哈希运算。然后将该值与数据库中存储的值进行比较(数据库是在用户首次设置主密码时通过这些相同的计算得出的);用户现在已通过身份验证!如果用户是从新的浏览器/设备登录,则(如果已启用)将提示她输入MFA代码。完全通过身份验证后,加密的密码库将发送到客户端计算机以进行本地解密。
  • 在步骤2中生成的AES-256位密钥被保存在浏览器中,并在步骤3结束时用于解密发送到客户端计算机的密码库。用户现在可以查看所有保存的密码。每次将新密码保存到Vault时,都会使用此AES-256密钥对其进行加密,然后将其发送到LastPass服务器上的数据库。请记住,此密钥仅通过上述哈希过程(由主密码和电子邮件地址salt派生)在用户自己的浏览器中生成。 LastPass永远无法访问密钥!

*您实际上可以将哈希迭代次数更改为任意数目。这提高了安全性,因为它与攻击者尝试破解密码时使用的默认5,000数字有所不同。导航到您的帐户设置,然后找到“密码迭代”。尽管这些哈希迭代仅在您登录时发生,但不要将该数字设置得过高-CPU需要花费时间和资源来完成所有这些迭代! LastPass建议将数字保持在10,000以下。

如果您想知道为什么强密码如此重要(以及为什么从不重复使用),或者对安装LastPass有其他想法,我希望这篇文章能引导您朝着正确的方向发展!如果您对此帖子或有关保护您的云环境有任何疑问,请给我们发送电子邮件,地址为 [email protected].

作者
乔什·冯·绍姆堡精选
乔什·冯·绍姆堡