AESについて(★)

[無線LAN(Wi-Fi, IEEE802.11)の開発依頼は、フィールドデザインまでお気軽にお問い合わせください。]

タイトルはAESについてですが、内容はCCMPに関する暗号方式に関するものです(世の中一般的には、AESと呼ばれることが多いためです)。TKIPではRC4の暗号強度が弱いということで、AESを搭載したCCMPを使うようになりました。

データパケットの暗号化

CCMPでのデータパケットの暗号化の処理は下図のようになります。
CCMPでは、テンポラリー鍵(以下PTK)とPacketNumber(以下PN。48bit)とMACアドレスを種に、AESのアルゴリズムを動かしています。そのAESのアルゴリズムから暗号系列が出てきますので、それと平文データのXORを取って、暗号化されたデータとしています。
ここで、PTKとMACアドレスはセッション中は固定ですので、PNによってAES暗号系列が決まります。PNは、パケット毎に1ずつ増加させていきます。PNは48bitありますので、1msに1packetを投げたとしても、9000年近くかかります。普通の人には関係ない時間ですので、MAXまで行って、戻った時の心配はしなくてもよいです。絶対に同じ値にならないように設計されていました(後述のKRACKにてそうはなってないことがわかった)。

最終的なCCMPのデータパケットは下記のようになります。

CCMP Header
(PacketNumber:48bit, KeyID等:8bit)
暗号化されたデータ
(Nbyte:含むMIC64bit)

MIC(Message Integrity Check)の計算もCCMPを使って行われます。このMICにより、Packet Numberを偽造したReplay Attackをできなくしています。

認証について

WPA,WPA2の認証方式について、CCMPが選択できるようになっています。乱数(ANonce, SNonce)を使ったChallenge Response方式により、認証を行っています。認証と同時にテンポラリー鍵(PTK)の交換も行なっています。なお、PTKは、Challenge Response方式に用いた乱数(ANonce,SNonce)とおおもとの共有鍵(Pairwise Master Key)を使って生成しています。そのため、乱数は無線区間で見えていても、他者に知られることはありません。
下記にWPA2のシーケンスを示します(説明はTKIPの項を参照ください)。

最初のEAPOL-KEYから順にMessage1, Message2, Message3, Message4と呼んでいます。パケットが4つあるので4 way handshakeとも呼んでいます。