为什么在考虑密码强度时完全使用熵?

信息安全 密码
2021-09-07 19:30:38

我不明白我阅读的密码与密码短语分析。让我解释。

这是一个密码短语。它有 5 个仅使用小写字母的单词(为此我忽略了随机性):friend house jump touch kiss

当我输入该密码时,它看起来像这样:••••••••••••••••••••••••••••那是28个字符。这些分析(我的大部分信息来自 EFF 文章)将条目视为单词,因此在 7,776 个长单词表中有 5 个选项。黑客知道我正在使用该列表。但这些话与它有什么关系呢?黑客能说出这些空间在哪里吗?如果可以,为什么要使用它们?人们可以很容易地记住一个没有空格的短语。空格算不算字符?(我以为他们做到了)。你为什么要用这些词来计算熵?无论是单词还是随机密码中的分组字符,它有什么区别?

我认为密码是这样工作的:

number of possibilities = n^x
where: 
n = the number of character possibilities 
x = the number of characters

在那种情况下,Tr0ub4dor&3将是(我认为这是 95 种键盘可能性左右) 95^11

我之前写的密码短语可能是27^28可能的组合,当然,组合要大得多。我想,它们是词的事实是无关紧要的。用词会是7776^5这比95^11或的可能性要少得多27^28不是吗?

EFF现在推荐6个字,我个人的密码,我想,是有27^40可能的。这是很多猜测。

为什么要为“熵”而烦恼?真的不只是大量的猜测吗?我错过了什么?

4个回答

你看的有点不对。概率可能很棘手,因此理解它的最佳方法是简化。与其查看约 8000 个单词列表,不如查看以下完全由 10 个字母单词组成的单词列表:

california
everything
aboveboard
washington
basketball

我的清单上正好有 5 个单词,每个单词 10 个字符。我通过从该列表中随机选择 1 个单词来设置密码:

everything

考虑一个知道我从这个列表中选择了一个密码的攻击者。因此,猜测我的密码的最大尝试次数是多少?答案很简单:5

当然,有 26 个小写字母,我的密码有 10 个字符,所以如果攻击者不知道更好,只是试图猜测随机的小写字母组合,他们将有26^10密码可以尝试(这比 5 )。不过没关系,因为我选择了一个单词,所以知道我的单词列表的人最多可以猜我的密码 5 次尝试。

之所以出现这种情况,是因为我没有通过随机选择 10 个小写字母来选择我的密码。如果我选择了 10 个随机字母,那么可能的密码数量26^10(而且我的密码会更难记住)。相反,我通过从 5 种可能性的列表中随机选择一个词来选择我的密码。因此,可能的密码数量仅为5^1 = 5. 如果我选择其中两个密码并将它们粘在一起,那么我可能拥有的密码数量将是5^2 = 25. 单词有多长并不重要,因为我不是在选择字母——我是在选择单词。

您可能对以下事实感到困惑:有时您使用考虑所有可能的字符来计算熵,有时您考虑单词,有时您甚至考虑其他不同的规则。

熵只是攻击者无法提前知道的“随机性”或“噪声”的量,前提是该熵的来源实际上是一个好的来源。如果你需要一个从 1 到 6 的随机数,骰子是一个很好的熵源,但如果你使用不公平的骰子,那么它就不能很好地工作。

但是攻击者是否知道您实际上是如何生成密码的?他们是否知道您是否选择了随机字符,是否包含符号,是否使用单词列表,或者您使用的是哪种单词列表(以及使用哪种语言)?他们可能知道所有这些信息,也可能不知道。但是在信息安全中,依赖方法的保密性(作为Kerckhoffs 原则的扩展)被认为是不好的做法。因此,您需要假设攻击者实际上知道您是如何生成密码的。然后你剩下的就是熵。

因此,如果您选择了随机字符,您将计算熵为 C^L(C = 可能的字符数,L = 密码长度)。如果您选择了随机词,您将使用 W^N(W = 列表中可能的词数,N = 选择的词数)。如果你选择了像 Tr0ub4dor&3 这样的密码,熵可能比你想象的要小(参见这个著名的xkcd)。

附带说明一下,不幸的是,熵并不足以保证密码的安全。例如,如果您完全随机生成密码,那么您最终有可能(但不太可能)生成 12345678。该密码将非常不安全,无论它是否实际上是随机生成的并且您最终会得到那个荒谬的字符串,因为运气不好。因此,仅从技术上讲熵不足以保证您拥有安全的密码,但您还需要检查它不包含任何明显的模式,或者它不包含在任何已知的密码列表中。

真实世界的密码强度与原始的、每个字符的香农熵(与信息随机性有关)几乎没有关系。这里的见解是人们从比单个字符大得多的信息“块”组成密码

每个字符的熵仅在您执行以下两项操作之一时才重要:

  1. 评估随机生成的密码的最坏情况攻击时间您知道长度和字符组成是多少;或者

  2. 评估人为生成的密码最坏情况攻击时间,您不确定它们是如何生成的,并且您知道长度和字符组成是什么。

原始熵涵盖的内容:

  1. 评估人类生成的密码对专家攻击真实抵抗能力,这些攻击由泄露的密码列表、人类密码选择心理和整体密码破解策略提供信息——这些策略在回到暴力破解之前很久就利用了许多非随机模式。

由于大多数密码是人为生成的,它们将比暴力攻击更快地被破解,从而使基于熵的密码强度评估毫无用处。

相反,密码破解者确实会为他们的攻击谈论“密钥空间”——基于密码中有多少信息的有效信息熵。如果某人只需要记住四件事就可以从记忆中重建他们的密码——例如,这是他们孩子的名字和出生日期,名字大写,出生日期为 MMDDYYYY——那么攻击只需要收集这四件事的列表即可破解大多数此类密码。(对于上过心理学课程的人来说,这是我们在记忆事物时所做的“分块”。)

换句话说,在较高的层次上,如果您的密码中只有四个“块”信息,那么您的密码的有效信息熵仅基于四个离散的信息片段以及每个片段可变性- 通常比原始的每个字符的熵要少得多

但是由于优化密码破解攻击的“数字游戏”是尽早、尽快地破解尽可能多的密码,通过组装这些“块”,熵的定量计算可能会很棘手。它大约是攻击必须用尽的猜测总数。

对于某些类型的密码,人类可以查看它们并准确说出密码的人在想什么,然后将密码分解回其原始组件。甚至可以使用简单的方法来自动执行此操作。但对于其他人来说,人类很难分辨出原始方法是什么——更不用说尝试将其自动化到足以自动计算底层复杂性的程度了。

而且即使可以自动化,也关乎攻击速度。而且这种速度差异很大,具体取决于用户的人口统计数据、他们对密码强度的教育程度、目标系统的复杂性要求、哈希强度、攻击类型、攻击输入以及技能和工具的攻击者。

换句话说......密码强度评估是一个不平凡的挑战!

熵不是密码的属性;这是他们如何被选择的属性。如果您使用 N 个随机位从 2 N个候选者的列表中均匀地随机选择一个密码,那么您选择的密码由于其选择方式而具有 N 位熵。它的长度或使用的字符没有区别。

当密码强度检查器将您的密码评定为“强”或“弱”时,它是在猜测您生成密码的方法,并评定该方法的强度,而不是密码本身。猜对是一个AI难的问题,野外的力量检查器一般都不是很复杂;他们只有几个候选方法,并且仅使用密码的肤浅属性在它们之间进行选择。人类可以做得更好一些。

拿走你的密码Tr0ub4dor&3这个密码可以通过将 11 个独立的随机可打印 ASCII 字符粘合在一起,或者通过使用字典单词并以各种方式对其进行变异来生成。第一种方法倾向于产生看起来像Mc*]Z.-S--r、、、等等的密码,而第二种方法倾向于产生看起来更像是的密码A=Ek+]/BQzq在我的大脑相当复杂的神经网络的主观判断中。我的结论是,密码更可能是由后一种算法(大约 28 位熵)生成的,而不是前者(大约 72 位)。$2"*LQ>rMe7Tr0ub4dor&3

但事实上,我认为你没有使用过这两种算法。我想你是从广为流传的在线漫画中得到密码的。该条中只有两个密码,并且只有一个适合您的目的。这种密码选择方法只能产生Tr0ub4dor&3,所以我得出的结论是,您使用这种方法的可能性比其他两种方法要大得多。该方法的熵为 0 位。


为什么熵很重要?本质上是因为它为您提供了一个可证明的上限,即您的密码被猜到的风险,但需要一些合理的假设。

威胁模型是一个攻击者,他尝试不同的密码,直到一个成功或直到他们厌倦并放弃。他们尝试的密码数量与您选择的密码无关,因此您可以想象他们只有一个固定的密码列表,尝试该列表中的每个密码,然后放弃。

如果他们的列表长度为 K,并且您从 2 N个候选者中随机选择您的密码,并且他们列表中的每个密码也在您的列表中,那么他们破解您密码的机会正好是 K/2 N如果不是他们列表中的每个密码都在您的列表中,那么机会就更少了。最坏的(对你来说)情况的机会是 K/2 N

您可以尝试猜测哪些密码可能在他们的列表中并避免使用它们以降低机会,但如果 N 足够大,那么您不必担心。您有一个基本优势,因为向 N 添加位只会线性地增加记忆和输入密码的难度,但它会成倍地降低攻击者能够猜到它的机会。最好通过易于记忆来选择列表中的密码。的优势correct horse battery staple与其他样式相比,-样式密码与字符长度或攻击者尝试的可能性无关,而与它们易于记忆有关。(如果您是一名优秀的打字员,或者您使用的是带有滑动键盘的智能手机,它们的打字速度也可能会更快。)任何形式的密码的安全性都不是来自密码本身的任何属性,而仅仅是来自N 的值。

你怎么知道K的值?你不知道,但很容易粗略估计它,假设攻击者在计算技术方面并不领先于最先进的技术,并且不愿意花费超过一定数量的金钱和时间(a您对他们的重要性的功能)来破解您的密码。