TCP/IPネットワークのARP化
ARP(Address Resolution Protocol)は、インターネット層のアドレス(一般的にはIPアドレス)に関連するMACアドレスなどのリンク層アドレスを発見するために使用される通信プロトコルである。
ARPはネットワーク上のすべてのデバイスにリクエストパケットをブロードキャストし、指定されたIPアドレスを持つデバイスにそのMACアドレスで応答するよう求めることで動作します。
一致するIPアドレスを持つデバイスは、そのMACアドレスで応答し、そのMACアドレスは将来の参照のために要求デバイスのARPキャッシュに格納されます。
少し用語が多くわかりずらいかもしれませんが、多くの人に一度に「この番号を持ってる人いますか?いたらあなたの住所を答えてください」と声をかけて、「いまーす!私の住所は何々です」という応答を求めて、その後その人に連絡を取りやすくするためその住所をメモをしたのと同じです。
ARPのプロセス
プロセスをより詳しく掘り下げてみましょう。
あるデバイスが他のデバイスにパケットを送信する必要がある場合、まずARPキャッシュをチェックし、宛先デバイスのMACアドレスを既に知っているかどうかを確認します。
もし知っていれば、パケットを直接送信することができます。
そうでない場合はARPリクエストをブロードキャストしてMACアドレスを発見します。応答を受信すると、そのMACアドレスをARPキャッシュに保存しパケットを送信します。
IPアドレスがインターネットのような大規模なネットワーク上でパケットをルーティングするために使用されるのに対し、MACアドレスはローカルネットワークセグメント上でパケットを配信するために使用されるため、このプロセスが必要です。
実際どう使うの?
実用的な用途の1つはネットワークの問題を診断することです。例えばネットワーク管理者は特定のIPアドレスが使用されているかどうかを確認したり、ネットワーク上のデバイスのMACアドレスを表示するためにARPを使用することができます。
ARPはデバイスがネットワークリクエストに応答しているかどうかを判断するために使用することができ、IPアドレスでのPingの使用と似ています。
ARPスプーフィング、ARPポイズニングという注意点
ARPに関連する潜在的なセキュリティ問題に注意することが重要です。
ARPはARP応答を認証する方法を提供しないため、悪意のあるデバイスがネットワーク上の他のデバイスに偽のARP応答を送信することが可能で、これはARPスプーフィングやARPポイズニングと呼ばれる攻撃に使われてしまうことがあります。
ARPスプーフィングは攻撃者が偽のARPメッセージを送信しネットワーク上の他のデバイスのARPテーブルを改竄する手法です。
そしてARPポイズニングはそのARPスプーフィングを利用した攻撃の一種です。
ネットワーク上の複数のデバイスのARPテーブルを改竄し通信を攻撃者のデバイスを経由させることでデータを盗聴したり改ざんしたりする手法です。ARPポイズニングは、特に中間者攻撃(Man-in-the-Middle, MiTM)に利用されます。
ちなみに中間者攻撃とは、攻撃者が二つの当事者間の通信を秘密裏に傍受し必要に応じてその通信を操作することでそうした攻撃全てを指します。そのためARPポイズニングその一つとして含む概念であり、中間者攻撃はARPポイズニング以外の手法でも行われる攻撃です。
以上、少し長くなってしまいましたがまとめて簡潔に書くと、
ARPスプーフィングはARPテーブルの改ざん手法そのものを指します。ARPポイズニングはARPスプーフィングを用いた特定の攻撃形態を言います。そしてARPポイズニングは中間者攻撃というカテゴリーに属した攻撃です。

