我正在进行一项涉及密码的研究,并且需要一种为密码的复杂性分配数值的方法

信息安全 密码 密码破解
2021-09-01 19:13:36

我目前是一名学生,正在为我的高中举办一个科学展览项目。该研究涉及收集人工生成的密码并测试它们的复杂性或“破解能力”,以确定哪些密码要求/标准最能鼓励用户生成安全密码。

我需要一些系统来评估每个密码的安全性。我考虑使用 NIST 的公式来计算数据熵,但后来意识到用熵来衡量破解能力是多么不切实际。我还阅读了 Matthew Weir 的一些研究,如果可能的话,我想使用他的系统 PCFG Generator。我在这里找到了下载和说明但作为一名学生,我仍然无法弄清楚如何准确地使用它。

任何用于预测密码可猜测性的可靠系统都会非常有帮助,只要它考虑到常见的破解工具(字典攻击,如 JtR)。任何帮助将不胜感激。

谢谢!

2个回答

简而言之,没有可靠的方法可以做到这一点。您的程序必须实施一组规则。然后人类围绕这些工作。即要求一个数字使 99% 的普通用户密码不再安全 - 他们只是在现有密码的末尾添加一个 1。符号也一样。

“p@55w0rd!” 在许多先前尝试对密码进行评级的尝试中得分很高。就像“这是我的密码!”一样。同时,“lbvgjnwhha”(随机生成)得分很低,因为它是一个相当短的全小写字母字符串。

相反,我会考虑另一种方法。例如,此页面可以针对数亿已知泄露的密码检查密码。这应该可以击败大多数非目标(即个人属性,如姓氏、出生日期等)字典攻击。您可以演示这一点(或下载完整的密码哈希列表并编写一个工具来计算输入密码的哈希并对照列表进行检查),同时解释密码最佳实践和两因素身份验证的好处。

首先,我认为理解数学密码熵是谨慎的。关于密码强度的 wiki是一个很好的起点,但简而言之,密码熵可能意味着在给定符号池的情况下可以猜出密码。

这既不是复杂性也不是“破解能力”,熵是互斥的,这两个概念都不是。

首先要了解熵很重要,因为它有两个要求:

  • 符号数量
  • 这些符号的长度

符号数量

提供的符号数是每个符号的熵比特数的基线。单独的大写字母与包含小写符号的熵位不同。如果包含数字,则每个符号的熵会增加。添加的符号越多,每个符号获得的熵就越多,换句话说,符号池越大,每个符号的熵就越大。

符号长度

符号的长度很重要,因为每个添加的符号都会有效地使您的熵加倍。这就是为什么长度本身是密码安全中如此重要的概念。

什么是复杂性?

密码的复杂性是我们为强制密码的“随机性”而制定的规则。以下是基本规则:

  • 大写
  • 小写
  • 数字
  • 特殊字符

这些对大多数人来说都很常见。网站一直在使用它来试图迫使人们进入随机性。然而,我们并不是随机的。这就是为什么攻击者可以使用字典攻击和预测算法来猜测密码的原因。

它超越了这一点,但包括安全措施,例如:

  • 使用加密或哈希
  • 盐的强度
  • 私钥的安全性

等等。

抗裂能力

这比这里的简单帖子要复杂得多。然而,这是一个有趣的话题(至少对我来说:))。破解能力是主观的,你需要理解的部分是你只能根据定义的规则集来衡量这个概念。(我想不出更好的词了,我不喜欢“破解能力”,但我很确定我明白你的要求)。

PCFG 发生器

根据您尝试使用 PCFG 定义的内容,它可能非常复杂。PCFG 的基础是,如果你给它输入一些东西,常用词、短语等,它提供了接下来可能选择什么的概率。您可以在日常生活中使用带有预测文本的智能手机看到这一点。(你有没有注意到,当你第一次开始使用它时,猜测很糟糕,现在它很擅长知道你要说什么?)

您可以输入通用密码,然后检查是否有人使用该密码。

对于您的项目,除非您试图评估一个人选择密码的可能性,否则我建议您查看其他内容。