在密码创建的上下文中,“随机”是什么意思?

信息安全 密码 随机的
2021-08-18 20:12:47

免责声明:正如您从我的问题中看到的那样,我在这个主题上完全是局外人,只是非常好奇。

我想知道破解受密码保护的 RAR5 文件有多么容易,我找到了许多类似“真正随机密码比基于真实单词的密码更难破解”的答案。此外,很多答案都涉及密码随机性。

我知道基于真实单词的密码很容易被字典攻击破解,可能这就是那些答案所指的,但我仍然不清楚在密码创建的上下文中“随机”是什么意思,原因如下。

即使我使用有史以来最好的“随机器”生成一系列字符,我得到HelloWorld的机会和得到 f.ex 的机会。gkwwpBnePU在我的理解中完全一样,那么“随机”在这种情况下是否意味着“尽可能远离任何真实的单词”但如果是的话,这难道不会使密码变得不那么随机吗?

引发我怀疑的想法 - 我相信这是相同的概念,但我不确定 - 是:如果我选择一个密码,它是一个真实的单词,但来自一种非常不常见的语言的晦涩方言,其字典没有攻击者会提供给他们的破解工具,这样的密码还能比破解gkwwpBnePU吗?(当然假设这gkwwpBnePU实际上不是任何语言的真实单词,明白我的意思吗?)。

4个回答

“随机”的意思是:“攻击者不知道的”。

要理解的重要一点是攻击成本总是平均的。它们在单个数据点上没有意义。攻击者可能总是很幸运并在第一次尝试时找到正确的密码。这只是不太可能。

如果您将密码生成为纯随机字符序列,那么您可能会获得“HelloWorld”;但通常您不会,而且至关重要的是,攻击者无法以不可忽略的概率猜测您的密码由两个连接的英文单词组成,因为平均而言,它不是。

一种说法是密码熵不是密码的属性,而是生成密码的过程的属性;并且它不影响单个密码的内容,而是密码的平均内容,接管了足够多的实验。更多关于密码熵的信息

平均值仍然是一个重要的概念,因为攻击者和其他人一样,从经济学角度思考(尽管他和大多数其他人一样,并没有完全意识到这一点)。如果攻击者破解密码的机会低于他在彩票中赢得数百万美元的机会,他就不会费心攻击您的密码。即使他可能总是“走运”,彩票的努力要少得多,而 5000 万美元的回报比访问您的 Facebook 帐户要多得多。

“随机”意味着搜索空间中的所有可能性(在集合 S 中选择最多 N 个字符的密码)具有相同的概率(最多为小公差)。目的是对手(想通过猜测密码来破解加密的人)没有比尝试所有可能的密码更好的策略。使用随机密码,攻击者必须在搜索空间中尝试一半的密码才能获得 50% 的猜对机会。

假设您正在生成一个 10 个字符的密码,其中每个字符都是小写或大写字母。那是 52 10 ≈ 1.45⋅10 17 种可能性,即超过一亿。因此,gkwwpBnePU作为密码生成的概率是亿分之一,并且有一些变化。产生的概率HelloWorld是完全相同的,所以你选择一个比另一个没有优势:这两个选择同样强。

当然,攻击者可以猜到HelloWorld但他们猜的机会是均等的gkwwpBnePU

如果您知道攻击者正在使用字典,那么您可能希望避免使用该字典中的单词。但是,这仅在字典代表密码空间的很大一部分时才有用。如果是这种情况,您的密码空间不够大。

假设攻击者的字典包含一百万个单词,他会同时尝试两个单词。这已经相当大了——10 12破解尝试将需要一小群计算机在合理的时间内进行。您随机生成的密码在该搜索空间中的可能性小于 100000。你在避开这个搜索空间时获得了一点优势,但这是有代价的。首先,您增加了复杂性(因此增加了错误的风险,例如意外消除了比您预期更多的搜索空间)。其次,你真的不知道对手会做什么。也许一个对手使用这个特定的字典,但另一个对手没有(即使是第一个人,一旦他们发现你的密码生成策略是什么,他们也会改变他们的策略)。对于不使用此特定字典的任何对手,您可以通过限制密码空间来帮助他们。

从晦涩的语言中选择密码会更糟。不管这种语言多么晦涩难懂,如果你有一本字典,那么你可以假设你的对手有一本。限制为字典单词将极大地减少搜索空间,并将通过蛮力查找密码的能力从不可行变得容易。

即使我使用有史以来最好的“随机器”生成一系列字符,我得到HelloWorld的机会和得到 f.ex 的机会。gkwwpBnePU在我的理解中完全一样,那么在这种情况下,“随机”是否意味着“尽可能远离任何真实的单词”?但如果是的话,这难道不会使密码变得不那么随机吗?

是的。这是在密码学中排除所谓的“弱密钥”的一个已知问题。通过排除某些类别的弱密钥,剩余的密钥空间已经减少。有时,会出现意外排除几乎所有密钥的密钥选择算法,从而为攻击者留下非常小的搜索空间。

您描述的推理是此类错误的典型前兆:如果某些键是“弱”的,那么与这些键完全相反的肯定是“强”,对吧?但是,如果您尝试找到与常用短语“完全相反”的密钥Hello World,那么将您的“完全相反”映射函数应用于常用短语的攻击者将是可以猜到的。

避免弱密钥与根据某个距离度量仅选择与弱密钥最远的密钥之间存在巨大差异(后者是一个严重的错误,源于对威胁模型和概率的误解;不要那样做) .

因此,请避免使用弱键Hello World,但不要将键选择范围缩小到与“弱”键集一样小的搜索空间。

这里的随机意味着“对攻击者来说将是耗时的”。

密码在技术上由各种字符(可能是小写、大写等)组成,因为它们是作为字符串处理的。有两种密码:

  1. 由用户处理的
  2. 由密码管理器处理的那些

第二种情况很简单:尽可能地进行长而复杂的组合,直到应用程序要求输入密码的限制(他们设置了一些限制,有时这些限制是可怕的)。!sg8Itp2%hjxXxo6a6TGMbJs8Jcxtk205XgZ@M^C2CmAgfC*q6是我刚刚想出的一个很棒的密码,随机和一切。

第一种情况更复杂,因为你的记忆、对你来说什么是“随机”以及什么是“角色”之间存在冲突。

让我们从一开始就明确表示,除了上述真正随机密码之外的任何其他内容都会大大减少所谓的“密钥空间”,即密码的可能性数量。密钥空间越大越好。但这不是问题,当仔细接近时。

您唯一的目标是建立一个需要“很长时间”才能破解的密码。你自己定义什么是很长的时间。这可以是 1 分钟或 100 年。由于统计数据和 CPU 便宜的事实,让我们瞄准 1000 年。一个专门的破解者 1000 年的努力,他将拥有 NSA 的计算能力。

破解者将通过尝试所有可能的组合来攻击您的密码(我在这里对应用程序所有者的密码存储质量做出了一些假设)。这意味着他会尝试a, b, ... aa, ab, ...

嗯,不。他不会尝试这样做,因为他知道您的密码可能至少有 6 个字符长。这里是关于随机性的关键点之一:您必须绝对假设破解者知道您的密码是如何构建的这里没有“默默无闻的安全性”(它在其他地方很有用,但不是在这里)。

这将我引向最后一部分:你的记忆。你不会很擅长记住我之前给出的 50 个字符的密码。你最终会得到一些类似于单词及其变体的东西。拥抱它!整月建立一个由几个(4 或 5)个随机单词组成的密码!

但是“每个人都说使用字典单词不好”那些不做数学的人做。

让我们计算一下:您有一个由 4 个单词组成的密码,每个单词都是 7000 种可能性中的一种(这是人口的平均词汇量。请注意:

  • 总词汇量在 70,000-100,000 个单词的范围内(法语或英语)...
  • ...所以我们选取了一小部分您可以实际想到的单词...
  • ...因为你可能不会用骰子方法选择你的单词,而是突然出现

因此,您有7000^4 ~= 10^15密码。高端专用破解环境可以10^10每秒尝试组合,4字版本约1天。5个字带你到30岁。这是针对离线攻击,当攻击者掌握了您的密码数据库时。在线攻击是不切实际的(每秒大约 1000 个组合)。

作为比较,小写、大写和数字的 8 个字符的密码具有10^14组合。

笔记:

  • 上述信息适用于在线或离线攻击密码以获取正确存储的密码。这就是说,如果密码是明文存储的,或者是非加盐的短密码,会立即被破解
  • 我坚信必须明智地选择密码策略。有时没有密码是可以的,有时多因素身份验证是要走的路。没有“一刀切”的解决方案。
  • 我也坚信密码策略必须务实并解决现实世界的限制。不是每个人都能记住 253 个密码,这些密码长 25 个字符,每三个月更改一次。
  • 可悲的是,许多标准和官方建议都像 [审查] 一样愚蠢,我们最终还是会得到Hello1密码,因为它们恰好符合构造规则。

我最近对来自 NIST、ISO27002、HIPAA、SANS、PCI-DSS、法国和德国政府机构、ISF 和 CobIT 的密码建议进行了比较(特别是在密码过期方面)。上面的顺序是从“深思熟虑”“我把 90 年代一个随机的家伙或女孩发明的任何东西写在纸上,因为我在 6 年级时停止了数学,我的 4 个神经元不允许我集中更多的注意力20秒解决一个问题”

编辑:根据评论中的要求,以下是标准审查的结论。这与显示密码过期不会提高安全性的研究形成对比。

  • 完全没有建议(NIST)
  • 除了“定期更改”(ISO27002)之外没有其他建议
  • 基于风险评估的变化,少于 2 年 (HIPAA)
  • 180 天 (SANS)
  • 90 天(PCI-DSS、法国和德国政府机构、ISF、CobIT)

考虑到他们所做的出色工作,ISF 的建议尤其令人失望。