我试图找到密码模板的最佳熵度,经过多次测试,最好的结果来自:à
.
仅此符号就为集合添加了 160 个字符(与小写字母、数字甚至符号相反),并且可以从我使用的西班牙语键盘(例如我使用的键盘)中轻松获得,这看起来很完美。
但是,我找不到有关此的任何信息,所有密码生成软件似乎都避免使用这些,我不知道为什么。
像这样的密码+9qQ¨{^
加起来有 254 个字符集大小,+9qQ¨{^aaaa
已经有 67 位熵,将易于记忆的因素放在一边,有什么理由避免使用这些特殊字符?
我试图找到密码模板的最佳熵度,经过多次测试,最好的结果来自:à
.
仅此符号就为集合添加了 160 个字符(与小写字母、数字甚至符号相反),并且可以从我使用的西班牙语键盘(例如我使用的键盘)中轻松获得,这看起来很完美。
但是,我找不到有关此的任何信息,所有密码生成软件似乎都避免使用这些,我不知道为什么。
像这样的密码+9qQ¨{^
加起来有 254 个字符集大小,+9qQ¨{^aaaa
已经有 67 位熵,将易于记忆的因素放在一边,有什么理由避免使用这些特殊字符?
密码生成器通常会避免使用特定于语言的字符,因为它们不会普遍可用(例如,美国键盘没有重音字符)。因此,不要将这些工具的遗漏视为它们可能很弱或有问题的迹象。
符号集(a-z
、A-Z
、0-9
等)越大,在暴力破解密码时尝试猜测的可能字符池就越大。添加特定于语言的字符会添加到池中,这可能是一件好事。
但是要小心你如何计算熵。如果您只是在键盘上敲击该字符串,则该字符串ààààààààààà
没有很多熵,因为它很方便。熵是关于如何选择角色的。随机选择的字符串具有高熵,而从广泛的字符池中随机选择的字符串具有更高的熵。
是的!
所有密码都应该只包含可打印的 ASCII 字符。不是“扩展 ASCII”,不是 Latin-1,不是 Unicode。
原因是当你按下“à”或类似的键时,你永远不知道程序实际接收到了什么。
在许多版本的“扩展 ASCII”中,“à”被编码为 (hex)85。
在 ISO Latin-1 中,“à”被编码为 (hex)E0。
在 Unicode 中,“à”是代码点 U+00E0。使用 UTF-8 编码时,结果为 (hex)C3(hex)A0。
Justin Time 在评论中指出还有另一种可能性。即使每个人都在谈论 Unicode,“à”也可以以不同的方式存储。上面列出了 U+00E0,但也有一个组合版本 (U+0061 U+0300),它是“a”后跟 (COMBINING GRAVE ACCENT)。一个正确编写的程序会处理这个问题,但是在这方面有错误是非常常见的。
任何名字或地址中带有民族特征的人都曾看到他们以许多不同的方式受到损害。发生这种情况时,这很丑陋,但无论如何,这封信通常都会送达。
当密码发生这种情况时,结果是您无法登录!只是不要去那里。
大多数所谓的密码强度检查器既不能正确理解密码也不能正确理解熵。我总是发现一些荒谬的东西可以作为强密码传递。试试你的名字加上你的生日(用点或斜线,根据你的语言环境需要)。那里有您的大写和小写字母、特殊字符和数字,但没有人会建议将其作为密码。
然而,“JohnDoe01.01.1980”在https://howsecureismypassword.net/上的得分为“220 万亿年”,在http://www.passwordmeter.com/上得分为100% 。
https://www.my1login.com/resources/password-strength-test/是我发现的唯一一个理解愚蠢的检查器 - 输入这个例子,看看它的估计是如何从“神奇”到“中等”的最后一个数字,它“得到”有一个日历日期。
所以:使用更多的原始熵计算引擎来判断密码。
对于您的具体情况,这意味着:
在纸上扩展字符集极大地增加了搜索空间,并且应该使密码从根本上更加安全。实际上, 99.9% 的用户会使用他们自己的语言环境,而西班牙语 a 或德语变音符号只是几个额外的字符,而不是整个 UTF-8 空间。因为假设攻击者没有考虑基本的人性是愚蠢的。
还有可用性方面。我曾经不得不从一家日本网吧远程登录我的帐户,这显然不好玩。如果我的用户名、密码或我需要的任何命令包含非 ASCII 字符,我认为没有任何方法可以实现这一点。
如果您可能需要从另一个键盘登录到您的机器,那么您现在使用的键盘是远程的,太特殊的字符将比忘记密码更好地让您远离自己的帐户。
让我们甚至不要谈论 Unicode 及其许多损坏的实现,这可能会导致其他问题。
这些也是密码生成器避免使用非 ASCII 字符的一些原因:
没有足够的安全性来弥补所有潜在的问题。
拜托,拜托,非常拜托 - 不要再考虑密码的复杂性了。这是一座蛇油草人桥。长度胜过复杂性,如果您使用密码生成器,您可能还将它们存储在密码管理器中,并且不在乎您输入的是 10、20、40 还是 200 个字符。
密码安全的最佳提示是为您注册的每个 Internet 站点使用一个新的、长的、随机的密码,这样您的密码就不会在下一次黑客攻击中丢失。因为您不能确定它们是否正确地对它们进行哈希和加盐,如果它们不正确,那么世界上所有的复杂性和特殊字符都无关紧要。
要计算熵,您需要一种定义明确的生成随机字符串的方法。考虑以下字符串。
abcdef
如果您告诉具有良好随机数生成器的计算机生成 6 个小写字母并且恰好得到这个特定的序列,那么您就有 log 2 (26 6 ) 位熵(28 位熵)。但是,如果您的随机字符串生成器总是返回 "abcdef",那么您实际上有 0 位熵。熵计算假设攻击者知道您如何生成密码。
在你的问题中,你特别提到了à
性格。你没有指定算法,所以让我提出一个。选择任何特定的密码生成算法(选择无关紧要),并始终放在à
最后。这增加了多少位熵?答案是 0,因为可以生成的可能密码数量没有改变。
但是,假设您修改了一个生成随机字符的算法,以将à
字符添加到可能的输出字符中。这样做将添加 log 2 ((alphabet + 1) size ) - log 2 (alphabet size ) 位熵。这并没有提供那么多价值,对于字母大小为 62(小写 + 大写 + 数字)的 50 个字符的随机密码,这只会增加一点熵。您可以通过在密码中添加 1 个字符来获得更好的结果,这会增加大约 6 位熵。
此外,添加à
到您的字母表中会产生一个成本,即在您可能想要键入密码的任何键盘上都不一定有一个字符。