优点:
- 无论如何,我都不记得“好”密码,所以记住它们不是问题。
- 它们看起来不像密码
- 他们几乎不可能猜到(128位熵)
- 易于生成(卸载“良好的 PRNG”问题)
缺点:
- ???
尤其; 对于某些设置上的数据库登录密码,计算机输入的密码又如何呢?
一个主要缺点是您不一定具有原始问题中所述的“128 位熵”。
许多 GUID 算法以可预测的模式嵌入其中的信息,例如计算机的 MAC 地址、日期/时间或递增序列。WinAPI GUID 的密码分析表明,在初始状态下,可以预测函数 UuidCreate 返回的下一个 250,000 个 GUID
例如,我有大约 50% 的机会猜测第三组数字的第一个位置的第一个数字,因为它将是 1(对于 V1 guids)或 4(对于 V4 guids)
缺点:
因此,除非它们是很少更改的系统密码,否则我怀疑它们是好的密码。
缺点:
记住一个 32 字节的字母数字字符串几乎是不可能的。
如果您真的想要一个安全的密码,请考虑使用密码。很长的密码很容易记住,而且很难暴力破解。
缺点:
缺点:
...优点:
大随机数密码之前已经完成。它们被称为OTP,并且比您建议的要安全得多,因为它们会随着时间而变化,并且往往由安全设备生成。当然,这仅在您设计密码系统时才有意义。
有没有人需要输入它作为密码?还是您想一次性使用它?因为说真的,没有人愿意在密码字段中输入 GUID。人们已经很麻烦了,输入 WEP/WPA2 wifi 网络密钥。大多数时候,这些都是一次性的。
@Miyagi:这是最明显的骗局。他们必须把它写下来。
从技术上讲,它们将是很好的密码在现实生活中,它们将是可怕的密码
您最终将不得不写下密码,使用密码管理器或其他形式来实际使用密码......以某种方式将故障点从密码转移到另一个方面。
考虑使用密码。替换某些字母或其他字符的句子,以及数字,用 SHIFT 键入它们,将易于记忆的数字转换为明确定义的字符序列。
例如bcs19850101bcs将是bcs!(*%)!)!bcs
如果您想要一个安全密码,并希望将其留给类 UNIX 系统上的密码管理器,您最好从 /dev/random 中提取一个并将其编码为可读的内容。对于 128 位的熵,你可以使用一些简单的东西,比如
head -c 16 /dev/random | openssl enc -a -e
这给出了一个密码5eqIviKu4pFTqSPnYosVKg==
没有不合理的长,安全,随机,自杀试图记住。
编辑:这种方法相对于 UUID 的额外好处包括 PRNG (/dev/random) 中的额外安全性和更短的密码,类似的不足
我最近编写了代码,将校验和的前 64 位转换为四个英文单词的序列。这是一个很好的校验和(比十六进制更容易记住),但我不确定我是否会相信它作为密码。如果您要保护一些安全的东西,您应该使用一个您记住并且不要写下来的强密码。如果没有,那么任何旧密码都可以。
我认为您真正想要的是加密随机数,而不是 GUID。GUID 和 UUID 不是随机的——正如 JohnFx 所说,它们倾向于包含可发现的值,例如 MAC 地址或当前时间戳,以保证唯一性。
相反,您应该查看可用的任何加密 API,并找到高熵随机数的来源。确保文档承诺输出适用于密码学,而不仅仅是常规 PRNG。例如,Unix 系统上的 /dev/random 是一个很好的来源。然后只需展开任意数量的随机字节即可。
个人觉得这有点太硬核了。我宁愿生成每个字符包含更少熵的字符串,但更容易输入和记忆。例如,有几种算法可以结合随机音节来创建可发音的无意义词;穿插一些数字和标点符号,你就有了一个好的密码。
缺点:你不能重新输入它,这意味着你必须复制和粘贴。如果您的系统上有密码管理程序,那不是问题。但是,如果您最终使用了一个您不知道的系统,那么仅重新输入内容将非常困难。
然后在你尝试几次之后,你就被锁定了......
生活会变得非常烦人。
即使您把它写下来,一个好的密码也是您可以始终如一地输入而不会出错的密码。