9

WPA2 ネットワークの有効なペアワイズ マスター キーを生成するために、ルーターは PBKDF2-HMAC-SHA1 アルゴリズムを使用します。PMK を取得するために sha1 関数が 4096 回実行されることは理解していますが、そのプロセスについて 2 つの質問があります。

擬似コードですみません。

1) SHA1 関数の最初のインスタンスへの入力はどのようにフォーマットされていますか? SHA1("ネットワーク名"+"ネットワーク名の長さ"+"ネットワークパスワード")

その順序でフォーマットされていますか? ネットワーク名、長さ、パスワードの 16 進値ですか、それともストレート ASCII ですか?

次に、私が収集したものから、受信した 160 ビット ダイジェストは、追加のソルティングなしで別のハッシュ ラウンドに直接供給されます。このように: SHA1("ハッシュの最後のラウンドからの 160 ビット ダイジェスト") 立ち上がり、繰り返します。

2) これが 4096 回発生すると、出力の 256 ビットがペアワイズ マスター キーとして使用されます。私が理解できないのは、SHA1 が 160 ビットの出力を生成する場合、アルゴリズムはどのようにしてキーに必要な 256 ビットに到達するのでしょうか?

助けてくれてありがとう。

4

1 に答える 1

8

そうです、WPA ネットワークのバイナリ キーを生成するアルゴリズムは次のとおりです。

キー = PBKDF2(パスフレーズ、ssid、4096、256)

PBKDF2 については、 http: //www.ietf.org/rfc/rfc2898.txt で説明されています。

HMAC アルゴリズムを使用して、入力のダイジェストを作成します。HMAC は任意のハッシュ関数を使用できます。ここでは、仕様では SHA1 を呼び出しています。ハッシュは、HMAC アルゴリズム内の中間状態で行われます。

H(K XOR opad, H(K XOR ipad, text))

(H = 選択したハッシュ関数、K はパスフレーズ、テキストは ssid になります)

この HMAC プロセスは、PBKDF2 によって 4096 回繰り返されます。

HMAC アルゴリズム: http://www.ietf.org/rfc/rfc2104

キーを導出するソースの例を次に示します。

https://www.codeblog.org/viewsrc/openssl-engine-0.9.6a/crypto/evp/p5_crpt2.c

int PKCS5_PBKDF2_HMAC_SHA1(const char *pass, int passlen,
   80:                            unsigned char *salt, int saltlen, int iter,
   81:                            int keylen, unsigned char *out)

salt は SSID、pass はパスワードです。

于 2010-03-17T21:01:52.760 に答える