服务
关于
CloudProse博客

2015年7月28日,星期二

鉴于今年夏天在LastPass上的安全漏洞,我们认为讨论密码保护和通用密码存储最佳做法是一个好主意。 AWS和云架构推动了许多有价值的服务的成功,而这些服务通常需要额外的凭证。像LastPass这样的密码管理器可以帮助保持所有这些凭据的牢固和安全。在这篇文章的第2部分中,我们还将深入探讨LastPass实际工作方式的技术细节。您的密码在他们的服务器上真的安全吗?但首先,让我们回顾一下有关密码保护的一般最佳做法。

保护密码 2013年,Verizon发布了一份令人震惊的报告,指出76%的网络入侵都涉及利用弱密码或被盗密码。在深入探讨密码生成的最佳做法之前,应注意,使用多因素身份验证(MFA)将极大地阻止密码攻击。如果您不在AWS账户上使用MFA,请下载众多移动应用程序之一,然后 现在配置!您的个人帐户也是如此。这是一种非常简单的方法,可以显着提高在线身份的安全性。我们喜欢MFA应用程序Authy,尽管考虑到它是一种云存储服务,其安全性稍差一些。 (另一方面,每当您切换到新手机时,都必须为您的每个帐户重新配置Google Authenticator。始终在权衡安全性与便利性之间进行权衡!)在Trek10,我们还实施了“强制- mfa”分组到我们的客户环境中,这实际上会拒绝所有给定用户权限,直到启用MFA。

安全专家Bruce Schneier写了一篇很棒的文章 博客文章 通过解释密码攻击实际上是如何发生的,介绍如何生成强密码。他链接到2008年有关“施奈尔方案”的帖子,以创建密码:

我的建议是听一句话并将其变成密码。像“这只小猪进入市场”之类的东西可能会变成“ tlpWENT2m”。该9个字符的密码不会出现在任何人的字典中。当然,不要用它了,因为我已经写过了。选择自己的句子-个人化的句子。

通常,最好的做法是使密码至少包含12个字符,最好为16个字符,并至少包含一个字母,数字和特殊字符。遵循Bruce Schneier的建议,您将获得一个安全可靠的密码!

人们在密码安全性方面犯的最大错误之一是在帐户之间使用相同的密码。如果这些数据库中的任何一个遭到破坏,则您的每个帐户现在都可能遭到破坏(取决于数据库的安全控制)。例如,在2012年,LinkedIn的系统 被破坏了 从数据库中盗取了近650万份凭据,并将其在线发布。使许多安全专家感到惊讶的是,LinkedIn的安全控制功能非常弱,这使得黑客将加扰的哈希值转换为纯文本密码变得微不足道了(稍后会详细介绍)。现在您的LinkedIn电子邮件地址和密码已公开,希望您不要在银行帐户中使用同一组凭据!但是,鉴于我们管理的在线帐户数量不断增加,几乎不可能为每项服务记住一个新密码。一种技术是记住一个“主密码”,并根据服务对其稍作更改。例如,您的Google密码可能是“ strongPassword @ goog”,而您的亚马逊密码是“ strongPassword @ amaz”。更好的是,我们更喜欢使用密码管理器服务,例如 最后通行证.

最后通行证用于密码管理 诸如LastPass之类的密码管理器允许创建一个主密码,以访问存储每个帐户唯一且强密码的保险库。 最后通行证还非常适合Trek10等托管服务提供商安全地管理不同的SSH密钥,客户密码等。

最后通行证解决了必须记住那么多独特的强密码的问题,但请记住-现在,这意味着您的每个密码都仅与访问LastPass帐户一样安全。确保创建一个非常强的主密码并立即启用MFA。但是LastPass的实施有多安全?他们可以看到您的密码吗?如果您已经使用LastPass,则可能已经担心 上个月的违规。 最后通行证首席执行官Joe Siegrist在他的博客文章中指出:

我们相信我们的加密措施足以保护绝大多数用户。除了在客户端执行的回合之外,LastPass还通过随机加盐和100,000轮服务器端PBKDF2-SHA256来增强身份验证哈希。这种额外的增强使其难以以任何显着的速度攻击被盗的哈希。

难道这仅仅是为了使全世界绝大多数人都不知道他在说什么的销售谈话?一点也不!虽然在违规后更改密码始终是一个好主意,但您确实不必担心LastPass主密码(假设您使用的密码非常安全;如果没有,则应该立即更改它!)。要了解原因,让我们退后一步,讨论密码存储的工作方式。然后,您将了解为什么LastPass具有任何提供程序中最安全的实现之一。

密码存储和加密哈希 还记得LinkedIn违规吗?这是密码存储实施不佳的一个很好的例子。密码通过身份验证后,将通过SSL安全传输,并与用户名(很多时候,用户的电子邮件地址)和数据库中存储的内容进行比较。将密码以纯文本格式存储在数据库中被认为是非常差的做法(例如 雅虎发现 在LinkedIn遭到攻击后不久),这就是为什么系统应使用加密哈希函数将纯文本密码更改为一些随机字符串的原因。

加密哈希函数是一种单向哈希,它将任何字符串转换为随机的固定长度。使此哈希函数对安全性有价值的原因在于,仅从哈希值重新创建输入数据在数学上被认为是不可行的。为了进一步说明,我们来看一个例子。让我们回到2012年,假设您刚刚使用密码“ 123456”创建了自己的LinkedIn帐户(您永远不会这样做,因为您始终会创建强密码!)。提交您的表格后,LinkedIn的系统会使用 MD5哈希 并将此值(e10adc3949ba59abbe56e057f20f883e)存储在其数据库中。请记住,MD5只是众多哈希值之一(它恰好是过时且不安全的;因此,为什么我们在LinkedIn上选择它!SHA256可能是最受欢迎的,并且至少在今天被认为是安全的)。

现在,如果LinkedIn的数据库被破坏,则攻击者仅具有哈希值,而没有纯文本密码。她无法使用哈希值访问您的帐户,但是她可以尝试通过遍历每个可能的密码并对哈希进行哈希,然后查看哈希是否匹配,来找出您的密码。例如:

攻击者无需使用计算资源来遍历每个可能的密码并对其进行哈希处理,而只需使用一个 彩虹桌 从数据库哈希中破解简单密码。

Rainbow表是用于破解密码哈希的预计算表。该表将使用所有可以想象的密码(从最流行的密码开始)并计算适当的哈希(在我们的示例中为MD5)。攻击者可以使用此表(每个散列可在线获取)与从受攻击数据库中散发出的散列进行比较,以破解纯文本密码。这避免了攻击者不得不浪费时间和计算资源来哈希每个可以想象的流行密码,并将其与她拥有的数百万个密码哈希进行比较。甚至还有类似的网站 crackstation.net 使用后端的Rainbow表将单个哈希转换回给您的密码。这是一个非常小的彩虹表的示例,其中列出了2014年使用的前10个最常用的密码。我敢肯定,LinkedIn网络犯罪分子在其窃取的数据中看到了许多此类哈希!

希望您现在能清楚明白为什么使用强密码如此重要!在我们的下一篇安全文章中,我们将回顾LinkedIn如何通过以下方式使他们的系统更安全: 。最后,我们将回顾LastPass密码存储的非常安全的实施方式。

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