Flux RSS - La vie du site - Nouveautés et mises à jour
Assiste.com - Sécurité informatique - Vie privée sur le Web - Neutralité d'Internet Assiste.com - Sécurité informatique - Vie privée sur le Web - Neutralité d'Internet

CRC-16 : « Contrôle de Redondance Cyclique »

CRC-16 : « Contrôle de Redondance Cyclique » (CRC - Cyclic Redundancy Check) - code de détection d'erreur utilisé durant le transport de données (réseaux numériques et périphériques de stockage).

Un « Contrôle de Redondance Cyclique » (CRC) (Cyclic Redundancy Check en anglais) est un code de détection d'erreur couramment utilisé dans les réseaux numériques et les périphériques de stockage pour détecter les modifications accidentelles des données brutes durant leur transfert d'une origine à une destination.

  • Les blocs de données entrant dans ces systèmes reçoivent une valeur de contrôle courte, basée sur le reste d'une division polynomiale de leur contenu.
  • Lors de la récupération, le calcul est répété.

Si les valeurs de contrôle calculées à l’émission et à la réception ne correspondent pas, des mesures correctives peuvent être prises pour empêcher la corruption des données.

  • Le CRC ne peuvent pas permettre de corriger les erreurs – ils ne peuvent que les détecter et une demande de renvoie de la donnée initiale est utilisée. Après plusieurs échecs successifs, il est constaté une erreur irrécupérable provoquant une faute (un arrêt avec message d’erreur).
  • Une variante des CRC, les ECC, peut être utilisée au-delà du simple contrôle de corruption durant le transport des données pour permettre la correction des erreurs à l’arrivée (Error Checking and Correcting). Certaine barrettes mémoire, par exemple, plus chères, sont dotées de contrôle ET correction d’erreurs.

Les CRC sont appelés ainsi parce que la valeur de contrôle (vérification des données) est une redondance (elle développe le message [qui est donc plus long] sans ajouter d'informations).

L'algorithme est basé sur des codes cycliques (bits à zéro ou à 1).

Les CRC sont populaires parce qu'ils sont simples à implémenter dans du matériel binaire, faciles à analyser de manière mathématique et particulièrement efficaces pour détecter les erreurs courantes causées par le bruit dans les canaux de transmission.

Comme la valeur de contrôle a une longueur fixe (CRC-1, CRC-16, CRC-32, etc), la fonction qui le génère est parfois utilisée comme fonction de hachage (mais c’est une mauvaise idée compte tenu de sa faiblesse dès que la donnée est longue (plus de 1 ou 2 ou 4 octets).

Le principe des CRC a été inventé par W. Wesley Peterson en 1961.

La fonction CRC-32 bits, utilisée dans Ethernet et dans de nombreux autres standards, est le travail de plusieurs chercheurs et a été publiée en 1975.

Il existe de très nombreux CRC dont :

  • CRC-1 : simple contrôle de parité (ou d’imparité) – le nombre de bits à 0 (ou à 1) doit être pair (ou impair). Un bit est donc éventuellement ajouté au départ du transfert de la donnée. La vérification est faite à l’arrivée et une demande de retransmission est faite en cas de corruption.
  • CRC-12
  • CRC-16
  • CRC-32
  • CRC-64

Se reporter à l’article de Wikipedia (anglais) https://en.wikipedia.org/wiki/Cyclic_redundancy_check

CRC-16 -