这里有两个密码:
5678%^&*tyuiTYUI
和
8^tyU75%*IuY6T&i
两者都有相同数量的字符并且每个字符都是相同的,唯一的区别是第一个将这些字符排列成一种模式,通过遵循简单的几何按键模式,这种模式强烈地有助于肌肉记忆。
那么从安全角度来看是否有任何显着差异?
这里有两个密码:
5678%^&*tyuiTYUI
和
8^tyU75%*IuY6T&i
两者都有相同数量的字符并且每个字符都是相同的,唯一的区别是第一个将这些字符排列成一种模式,通过遵循简单的几何按键模式,这种模式强烈地有助于肌肉记忆。
那么从安全角度来看是否有任何显着差异?
是的!尤其是在面对严格的密码复杂性要求时,用户经常选择第一个密码:键盘进程、键盘走动、键盘模式或任何您喜欢的名称。攻击者很清楚这一点。
无论是进行在线(暴力破解)还是离线(哈希破解)攻击,攻击者都知道最有利可图的方法通常是字典攻击的某种变体:使用一组常用密码并尝试它们。几乎每个使用从真实数据泄露中收集的密码构建的字典都至少包含一些键盘模式方法的变体,最常见的是“1qaz2wsx”和朋友。
除了静态字典方法之外,人们用来创建这些密码的心理算法非常简单,并且有很多程序可以快速生成这些密码以便全部尝试。
从信息论的角度来看,第二个密码具有更多的熵,因为每个字符都是从一组 16 个字符中随机选择的。知道它们来自一个小组会在一定程度上降低熵,但它仍然相当不错。另一方面,第一个密码要简单得多。您可以将熵视为“解释如何输入我的密码有多难?” 以下是我可能会如何解释你的第一个:
在美国标准键盘上,从“5”开始:
- 向右键入 4 个键,然后返回起始位置。
- 按住“shift”并重复步骤 1。松开“shift”。
- 向下移动一行并重复步骤 1 和 2。
将其与您的第二个密码进行比较,该密码必须对每个输入字符都有一个程序步骤。没有很好的压缩方法,所以它有很多熵。即使我知道您选择了哪 8 个键,并且每个键都按一次 shift 一次,一次不按一次,仍然留下(假设完全随机选择)16! ~= 2^44
选择,这意味着大约 44 位熵,奇怪的是相同通过“正确的马电池订书钉”方法索赔的金额。
是的,有区别,因为有一个可辨别的模式。就像编写密码破解程序以获取字典单词并用数字替换字母或在末尾添加数字一样,键盘模式也存在同样的弱点。
另一个问题是“肩膀冲浪”。通过查看前几次击键,然后简单地听其余的,很容易找出某人的密码是什么。
是不是说第一个密码没用?不,但它确实存在纯随机字符串不会的弱点。只有您可以评估您的情况的风险。
您在这里尝试做的是创建一个更容易记住的密码。问题是攻击者知道人们很懒惰,几乎没有人使用像您的第二个密码这样的完整随机密码。
为了使密码更容易,所有人都创建了一个模式。就像你知道的一个词是一个模式或键盘上的 6 个字符,如 123456。攻击者寻找人们使用的模式并为这些模式创建暴力攻击。要选择一个好的密码,您需要确保您没有使用任何这些常见模式。
回到您的问题:如果您忽略常用密码,您自己的密码将具有相同的熵并且同样安全。但是,如果您查看常用密码,您会发现您的第一个字符串,因此第一个字符串的安全性较低。
但我认为您不喜欢比较这两个字符串的安全性,而是比较它背后的模式。现在取决于您如何定义这些模式。如xkcd 漫画所示,可以创建与随机密码同样安全但更容易记住的密码模式。(至少如果你从这个模式中获得一个随机密码!)
对于您的字符串:5678%^&*tyuiTYUI
您可以定义一个模式,例如:一个随机键和它旁边的三个键。与 shift 一起使用 [a-z0-9] = 2*36 字符作为开始键。如果您像示例中那样执行此操作 4 次,则此模式有 72^4 = 29.986.576 种可能的组合。旁边的三个键不会添加任何额外的熵,因为它们是模式的一部分。如果您知道模式,您就会知道这些键。
因此,使用这种模式,您的密码与 4 个字符的随机字符串一样安全。当然,您可以基于此创建更好的模式,但我认为这不会让您满意。请尝试使用 xkcd 模式或密码管理器。
随机的比具有肌肉记忆模式的要强得多。
正如多次指出的那样,例如通过 bonsaviking,攻击者知道肌肉记忆模式很常见,因此已经对其进行了测试。
我建议根据我们用于确定加密算法强度的相同规则进行思考。在加密中,您总是假设算法是公共知识;唯一的秘密部分是密钥。同样,您应该围绕攻击者知道您的算法的假设设计密码(即“键盘上的肌肉记忆模式”),唯一保密的部分是您用来在键盘上走动的特定“键”。
我个人的经验是,肌肉记忆模式的熵仅比“abcde”或“密码”之类的密码略高,因为“易于输入”实际上是一个相当一致的指标,因此不会有很多不同的模式做。
考虑总是将一个角色向左、向右、向上或向下移动的经典示例。如果你在你的方向上真的是随机的,那就是每个键的 2 位熵,再加上随机起始位置的 8 位。因此,16 个字符的肌肉记忆模式将具有大约 40 位的熵。这不完全是一个强密码。考虑到这种模式与简单的英语短语(1 位熵/字符)相比几乎没有优势,但与真正随机的字符短语(略低于 6 位熵/字符)相比。但是,鉴于您不太可能记住真正随机的上/下/左/右字符串,您的选择可能会有模式,将密码强度更多地拖向“单个单词或短语”强度。