我正在考虑生成一个 WPA-PSK 密码,并且在 OpenBSD 手册页中看到了wpa-psk(8)
:
The passphrase must be a sequence of between 8 and 63
ASCII-encoded characters.
这里的“ASCII 编码”标准到底是什么?只是它们必须是 8 位字符且高位未设置?是否允许使用不可打印字符?
仔细想想...我随机生成密码的方法有意义吗?生成 64 个随机字节并将其用作密钥会更好吗?
答案1
这里的“ASCII 编码”标准到底是什么?只是它们必须是 8 位字符且高位未设置?是否允许使用不可打印字符?
维基百科Wi-Fi 保护访问说 WPA-PSK 密码是 8 到 63可打印 ASCII 字符,并将此引用作为脚注:
密码短语中的每个字符都必须具有 32 到 126(十进制)范围内的编码(含)。(IEEE 标准 802.11i-2004,附件 H.4.1)空格字符包含在此范围内。
仔细想想...我随机生成密码的方法有意义吗?生成 64 个随机字节并将其用作密钥会更好吗?
我认为我仍然会使用安全的 RNG 生成 256 位......
您的无线路由器和要连接到无线网络的每台设备是否允许您手动输入 64 个十六进制字符的 WPA-PSK 密钥?如果没有,那么您可能必须使用 ASCII 密码才能在所有设备中输入它。
答案2
从http://www.xs4all.nl/~rjoris/wpapsk.html- “WPA 密钥计算 - 从密码到十六进制密钥的计算细节”:
对于 WPA-PSK 加密,二进制密钥是根据以下公式从密码派生出来的:
PBKDF2 函数是一种从密码短语派生密钥的标准化方法。它在 RFC2898 中有详细说明,并明确说明了如何计算它。该函数需要底层伪随机函数。对于 WPA,底层函数是 HMAC-SHA1。SHA1 是一种从任意数量的输入数据计算 160 位哈希值的函数。它在 RFC3174 中有详细说明。HMAC 是一种将加密哈希函数转换为密钥消息认证函数的标准化方法。它在 RFC2104 中有详细说明。
总而言之,密钥派生过程涉及迭代 HMAC-SHA1 函数 4096 次,然后再次执行该操作以生成更多密钥位。所涉及的计算量相当于计算 1 MB 数据的 SHA1 哈希值。也许这可以解释为什么此页面上的 Javascript 如此缓慢。
至于你的问题::Does my approach of randomly generating a passphrase make any sense? Would it be better to just generate 64 random bytes and use that as a key?
只要你在随机字节密码中使用各种符号、数字和随机字母字符,这两种方法都很强大。我的看法是:它们(生成的或随机的)都是不可能的猜测/破解...