この記事では,研究のサーベイをまとめていきたいと思います。ただし,全ての論文が網羅されている訳ではありません。また,分かりやすいように多少意訳した部分もあります。ですので,参考程度におさめていただければ幸いです。
間違えている箇所がございましたらご指摘ください。随時更新予定です。他のサーベイまとめ記事はコチラのページをご覧ください。
読みたい場所へジャンプ!
本記事の内容
大学で学習した「情報セキュリティ」の内容を網羅的にまとめていくものです。目次は以下の記事をご覧ください。
無線LANとは
無線通信を利用してデータの送受信を行うLAN(Local Area Network)のことを無線LANと呼びます。一般に,無線LANの扱いには無線局免許が不要です。鉄筋コンクリートには遮蔽されやすく,樹木にも吸収されやすい特徴があります。
仕様は,IEEE(アイトリプルイー)802.11シリーズにて定められています。周波数帯や最大速度,チャンネル幅によって,802.11bや802.11acなどの規格が定められています。免許不要で利用できるものが多いです。
IEEE802.15シリーズでは,無線LANよりも狭い範囲で有効な無線通信の規格で,無線PAN(Personal Area Network)と呼ばれています。802.15.1ではBluetooth,802.15.4ではZigBeeの規格が定められています。
ちなみに,我々がほぼ毎日利用しているWi-fiは,無線LAN機器の相互接続性が認証されていることを示すブランド名です。802.11シリーズとほぼ同じですが,若干の修正が入っているとのことです。ですが,「無線LAN≒Wi-fi」と捉えても普通は問題ないでしょう。
●802.11b
→2.4GHz
→電子レンジ等に利用
→省電力・免許不要
→最大11Mbps
●802.11g
→2.4GHz
最大54Mbps
●802.11a
→5GHz
→最大54Mbps
●802.11n(高速化の規格)
→11a(5GHz)と11g(2.4GHz)の同時利用
→最大600MBps
→チャネルボンディングの利用
→MIMOの利用
無線LANは,周波数帯を区切った「チャネル」という単位にしたがって通信を行います。各チャネルは20MHzの帯域幅をもっており,この幅が広いほど早い送受信できるデータ量が増えるため,高速な通信を行うことができます。
11nで利用されている「チャネルボンディング」は,このチャネルを結合することでデータを高速化しようとする考え方です。しかし,チャネルを結合するということは,利用できるチャネル数も少なくなるということですので,通信の干渉が起こりやすくなってしまいます。ですので,チャネルボンディングを利用して,かえって通信が遅くなってしまうというケースもあります。
また,11nでは「MIMO(Multi-Input Multi-Output)」という技術が利用されています。MIMOは送受信機に複数のアンテナを仕掛けることで,通信速度や通信距離を伸ばすものです。データを分割して,複数のアンテナで合成波を受信し,それらを復元することでデータを取り出すようなしくみです。
また,無線LANには2つの接続形態があります。1つ目は「アドホックモード」と呼ばれ,アクセスポイントを介さずに1対1で行う通信のことを指します。例えば,一眼レフで撮った写真をスマホに送る際,Wi-fi接続を利用しますが,アクセスポイントが介さないので,この通信はアドホックモードに分類されます。
2つ目は「インフラストラクチャーモード」と呼ばれ,アクセスポイントを介して行う接続のことを指します。一般に,私たちがデジタルデバイスでWi-fiを利用するときは,こちらのインフラストラクチャーモードであることが多いと思います。こちらのモードでは,ユーザは同一LAN内に繋がれた複数のアクセスポイントを行き来するため,柔軟に接続先を切り替える「ローミング」を行います。
どちらの手法とも,CSMA/CA(Carrier Sense Multiple Access with Collision Avoidance)と呼ばれる方法で,通信の衝突を回避しています。
CSMA/CA
上では,インフラストラクチャーモードでは複数の端末と接続できるという内容をお伝えしました。実は,アドホックモードにしろ,インフラストラクチャーモードにしろ,アクセスポイントが同時に接続できる端末は一台のみです。
また,通信は半二重通信と呼ばれる方式を取っています。これは,「送信中は受信できず,受診中は送信できない」といったような一方向の通信方式を指しています。
ですので,もしピンポイントで同時に複数の端末が通信を行おうとすると,通信の衝突が起こってしまいます。CSMA/CA(Carrier Sense Multiple Access with Collision Avoidance)では,「衝突が起こっていない時に通信を始めることを前提として」「通信を始めるタイミングをランダムにズラして」「受信側がACK(acknowledgement)を送る」ことで衝突を回避しながら,もし起こったとしても再送することで対応するという方式をとっています。
しかし,実際に「衝突が起こっていない時に通信を開始する」のは,どのようにして実現するのでしょうか。実際に,他の端末が通信を行なっているかどうかを検知できない問題は,「隠れ端末問題」と呼ばれています。例えば,他の機器との距離が遠い場合や,間に障害物が存在する場合に,隠れ端末問題は発生してしまいます。
この隠れ端末問題を解決する方法は,「RTS/CTS」と呼ばれています。以下のように,アクセスポイント側から全ての端末に情報を送ることで,衝突が起こらなさそうなタイミングを決定することができます。
1.端末AがアクセスポイントにRTS(送るデータの長さ情報)を送信
2.アクセスポイントはCTS(RTSの情報を含むもの)を全端末に送信
3.端末A以外の端末は自分が送るべきではないタイミングを把握
無線LANのセキュリティ技術
無線LANでは,SSID(Service Set ID)を利用してアクセスポイントを区別します。ローミングを行うためには,ESSID(Extended SSID)を設定する必要があります。このような無線LAN環境で,どのようにしてセキュリティは守られるのでしょうか。
アクセスポイントは,定期的に自身のESSIDを端末に送信しています。このときに通信されるフレームを「ビーコン」と呼びますが,このビーコンの通信を制限することもセキュリティ強化に繋がると考えられます。また,端末が物理アドレスを登録していない場合はアクセスを制限するといったような方法も考えられます。他にも,アクセスポイント側から接続先のIPアドレスやポートを制限するという方法も考えられます。
しかし,これらの対策も,無線を盗聴されてしまえばセキュリティは担保されていません。そこで,今までの流れと同じように,通信自体に認証と暗号化を施そうというアイディアが思い浮かびます。無線LANの認証と暗号化には,「WEP」と「WPA」があります。
WEP(Wired Equivalent Privacy)
WEPは,無線LANにも有線LANと同程度にプライバシーを保護しようというものです。WEPキーによる暗号化と,2種類の認証モードからなっています。
●WEPキー(共有鍵のモト)
・64bit WEP
・128bit WEP
●認証モード
・オープンシステム認証
→認証なし
・共有キー認証
→WEPキーを使った共有鍵認証(脆弱!)
しかし,上述の通り,WEPの共通鍵認証では脆弱性が指摘されているため,現在では避けられる傾向にあります。以下で,WEPの脆弱性を裏付ける要素を確認しておきます。
【WEPの脆弱性】
●WEPキーの管理
●秘密鍵長の短さ
●初期化ベクトル(共有鍵)の短さ
●整合性チェックのアルゴリズムが不適切
●RC4アルゴリズムの脆弱性
●認証メッセージの偽造可能性
WEPでは,キーをアクセスポイントと全ての端末が共有します。そのため,キーを変更をした場合の処理が面倒になってしまい,弱い共有鍵がずっと使われる傾向にあります。また,802.11標準では秘密鍵は40bitの鍵長であり,その短さが問題となっていました。さらに,その40bitも選び方に制限があり(ASCII文字・英小文字・辞書内の語),選び方自体に脆弱性があります。
WEPの共有鍵(IV:初期化ベクトル)は,WEPキーの値に基づいて24bitの乱数が毎回生成され,WEPキーに付与されます。毎回乱数が生成されるにしても,24bitという短さから,54Mbpsの無線LANで平均1回初期化ベクトルが再利用されていまします。
WEPでは,WEPキーと初期化ベクトルをもとにしてRC4というストリーム暗号を利用してキーストリームを生成します。データはキーストリームとXORをとって送られます。しかし,WEPキーは共有されているため,もし同じIVが見つかってしまえばキーストリームを推定されてしまい,たやすく複合ができてしまうのです。
また,WEPでは暗号化前に「ICV(Integrity Check Value)」と呼ばれる値をデータから生成して付与します。生成のアルゴリズムは「CRC32(巡回冗長検査)」を利用いますが,CRCの値からICVを予測するのが容易であり,ICV自体も改ざんが可能であるため,アルゴリズム自体に脆弱性が指摘されています。
さらには,RC4自体にも脆弱性が認められています。いくつかの入力パターンに関して相関のある出力をしてしまうのです。16万の初期化ベクトルのうち,約9000はこのような「弱い」値になっているといいます。この脆弱性に漬け込んだ攻撃を,「FMS攻撃」と呼びます。
最後に,認証メッセージが偽造できることが指摘できます。チャレンジとレスポンスを監視しておくことで,RC4アルゴリズムのキーストリームが分かってしまうのです。
FMS攻撃では弱い初期化ベクトルに基づいて生成したキーストリームの脆弱性(初期化ベクトル・秘密鍵を推測可能)を利用しましたが,初期化ベクトルとキーストリーム自体の相関関係を利用した攻撃を「PTW攻撃」と呼びます。
現状としては,いまだにWEPが利用されている部分もあります(プリンタ・任天度DS)。全ての機器がWPAに移行できるようにしていくべきです。
WPA(Wi-Fi Protected Access)
WPAはWEPを改良して作られた暗号化方式です。以下では,規格の種類と暗号化の方法を確認していきます。
●WPA-TKIP
・WEPキーの代わりに一時キーを用いる
→クライアントごとの更新
→接続ごとの更新
→定期的な更新
・IVを48bitに拡張
・ICVに加えMIC(Message Integrity Check)を改ざん検知に利用
・アルゴリズムはRC4のまま
●WPA-AES
・RC4の代わりにAESを利用
●WPA-PSK(Pre-Shared Key)
・事前共有鍵(PSK, パスフレーズ)を利用してWPA-TKIPかWPA-AESを施す
●WPA2
・AESが標準
・ローミングの高速化
→事前認証・PMKキャッシュ
・IEEE 802.11iにて規定
●WPA-EAP(Extensible Authentication Protocol)
・802.1に基づくサーバ認証
●WPA3
・IoTデバイスの接続簡略化
・オープンな環境下での暗号化推奨
●WPA3-SAE
・PMKの交換を「4-way handshake」に替えて「Dragonfly」を採用
公衆無線LANのセキュリティ
公衆無線LANを利用する場合,利用者は偽基地局を見極める必要があり(困難),設置側は利用者を特定できる必要があります(プロバイダ責任制限法)。また,多くの場合は「Captive Portal」という制限されたネットワーク内で通信が行われます。その制限のため,ブラウザ以外のアプリ初回使用時にエラーが発生したり,初回接続をSSLで経由で行なった場合に警告が表示される等の弊害が考えられます。
また,WPA-SSKは信頼できる人と同じESSIDで接続するプライベートなモデルです。公衆LANに利用した場合,パスフレーズが流出してしまえば,偽基地局を作ることができ,簡単に中間者攻撃が可能になってしまいます。
公衆無線LANでは,「ロケーションプライバシー」(いつ・誰と・どこにいたか)を守る必要があります。しかし,現状ではこのプライバシーもどこまで守られているかはハッキリしていません(Googleのサービスや大手携帯会社など)。
まとめ
情報セキュリティの無線LANについてお伝えしました。私たちが情報セキュリティで危険と感じる場面で,一番最初に思いつくのは「公衆無線LAN」ではないでしょうか。わたしも,ついつい保護されていない公衆無線LANを利用してしまうことがありますが,接続前に設定を確認して,避けられる場面であれば避けていくべきだと感じました。