Wi-Fi (IEEE 802.11) #
Wi-Fi (IEEE 802.11) は、家庭・カフェ・職場・空港 — インターネットに接続する端末の入口 として圧倒的に使われている無線 LAN プロトコル。Ethernet と同じ MAC + EtherType + Payload のフレーム形式を共有しながら、無線区間だけは根本的に違う物理に直面しているため、接続するまでの手順 / 暗号化 / 衝突回避 / 速度・チャネル選択 など、有線では考える必要のなかった層を全部抱えている。
「SSID とパスワードを入れたら繋がる」の裏では、実は 6〜10 段階の交渉が走っている。Beacon を聞く → Probe で能動探索 → Open System 認証 → Association → 4-way Handshake で暗号鍵を生成 → DHCP で IP を貰う → Data 通信開始 という長いシーケンスが、ボタン 1 つの裏に詰まっている。本稿はこの裏側を 1 枚に展開するところから入り、WPA の世代と暗号 / 物理層 (周波数とチャネル) / Wi-Fi 6/6E/7 で何が変わったか / L2 攻撃面 / MAC ランダム化以後のプライバシー まで通しで扱う。Ethernet との対比は別記事 (Ethernet) にゆずり、ここでは「無線ゆえの違い」に集中する。
1. なぜ無線は有線と根本的に違うのか #
Wi-Fi が Ethernet と同じ L2 であるにもかかわらず仕様が複雑なのは、電波という共有媒体に乗せている事実から来ている。
| 観点 | Ethernet (有線) | Wi-Fi (無線) |
|---|---|---|
| 媒体 | 1 ペア 1 リンク (スイッチで分離) | 1 つのチャネルを近隣全員で共有 |
| 衝突検出 | 全二重で衝突しない (現代) | 送信中に自分の電波で受信を遮蔽 → 検出不可能 |
| 衝突回避 | 不要 | CSMA/CA で「送る前に静かになるまで待つ + ランダム待機」 |
| 双方向 | 全二重 | 半二重 (送信中は受信できない) |
| 損失 | ケーブル不良時のみ | 常時起こる (壁・人体・電子レンジ・他 AP の干渉) |
| L2 再送 | しない (TCP の仕事) | する (各フレームに ACK を要求, 無ければ MAC 層で再送) |
| 識別子 | 物理ポート | MAC アドレス + AP の BSSID + SSID + チャネル の組合せ |
| セキュリティ | 物理アクセスが前提条件 | 電波は誰でも傍受可能 → 暗号化が必須 |
「衝突は検出できないので、起こさないように回避する」 という設計思想 (CSMA/CA, Carrier Sense Multiple Access with Collision Avoidance) が Ethernet の CSMA/CD と分かれた根本。送信前に DIFS (DCF Inter-Frame Space, 待ち時間) + ランダムバックオフ (contention window から取る) を挟み、その間に他の電波がなければ送信、あれば再カウント。送信したフレームには必ず ACK を要求し、ACK が来なければバックオフを倍々にして再送 (binary exponential backoff)。
「hidden node 問題」 — A と C が両方 AP に届くが互いには届かない位置にいるとき、A と C は CSMA/CA でも互いを検出できず衝突する — を解くための RTS/CTS (Request To Send / Clear To Send) ハンドシェイクもオプションで存在するが、オーバーヘッドが大きいため近代の高密度 AP では使わないことが多い。
これらすべてが「Wi-Fi は速度が公称値の 半分〜2/3 しか出ない」「人が増えると線形に遅くなる」「5 GHz は速いが届かない」といった、ユーザが日常的に体感する性質の起点になっている。
2. 接続のライフサイクル — SSID をタップしてから IP が振られるまで #
「Wi-Fi に繋がった」までに実は 6 段階のやりとりが走っている。Wireshark の monitor mode でキャプチャすると 1 秒未満の間に全部見える。
押さえどころ:
- Beacon は AP が 約 100 ms 周期で常時ブロードキャストしているもの。クライアントは画面に Wi-Fi 一覧を出すためにこれを傍受しているだけなので、「SSID 一覧が見える ≠ 接続を試みている」。「Hidden SSID は Beacon に SSID を載せない」が、Probe Request に SSID 名が乗るため意味のあるセキュリティにはならない。
- Open System Authentication の "認証" は WEP 時代の遺物で、現代では実質「ハロー」の交換。本物の認証は次の 4-way Handshake が担う。
- 4-way Handshake (EAPOL) が WPA2/WPA3 の中心。PMK (事前共有された鍵) から PTK (このセッションだけの鍵) を生成し、お互いに「同じ PMK を持っている」ことを MIC で証明する。4 つのフレームすべて EAPOL (EAP over LAN, EtherType=0x888E) で運ばれる。
- PTK 生成式:
PTK = PRF(PMK, ANonce, SNonce, AP MAC, STA MAC)— 両端のランダム値 (Nonce) を混ぜることで、毎回異なる鍵 (PFS に近い性質) が出る。PMK は再利用されてもセッション鍵は再利用されない。
WPA2-Enterprise (802.1X) の場合、Open System の代わりに EAP が走る (EAP-TLS / PEAP / EAP-TTLS)。RADIUS サーバ が認証バックエンドになり、証明書ベース (EAP-TLS) または AD パスワード (PEAP-MSCHAPv2) で個人を識別。4-way Handshake は EAP 完了後に動く点は同じ。
# Linux で AP をスキャン (要 root, NetworkManager 系)
nmcli device wifi list # チャネル / 信号強度 / セキュリティ方式
sudo iw dev wlan0 scan | grep -E "SSID|signal|Authentication suites"
# 接続済み AP の詳細 (チャネル幅 / MCS / RSSI)
iw dev wlan0 link
iw dev wlan0 station dump
# 監視モード (パケット解析用) - 一般用途では不要
sudo iw dev wlan0 set monitor control
3. WPA の世代交代 — WEP / WPA / WPA2 / WPA3 #
無線は電波を誰でも傍受できるため、暗号は最初から必須だった。だが「最初に出した方式が壊れて、次の方式が壊れて、また次の方式…」を四半世紀繰り返している。
| 方式 | 年 | 暗号 | 認証 | 状態 |
|---|---|---|---|---|
| WEP (Wired Equivalent Privacy) | 1997 | RC4 (40 / 104 bit 鍵) | 共有鍵 | 完全に死亡 — 数分で破られる (FMS, KoreK, PTW 攻撃)。今あったら無効化する以外ない |
| WPA (TKIP) | 2003 | RC4 + TKIP の鍵更新 | PSK or 802.1X | WEP の応急処置 — 既存ハードを WEP のまま使い続けられないように、ファーム更新で繋ぎ。現代では非推奨 |
| WPA2 (CCMP/AES) | 2004 | AES-CCMP (CCM mode AES-128) | PSK or 802.1X (EAP) | 15 年間の主役。2017 年 KRACK 攻撃で 4-way Handshake のリプレイ脆弱性が公表 (パッチ済) / PMKID 攻撃 (2018) で PSK のオフライン解析が容易に |
| WPA3 (SAE/GCMP) | 2018 | AES-GCMP-128/256 | SAE (Simultaneous Authentication of Equals) — Dragonfly 鍵交換 | オフライン辞書攻撃に耐性 / 初期実装に Dragonblood 攻撃 (2019) → 修正済 / PMF (802.11w) 必須 |
WPA3 の SAE が WPA2-PSK と決定的に違う点: WPA2-PSK では PMKID = HMAC(PMK, …) が AP の Beacon/Association に乗っており、1 フレーム傍受するだけで PSK のオフライン辞書攻撃が始められる (hashcat -m 22000)。SAE は 平文で乗る情報からは PMK を導出できない 数学設計 (有限体上の dragonfly 鍵交換) なので、**「弱い PSK でも辞書攻撃から守られる」**という性質を持つ。
PMF (Protected Management Frames, 802.11w) は Auth / Deauth / Disassoc などの管理フレームを暗号化する規格。これがないと、攻撃者は Deauth フレームを偽装するだけで任意のクライアントを切断できる (= Wi-Fi 版 DoS / evil twin の足がかり)。WPA3 では PMF 必須、WPA2 でもオプション有効化可能。
# 接続中の暗号方式を確認
nmcli connection show <CONN-NAME> | grep -i security
iw dev wlan0 link # "RSSI: ... CCMP/GCMP" のような行に出る
2026 年時点の選び方: 新規構築は WPA3-Personal (SAE) + PMF 必須。互換性のため WPA3/WPA2 transition mode も選べるが、WPA2 のみのデバイスがいなくなったら WPA3 専用に倒すのが推奨。エンタープライズは WPA3-Enterprise + EAP-TLS (証明書) が最適解。SSID は隠さない (前述の通り意味がない) かつ MAC アドレスフィルタリングも実質無効 (簡単に偽装可能) — どちらも「やった気になるが守ってない」典型。
4. 物理層 — 周波数バンドとチャネル幅 #
「Wi-Fi が遅い・繋がらない」のほとんどは物理層の混雑が原因なので、周波数バンドとチャネルの基礎は知っておく価値が高い。
押さえどころ:
- 2.4 GHz は混雑 — 帯域が狭く、non-overlap は 1, 6, 11 の 3 ch しかない。隣家の AP・Bluetooth・電子レンジ・無線マウスが全部ここに集まる。遅い、けれど壁を抜ける。IoT デバイス (スマートロック・スマート電球) は今でもここを使う
- 5 GHz は速くて混雑が少ない — 1 ch あたり広く取れる (80/160 MHz)。ただし壁の透過率が悪く距離が短い。DFS (Dynamic Frequency Selection) 領域 (5.25-5.72 GHz, 日本の W53/W56 の一部) は気象/船舶レーダを検出したら強制的に他 ch へ移動する義務があり、移動中の数秒〜数分間 AP が落ちることがある (これが「たまに切れる」の原因の 1 つ)
- 6 GHz は新規バンド (2020〜) — Wi-Fi 6E / Wi-Fi 7 専用。レガシー機が居ない = 混雑がない、320 MHz 幅 (Wi-Fi 7) で理論 5 Gbps 超。WPA3 必須、距離は 5 GHz よりさらに短い
MCS (Modulation and Coding Scheme) はその瞬間の SNR (信号対雑音比) で決まる「速度の段」。AP に近ければ MCS が上がり 4096-QAM (Wi-Fi 7) で詰め込めるが、離れると 256-QAM → 64-QAM → BPSK と落ち、最終的には繋がらない。**「移動するとだんだん遅くなる」**のはこれが起きている。
MIMO / MU-MIMO / OFDMA:
- MIMO (Multiple Input Multiple Output) — 複数アンテナで空間多重。1 端末で 2 ストリーム → 2× 速度 (Wi-Fi 5 で標準化)
- MU-MIMO (Multi-User MIMO, Wi-Fi 5/6) — 同時に複数端末 に異なるストリームを送れる
- OFDMA (Orthogonal Frequency Division Multiple Access, Wi-Fi 6) — チャネルを周波数軸で細かく分割 (RU = Resource Unit) し、小さなパケットを送る複数端末を同時に詰め込む。IoT が多い高密度環境で効く
5. Wi-Fi 6 / 6E / 7 — 何が変わったか #
| 世代 | 通称 | 標準 | 主な進化 |
|---|---|---|---|
| Wi-Fi 4 | n | 802.11n (2009) | MIMO / チャネルボンディング (40 MHz) |
| Wi-Fi 5 | ac | 802.11ac (2014) | 5 GHz 専用 / 80・160 MHz / MU-MIMO (downlink) |
| Wi-Fi 6 | ax | 802.11ax (2019) | OFDMA / 1024-QAM / TWT (省電力) / 上り MU-MIMO |
| Wi-Fi 6E | ax + 6 GHz | 802.11ax 拡張 (2020) | 6 GHz バンド開放 (1200 MHz の新規帯域) |
| Wi-Fi 7 | be | 802.11be (2024) | 320 MHz チャネル / 4096-QAM / MLO (Multi-Link Operation, 複数バンド同時利用) / 16 ストリーム |
Wi-Fi 6 で本質的に変わったのは OFDMA で、「全帯域を 1 端末が独占する Wi-Fi 5 までの方式から、複数端末を周波数軸で多重する方式へ」。スマート家電 / IoT が増える高密度環境で実効スループットが目に見えて上がる。
Wi-Fi 7 の MLO は「2.4 + 5 + 6 GHz の複数バンドに同時に繋ぎ続け、フレームを動的に分散・冗長化する」技術。1 つのバンドが混雑しても他に逃せるため、遅延揺らぎが減り、XR / クラウドゲーム / 映像配信 のような遅延敏感な用途に効く。
買い時の判断: 既設 AP が Wi-Fi 5 (ac) なら Wi-Fi 6 への置換は確実にメリットあり (特に端末数が増えた家庭・小規模オフィス)。Wi-Fi 6E / 7 は 6 GHz 対応端末を持っているかが鍵 — iPhone 15 Pro 以降 / Pixel 8 以降 / 最新 PC は 6E 対応, それ以下は 5 GHz までしか使わないので恩恵は限定的。
6. L2 攻撃面 — 電波は誰でも傍受できる #
無線という性質上、「物理的にビルに入らないと届かない」が成立しない。駐車場から、隣のオフィスから、ドローンから、攻撃が成立する。Wi-Fi 特有の攻撃を最低限知っておく:
| 攻撃 | 仕組み | 防御 |
|---|---|---|
| Deauth Flood | 偽装 Deauthentication フレームを流し任意の端末を切断。Aircrack-ng の aireplay-ng -0 が定番 |
PMF (802.11w) 必須化 — 管理フレームが署名され偽装不可に |
| Evil Twin / KARMA | 同名 SSID の偽 AP を立て、信号を強くして端末を意図せず接続させる。クレデンシャル奪取・MitM の足がかり | 証明書認証 (WPA3-Enterprise + EAP-TLS) + OS の「保存済み SSID 自動接続」を信頼しない設計 |
| PMKID 攻撃 | WPA2 AP の Beacon / Association から PMKID = HMAC-SHA1(PMK, "PMK Name", AP MAC, STA MAC) を抜き、PMK のオフライン辞書攻撃。hcxdumptool + hashcat -m 22000 の組合せが定番 |
強い PSK (15 文字以上, 辞書非依存) または WPA3-SAE への移行 |
| WPS PIN brute force | WPS (Wi-Fi Protected Setup) の 8 桁 PIN を、前半 4 桁 / 後半 3 桁 + チェック 1 桁の独立検証を悪用してわずか 11,000 試行で突破。Reaver が代表ツール | WPS を完全無効化 (現代の AP では大抵デフォルト OFF) |
| Captive Portal MitM | カフェの「Wi-Fi 利用同意」ページを偽装し、セッション Cookie や認証情報を回収 | VPN を Wi-Fi 接続直後に張る + HSTS 厳格な OS + HTTPS-only ブラウザ設定 |
| Beacon / Probe 偽装 (KRACK 系派生) | 4-way Handshake の M3 を再送させて nonce を再利用させ、CCMP の同一鍵で 2 度暗号化 → 平文回復 | OS / AP のパッチ適用 (2017 以降) — 現行 OS では基本対策済 |
「Hidden SSID」「MAC アドレスフィルタリング」は防御として無価値。Hidden SSID は Probe Request に名前が乗るため接続中の端末から漏れる、MAC フィルタは ip link set address で偽装可能。「やった気になる」典型例として、設計時には選択肢から外す。
# 周辺の AP / クライアントを観察 (要 monitor mode 対応 NIC)
sudo airodump-ng wlan0mon # AP, BSSID, ch, encryption, station 数
sudo airodump-ng -c 6 --bssid AA:BB:CC:DD:EE:FF -w cap wlan0mon # 特定 AP に絞る
# 4-way Handshake をキャプチャ (PSK 解析の準備)
sudo aireplay-ng -0 1 -a AA:BB:CC:DD:EE:FF -c 11:22:33:44:55:66 wlan0mon # 1 回 deauth で再接続を誘発
# PMKID 単独で抜く (WPS や 4-way 待ちなしで PSK 解析)
sudo hcxdumptool -i wlan0mon -o capture.pcapng --enable_status=1
これらは自身が管理するネットワーク / 明示的な許可がある場合のみ実施可能。許可なき他人のネットワークへの実行は不正アクセス禁止法 / 各国の電波法・コンピュータ犯罪法に該当する。
7. MAC アドレスランダム化と現代のプライバシー #
2014 年頃から iOS / Android / Windows / macOS は SSID ごとに別の MAC を使う MAC アドレスランダム化 を導入した。Probe Request に真の MAC が乗ると、広告事業者がその MAC で複数の場所を行き来するユーザを追跡できてしまう (= Wi-Fi 追跡広告) を防ぐためのもの。
具体的には:
- Probe Request 時 に毎回ランダム MAC を使う (周辺 AP に対する個人識別を防ぐ)
- 接続時 には**「その SSID 用に固定されたランダム MAC」**を使う (再接続でも同じ MAC が使える) - iOS の "プライベート Wi-Fi アドレス"
副作用として:
- MAC アドレスフィルタリングが完全に無効化 (もとから防御として無価値だが、運用上も使えなくなった)
- キャプティブポータルが「前回の認証 MAC は別人」として毎回再認証を要求する
- 企業 Wi-Fi で MAC 認証 / DHCP 予約 / RADIUS Accounting に依存している環境は、SSID ごとに固定 MAC をユーザに ON してもらう運用が必要
現代のセキュアな Wi-Fi 設計では、MAC は識別子として信頼せず、EAP-TLS の証明書 / SAE のクライアントクレデンシャルで認証するのが正しい層分けになる。
Wi-Fi は 「Ethernet と同じ L2 のフレーム形式に乗せた無線」 だが、電波という共有媒体の性質が、有線では考えなくてよかった層をすべて持ち込んだ — CSMA/CA / 半二重 / L2 再送 / 4-way Handshake / WPA 世代交代 / DFS / MAC ランダム化。これらは互いに独立な機能ではなく、**「電波は誰でも傍受できる」「電波は届く保証がない」**という 2 つの基本的な事実から派生している。
実務で押さえる順序は 「接続ライフサイクルが頭に入っていること」 → 「WPA3 + PMF + EAP-TLS が現代の最低基準と分かること」 → 「2.4/5/6 GHz の住み分けで適切なバンドを選べること」 → 「Hidden SSID / MAC フィルタが防御でないと知っていること」。これに加えて deauth / evil twin / PMKID の 3 つだけは概要を知っておくと、「ホテルやカフェの Wi-Fi に何を任せて何を VPN/HTTPS で守るか」の判断が自分の軸でできるようになる。