モバイル / IoT セキュリティ

MAC アドレス

約 5 分で読めます

MAC アドレスとは

MAC アドレス (Media Access Control Address) とは、ネットワーク機器をデータリンク層で識別する 48 ビットのアドレスです。00:1A:2B:3C:4D:5E のように 16 進数をコロンまたはハイフンで区切った形式で表記されます。

MAC アドレスはデータリンク層 (OSI 参照モデルの第 2 層) で動作し、同一ネットワーク (同一セグメント) 内の機器同士が通信相手を特定するために使われます。ルーターが家庭内の PC、スマートフォン、IoT デバイスを区別できるのは、各機器が別々の MAC アドレスを名乗っているからです。一方で MAC アドレスはルーターを越えて転送されないため、インターネットの向こう側にいる相手には届きません。

アドレスには、機器の工場出荷時に割り当てられたもの (工場出荷アドレス) と、OS がソフトウェア的に生成したものがあります。両者は先頭バイトの 2 ビットで区別され、グローバルに一意なアドレスかローカルで管理されるアドレスか、ユニキャストかマルチキャストかを示します。

工場出荷アドレスの先頭側のビットは、IEEE が組織に割り当てる識別子です。割当ブロックには MA-L (先頭 24 ビットが OUI)、MA-M (28 ビット)、MA-S (36 ビット) があり、MA-M と MA-S では先頭 24 ビットが IEEE 登録機関自身の OUI になります。そのため先頭 24 ビットだけを検索してもメーカーに行き当たらないことがあり、28 ビットまたは 36 ビットで引き直す必要があります。残りのビットは割当を受けた組織が個体ごとに付ける番号で、割当のルールが守られていれば工場出荷アドレスは重複しない設計です。ただし機器はソフトウェアで別のアドレスを名乗れるため、実際に流れているアドレスが一意である保証はありません。

MAC アドレスと IP アドレスの違い

MAC アドレスと IP アドレスはどちらもネットワーク通信に不可欠ですが、役割と動作する層が異なります。

MAC アドレス
データリンク層 (第 2 層) で動作。同一セグメント内の機器識別に使用。工場出荷アドレスは固定だが、OS が生成したアドレスを名乗ることもある。ルーターを越えて転送されない。00:1A:2B:3C:4D:5E の形式。
IP アドレス
ネットワーク層 (第 3 層) で動作。ネットワーク間のルーティングに使用。DHCP により動的に割り当てられ、接続先ネットワークによって変わる。

宅配に例えると、IP アドレスは最終的な届け先を示す「住所」、MAC アドレスは今この区間で荷物を受け取る「担当者の名前」に当たります。ルーターは IP アドレスでパケットの宛先ネットワークを判断し、次の区間へ渡すたびに送信元と宛先の MAC アドレスを書き換えます。そのため最初の機器が名乗った MAC アドレスは、途中のルーターを越えた先には残りません。

IP アドレスから同一セグメント内の MAC アドレスを解決するのが ARP (Address Resolution Protocol) です。ARP は通信しようとするホストやルーターが使うもので、その間に入るスイッチは ARP を解釈せず、受信したフレームの送信元 MAC アドレスから作った転送テーブルを見てフレームを中継します。

MAC アドレスランダマイゼーション

Wi-Fi の探索フレームや接続要求に載る MAC アドレスは、暗号化されないまま送られます。工場出荷アドレスは世界で一意で固定されているため、これを使い続けると、周囲で電波を観測するだけで同じ機器を識別して追跡できる状態になります (Android の開発者向けドキュメントも、工場出荷アドレスは個別の識別と追跡を許してしまうと説明しています)。これを緩和するため、iOS と Android は Wi-Fi 接続時に使うアドレスをランダム化する仕組みを導入しました。

  • iOS 14 / iPadOS 14 以降: Wi-Fi ネットワークごとに固有のランダムなアドレス (プライベート Wi-Fi アドレス) で名乗ります。「設定 → Wi-Fi → ネットワーク名の横の詳細ボタン → プライベート Wi-Fi アドレス」で確認・切り替えができます。iOS 18 / iPadOS 18 以降はネットワークごとに「オフ / 固定 / ローテーション」の 3 つのモードを選べ、ローテーションでは約 2 週間ごとに別のアドレスへ切り替わります。Apple の説明では、WPA2 以上のネットワークでは「固定」、暗号化が弱いネットワークや暗号化のないネットワークでは「ローテーション」が既定になります。組織が管理する端末では、デバイス管理サービス側でこの機能を無効化できます。
  • Android 10 以降: ランダム化したアドレスを既定で使います。既定の方式は継続的 (persistent) なランダム化で、SSID やセキュリティ種別などネットワークプロファイルの情報から生成したアドレスを、初期化するまで同じネットワークに対して使い続けます。Android 12 以降は、アプリが提案したネットワークなど一部の条件で、接続ごとにアドレスを引き直す非継続的な方式が使われます。設定画面で切り替えられるのはネットワークごとのランダム化の有効・無効だけで、方式そのものは選べません。

ランダム化は、アドレスの先頭バイトのローカル管理ビットを 1、ユニキャストビットを 0 にしたうえで、残りの 46 ビットを乱数で埋める形で行われます。ランダム化を無効にしたネットワークでは、工場出荷アドレスが送出されます。

この仕組みが必要になった背景には、小売店や商業施設が Wi-Fi プローブリクエスト (接続前にデバイスが発信する信号) に含まれる MAC アドレスを収集し、来店頻度や滞在時間、移動経路を追跡していた実態があります。固定の MAC アドレスは、ブラウザフィンガープリントと同様に、個人を長期間にわたって追跡できる識別子として機能していました。ランダム化が既定になった以降は、電波を観測する第三者が同じ機器を店舗や街をまたいで追い続けることは難しくなりました。ただし継続的なランダム化では同じネットワークに対しては同じアドレスを使うため、そのネットワークの運営者から見た再訪の判別は残ります。Bluetooth Low Energy でも、同じ発想の対策が解決可能プライベートアドレス (RPA) として実装されています。

MAC アドレスの確認方法

自分のデバイスの MAC アドレスは、以下の方法で確認できます。

  • Windows: コマンドプロンプトで ipconfig /all を実行し、「物理アドレス」の項目を確認。
  • macOS: 「システム設定 → ネットワーク → Wi-Fi → 詳細」で Wi-Fi アドレスとして表示される。ターミナルで ifconfig en0 | grep ether でも確認可能。
  • iOS: 「設定 → 一般 → 情報」の「Wi-Fi アドレス」がハードウェア MAC アドレス。ネットワークごとのプライベートアドレスは「設定 → Wi-Fi → 接続中のネットワーク」で確認。
  • Android: 「設定 → デバイス情報 → Wi-Fi MAC アドレス」でハードウェアアドレスを確認。ネットワークごとのランダムアドレスは Wi-Fi 設定の詳細から確認 (項目名や階層は端末によって異なります)。
  • Linux: ターミナルで ip link show または ifconfig を実行。

ルーターの管理画面では、接続中のすべてのデバイスの MAC アドレスを一覧で確認できます。MAC アドレスフィルタリング (特定の MAC アドレスのみ接続を許可する機能) を設定する際に必要になりますが、MAC アドレスは暗号化されずにフレームに載るため、周囲で観測してその値を名乗ることができます。フィルタリングはアクセス制御の境界にはなりません。

MAC アドレスとセキュリティ

MAC アドレスに関連するセキュリティ上の論点を整理します。

  • MAC アドレスフィルタリングの限界: ルーターの MAC アドレスフィルタリングは、登録済みの機器だけに接続を許可する機能です。しかし、攻撃者は正規デバイスの MAC アドレスを傍受し、自分のデバイスの MAC アドレスをそれに偽装 (スプーフィング) できます。MAC アドレスは暗号化されずに送られるので、この観測と偽装には特別な条件が要りません。フィルタリングは「鍵のかかっていないドアに名札を貼る」程度の効果しかなく、アクセス制御の境界にはなりません。Wi-Fi の保護は WPA2 / WPA3 の暗号化と推測されにくいパスフレーズで行い、フィルタリングに保護の役割を負わせないことが重要です。
  • ARP スプーフィング: 攻撃者が偽の ARP 応答を送信し、自分の MAC アドレスをゲートウェイの IP アドレスに紐づけることで、同一ネットワーク内の通信を傍受する中間者攻撃の手法です。HTTPS で通信内容自体は暗号化されますが、通信先の情報は漏洩する可能性があります。
  • プライバシーとトラッキング: ランダム化を無効にしている場合や、ランダム化のない機器では、工場出荷アドレスがそのまま電波に載ります。ランダム化を有効にし、不要な Wi-Fi の自動接続をオフにすることで、周囲から観測されるアドレスが同じ機器を指し続ける時間を短くできます。

よくある誤解

MAC アドレスフィルタリングを設定すれば Wi-Fi は安全
MAC アドレスは暗号化されないままフレームに載るため、周囲で観測してその値を自分のデバイスに設定するだけでフィルタリングを通過できます。MAC アドレスフィルタリングはアクセス制御の境界にはなりません。Wi-Fi の保護は WPA2 / WPA3 の暗号化と推測されにくいパスフレーズで行い、フィルタリングに保護の役割を負わせないでください。
MAC アドレスは絶対に変更できない
ハードウェアに焼き込まれた工場出荷アドレス自体は変わりませんが、機器が名乗るアドレスはソフトウェアで変更できます。iOS 14 以降と Android 10 以降で Wi-Fi 接続時のランダム化が既定になっているのは、この仕組みを使ったものです。Linux や macOS ではコマンドで別の MAC アドレスを設定でき、Windows でもアダプターのドライバーが対応していればデバイスマネージャーから設定できます (対応していない場合は項目自体が現れません)。
MAC アドレスからインターネット上で個人を特定できる
MAC アドレスは同一セグメント内でのみ使われ、ルーターはパケットを次の区間へ渡すときに MAC アドレスを書き換えるため、機器の MAC アドレスがインターネット側に伝わることはありません。Web サイトのサーバーがアクセス元の MAC アドレスを知ることはできません。ただし同じ Wi-Fi につながっている範囲では MAC アドレスが見えるため、ローカルネットワーク上でのプライバシーリスクは存在します (ランダム化が有効なら、そこで見えるのは工場出荷アドレスではなく、そのネットワーク向けのランダムなアドレスです)。
共有する

関連用語

関連記事