我在考虑正确的马电池订书钉。我不是以英语为母语的人。用我的语言,上面可以写成:
vqrno kon bateriq telbod或
вярно кон батерия телбод。
请记住,拉丁语变体可以有多种变体,具体取决于我如何选择用英文字母表示我的语言中的声音。然而,这对我来说很容易记住,因为我一直这样做。
上述两个密码短语*的安全值大概是多少?
*忽略它们现在已发布的事实
我在考虑正确的马电池订书钉。我不是以英语为母语的人。用我的语言,上面可以写成:
vqrno kon bateriq telbod或
вярно кон батерия телбод。
请记住,拉丁语变体可以有多种变体,具体取决于我如何选择用英文字母表示我的语言中的声音。然而,这对我来说很容易记住,因为我一直这样做。
上述两个密码短语*的安全值大概是多少?
*忽略它们现在已发布的事实
这完全取决于您的攻击模型。一个 16 个字符的单词可能会抵抗蛮力,但可能会立即失败以抵抗字典攻击。您如何定义该密码的强度?没有单一的答案。
使用您提到的方案,假设您的密码足够长,蛮力攻击在很大程度上是不可行的。即便如此,这完全取决于攻击者是否针对您的特定 Unicode 范围,或者他们是否只是针对 ASCII。
一般来说,“低挂果”模型中的攻击者可能只猜测 ASCII 范围内的密码,因为它们是最常见的。当 30% 以上的密码在前 10k 列表中时,为什么还要费心去做一些花哨的事情呢?
但是,如果您担心知道您的语言并使用与您创建密码相同的模型积极攻击密码的攻击者,那么您可能会遇到麻烦。即便如此,如果你的词是足够随机选择的,并且其中一个词不是严格意义上的字典词(例如“pwned”之类的词),那么你很可能是安全的。很难判断密码短语的强度,因为它们的安全性在很大程度上取决于未知数,例如使用中的字典和突变的可能性。
事实是,我们真的不知道它们是否能抵御一般的野外攻击者,因为我们没有任何可靠的统计数据来支持我们的直觉。关于非英文密码,我能给你的最好建议是假设它们是英文的,然后问问自己你是否仍然信任它们。
为了进一步阅读,我们在网站上有一些相关的问题:
在评估密码生成算法的安全性时,通常且谨慎的做法是假设攻击者完全了解您的方法。为什么我们会这样假设?因为这往往是真的!特别是在密码生成规则由本地系统管理员决定和发布(有时是自动执行)的组织(公司、管理部门......)中。
在“正确的马”方法中,您在给定的单词列表中随机选择一些单词(每个单词的统一选择)。上面的假设意味着攻击者知道确切的列表。在这一点上,无论单词是英语、俄语还是苏美尔语,它都没有任何改变。吹毛求疵:如果在给定的键盘上“难以输入”单词,那么这可能意味着可用性问题(特别是因为密码是“盲目”输入以阻止肩冲浪者)。
使用俄语单词而不是英语单词只会对那些不够认真做作业的攻击者带来一些安全性,并尝试使用通用单词列表而不是您的常用单词列表。在某些实际情况下,这可能会有所收获;但不要指望它。由于使用俄语单词而不是英语单词不会降低基本安全性,因此使用俄语单词没有问题(除了可能的可用性问题,这可能适用于您的情况,也可能不适用);但如果相信它也有实质性的好处,那就太愚蠢了。
编辑:有关计算密码熵的更多信息,请参阅此答案。重要的一点是密码熵是密码生成过程的属性。我们假设攻击者知道整个过程,除了实际的随机选择,因为很难量化这个过程有多少未知。你能说“猜测这些词是俄语将使攻击者付出X CPU 月的计算努力”,以获得X的近似值吗?
我想这将取决于情况本身。
如果攻击者从 LinkedIn 等以英文为主的网站获得密码转储,我猜他很可能会使用英文字典遍历哈希值。我最好的猜测是您的密码不会受到字典攻击。
如果攻击者从其他语言的站点获取密码转储。他很可能会使用另一种语言的字典来遍历哈希。
如果您的威胁模型是针对您的有针对性的攻击,您可以非常确定攻击者将使用您母语的字典。然而,就像 XKCD 漫画所暗示的那样,从几千个单词的字典中随机选择的四个单词仍然非常强大。所以你可能是安全的。
密码越长,通常越强。随着长度的增加,直接暴力破解密码的时间很快就会增加。一旦你开始使用一个短语,字典攻击就不太实用了。即使在上/下拉丁语集中,制作短语字典也不会提供超过 10 个字符的真正好处,除非这些短语非常常见。
同时,假设没有人会弄清楚英语的音译,显然不要在纸上用俄语写下来。我还建议将您的密码存储在 KeePass 或其他安全存储中,并且只使用完全随机的字符集。
最终,增加长度会增加安全性并降低猜测或蛮力的能力,但完全随机几乎总是更好。