我想知道以下几点:
如果有人试图通过蛮力获取我的密码,那么以“a”开头的密码会比以“z”开头的密码猜测得更快吗?在这种情况下,假设密码没有加盐,只是散列。
蛮力攻击是否以“a”开头,尝试然后继续或首先计算所有哈希值,然后查看是否匹配?
我想知道以下几点:
如果有人试图通过蛮力获取我的密码,那么以“a”开头的密码会比以“z”开头的密码猜测得更快吗?在这种情况下,假设密码没有加盐,只是散列。
蛮力攻击是否以“a”开头,尝试然后继续或首先计算所有哈希值,然后查看是否匹配?
一般来说,攻击者是自适应的。他们知道人们的想法。如果用户倾向于以“z”开始他们的密码,那么攻击者将使用该字母开始他们的暴力破解。
任何特定策略,例如选择“z”作为第一个字母,只要攻击者不知道,就可能让你比攻击者更有优势;所以在公共问答网站上谈论它并不是最聪明的举动。此外,攻击者始终可以选择以随机顺序尝试密码,这确保了攻击者不会遇到最坏的情况。当有N个等概率密码时,攻击者的平均成本是N/2次尝试,并且通过以随机顺序尝试密码,无论您选择何种策略,攻击者都会实现该成本。
重要的一点是密码保护是随机的。对于任何特定的密码实例,攻击者都可以幸运;他也可能特别不走运。因此,我们基于密码生成过程来分析密码阻力,而不是基于特定的密码实例:生成过程告诉我们攻击者的平均成功率是多少。“平均”是关键词。
还要注意,概率主宰你的生活:每当你离开家时,你都在赌你不会被闪电击中或被狂暴的罗威纳犬咬伤。您接受这一点是因为您本能地进行了成本/收益分析,并认为此类事件的可能性很小,以至于它们不会超过能够走出去的好处。
该概念也仅适用于密码:您将依赖于具有足够高熵的密码生成过程,即使攻击者的成功率足够低,以至于攻击者甚至不会尝试(或不会以足够高的概率成功)。从这个意义上说,“aaaaaaaa”并不比“zzzzzzzz”强或弱,只要您用来生成密码的方法能够以相等的概率产生两者。密码的强度不在于它是什么,而在于它本来可以是什么。
我会说是的。不是以任何有意义的方式(不要以此为基础设置密码),但仍然如此。
首先,如果您遵循此规则,您的密码将包含“z”而不是“a”。字母“a”在英文文本中出现的频率比字母“z”要高得多(对于单词的开头也是如此),因此它将更频繁地成为单词列表中单词的一部分。此外,许多破解机制(例如John the Rippers 增量模式)可能会更快地破解包含“a”而不是“z”的密码。这只是您的规则的副作用,但它仍然是相关的。它确实使以“a”开头的密码比以“z”开头的密码更有可能被破解。
假设破解者首先做了所有常见的事情:单词表等。他们没有成功。现在他们实际上可能会系统地尝试密码(请注意,这通常是他们尝试的最后一件事)。以此类推a,b,...,z,aa,ab,...。在这种情况下,以 开头的密码a会更快被破解。但攻击者不太可能只是停下来azzz而不尝试bzzz,...zzzz。只是需要更长的时间
同样,这实际上没有任何意义。我会说它确实有效果,但这种效果在现实世界中可以忽略不计。
不,攻击者不会首先计算所有哈希值(所有哈希值是一个相当大的组),然后仅在最后进行比较。他们将计算一个哈希,比较它,计算另一个哈希,比较它,等等。
首先,像“HowSecureIsMyPassword”这样的大多数工具/网站不仅考虑暴力攻击,还考虑字典和彩虹攻击,以及密码长度、字符池、单词使用等简单规则。因此,像aaaaaaa和这样的密码ZZZZZZZ将大部分时间以同样的方式评估。
a据我所知,除了简单的 to ZZZZZZ(选择来说明一个点而不是特定的单词/字符串)之外,没有“通用”的方法来启动暴力序列。
回答您的最后一个问题会引发更多问题:蛮力过程有多“快”(也取决于很多事情),您对“计算差异”的理解是什么。特别是,您可以计算密码的总池并在那里制作一些评估表。
关于144 quadrillion1 年的蛮力,我可以说这个数字也取决于很多因素。首先,我们可以进行无限制的暴力破解尝试吗?如果我们提交一个计算哈希的表单,这将显着降低“速度”。如果我们(离线/在线)暴力破解哈希,那么我们正在谈论更大的池(128/256/512/1024位哈希)。其次,从更实际的角度来看,密码是“有价值”的一年,它是否会在此之后相关。
仅取决于软件编写的好坏。写得不好,从“a”开始,然后是更安全。
否则,并行编程(当然这可以通过编译器等进行不同的编程和优化)。
让我们不要把它复杂化并保持简单,并说每个核心都有相同数量的数据要处理,核心 0 和核心 1 不会使用其他进程。
它工作的原因是因为 Core 0 的工作速度比 Core 1 快,所以它可以在继续之前接管下一个处理。
因此,您的问题应该是针对真正用于暴力破解的软件。