1. はじめに
初めまして、ユニアデックス株式会社で無線製品の技術主管として働き始めて2年目になりました。丸野です。
最近では、無線LANを利用する際は、通信の盗聴や不正アクセスを防ぐために、認証や暗号化を駆使して接続することが当たり前になっています。今回は、そんな無線LANのセキュリティを確保するために行われている4-way Handshakeについて、自己学習も兼ねて説明していこうと思います。
2. 4-way Handshakeとは?
さっそくですが、4-way Handshakeとは、無線LAN接続を安全に行うために、クライアントとアクセスポイント(AP)間で通信内容を暗号化する鍵を生成する4回のやり取りです。
このプロセスがあるおかげで、攻撃者による通信の傍受リスクを低減(暗号化)するだけでなく、APは通信相手が正当なユーザーであることを確認して、ネットワークへのアクセスを許可(認証)することができます。
つまり、4-way Handshakeでは、通信に利用する暗号化キーを生成し、安全な通信を可能にするやり取りを行っています。
生成される2種類の鍵
この4-way Handshakeでは、以下の2種類の鍵を生成します。
- PTK(Pairwise Transient Key): APと端末の1対1通信(ユニキャスト通信)を暗号化するために利用される鍵です。
- GTK(Group Temporal Key): APと端末の1対多通信(マルチキャスト/ブロードキャスト通信)を暗号化するために利用される鍵です。
どちらもデータを暗号化するための鍵ですが、通信の用途によって使い分けられるという違いがあります。これらの暗号化キーを使用することで、データは安全にやり取りできるようになります。
3. 4-way Handshakeのステップ
ここでは、PTKとGTKをお互いがどのように生成し、利用可能になるのかを4つのステップに分けて説明していこうと思います。
ちなみに、端末とAP間で4-way Handshakeを行うためには、前提として、クライアントとAPはPMK(Pairwise Master Key)を保持しており、APはそれに加えてGMK(Group Master Key)も保持している必要があります。これらの鍵は、4-way Handshakeの直前に行われる、PSK認証または802.1x認証のどちらかを通じて生成されます。今回の記事では詳しい説明は省略します。
PMK(Pairwise Master Key)とGMK(Group Master Key)とは何か?
PTKやGTKといったデータを暗号化するための鍵を生成するのに必要不可欠な「マスターキー」です。
2つの鍵は、あくまで暗号化キーを生成するための「素材」として利用されます。また、2つの違いはPTKとGTKと大きく関係しており、以下のようになっています。
- PMK(Pairwise Master Key): PTKを作成するために必要な鍵
-
GMK(Group Master Key): GTKを作成するために必要な鍵
-
APはANonce(Authenticator Nonce)を生成してクライアントへ送信します。ANonceはPTKの作成に必要な素材であり、APがその場で適当に生成します。
-
クライアントはANonceと同じ特性を持つSNonce(Supplicant Nonce)を生成します。そして、以下の5つの素材を使って1対1通信を暗号化するPTKを作成します。
- PMK(Pairwise Master Key)
- ANonce(Authenticator Nonce)
- SNonce(Supplicant Nonce)
- APのMACアドレス
- クライアントのMACアドレス
この時点では、クライアントだけがPTKを保持している状態です。そのため、APにもPTKを作成してもらうために、APが持っていない素材であるSNonceをAPへ送信します。
-
APはクライアントからSNonceを受け取ったため、PTKを作成するための素材が全て揃いました。クライアント側と同様に5つの素材からPTKを作成します。
この時、クライアントとAPは同じ素材からPTKを生成するため、同じPTKを持つことになります。素材であるクライアントとAPのMACアドレスは一意であることから、作成されたPTKも一意のキーという特性を受け継ぐことができます。
さらに、APはGMK(Group Master Key)を使ってGTK(Group Temporal Key)を作成します。このGTKは直前に作成されたPTKで暗号化され、クライアントへ送信します。(GTKは1対多通信を暗号化するための鍵なので、APに接続している全てのクライアントに共通して送信されます。)
-
最後にクライアントから確認メッセージを送信して、 4-way Handshakeが完了したことを伝えます。
4. パケットキャプチャによる実演
ここからは、4-way Handshakeの各ステップをイメージしながら、実際のパケットキャプチャを使って通信の様子を確認していこうと思います。
・4-way Handshakeの確認
パケットキャプチャビューでは、クライアントとAP間で4-way Handshakeが行われていることがわかります。4-way HandshakeではEAPOL-Keyというプロトコルを使って、Message1からMessage4までの4回のやり取りが行われていることが確認できます。
・パケットの詳細(Message1)
Message1ではKey Nonceの部分で既にANonceが生成され、クライアントに送信されていることが確認できます。この、ANonceは前章で適当に作った素材と言い表した通り、実際に見るとランダムな数字や文字列で構成されていることがわかります。この特性によってANonceは一意であり、攻撃者が再利用したり情報を盗むことを防ぐ役割をになっています。
・パケットの詳細(Message2)
Mesage2もMessage1と同様にKey Nonceの部分でSNoceが生成されており、APに送信されていることがわかります。
・パケットの詳細(Message3)
Message2を受信したAPは、PTKとGTKを生成します。この時点で、クライアントとAPはPTKを持っているので、1対1の通信はPTKを使って暗号化されます。しかし、クライアントは1対多通信を行うためのGTKをまだ持っていないため、APはPTKによる暗号化通信を利用して、GTKをクライアントに送信するという説明を前章で行ったと思います。このことは、Key Data Encryptedの値から確認できます。Key DataはGTKが含まれているデータのことを表しており、このKey DataはKey Data Encryptedが0の場合はデータが暗号化されていないことを示し、1の場合は暗号化されていること示します。このことからGTKが含まれているデータはPTKにより暗号化されてクライアントへ送信されていることが確認できます。
・パケットの詳細(Message4)
Message4はAPへ確認メッセージを送信して、完了を通知しています。
5. まとめ
この記事では、無線LANのセキュリティを支える4-way Handshakeについて詳しく解説しました。このプロセスによって、クライアントとアクセスポイント間で安全に暗号化キーを共有し、通信の安全性を確保していることがお分かりいただけたかと思います。
今後、皆さんが無線LANを利用する際は、この記事で説明したプロセスを少しでも意識することで、セキュリティに対する理解がさらに深まることを願っております。
また、ネットワークエンジニアの方々には、無線環境で問題が発生した際に、迅速かつ的確なトラブルシューティングを行うための一助となれば幸いです。
We Are Hiring!