目前已有一些强有力的研究,如支持、可发音密码的使用以及多个 工具等提供此类密码生成的方法。
根据这个问题,密码的熵取决于它的生成方法,但是我如何确保生成的可发音密码有足够的熵供我使用?(例如,对于pwgen开源软件)
下面是用于生成可发音密码的伪代码。然而,这可能是最简单的解决方案,我对现有的“常规”方法相当感兴趣。
vowels = A, AI, AU, E, EA, EE, I, IA, IO, O, OA, OI, OO, OU, U
consonants = B, C, CH, CL, D, F, FF, G, GH, GL, J, K, L, LL, M, MN, N, P, PH, PS, R, RH, S, SC, SH, SK, ST, T, TH, V, W, X, Y, Z
theLastOneIsAVowel = True
while length(strPassword) < Minimum_Length do
if theLastOneIsAVowel then
strPassword = strPassword + randomElementOf(consonants)
else
strPassword = strPassword + randomElementOf(vowels)
endif
theLastOneIsAVowel = ~(theLastOneIsAVowel)
endwhile发布于 2014-10-23 16:21:05
是的,熵取决于产生过程。学习你的链接对在那里使用的(固定)进程有答案:
为了克服这个原始程序中的缺陷,我们生成了没有重复的八个字符可发音密码的完整列表(≈12亿),并以相同的概率分配了这个列表上的每个密码,从而产生了30.2位的熵。
这相当于5个基本64个字符。也就是说,与使用随机基数64个密码相比,通过使密码可发音,每个字符损失了大约2.25位的熵。
然而,就像他们使用的实现一样,该算法有可能有缺陷,并且没有以相同的概率生成所有可能的可发音密码。在这种情况下,你会失去更多的熵。因此,我会仔细检查程序,然后再依赖它。
发布于 2014-11-09 05:53:57
“如何确保生成的可发音密码有足够的熵供我使用?”
一种确保密码具有“足够的熵供我使用”的方法:从/dev/随机或其他安全随机数生成器中获得至少那么多的新熵块,然后将这些比特编码为密码,使每个可能的位块生成不同的密码。
有很多种方法可以将原始位编码成更容易输入密码、密码或ID号的方式。
例如,如果您确定64位熵是足够的,那么就可以得到64位新的随机比特。然后选择下列任何一种:
(与人们普遍认为较短的密码更容易键入相反,后两种编码通常产生的密码比其他编码要花费更多的击键次数和更长的键入时间,当您将"shift键“作为击键时)。
因为一旦您选择了这些编码之一,每一个64位的可能块都会生成不同的密码或密码,因此所有这些编码和它们生成的所有密码都是同等安全的。每一种编码--只要你开始使用64位熵的比特块--就会产生一个包含64位熵的密码。
https://crypto.stackexchange.com/questions/19753
复制相似问题