密码 Tr0ub4dor&3 如何具有约 28 位的熵?
信息安全
密码
熵
2021-09-05 17:42:59
2个回答
他将密码建模为与此类似的随机算法的输出:
- 从包含 65,536 个(= 16 位)单词的字典中随机均匀地挑选一个单词。(我们假设攻击者知道字典。)
- 掷硬币(= 1 位);如果为首字母,则翻转单词首字母的大小写。
- 对于单词中的每个元音,掷硬币;如果它落头,用它的“普通替换”替换元音。Munroe 通过假设字典中的单词通常具有三个元音(所以我们总共得到大约 3 位)来简化这里。
- 随机选择一个数字(~ 3 位)和一个标点符号(~ 4 位)。掷硬币(= 1 位);如果是正面,则首先将数字附加到密码,然后将符号附加到后面;如果有尾巴,则以其他顺序附加它们。
熵是算法中随机选择的函数;您可以通过确定算法做出哪些随机选择、每个随机选择有多少个备选方案以及备选方案的相对可能性来计算它。我已经在上面的步骤中注释了数字,如果你把它们加起来,你总共得到大约 28 位。
你可以看到,Munroe 的程序无论如何都不是硬科学,但它也不是一个不合理的估计。他正在练习快速粗略估计的艺术,他经常在他的工作中展示这一点——不一定要得到正确的数字,但要快速了解它的近似大小。
每个小方块都是一个被计算的熵。
- 单字16位
- 1 为第一个字母:大写与否?
- 1 代表 O 和 0、A 和 4 的每次替换
- 4 使用不常见的符号
- 3 使用数字
- 1 表示符号+数字或数字+符号的未知顺序。
对此有一些推理。例如,当密码需要大写时,几乎每个人都将大写放在第一个字母中。所以你得到的不仅仅是一点熵。