密码|熵与破解

在浏览互联网的过程中,几乎我们经常使用的每个网站都会要求我们提供登录凭据。最重要的登录凭证之一是我们的密码,或者我应该说密码,因为我们对不同的帐户有不同的密码(如果您刚刚意识到您没有不同的密码,请继续并更改它们)。本文将讨论安全密码、不安全密码、如何选择好的密码以及如何破解密码。本文分为三个部分。让我们继续讨论第一个问题。

null

密码是如何存储的?

每当你在网站上创建帐户并输入密码时,你输入的密码不会保存在数据库中。而是通过一个 伪随机函数(散列函数) 这会产生一个散列,通常看起来像纯粹的胡言乱语,但实际上在安全性方面非常有用。而不是明文密码,它的散列存储在数据库中,因此,如果该网站遭到黑客攻击,密码在网上泄露,你得到的只是胡言乱语,而不是用户在创建其帐户时输入的真正明文密码。例如,我们的密码是“Geeksforgeks”,我们通过一个SHA256哈希函数运行它,结果如下所示

plain-text password: geeksforgeeks
Result: f8d59362da74ffe833332dc20508f12de6da6a9298c98b3b42873e7298fced78

每当用户登录网站时,他们在客户端输入相同的纯文本密码,然后通过相同的哈希函数运行,如果该哈希与数据库中存储的哈希匹配,则用户有权使用该帐户。 如果不同的用户选择了相同的密码,那么由于两个哈希相同,就会出现称为冲突的情况。在这种情况下,会向原始密码中添加额外的一位纯文本,然后通过相同的哈希函数运行,生成唯一的哈希。最后,散列和额外的纯文本都存储到数据库中,以便将来识别用户。 这种存储密码的方法可以通过对不同的哈希函数进行迭代来提高安全性。

它们能被破解吗?

尽管采取了所有预防措施,并遵循信息安全方面的最佳做法,但事情仍可能出错。如果你是《机器人先生》(Mr.Robot)的粉丝,就像我一样,那么你一定很熟悉这个残酷的事实:任何东西都可以被黑客入侵。比方说,一个网站被泄露了,它所有用户的密码都以文本文件的形式泄露到了你可以访问的网站上,但由于这些密码是以散列形式存储的,所以我们在文本文件中得到的都是胡言乱语。现在有两种方法来破解这些散列。

  1. 暴力攻击: 你们大多数人必须熟悉这种类型的攻击,因为它是最常见的。从它的名字可以明显看出,它会尝试所有纯文本密码的组合,并通过哈希函数运行它们,并将获得的乱码与文本文件中包含的不同哈希匹配。 你一定认为这将花费一生的时间通过哈希函数运行所有排列,并将它们与文本文件匹配,但是,如果我告诉你,黑客可以通过他的计算机访问高性能服务器,服务器使用4个最新的NVIDIA图形卡,使其能够每秒运行400亿次哈希。现在,这只不过是几秒钟的事情。 现在使用一个名为CUDA HashCat的软件,我们可以开始破解了。假设我们有一个名为test的文件。hash包含所有的hash,我们希望获得所有7个字符的小写字母密码,我们运行以下命令。
    ./hashcat -a 3 test.hash ?l?l?l?l?l?l?l

    a代表攻击,3是攻击模式,即暴力和?l代表小写字母,重复7次表示7个小写字母。在几秒钟内,所有哈希值与测试中匹配的组合。哈希将显示在屏幕上。如果我们想破解最后有6个小写字母和2个数字的密码,我们必须写这个

    ./hashcat -a 3 test.hash ?l?l?l?l?l?l?d?d

    随着字符数的增加,其速度随着组合数的增加而减慢,组合数可以计算为 字符集中的字符数为密码长度的幂次方

    First Example: 26^7
    Second Example: 26^6*10^2
    

    随着搜索基数越来越大,破解这些密码变得越来越困难,即使对于MD5或SHA1这样的简单哈希函数也是如此。在这种情况下,暴力攻击是不可行的,我们接着讨论字典攻击。

  2. 字典攻击: 我们有一个存储在文本文件中的常用密码字典,我们尝试使用这些密码,并将它们与从网站数据库中获得的哈希匹配。这比暴力更有效率。有一个名为“rock you”的密码列表,其中有数百万个这样的密码。让我们发起这样的攻击吧。
    ./hashcat -a 0 test.hash ./dictionaries/rockyou.dict

    0代表字典攻击模式,我们提供字典文件的路径。 可以通过对字典应用一组规则,然后运行哈希来定制这些攻击。这些规则只不过是人们试图让自己的密码更安全的常见变体。它可以取代 我是 具有 1的 E’s 具有 3的 .假设您的所有规则都存储在一个名为myrules的文件中。规则现在如果我们使用此文件运行攻击,它将运行一系列字典攻击,每次对整个字典应用一条规则。为此,我们需要运行以下程序

    ./hashcat -a 0 -r ./rules/myrules.rule test.hash ./dictionaries/rockyou.dict

选择强密码

流行的在线漫画xkcd试图描述人们通过漫画选择和记住密码的问题。

它讨论密码熵。到底是什么?

密码熵: 它只是密码中包含的信息量。密码的熵越大,破解所需的时间就越长。因此,如果你有一个6个字符的密码,那么熵是非常低的,它可以很容易地暴力强迫。如果你有一个带有符号的10个字符的密码,那么你就不会受到暴力攻击,但仍然可以用字典破解它。

参考上面的漫画,它谈到“correcthorsebatterystaple”是一个可能的密码选择。因为它的四个字加在一起 “非暴力的福坎贝尔” 。即使不使用特殊字符,它也是一个很好的密码,因为它的熵很高,而且很难被字典破解,但这并非不可能。我们可以对不同的英语单词组合使用字典攻击,而不是使用字符组合。 要使它真正安全,3或4个不寻常的英语单词,并在一个词中插入一个特殊字符,使它不粗鲁的电缆和几乎字典证明。但是如果你认为这一切都是一种痛苦,那么你可以使用一个好的密码管理器,只需记住一个主密码。

本文由 帕拉什尼甘酒店 .如果你喜欢GeekSforgek,并想贡献自己的力量,你也可以使用 贡献极客。组织 或者把你的文章寄到contribute@geeksforgeeks.org.看到你的文章出现在Geeksforgeks主页上,并帮助其他极客。

如果您发现任何不正确的地方,或者您想分享有关上述主题的更多信息,请写下评论。

© 版权声明
THE END
喜欢就支持一下吧
点赞14 分享