# Adresse MAC

Une adresse MAC (de l'anglais Media Access Control), parfois nommée adresse physique, est un identifiant physique stocké dans une carte réseau ou une interface réseau similaire. Chaque adresse MAC est unique au monde. Toutes les cartes réseau ont une adresse MAC, même celles contenues dans les PC et autres appareils connectés (tablette tactile, smartphone, consoles de jeux, réfrigérateurs, montres, etc.).
MAC constitue la partie inférieure de la couche de liaison (couche 2 du modèle OSI). Elle insère et traite ces adresses au sein des trames transmises. Elle est parfois appelée adresse ethernet, UAA pour (Universally Administered Address), BIA (pour Burned-In Address), MAC-48 ou EUI-48.
L'IEEE a défini un format similaire à 64 bits appelé EUI-64.

## Utilisation

Les adresses MAC, attribuées par l'IEEE, sont utilisées dans beaucoup de technologies réseau, parmi lesquelles:
* ATM ;
* Ethernet et AFDX ;
* Réseaux sans fil Bluetooth ;
* Réseaux sans fil Wi-Fi ;
* Token Ring ;
* ZigBee ;
* LoRaWAN

## Structure

Une adresse MAC-48 est constituée de 48 bits (6 octets) et est généralement représentée sous la forme hexadécimale en séparant les octets par un double point. Par exemple 5E:FF:56:A2:AF:15.
Ces 48 bits sont répartis de la façon suivante :
* 1 bit I/G : indique si l'adresse est individuelle, auquel cas le bit sera à 0 (pour une machine unique, unicast) ou de groupe (multicast ou broadcast), en passant le bit à 1 ;
* 1 bit U/L : 0 indique si l'adresse est universelle (conforme au format de l'IEEE) ou locale, 1 pour une adresse administrée localement ;
* 22 bits réservés : tous les bits sont à zéro pour une adresse locale, sinon ils contiennent l'adresse du constructeur ;
* 24 bits : adresse unique (pour différencier les différentes cartes réseaux d'un même constructeur).
Les concepteurs d'Ethernet ayant utilisé un adressage de 48 bits, il existe potentiellement 2$^{48}$ (environ 281 000 milliards) d'adresses MAC possibles. L'IEEE donne des préfixes de 24 bits (appelés Organizationally Unique Identifier - OUI) aux fabricants, ce qui offre 2$^{24}$ (environ 16 millions) d'adresses MAC disponibles par préfixe.

## Changement d'adresse MAC

Le changement d’une adresse MAC peut se faire au niveau logiciel, de manière temporaire avec une commande (ifconfig sous Linux par exemple) ou persistant en modifiant un fichier de configuration (la base de registre sous Windows par exemple).
Selon Edward Snowden, la NSA dispose d'un système qui suit les mouvements des appareils mobiles dans une ville en surveillant les adresses MAC. Pour éviter cette pratique, Apple a commencé à générer automatiquement des adresses MAC aléatoires lorsque l'appareil recherche ou se connecte à des réseaux Wi-Fi. D'autres systèmes d’exploitation ont rapidement suivi : Android à partir de la version 6.0, Windows 10 et le noyau Linux 3.18$^,$. L’implémentation de la technique varie largement selon les différents appareils. De plus, diverses failles et lacunes dans ces implémentations peuvent permettre à un attaquant de suivre un appareil même si son adresse MAC est modifiée$^,$$^,$$^,$. Si une adresse MAC aléatoire n'est pas utilisée, des chercheurs ont confirmé qu'il est possible de lier une identité réelle à une adresse MAC particulière sur un réseau sans fil.

## Ordre de transmission

En Ethernet, le bit le moins significatif de chaque octet est transmis en premier, c'est-à-dire que le bit I/G est le premier à être transmis. La convention de Token Ring est inverse, ce qui peut mener à des confusions (RFC 2469).

## EUI-64

La structure de l'adresse EUI-64 est similaire à celle de EUI-48 (EUI acronyme de "Extended Unique Identifier" pour "identifiant unique étendu"). La taille du champ OUI varie de 24 à 36 bits. Les valeurs FF:FF et FF:FE dans les octets 4 et 5 sont interdites.
Les adresses EUI-64 sont utilisées notamment par FireWire, IPv6, ZigBee, 802.15.4, 6LoWPAN, LoRaWAN. Dans le cas d'IPv6, l'adresse EUI-64 est construite à partir de l'adresse MAC-48 en insérant FFFE dans les octets 4 et 5. L'adresse IPv6 utilise un format modifié dans lequel le bit U/L est inversé (RFC 2464).

## Adresses particulières

| FF:FF:FF:FF:FF:FF | Adresse broadcast |
| 01:00:0C:CC:CC:CC | Cisco Discovery Protocol |
| 01:80:C2:00:00:00 | Spanning Tree Protocol |
| 33:33:xx:xx:xx:xx | Adresses multicast IPv6 |
| 01:00:5E:xx:xx:xx | Adresses multicast IPv4 |
| 00:00:0c:07:ac:xx | Adresses HSRP |
| 00:00:5E:00:01:XX | Adresses VRRP |