トリコロールな猫/セキュリティ

思いついたことをぼちぼち書いてます。

無線LANの暗号化方式について整理してみた

無線LANのセキュリティって分かりづらいよね。と思っていて調べてみたら、どうも

  1. 暗号化アルゴリズム
  2. 完全性の検証方法
  3. 規格名

などが同次元に語られるせいで無駄に複雑になっているように思われます。
そこで、いくつかの切り口でまとめてみました。

とりあえず表でまとめてみる

この表で一発解決な気がする。

暗号化方式 暗号化アルゴリズム 完全性の検証 規格「WEP」 規格「WPA」 規格「WPA2」
WEP RC4 CRC32 必須 - -
TKIP RC4 Michael - 必須 任意
CCMP AES CCM - 任意 必須

TKIPとAESって同じ土俵で語られることじゃなくね?と漠然と思っていたのがこの表で解決しました。TKIPはRC4で暗号化し、Michaelで完全性の検証(=改ざん検知)するというプロトコルであり、AESは(RC4と同列で語られるべき)暗号化アルゴリズムであると。

で、世間でいわれる「無線LANのセキュリティはAESで」というのは、「(AESという暗号化アルゴリズムを利用する)CCMP」であるということですね。

WPA-AESとかWPA2-TKIPみたいのもあってこれも混乱の元ですが、実装が必須か任意かの違いですね。WPAはTKIPの実装が必須、WPA2はCCMP必須、と。

以下、暗号化方式の特徴。

WEP

ユーザが決めたパスワードに初期化ベクトルを連結したものから得られる疑似乱数をマスターキーとし、マスターキーを使ってRC4方式で暗号化する方式。鍵長が短い上、キーの更新はパスワードが変更されない限りは行われないのでかなり脆弱。

改ざんの検出はCRC32を使って計算したICVという値を付与することで行うが、改ざん後のICV値の推測が容易なため、実際には改ざんを検知することができない。

TKIP

暗号化アルゴリズムはWEPと同じRC4ですが、初期化ベクトルの長さが2倍、マスターキーから派生したキーを使って暗号化する、改ざんの検知にMichaelを使っている、キーを更新する、などWEPの弱点を補っている。

CCMP

TKIPは、WEPのみ対応だった初期の機器をそのままより安全に使えるようにするための拡張だったのに対し、CCMPは暗号化の処理方法を1から組み直したもので、WEPはもちろんTKIPよりも安全です。当然暗号化アルゴリズムも、RC4よりAESの方が強度が高いです。

CCMはCounter with CBC-MACの略で、完全性の検証だけでなく暗号化の方法も含んだ暗号利用モードのことだそうです。

AESとCCMは情報セキュリティ政策会議が公開している「政府機関の情報セキュリティ対策のための統一技術基準」の「電子政府推奨暗号リスト」にも載っている方式です。

「パーソナル」と「エンタープライズ」は認証方法の違い

MacでもWindowsでも、WPAとWPA2には「パーソナル」と「エンタープライズ」の2種類がありますが、これは無線LAN接続時の認証方法の違いらしいです。

パーソナルはPSK認証

Pre-Shared Keyの略で、「パーソナル」を選ぶとこれになる。
ユーザが決定するパスフレーズを、暗号化に必要な様々な鍵の元になるマスターキーとして使うやり方です。
事前にアクセスポイントにログインしてパスフレーズを設定しておく必要があります。

エンタープライズIEEE 802.1X認証

エンタープライズ」の認証はIEEE 802.1Xというプロトコルを使って行います。無線LANの規格がIEEE 802.11gとかIEEE 802.11nとかなのでとっても紛らわしいですよね。嫌がらせとしか思えない。

なお、必要性の高さから無線LANでの普及が先でしたが、有線LANでも使えます。

IEEE 802.1Xは、ネットワークに接続したいクライアントが認証を受けるために必要なソフトウェア「Supplicant」、認証を中継し、認証後に接続される機器「Authenticator」、認証を行うサーバ「Authentication Server」の3つで構成されています。

一般的に、無線LANではAuthenticatorはアクセスポイント、Authentication ServerはRADIUSサーバです。

認証手順そのものはIEEE 802.1Xでは決められておらず、EAPを使います。

認証手順

EAP-TLS

認証サーバのサーバ証明書とクライアント端末のクライアント証明書による認証。証明書を保管したICカードやUSBトークンなどを使ったりする。一番安全。

EAP-TTLS

認証サーバのサーバ証明書と、クライアントのユーザ名とパスワードによる認証。

PEAP

認証サーバのサーバ証明書と、クライアントのユーザ名とパスワードによる認証。EAP-TTLSとほぼ同じ仕組みだが、こちらはWindowsに同梱されている。

MacWindowsの設定

無線LANの設定画面に出てくる用語と実際の暗号方式や認証方式をまとめてみました。

Macの場合

「セキュリティ」 暗号化方式 認証方式
WEP WEP -
WPA/WPA2パーソナル CCMP、接続先がサポートしていなければTKIP PSK
WPA2パーソナル CCMP PSK
ダイナミックWEP WEP IEEE 802.1X
WPA/WPA2エンタープライズ CCMP、接続先がサポートしていなければTKIP IEEE 802.1X
WPA2エンタープライズ CCMP IEEE 802.1X

Windowsの場合

手元に環境がないので分かるもののみですすいません。

「セキュリティの種類」 「暗号化の種類」 暗号化方式 認証方式
WEP WEP WEP -
WPA2-パーソナル AES CCMP PSK
WPA2-パーソナル TKIP TKIP PSK
WPA2-エンタープライズ AES CCMP IEEE 802.1X
WPA2-エンタープライズ TKIP TKIP IEEE 802.1X

WindowsがTKIPとAESを同列に扱ってるのが諸悪の根源か?

基本はWPA2で

当然新しいものの方が安全なわけなので、個人で使う場合は

  • Macなら「WPA2パーソナル」
  • Windowsなら「WPA2-パーソナル」+「AES」

を選びましょう。認証はPSKですね。

企業の無線LANだったらWPA2エンタープライズ+AES+EAP-TLSが理想ですが、接続用のICカード等準備できるところは少ないでしょうから認証はPEAPですかね。Windowsなら最初から入ってるし。

まとめ

調べてみたらだいぶカオスなことになっていて、CiscoCCNA Wireless Study Groupのこのスレとか「ネットワークエンジニアとして」という素晴らしいサイトを見つけられなかったら分からないままだったと思います。

私と同じようにモヤモヤしている方の助けになれば幸いです。