web-dev-qa-db-ja.com

4ウェイハンドシェイククラッキングはどのように正確に機能しますか?

私の理解から、これはWPA2がホームネットワークでどのように機能するかです。

  • PSK(事前共有キー)は、PMK(ペアワイズマスターキー)を生成するために使用されます。PMK(ペアワイズマスターキー)は、ANon(APナンス)と共に使用され、PTK(ペアワイズトランジェントキー)を作成します。
  • PTKは、KCK(キー確認キー、128ビット)、KEK(キー暗号化キー、128ビット)、およびTEK(時間暗号化キー、128ビット)に分割されます。
  • KCKは、EAPOLパケット2、3、および4でMACを構築するために使用されます。
  • KEKは、クライアント(GTKなど)に送信される一部のデータを暗号化するために使用されます。
  • TEKは、後でセッション中にクライアントとAP間のトラフィックを暗号化するために使用されます。

WPA 4ウェイハンドシェイク:

  1. APはANonse(AP Nonce)をクライアントに送信します。これは基本的に256ビットのランダムな整数です。
  2. クライアントはANonceとPMKを使用してPTK(ペアワイズトランジェントキー)を生成し、CNonce(クライアントナンス)とMACを送信します。
  3. APはMACとGTK(Group Temporal Key)をクライアントに送信します。
  4. クライアントはMACでACKを送信します。

ここで、PTK全体が使用されない場合(ハンドシェイク中にKCKとKEKが使用されますが、TEKは使用されない場合)、ハンドシェイククラッキング(ディクショナリ攻撃など)はどのように機能しますか?辞書からの単語がPSKとして使用され、PMKとAnonce(これもハンドシェイクでキャプチャされます)がPTKを生成することを理解していますが、キーの1/3が使用されていないときに、PTKが正しいことをどのように知ることができますか?

20
user3362334

簡単に言えば、4ウェイハンドシェイクパスワードの「クラッキング」は、4番目のフレームでMICをチェックすることで機能します。つまり、PTKのKCK部分が正しいことのみをチェックします。 4ウェイハンドシェイクには、PTKの他の部分のチェックを可能にするデータは含まれていませんが、次の2つの理由により、実際には必要ありません。

  1. MIC検証とは、APがPTK(およびその結果としてパスワード)の有効性をチェックする方法です。
  2. 有効なKCKを持つが他の無効な部分があるPTKを生成するパスワードの可能性は非常に低くなります。KCKは128ビットであるため、正しくないパスワードが正しいKCKを生成する確率は2です。-128

全体的に、4方向のパスワード「クラッキング」は次のように機能します。

  1. 4ウェイハンドシェイクが解析され、SPとSTAアドレス、APとSTAナンス、EAPOLペイロードとMICが4番目のフレームから取得されます。
  2. PMKの計算には候補パスワードが使用されます。
  3. PTKは、PMK、AP、STAのアドレスとナンスから計算されます。
  4. 計算されたPTKからのKCKは、ステップ1で取得されたEAPOLペイロードのMICを計算するために使用されます。
  5. 計算されたMICは、ステップ1で取得したMICと比較されます。一致する場合、候補のパスワードは正しいと報告されます。

攻撃の実際の実装を確認したい場合は、開始点の1つは coWPAtty ソースです。これらは比較的小さく、自己完結型であり、読みやすいです。

16
Andrey