みなさん、こんにちは。
今回はクライアントが無線LANへ接続するためにどのような手順を踏んでいるのかについてお話させていただきます。
下記の図の通りを大きく3つのステップに分割して説明します。
図1:接続Step図
Step1. Association
Associationのステップはさらに3つに分割されますが、まずは以下の図を参照ください。
図2:Association
1-1. Probe要求/応答
この処理は省略されることがあります。
まずクライアントは接続したいアクセスポイントを探す必要があります。
クライアントがアクセスポイントを探すには以下の2つの方法があります。
(1)アクティブスキャン
クライアントは①のProbe要求を使い積極的にアクセスポイントをスキャンします。
スキャンの際に投げるのがProbe要求となり、スキャンに応答したアクセスポイントが投げるのがProbe応答です。
(2)パッシブスキャン
クライアントはアクセスポイントからのビーコンを待ちます。
この場合①のProbe要求/応答は行われず、ビーコンがProbe応答と同じ役割を果たします。
1-2. Authentication要求/応答
このAuthentication(認証)は802.11の認証です。
これはWEPの際に利用していた手順となり、実質的には認証しておらずあまり意味をなしていないですが、省略できない手順となります。
以下の2パターンが存在します。
(1)オープン認証(Open System)
クライアントが認証要求を送信すれば、アクセスポイントは必ず認証応答(許可)を返します。
そのため実質的には認証は行われていません。
(2)共有鍵認証(Shared Key)
APとクライアント間でWEPキーを用いた認証を行います。
WEPキーは暗号化のために利用するのですが、それを認証にも使用します。
WPA2のPSK(Pre-Shared Key)とは別物なので注意しましょう。
ここで少し話が脱線します。
WEPを暗号化に利用する場合、共通鍵認証の方式は推奨されません。
共通鍵認証は認証パケットにWEPキーの情報がのるため、認証パケットをキャプチャすることでWEPキーの解読を行うことが可能です。
WEPキーが解読できればWEPで暗号化されたデータも復号できてしまうため、データの中身までを抜き取られてしまいます。
その点オープン認証では認証時にWEPキーのやりとりが行われないため、WEPキーを解読されることはありませんでした。
というのはWEPが主流の時代の過去の話であり、現在ではWEPキーの解読が容易にできてしまうため、
暗号化にWEPを利用すること自体が推奨できません。
-脱線終わり
1-3. Association要求/応答
Association要求でクライアントはアクセスポイントへ接続したいという要求を送り、Association応答でアクセスポイントが接続許可ないし拒否を返答します。
オープン認証もしくは暗号化方式にWEPを利用している場合はここで接続完了となり、クライアント/アクセスポイントの双方で設定したWEPキーを利用して、データの暗号化/復号化を行いデータ通信が可能となります。
オープン認証の場合、クライアント/アクセスポイント間でWEPキーが異なるとデータの復号化ができないため、接続はできてもデータ通信は行えないといった事象が発生します。
昨今はWPA2-Personal/Enterpriseで暗号化を行うのが一般的なので、この後に再度認証のステップが入ります。
ちなみにWPA2については下記のカグヤマ先生の教えを参考にしてください。
Step2. 認証①(マスターキー生成)
WPA2ではMSK(Master Session Key)と呼ばれる鍵を元に、実際の通信を暗号化するための鍵を生成します。
まず初めに以下の2つのマスターとなる鍵を生成します。
ここで生成される鍵は
・PMK(Pairwise Master Key)
PMKはユニキャスト通信に使用する鍵の元となります。
PMKはMSKより生成されますが、生成/共有する方法はWPA2-Personal/Enterpriseで異なる動作となります。
・GMK(Group Master Key)
GMKはマルチキャスト/ブロードキャスト通信に使用する鍵の元となります。
こちらはPMKとは異なり、アクセスポイントがランダムに生成します。
またGMKは一定時間ごとに更新を行います。
以下はWPA2-PersonalとWPA2-Enterpriseのそれぞれの場合のMSK/PMKの生成方法です。
(1)WPA2-Personalの場合
アクセスポイントとクライアントはPSK(Pre-Shared Key)を元に特定のアルゴリズムでMSKを作成します。
またMSKの一部(最初の256ビット)よりPMKを生成します。
このロジックからわかる通り、同一のSSID/PSKを利用するアクセスポイントとクライアントは、結果的にPMKも共通のものとなります。
(2)WPA2-Enterpriseの場合
802.1XのEAP認証の過程でMSKは生成されます。
その後WPA2-Personalと同様にMSKの一部よりPMKを生成します。
以下の図を参照ください。
図3:802.1X認証におけるPMK生成
802.1X認証の認証シーケンスは
の通りなので省略していますが、認証サーバが接続許可をアクセスポイントに送る際にMSK(Master Session Key)をあわせて送付し、アクセスポイントはクライアントにMSKを送信します。
その後認証サーバとクライアントはMSKからPMKを生成し、認証サーバは生成したPMKをアクセスポイントに通知します。
ここでアクセスポイントとクライアントが同一のPMKを保持します。
WPA2-EnterpriseではWPA2-Personalと異なり、アクセスポイントと各クライアント間ではそれぞれ個別のPMKを保持します。
Step3. 4-way Handshake(テンポラリーキー生成)
ここまででアクセスポイントとクライアントが双方でPMKを保持し、またアクセスポイントはGMKを保持しました。
しかしPMK/GMKはあくまでマスターキーであり、実際の通信に利用する暗号キーは4-way Handshakeから用途ごとに以下の2つの鍵を生成します。
PTK(Pairwise Transient Key):PMKより生成するユニキャスト通信を暗号化するための鍵
GTK(Group Temporal Key):GMKより生成するマルチキャスト/ブロードキャスト通信を暗号化するための鍵
以下の図を参照ください。
図4:4-way Handshake
①アクセスポイントはランダム値でAuthenticator Nonce(ANonce)を生成しメッセージ1でクライアントへ送信します。
②クライアントはランダム値でSupplicant Nonce(SNonce)を生成し、4つの要素(PMK/ANonce/SNonce/アクセスポイント、クライアント双方のMACアドレス)からPTKを生成します。
そしてSNonceをメッセージ2でアクセスポイントへ送信します。
③アクセスポイントも同様に4つの要素からPTKを生成します。
PTK自体をクライアントからアクセスポイントへ送信するのではなく、アクセスポイントも4つの要素からPTKを自身で生成します。
クライアント/アクセスポイントは双方で同じ要素からPTKを生成するため、同一のPTKを保持します。
クライアント/アクセスポイント双方のMACアドレスが要素となることから、各クライアントとアクセスポイント間でPTKは一意であることがわかります。
またアクセスポイントはGMKよりGTKを生成し、メッセージ3で暗号化したGTKをクライアントへ送信します。
GTKはPTKとは異なりアクセスポイント配下のクライアント全てで共通のものとなります。
④クライアントはアクセスポイントへメッセージ4で応答を返し、4-way Handshakeが完了したことを通知します。
クライアントはPTKとGTKをインストールし、アクセスポイントアクセスポイントはPTKをインストールします。
ここまできてやっと実際に通信を行うことが可能となります。
さて長くなってしまいましたがここまでが無線クライアントが通信を開始するまでのステップとなります。
次回もお楽しみに。
他のおすすめ記事はこちら
著者紹介
SB C&S株式会社
技術本部 技術統括部 第2技術部 1課
藤ノ木 俊