AccueilđŸ‡«đŸ‡·Chercher

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Ă©.

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é.

Intégrité des données

Les CRC sont spĂ©cialement conçus pour protĂ©ger contre les types d'erreurs courants sur les canaux de communication, oĂč ils peuvent fournir une assurance rapide et raisonnable de l'intĂ©gritĂ© des messages livrĂ©s. Cependant, ils ne conviennent pas pour protĂ©ger contre l'altĂ©ration intentionnelle des donnĂ©es.

PremiĂšrement, comme il n'y a pas d'authentification, un attaquant peut Ă©diter un message et recalculer le CRC sans que la substitution ne soit dĂ©tectĂ©e. Lorsqu'ils sont stockĂ©s avec les donnĂ©es, les CRC et les fonctions de hachage cryptographique ne protĂšgent pas en eux-mĂȘmes contre la modification intentionnelle des donnĂ©es. Toute application nĂ©cessitant une protection contre de telles attaques doit utiliser des mĂ©canismes d'authentification cryptographique, tels que des codes d'authentification de message ou des signatures numĂ©riques (qui sont gĂ©nĂ©ralement basĂ©s sur des fonctions de hachage cryptographiques).

DeuxiÚmement, contrairement aux fonctions de hachage cryptographiques, le CRC est une fonction facilement réversible, ce qui la rend inadaptée à une utilisation dans les signatures numériques[1].

TroisiÚmement, CRC satisfait une relation similaire à celle d'une fonction linéaire (ou plus précisément, une fonction affine)[2] :

,

oĂč dĂ©pend de la longueur de et . Cela peut Ă©galement ĂȘtre indiquĂ© comme suit, oĂč , et ont la mĂȘme longueur

par consĂ©quent, mĂȘme si le CRC est chiffrĂ© avec un chiffrement de flux qui utilise XOR comme opĂ©ration de combinaison (ou un mode de chiffrement par bloc qui le transforme effectivement en un chiffrement de flux, tel que OFB ou CFB), le message et le CRC associĂ© peut ĂȘtre manipulĂ© sans connaĂźtre la clĂ© de cryptage ; c'Ă©tait l'un des dĂ©fauts de conception bien connus du protocole Wired Equivalent Privacy (WEP)[3].

Implémentation

L’opĂ©ration mathĂ©matique[4] 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

Notes et références

  1. Martin Stigge, Henryk Plötz, Wolf MĂŒller et Jens-Peter Redlich, « Reversing CRC – Theory and Practice » [archive du ], Humboldt University Berlin, (consultĂ© le ) : « The presented methods offer a very easy and efficient way to modify your data so that it will compute to a CRC you want or at least know in advance. », p. 17
  2. « algorithm design — Why is CRC said to be linear? », sur Cryptography Stack Exchange (consultĂ© le )
  3. Nancy Cam-Winget, Russ Housley, David Wagner et Jesse Walker, « Security Flaws in 802.11 Data Link Protocols », Communications of the ACM, vol. 46, no 5,‎ , p. 35–39 (DOI 10.1145/769800.769823, S2CID 3132937, CiteSeerx 10.1.1.14.8775, lire en ligne [archive du ], consultĂ© le )
  4. (en) « Cyclic redundancy check in Python », sur python.engineering,
Cet article est issu de wikipedia. Text licence: CC BY-SA 4.0, Des conditions supplĂ©mentaires peuvent s’appliquer aux fichiers multimĂ©dias.