> Tech > Une propriété magique des codes CRC

Une propriété magique des codes CRC

Tech - Par Renaud ROSSET - Publié le 24 juin 2010
email

Un code CRC (Contrôle de Redondance Cyclique) est une fonction de hachage unidirectionnel facile à  construire dans RPG ILE. Les codes CRC sont en principe des entiers non signés de 16 bits. Trop courts pour participer à  la sécurité cryptographique, ils jouent néanmoins un rôle important dans les communications série.

Une propriété magique des codes CRC

Dans un domaine comme la téléphonie, où les bruits parasites, la distorsion des
signaux, l’éclair, etc., peuvent altérer la nature bit par bit de la transmission
série, les codes CRC peuvent aider à  détecter des altérations de messages. Une
unité de communications ajoute un code CRC à  une transmission pour permettre au
récepteur de détecter les éventuelles altérations. Pour cela, le code ajoute quelques
bits d’information redondants au message lui-même.

Le principe de fonctionnement d’un processus CRC est le suivant. Premièrement,
mettre à  zéro un entier non signé de 16 bits. Ensuite, faire passer un pointeur,
bit par bit, sur les bits du message d’entrée. Pour chacun d’eux, doubler l’entier
non signé de 16 bits. Si le résultat dépasse 65535, ignorer le dépassement (en
divisant par 65536 et en gardant le reste).
Si le dépassement se produit pendant la multiplication et si le pointeur des bits
d’entrée pointe sur un zéro (ou vice-versa : il n’y a pas de dépassement de multiplication
et le pointeur des bits d’entrée pointe sur un un), il faut introduire par  » exlusive-OR
 » une constante fixe dans l’entier non signé de 16 bits, puis déplacer le pointeur
sur le bit suivant dans le message d’entrée et répéter l’opération. Le résultat
de ce calcul est le code CRC.

Le format de courrier électronique MIME utilise la cryptographie à  clé
publique avec une fonction de hachage unidirectionnel

Les codes CRC ont une propriété magique fascinante. Dès qu’un interlocuteur reçoit
un message avec un code CRC, il réexécute le processus CRC sur le message et sur
le code CRC lui-même. Si ce processus donne une nouvelle valeur de code CRC de
16 bits de zéro, il sait que le message est authentique et intact. Par conséquent,
un récepteur de CRC peut déterminer l’intégrité des données par un simple test
zéro ou non zéro.

La figure 2 présente un petit programme ILE RPG IV qui démontre la fabrication
et le test d’un code CRC. Au coeur de ce programme se trouve une sous-procédure
nommée CRC qui reçoit deux paramètres : une chaîne de longueur variable et la
longueur de la chaîne dans une variable BINARY(2) non signée. La sous-procédure
utilise les opérations de multiplication et exclusive-OR pour calculer un code
CRC, puis elle renvoie le code dans une valeur BINARY(2) non signée. La sous-procédure
utilise deux fonctions intégrées ILE : Test Bit In String ( » _TSTBTS « ) et Exclusive-OR
String ( » _XORSTR « ). Ces fonctions sont documentées dans Machine Interface Functional
Reference.

La partie principale du programme de la figure 2 transmet la chaine de 5 octets
‘ HELLO ‘ à  la sous-procédure et reçoit en retour une valeur de code CRC de 59775.
Ensuite, elle ajoute ‘ HELLO ‘ avec 59775 et reçoit en retour une valeur de code
CRC de zéro. C’est magique ! Si on essaie de modifier le second ‘ HELLO ‘ d’un
simple bit, on constatera que la seconde valeur de code CRC n’est pas zéro. Par
un  » couper/coller « , on peut créer deux programmes à  partir de celui-ci : l’un
pour créer et envoyer un code CRC, et l’autre pour le recevoir et le tester.

Bien entendu, l’émetteur et le récepteur doivent convenir à  l’avance d’utiliser
la même constante fixe dans l’étape exclusive-OR. Dans le programme de la figure
2, j’ai choisi X’1021′ pour la constante exclusive-OR parce que c’est la constant
classique décrite dans un ouvrage classique sur les codes CRC : C Programmer’s
Guide to Serial Communications (SAMS, 1987).

Téléchargez cette ressource

Guide de Sécurité IA et IoT

Guide de Sécurité IA et IoT

Compte tenu de l'ampleur des changements que l'IA est susceptible d'entraîner, les organisations doivent élaborer une stratégie pour se préparer à adopter et à sécuriser l'IA. Découvrez dans ce Livre blanc Kaspersky quatre stratégies efficaces pour sécuriser l'IA et l'IoT.

Tech - Par Renaud ROSSET - Publié le 24 juin 2010