我可以在密码中输入键盘上没有键的字符。在 Windows 上,Alt+####(使用小键盘)为您输入的任何代码插入字符。
当我把它放在密码中时,它几乎可以保证它永远不会被暴力破解吗?我可能不是第一个想到这一点的人,但我猜测攻击者永远不会认为值得花时间检查非键盘字符是对的吗?这甚至是他们所知道的吗?
如果是这种情况,在密码中的某个位置使用一个非键盘字符,您就不必担心保持密码的其余部分的安全性。
我可以在密码中输入键盘上没有键的字符。在 Windows 上,Alt+####(使用小键盘)为您输入的任何代码插入字符。
当我把它放在密码中时,它几乎可以保证它永远不会被暴力破解吗?我可能不是第一个想到这一点的人,但我猜测攻击者永远不会认为值得花时间检查非键盘字符是对的吗?这甚至是他们所知道的吗?
如果是这种情况,在密码中的某个位置使用一个非键盘字符,您就不必担心保持密码的其余部分的安全性。
当我把它放在密码中时,它几乎可以保证它永远不会被暴力破解吗?
对密码的暴力攻击往往以两种方式之一发生:攻击者获取散列密码数据库,或者攻击者尝试使用用户名(或其他帐户标识符)和密码登录实时系统。攻击散列密码数据库的一种常用方法是使用一组预先计算的值和散列,称为彩虹表。请参阅什么是彩虹表以及如何使用它们?彩虹表不是纯粹的暴力攻击,因为它使用的可能输入少于整个域。由于真正的蛮力攻击每一个可能的输入,无论是对散列密码数据库的攻击还是实时系统登录,任何字符集选择或不同集的组合都不会对蛮力攻击产生任何影响。几乎真正的蛮力攻击很少见。彩虹表攻击更为常见,使用不常见集合中的值将有效防御许多彩虹表攻击。
我猜对了,攻击者永远不会认为值得花时间检查非键盘字符吗?这甚至是他们所知道的吗?
有些攻击者会使用不常见的输入集来尝试攻击密码,但我怀疑它们很少见。任何相当老练的攻击者都曾考虑过诸如非键盘字符之类的事情,并且大多数人都会做出经济决定来追求更容易的目标。有很多目标的密码很弱很弱,因此攻击者会针对这些弱密码设计攻击。所以,是的,许多(但不是全部)攻击者认为强密码不“值得他们花时间”。
在密码中的某处使用单个非键盘字符,您永远不必担心保持密码的其余部分的安全性。
不,力量是对攻击的衡量或抵抗力。如果您的密码是单个非键盘字符,则它比 33 个小写字符的密码弱。比特长度是衡量密码强度的重要指标。位而不是字符,因为像哈希这样的加密计算是在位中完成的,而不是在字符中。字符集,就像非键盘字符集一样,只是制作强密码的一个要素,它本身并不强。
所以因为我必须知道我使用非打印字符 alt 0160(和非键盘表示)0161-0164 生成了一个 NTLM 彩虹表。该表以十六进制识别非打印字符。
转储散列后,该表能够识别非打印字符。(出于演示目的,这是一个带有 4 个字符密码的虚拟帐户)
它看起来像:
因此,尽管这并非不可能,但我的工具包中没有任何可以识别这一点的东西。大多数拥有彩虹桌的人要么来自社区,要么有特定的原因创建它们。
我很少看到有人使用这些字符,但是根据参与度创建更多表格以包括在内是非常有意义的:£ ¥ ¡ 和其他一些仅用于非英语语言的标点符号。在全球范围内寻找最常见的键盘并寻找 US-104 中未显示的字符将为我提供一个良好的开端。但同样,这个表集在制作时基于一件事:常用。如果不经常这样做,那么找到另一种绕过控制的方法可能会更容易。
要与基于蛮力的直接输入说话,同样的事情也适用。任何将它包含在输入字符集中的人都可以这样做。这样做是不正常的。
因此,以一种迂回的方式,我所说的是是的,它确实使它不太容易受到暴力破解,尽管并非不可能。
- 编辑 -
对于表生成的一些实数观点:
我为 NTLM 积累的基本字符集适合 750Gb 驱动器,如果我想制作一个新的驱动器,我已经得到了数字:(上 + 下 + 数字 + 打印字符 = 大约 96 个字符)
生成时间9 天 22 小时(如果增加表数过多)
唯一链数 6,094,373,862
表大小 90.81 GiB(97,509,981,789 字节)
总大小 726.51 GiB(780,079,854,310 字节)
现在这不是最佳的,但为了比较,相同的设置(实际上是little kinder settings 8 个表而不是 4 个使用 rtc )在完整打印 + 非打印 + 非键盘 ascii 集(191 个字符)等于(压缩)
生成时间 395 y(如果太高增加表数)
唯一链数4,823,766,839,375
表大小 57.03 TiB(62,708,968,911,909 字节)
总大小 14.20 PiB(15,990,787,072,536,668 字节
如果您使用整个 ascii 字符空间窗口将接受作为密码输入,则基本上要多 2 个数量级。我将不得不等待一段时间才能获得 20 PB希捷在开始通往这张桌子的道路之前。如果我想让这张桌子在我的 8 代生死之前完成,处理器需要加快速度。
攻击者只需要扩展他用来暴力破解任何密码的字符集,无论其中包含什么字符。也就是说,设置越大,他需要花费的时间就越多。
通常的建议是,如果你在 ascii 中输入小写字母、大写字母、数字和符号,那么你使用的字符集就足够大,足以阻止暴力破解。如果您超出了 ascii 集,您还可以查看希腊语或俄语字符 - 在我看来,不可打印和随机 unicode 的东西有点过分了。
你当然可以这样做,但有一个风险:否则:并非所有应用程序,尤其是站点和数据库都与 UTF 编码兼容,或者与 iso-8859-1 不同的东西。这意味着您的密码可能不会被应用程序/网站接受,或者更糟糕的是,您的密码被接受但在进入数据库的过程中被弄乱了,因此您将无法验证它。不幸的是,当您向不期望它的应用程序提供非 ascii 输入时,可能会发生各种奇怪的事情,尤其是在用户名和密码字段上。
使用 Alt+####(四位数字)相当于(用于抵抗攻击)将四位数字作为密码字符,就在您添加“特殊字符”的位置。密码中的数字并不是一个全新的事物。
“攻击者永远不会考虑它”是所有弱点的基础。攻击者会考虑它;他们甚至在你之前就考虑过了。如果你依赖攻击者的愚蠢,那么你只会打败愚蠢的攻击者——在任何情况下都是最不危险的攻击者。
在更实际的情况下,当您尝试使用不提供基于 Alt 字符输入的设备(例如,您希望通过智能手机访问的网站上的密码)时,特殊字符会使您的生活更加困难。