私はWPA-PSKパスフレーズを生成することを考えていましたが、OpenBSDのマンページにwpa-psk(8)
があります。
The passphrase must be a sequence of between 8 and 63
ASCII-encoded characters.
ここでの「ASCIIエンコード」の基準は正確には何ですか?ただそれらはハイビットが設定されていない8ビット文字でなければならないのですか?印刷できない文字は使用できますか?
考えてみてください...パスフレーズをランダムに生成するという私のアプローチは意味がありますか? 64個のランダムバイトを生成し、それをキーとして使用する方がよいでしょうか?
>ここで「ASCIIエンコード」の基準は正確に何ですか?上位ビットが設定されていない8ビット文字でなければならないというだけですか?印刷できない文字は許可されますか?
ウィキペディアの Wi-Fi Protected Access は、WPA-PSKパスフレーズが8〜63であると述べています printable ASCII characters で、脚注としてこの参照が含まれています:
パスフレーズの各文字は、32〜126(10進数)の範囲のエンコードである必要があります。(IEEEStd。802.11i-2004 、付録H.4.1)
スペース文字はこの範囲に含まれます。
>考えてみてください...パスフレーズをランダムに生成する私のアプローチには意味がありますか? 64個のランダムなバイトを生成してそれをキーとして使用する方が良いでしょうか?
>私はまだ安全なRNGを使用して256ビットを生成するだけだと思います...
ワイヤレスルーターとワイヤレスネットワークに接続するすべてのデバイスで、WPA-PSKキーを64桁の16進文字として手動で入力できますか?そうでない場合は、ASCIIパスフレーズを使用して、すべてのデバイスで入力できるようにする必要があります。
From http://www.xs4all.nl/~rjoris/wpapsk.html -"WPAキーの計算-パスフレーズから16進キーへの計算の詳細":
WPA-PSK暗号化の場合、バイナリキーは次の式に従ってパスフレーズから取得されます。
関数PBKDF2は、パスフレーズからキーを取得するための標準化された方法です。 RFC2898で指定されており、その計算方法が明確に説明されています。この関数には、基礎となる疑似乱数関数が必要です。 WPAの場合、基になる関数はHMAC-SHA1です。 SHA1は、任意の量の入力データから160ビットのハッシュを計算する関数です。 RFC3174で明確に説明されています。 HMACは、暗号化ハッシュ関数をキー付きメッセージ認証関数に変換する標準化された方法です。 RFC2104で指定されています。
要約すると、鍵導出プロセスでは、HMAC-SHA1関数を4096回繰り返し、それを再度実行して、より多くの鍵ビットを生成します。必要な計算量は、1Mバイトのデータで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?
:ランダムバイトのパスフレーズであらゆる種類の記号、数字、ランダムなアルファベット文字を使用している限り、どちらも非常に強力です。私の見方:両方(生成またはランダム)は推測/ハッキングすることが不可能になります...