Contrôle de redondance cyclique

En informatique et dans certains appareils numériques, un contrôle de redondance cyclique ou CRC (cyclic redundancy check) est un outil logiciel permettant de détecter des erreurs de transmission ou de transfert par ajout, combinaison et comparaison de données redondantes, obtenues grâce à une procédure de hachage. Ainsi, une erreur peut être signalée à l'utilisateur lors de la copie d'un support (disque dur, CD-Rom, DVD-Rom, clé USB, etc.) vers un autre support de sauvegarde. Les CRC sont utilisés depuis le début des transmissions de donnée en informatique dès les bas niveaux. Les checksums (sommes de contrôle) sont un mode de contrôle fonctionnant aussi par hachage, plus élaboré.

Pour les articles homonymes, voir CRC.

Principe

Le CRC d'une trame (chaîne de donnée délimitée) est évalué (échantillonné puis calculé) avant la transmission ou le transfert et inscrit sur quelques bits à la fin de la trame. Après transmission, il est recalculé et comparé au chiffre de fin de trame pour s’assurer que les données sont probablement identiques (probablement seulement car toutes les erreurs ne peuvent être détectées, c'est une détection statistique). Une différence conduit à une retransmission, parfois un code erreur.

Les calculs de CRC les plus utilisés sont conçus afin de pouvoir toujours détecter les erreurs de certains types, comme celles dues par exemple, aux interférences lors de la transmission.

On trouve des fonctions CRC dans différents logiciels comme ceux dédiés à la sauvegarde, à la capture de données (échantillonnage) ainsi que dans les appareils et dispositifs de transmission de signaux numériques : DVB, MPEG-2 TS, DAB, etc.

Le plus simple et largement répandu dans le transfert ordinateur /machine (commande numérique par exemple) est le CRC1, le bit de parité.

Implémentation

L’opération mathématique essentielle dans le calcul d’un CRC est une division modulo 2 dont le reste représente le CRC. Les CRC sont souvent appelés abusivement checksums (sommes de contrôle), mais les sommes de contrôle proprement dites sont le résultat d'une addition. La partie principale de l’algorithme est la suivante :

fonction crc(tableau de bits bitString[1..longueur], entier polynome)
{
    shiftRegister := valeur_initiale  // Généralement tous les bits à 0 ou 1
    pour i de 1 à longueur
    {
        si bit de poids fort de shiftRegister xor bitString[i] vaut 1
        {
            // décaler d'1 bit vers la gauche équivaut à multiplier par 2
            shiftRegister := (shiftRegister décalé d'1 bit vers la gauche) xor polynome
        }
        sinon
        {
            shiftRegister := (shiftRegister décalé d'1 bit vers la gauche)
        }
    }
    retourne shiftRegister
}

Exemples d'implémentation

Évolution

Les checksums (sommes de contrôle) sont un mode de contrôle fonctionnant aussi par hachage, plus élaboré, portant sur des fichiers plus importants (transfert de fichier, image disque etc.) très visibles dans le monde Linux.

Lors du téléchargement d'une distribution Linux, le MD5sum est disponible au téléchargement à côté de l'image disque. On télécharge les deux, puis un logiciel sur le pc recalcule le MD5sum pour le comparer à l'original pour valider l'intégrité du fichier téléchargé.

Bibliographie

Liens externes

  • Portail de l’informatique
  • Portail des mathématiques
  • Portail des télécommunications
Cet article est issu de Wikipedia. Le texte est sous licence Creative Commons - Attribution - Partage dans les Mêmes. Des conditions supplémentaires peuvent s'appliquer aux fichiers multimédias.