如何选择一个密码,最好的保护您,防止数据泄漏

1. 简介

如何选择最能保护您并防止数据泄露的密码。

2. 密码强度

密码强度当然是越多越好,利用现有的密码管理软件,可以快速自动生成并填写任意长度的密码。但是,密码应该有多少位是最佳的,作为经验法则,是否有合理的下限

下面是一个典型的密码生成器界面:

注意:其密码长度可设置为8-100个字符

3. 一个好的密码是您在数据泄露之前所拥有的一切

但是要了解什么是安全密码,让我们看看另一边发生了什么!

创建帐户时,您注册的服务会将密码存储在几种现有密码加密形式之一中。密码将其直接放入数据库,或使用现有算法对其进行哈希处理。

一些最常用的哈希算法包括:

存储散列数据而不是密码本身的好处是密码不在数据库中。您只需要知道哪些哈希数据是您的,而不需要知道它的具体值是多少。当您登录时,提供的密码会使用相同的算法进行哈希处理,如果结果与存储的值匹配,则证明您知道密码。在数据库泄露的情况下,密码是不可恢复的。

3.1 密码破解

密码破解是攻击者试图反转哈希函数并从哈希中恢复密码。使用好的散列算法,不可能恢复密码,但是不可能尝试各种输入来查看它们是否产生相同的结果。如果要找到这样的匹配项,则需要从哈希中恢复密码。

在这里选择一个好的算法很重要。SHA-1 专为速度而设计,速度有助于破解过程。Bcrypt、Scrypt 和 Argon2 以各种方式设计,以高成本使破解尽可能慢,特别是在专用硬件上,差异巨大。

仅出于速度考虑,牢不可破的 SHA-1 哈希密码是:0OVTrv62y2dLJahXjd4FVg81。

使用正确配置的 Argon2 散列的安全密码:Pa$w0Rd1992。

如您所见,选择正确的哈希算法可以使弱密码牢不可破。

请记住,这仅取决于您要注册的服务是如何实现的。此外,您无法知道实现在算法的哪一部分。你可以问,但他们甚至可能不会回应或说他们“认真对待安全”或类似的话。

您是否相信公司会认真对待密码安全,使用良好的哈希算法而不是糟糕的算法。查看受损数据库列表,尤其是使用的哈希值。他们中的许多人仍然使用 MD5,大多数使用 SHA-1,还有一些使用 bcrypt。有些甚至以纯文本形式存储密码。

这里有一个偏差,因为我们只知道被入侵的数据库使用了什么哈希,而且使用弱算法的公司很可能也未能保护他们的基础设施。但是看看这个列表,我相信你会发现一些你不会想到的熟悉的名字。仅仅因为一家公司看起来很大并且有良好的声誉并不意味着他们会做正确的事情。

3.2 选择密码

作为用户,以下行为会对您产生什么影响?

使用纯文本密码密码学算法 大数问题,您无能为力。如果数据库消失了,您的密码强度就无关紧要了。

使用正确配置的算法,密码的安全性并不重要,忽略像 12345 和 asdf 这样的小情况。

但在两者之间,尤其是 SHA-1,您的选择很重要。散列函数通常不适用于密码,但如果使用安全密码,则可以弥补算法的缺点。

哈希算法 asdf AJnseykp 8VjB2qwD7eN3eG4Fjkfeks 无 – – – MD5 – – ✓ SHA-1 – – ✓ Bcrypt – ✓* ✓ Scrypt – ✓* ✓ Argon2 – ✓* ✓

这取决于配置。这些哈希具有影响其强度的不同移动部分,但如果配置正确,它们可以阻止破解它们的尝试。

底线:如果您使用的是强密码,则比弱密码更能保护您免受攻击。由于您不知道密码存储的安全性,因此您无法确定对于给定服务而言什么是足够安全的。所以,假设最坏的情况,设置强密码。

3.3 一个密码是不够的

我们需要考虑是否使用密码管理器并为每个站点生成唯一的密码。在实践中,当一个站点的服务受到威胁,并且尝试使用您已知的电子邮件地址和密码对其他站点进行攻击时,多个密码将使您免受密码重用攻击。密码重用是非常常见的问题之一,同时也是一个巨大的威胁。

图片[1]-如何选择一个密码,最好的保护您,防止数据泄漏-老王博客

这可以通过为每个站点生成一个新密码来避免。一个数据库被盗,黑客知道数据库中的一切,为什么还要保护密码呢?

原因是当您在不知道数据库已被入侵的情况下继续使用该服务时。在这种情况下,黑客可以访问您未来在该网站上的所有活动。您可以稍后添加信用卡,他们仍然知道。强密码意味着他们无法登录您的凭据,也无法影响您未来的活动。

4. 如何使用熵来衡量密码强度

密码强度都与熵有关,熵是表示密码随机性的数值。由于我们处理的是大数字密码学算法 大数问题,而不是有 1,099,511,627,776(2 的 40 次方)不同的变量,最好说它有 40 位的熵。密码破解的关键是密码变体的数量,因为密码变体越多,尝试所有可能性所需的时间就越多。

对于密码管理器生成的随机字符,熵很容易计算:log2(^)。

长度是微不足道的,但不同字符的数量是多少?这取决于密码的字符类型。

字符类型示例 字符数只有小写字母 abc 26 + 大写字母 aBc 52 + 数字 aBc1 62 + 特殊字符 aB?c1 84

例如,长度为 10 的密码(包含大小写字母的随机混合)具有 log2(52^10)=57 位熵。

上面的数学表达式可以简化为使用 log2(n^m) = m * log2(n) 表达式来查看给定类的单个字符对整体强度的影响。这给出: * log2(),其中第二部分是每个字符的熵。上表,使用这个公式

字符类型示例熵/字符(位)仅小写示例 abc 字符数 4.7 + 大写 aBc 5.7 + 数字 aBc1 5.95 + 特殊字符 aB?c1 6.@ >4

要计算密码的强度,请从表中获取熵数,考虑其组成的字符类型并乘以长度。上面的示例(长度为 10 的小写和大写字母)产生 5.7 * 10 = 57 位。但是,如果将长度增加到 14,则熵会跳到 79.8 位。但是,如果将长度保持为 10,但添加数字和特殊字符,则总熵将为 64 位。

上面的表达式提供了一种计算密码熵的快速方法,但有一个警告。它仅在字符彼此独立时才有效,这仅适用于生成的密码。

密码 H8QavhV2gu 满足此条件,因此具有 57 位熵。

但是像 Pa$word11 这样更容易记住的字符,虽然具有相同的长度和更多的字符类,但熵要少得多。破解者可以尝试所有组合,只需对字典中的单词进行一些转换。

因此,任何基于字符类型的熵乘以长度的计算仅对生成的密码有效。

5. 熵指南

密码的熵越大越难破解,但是多少熵才足够呢?一般的看法是,大约 16 个字符对于密码应该足够了,并且密码的输出在 95 – 102 位之间,具体取决于它是否包含特殊字符。但是门槛是多少?80 位?60位?或者甚至使用 102 位太低?

还有另一种算法在速度上与坏密码散列算法相似,但研究得更深入:AES 加密。

它用于加密各个政府和军事机构的所有机密,因此,它的强度是值得考虑的。而且它的速度很快,因此如果无法破解具有一定熵的密钥,那么 AES 非常适合具有错误(但未损坏)哈希的密码。

NIST(美国国家标准与技术研究院)是一个实体,它定义了在可预见的未来多少长度是合适的。2019-2030 及以后的 AES-128,他们的建议是 128 位。

另一个专门针对关键密码长度的建议是使用至少 112 位的熵。

对于联邦政府而言,此时应用加密保护(例如加密或签名数据)需要至少 112 位的安全强度。

要使用大小写字母和数字获得 128 位的熵,需要长度为 22 的熵(5.95 * 22 = 131 位)。#

6. 其他注意事项6.1 为什么没有特殊字符?

我倾向于不使用特殊字符,因为它们打破了单词边界。这意味着选择密码需要点击 3 次而不是 2 次,如果我不小心将部分密码粘贴到输入字段中,则会出现错误。

只有字符和数字,双击总是选择整个密码。

6.2 如果有最大长度怎么办?

一些网站有最大长度的密码,以防止您使用 22 个字符。在某些情况下,它会达到极限长度,例如需要 5 位数字。

在这种情况下,使用最大可用长度,您几乎无能为力。

还有一些关于服务如何处理密码和限制密码长度的建议,显然是针对他们的。NIST 说:至少 64 个字符长以支持使用密码短语。鼓励用户使用他们喜欢的任何字符(包括空格)尽可能长时间地存储他们记住的秘密以帮助记忆。

请记住,该服务存储密码的方式从糟糕到超级,他们不会告诉你他们是如何做到的?较短的密码长度给人的印象是它们的强度很差。

综上所述

即使您不重复使用它们,也需要强密码。强度是用熵来衡量的,你应该瞄准 128 位。小写+大写+长度为22的数字密码的组合可以检查128位。此密码将在数据泄露时保护您。

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论