Aller au contenu

CRC : Cyclic Redundancy Check

Réseau

CRC : Cyclic Redundancy Check, contrôle de redondance cyclique. « Un code qui détecte tout ce que le hasard abîme et rien de ce que la malveillance modifie », par analogie avec un douanier qui repère la valise cabossée par le voyage mais laisse passer celle qu'on a ouverte et refermée avec soin.

Principe : Le message, vu comme un polynôme à coefficients binaires, est divisé par un polynôme générateur ; le reste de cette division sert de code de contrôle. Le récepteur refait le calcul et compare. En matériel, la division se réalise avec un simple registre à décalage à rétroaction, un LFSR.

Garanties : Un CRC de degré n détecte toutes les rafales d'erreurs de longueur inférieure ou égale à n et, selon le polynôme, d'autres familles d'erreurs. Le CRC-32 d'Ethernet (IEEE 802.3) protège chaque trame dans le champ FCS ; le CRC-32C de Castagnoli sert notamment à iSCSI et à SCTP.

Ce qu'il n'est pas : Le CRC est linéaire et sans clé : quiconque modifie un message recalcule le contrôle, ou corrige directement ses bits sans même connaître tout le message. Le WEP l'employait comme contrôle d'intégrité chiffré par RC4 ; Borisov, Goldberg et Wagner ont montré en 2001 qu'on pouvait y retourner des bits du message et ajuster le CRC sans être détecté.

Diagnostic : Sur un équipement réseau, un compteur d'erreurs CRC qui grimpe désigne presque toujours la couche physique : câble abîmé, connecteur mal serti, fibre sale ou désaccord de duplex. La trame fautive est jetée en silence ; seul le compteur s'en souvient.

Ce qui arrive si on s'en passe

Sans CRC, une trame corrompue par un parasite, un câble pincé ou une fibre poussiéreuse serait remise telle quelle aux couches supérieures, dont les contrôles sont plus faibles : la somme de contrôle de 16 bits de TCP laisse passer une part des erreurs, et les données abîmées finissent écrites sur disque. À l'inverse, compter sur un CRC pour l'intégrité face à un attaquant revient à n'en avoir aucune, puisqu'il se recalcule en une ligne. Contre la modification volontaire, il faut un code d'authentification à clé, comme HMAC, ou un chiffrement authentifié.

Explication de la marmotte

Quand un ordinateur envoie des données sur un câble ou par radio, des bits peuvent s'abîmer en route. Le CRC est un petit nombre calculé à partir des données et envoyé avec elles. À l'arrivée, l'ordinateur refait le calcul : si le résultat diffère, il sait que quelque chose s'est abîmé et jette les données. C'est très efficace contre les accidents, mais inutile contre un pirate, qui peut modifier les données puis recalculer le CRC lui-même.

Où ce terme est utilisé

← Tout le glossaire