TKIPについて(★)

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

TKIPは、Temporal Key Integrity Protocolの略で、WEPの脆弱性が初期に見つかったため、開発された暗号方式です。WEP暗号方式に対応したハードウェアを持っていれば、ソフトウェア変更だけでこのTKIPに対応できます。
WEPからの変更点は下記になります。

  • 暗号鍵をパケットごとに変更するようにした。
  • IV(Initial Vector)を48bitにした。WEPでいうところの暗号鍵をフレームごとに変えているため、同じIVになっても、WEPであったような脆弱性をなくしています。
  • 接続毎に違う暗号鍵を使っている。このことで、ある接続時の暗号鍵が解読されても、次回の接続ではその鍵では解読できなくなっている。
  • 暗号鍵の導出にSTAのMACアドレスを入れている。このため、STAごとに違う暗号鍵になっていて、あるSTAの暗号鍵が解読されても他のSTAとの通信は傍受できないようになっている。
  • APとSTAで共有している暗号鍵を直接使わず、そこから派生したテンポラリー鍵(128bit)を使っている。
  • 改ざんの検出(Message Integrity Check)を強化した。
  • IVを必ず1ずつインクリメントしなければならないとし、シーケンス番号の役割を与えた。このため、Replay Attackから守れるようになった。
  • Message Integrity Checkのエラーカウンタを用意し、不正な攻撃は接続を切断するようにした。

また、TKIPによるデータの暗号方式を使う前に、相手を認証しますが、認証方式には、WPA, WPA2と呼ばれる方式を使っています。

データパケットの暗号化

TKIPでのデータパケットの暗号化の処理は下図のようになります。
下図のKeyMix1,KeyMix2は、複雑な計算はなく、Look Up Tableで値を参照し、変換するだけです。また、Michael関数も、XOR, swap, シフト操作で計算できるようにしています。つまり、WEPから追加ハードウェアなしで、ソフトウェアで処理できるようにしています。

また、KeyMix2から生成される104bitは、IVの下位16bitにより変化します。これは、パケットごとに変化することを意味しており、WEPでの暗号鍵が固定である脆弱性をなくす動作をしています。さらに、65536パケット毎に、もととなる鍵をKeyMix1にて更新していますので、より強力になっています。

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

IV+拡張IV
(48bit)
暗号化されたデータ
(Nbyte:含むMIC64bit)
ICV
(24bit)
  • IV+拡張IVは、パケット毎に1ずつ増加していくパラメータです。暗号化アルゴリズムで利用されるとともに、シーケンス番号の役割もして、Replay Attckの対策にも利用されます。
    このIVは、暗号化されないでパケットに付けられます。
  • ICVは、WEPの時と同じアルゴリズムで算出された値です。TKIPでは、MICがあるのでこのパラメータは意味はありません。WEPのハードウェアを利用しているため、副産物として追加されてしまうものです。

WPA認証

WPAとは、Wi-Fi Protected Accessの略で、Wi-Fiが策定した認証方式です。先にWi-Fiが策定し、それをIEEE802.11に反映しています。
WPA認証では、APとSTAでの共有鍵(Pre-Shared Key)を使って、Challenge Response方式により、認証を行っています。WPA認証は、IEEE802.11の接続処理が完了した後に、EAPOL-KEYというデータパケットを利用して、行います。
この認証では、そこで使われた乱数(ANonce,SNonce)からユニキャスト用のテンポラリー鍵(PTK: Pairwise Transient Key)を生成しています。このやりとりを、4 Way Handshakeと言っています。その後、ブロードキャスト用のテンポラリー鍵(GTK: Group Transient Key)を共有しています。このやり取りを、Group Key Handshakeといっています。
そして、双方で、暗号鍵を設定できたら、データ通信を開始します。

WPA2認証

WPA2認証は、WPA認証のGroup Key Handshakeを4 Way Handshakeに入れた形になったものです。それ以外は同じです。