Protocole ARP

Indispensable à l’usage d’IPv4, le protocole ARP (Address Resolution Protocol) permet de connaître l’adresse physique d’une machine (adresse MAC (Media Access Control)) à partir de son adresse physique (Adresse IP).

Introduction

Sur un réseau, les périphériques sont identifiés par leurs adresses logiques de couche 3 du modèle OSI (adresse IP). Ces adresses sont contrôlées par la IANA (Internet Assigned Numbers Authority). Les adresses physiques, couche 2 du modèle OSI (adresse MAC) quant à elles sont définies en usine lors de la fabrication de la carte réseau du périphérique. C’est pour cela qu’elles ne sont pas utilisées sur internet, car le changement d’une carte réseau, entraînerait un ré-adressage des ordinateurs. Contrairement à une adresse IP qui est codée sur 32bits, une adresse MAC est codée sur 48bits. Le protocole ARP se charge d’établir une correspondance entre ces 2 types d’adresses.
Il est défini par le RFC 826.

Principe et cas de figure

2 cas de figure peuvent se présenter dans le cadre du protocole ARP.
Si un périphérique souhaite communiquer avec un autre périphérique dont il connaît l’adresse IP, alors il cherche dans sa table de cache ARP si il a une correspondance Adresse IP : Adresse MAC. Si c’est le cas il envoie simple une trame ethernet avec comme adresse de destination l’adresse MAC du périphérique avec lequel il souhaite communiquer.
Si il n’a aucune correspondance Adresse IP : Adresse MAC, le message devant être expédié est mis en attente et le périphérique émet une requête ARP en broadcast pour “demander” aux périphériques connectés si leur adresse IP correspond avec l’adresse IP avec laquelle on veut communiquer. Dans le cas où un périphérique possède l’adresse IP souhaitée il répond à la requête et met sa table de cache ARP à jour.
A la réception de la requête, la machine à l’origine du trafic peut mettre à jour sa table de cache ARP et envoyer le message qu’elle avait mis en attente précédemment.

Il existe un protocole inverse au protocole ARP, le protocole RARP (Reverse Address Resolution Protocol), mais celui-ci est beaucoup moins utilisé car la table dont il a besoin est statique et doit donc être remplie à la main puis maintenue à jour. Cependant ce protocole peut être utilisé dans le cadre de stations de travail sans disque dur ne connaissant pas leurs adresses IP. Ce protocole est défini par la RFC 903.
Pour palier aux limitations de RARP il est conseillé d’utiliser le DRARP (RARP dynamique) ou encore le DHCP.

Structure d’une trame ARP

  • Trame MAC 802.3

trame_ARP_803_3

  • Trame Ethernet Xerox

trame_ARP_Xerox

Sécurisation du protocole ARP

Le protocole ARP est sensible à une attaque nommée ARP cache poisoning ayant pour idée d’envoyer une trame ARP erronée à un périphérique pour qu’il l’enregistre dans sa table de correspondances Adresse IP : Adresse MAC (cf 1).
Admettons que A veut envoyer un message à B mais il ne connait pas son adresse MAC. Il envoie donc une requête ARP en broadcast (cf 1) pour connaître l’adresse MAC de destination. Le but de l’attaque est de répondre avant la machine B en envoyant une trame ARP contenant l’adresse IP de B, mais avec l’adresse MAC de notre machine. Lorsque A voudra correspondre avec B, c’est notre machine qui recevra le message. Ensuite libre à vous de rediriger les messages venant de A vers B pour plus de transparence. Ce type d’attaque est dit “Man in the middle”.


Voir également