如何在注册时保护密码?

时间:2012-10-25 08:23:54

标签: security password-encryption

我已阅读以下文章http://lifehacker.com/5919918/how-your-passwords-are-stored-on-the-internet-and-when-your-password-strength-doesnt-matter

网站可以通过多种方式存储您的密码,有些方法比其他网站更安全。以下是最常用方法的快速概述,以及它们对数据安全性的意义。

方法一:纯文本密码 工作原理:网站存储密码的最简单方式是纯文本。这意味着在他们的服务器上的某个地方,存在一个数据库,其中包含您的用户名和密码,以人类可读的形式(即,如果您的密码正在测试123,则它作为testing123存储在数据库中)。在站点上输入凭据时,它会根据数据库检查它们是否匹配。从安全角度来看,这是最糟糕的方法,而且大多数信誉良好的网站都不以明文形式存储密码。如果有人破解了这个数据库,那么每个人的密码都会立即被泄密。

我的强密码是否重要?没门。无论您的密码有多长或多长,如果它以纯文本形式存储并且网站被黑客入侵,您的密码便可供任何人轻松访问,无需任何工作。在隐藏您的密码,比如您的朋友或其他可以轻易猜到的密码方面,这仍然很重要,但如果该网站遭到入侵,它将无法发挥作用。

方法二:基本密码加密 工作原理:为了比普通文本提供更多的密码保护,大多数网站会在将密码存储在服务器上之前加密密码。对于那些不了解的人,加密使用特殊密钥将密码转​​换为随机文本字符串。如果黑客要抓住这个随机的文本字符串,他们将无法登录您的帐户,除非他们还拥有密钥,然后他们可以使用密钥对其进行解密。

问题是,密钥通常存储在与密码相同的服务器上,因此如果服务器被黑客入侵,黑客就不必做很多工作来解密所有密码,这意味着方法仍然非常不安全。

我的强密码是否重要?不可以。由于使用密钥可以很容易地解密密码数据库,因此您的强密码也不会在这里产生影响。再说一遍:这就是网站被黑客入侵;如果你有爱管闲事的朋友或家人通过你的东西,强密码可以帮助他们避免猜测。

方法三:哈希密码 工作原理:Hashed类似于加密,因为它将您的密码转换为一长串字母和数字以使其隐藏。但是,与加密不同,散列是单向的:如果您有散列,则无法向后运行算法以获取原始密码。这意味着黑客必须获得哈希值,然后尝试使用多种不同的密码组合来查看哪些有效。

然而,这种方法存在缺点。虽然黑客无法将哈希解码回原始密码,但他们可以尝试许多不同的密码,直到一个匹配他们拥有的哈希。计算机可以非常快速地执行此操作,并且借助于称为彩虹表的东西 - 这实际上是数万亿个不同哈希及其匹配密码的列表 - 他们可以查找哈希以查看它是否已被发现。尝试在Google中键入e38ad214943daad1d64c102faec29de4afe9da3d。您很快就会发现它是"密码1"的SHA-1哈希值。有关彩虹表如何工作的更多信息,请查看编辑大师杰夫阿特伍德关于此主题的文章。

我的强密码是否重要?在这种情况下,是的。彩虹表由已经针对哈希进行测试的密码组成,这意味着真正弱的密码将很快破解。然而,他们最大的弱点并不是复杂,而是长度。你最好使用一个很长的密码(比如XKCD'正确的马电池主食"),而不是一个简短的复杂密码(比如kj $ fsDl#)。

方法四:带有Dash of Salt的哈希密码 工作原理:Salting a hash意味着在对其进行哈希处理之前,将一个随机字符串(称为" salt")添加到密码的开头或结尾。它为每个密码使用不同的盐,即使盐存储在相同的服务器上,也会很难在彩虹表中找到这些盐渍哈希,因为每个密码都很长,复杂且独特。 LinkedIn因不使用咸味哈希而闻名,在他们最近的黑客攻击之后对它们进行了大量审查 - 如果他们使用盐,他们的用户会更安全。

通过阅读上述文章,我有以下问题

1 。即使我没有密码,我仍然可以拦截消息摘要......我甚至不需要密码......我只会发动回复攻击( ie。拦截后发送消息摘要本身进行身份验证!!)

上述问题的解决方案可以通过以下方式解决 a.server为用户生成一个随机字符串(通常称为挑战)并要求他用他的密码加密它..... b.user输入密码,创建密码的消息摘要,随机字符串由此消息摘要加密 c。这个加密的字符串被发送到服务器。 d.server还用用户的消息摘要加密随机字符串,用从用户收到的加密字符串进行检查,如果两者都匹配,则他是有效用户..!

2 。我的问题是如果黑客能够访问数据库,即使他没有访问数据库,他也可以访问messagedigests,他仍然可以在拦截时获取消息摘要用户首次注册到DB时的通信链接......如何防止这种情况?

2 个答案:

答案 0 :(得分:1)

  

即使我没有密码,我仍然可以拦截消息摘要......我甚至不需要密码...我只会启动回复攻击(即发送消息摘要本身进行身份验证后)拦截它!!)

这不应该是可能的。

客户端应将真实密码发送到服务器。它应该使用SSL加密。

服务器应该对密码进行哈希处理,并将其与存储的哈希密码进行比较。

  

解决上述问题...

这或多或少是SSL的一部分。

  

我的问题是如果黑客能够访问数据库,他将可以访问messagedigests

这是相对无关紧要的问题。密码应存储为具有不同盐的哈希值。原始密码受到保护。

  

即使他没有访问数据库,当用户首次注册到DB时,他仍然可以在接受通信链接的同时获取消息摘要

仅当SSL被破坏时。

答案 1 :(得分:0)

用户注册始终通过SSL隧道完成,因此通常在遵循最佳实践时,您永远不必担心中间类型攻击中的人。