Assiste.com - Sécurité informatique - Vie privée sur le Web - Neutralité d'Internet

cr  01.04.2012      r+  22.10.2024      r-  22.10.2024      Pierre Pinard.         (Alertes et avis de sécurité au jour le jour)

Classé avec les fonctions de hachage par simplification, les CRC (Contrôle de Redondance Cyclique) ne sont pas des fonctions de hachage.

En informatique (DVB - Digital Video Broadcasting (« diffusion vidéo numérique »), MPEG-TS (flux de transport MPEG Transport Stream), sauvegarde, capture de données (échantillonnage)) et dans certains appareils numériques incluant les DAB (Distributeurs Automatiques de Billets), un Contrôle de Redondance Cyclique ou CRC (Cyclic Redundancy Check) est un outil logiciel permettant de détecter les erreurs de transmission ou de transfert. Il s'agit de détecter les modifications accidentelles des données brutes. Les blocs de données entrant dans ces systèmes reçoivent une courte valeur de contrôle, basée sur le reste d'une division polynomiale de leur contenu. Lors de la récupération, le calcul est répété et, si les valeurs de contrôle ne correspondent pas, des mesures correctives peuvent être prises contre la corruption des données, généralement par le renouvellement automatique de la transmission.

Étant donné que les valeurs de contrôle des CRC ont une longueur fixe, les fonctions qui les génèrent sont parfois classées avec les algorithmes de hachage, mais ne produisent pas de hashcode/condensat. Ils produisent un simple code de détection d'erreur.

Cas particulier : Codes de contrôle de parité et codes correcteurs d'erreurs.

Les CRC sont évalués (échantillonnés) avant et après la transmission ou le transfert, puis comparés pour s'assurer que les données sont probablement identiques (probablement seulement, car toutes les erreurs ne peuvent être détectées, les calculs de CRC étant des procédures de hachage relativement « primaires »). 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.

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 appelés ainsi parce que la valeur de vérification (vérification des données) est une redondance (elle étend le message sans ajouter d'informations) et l'algorithme est basé sur des codes cycliques. Les CRC sont populaires, car ils sont simples à implémenter dans le matériel binaire, faciles à analyser mathématiquement et particulièrement efficaces pour détecter les erreurs courantes causées par le bruit dans les canaux de transmission.

Le CRC a été inventé par W. Wesley Peterson en 1961. La fonction CRC 32 bits, utilisée dans Ethernet et de nombreuses autres normes, est l'œuvre 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

Voir l'article de Wikipedia (anglais) https://en.wikipedia.org/wiki/Cyclic_redundancy_check

l'extrême faiblesse des CRC a été mise en avant pour ridiculiser Viguard, un contrôleur d'intégrité dérobé à son inventeur et dont la société qui tentait de le commercialiser à grands cris ne savait même pas ce que c'était et le qualifiait d'antivirus. Voir Viguard et l'utilisation d'un CRC.




CRC-64 ISO : x64 + x4 + x3 + x + 1
CRC-64 ECMA : x64 + x62 + x57 + x55 + x54 + x53 + x52 + x47 + x46 + x45 + x40 + x39 + x38 + x37 + x35 + x33 + x32 + x31 + x29 + x27 + x24 + x23 + x22 + x21 + x19 + x17 + x13 + x12 + x10 + x9 + x7 + x4 + x +1

Usage : ISO 3309
ECMA-182




Fonction de hachega

Création

Créateur

Nombre de bits du hash

Notes

Obsolette - pas sûr
(collisions)

CRC-1

1957 - évoqué dans Cyclic Codes for Error Detection de Peterson, W. W. and D. T. Brown..

N'est pas une fonction de hachage, mais 1 CRC (Calcul de Redondance Cyclique).
CRC-32 a été imbécilement utilisé par le prétendu antivirus Viguard et à conduit à sa disparition et la faillite de son développeur et de son distributeur (outre d'autres embrouilles).

CRC-16

CRC-32

MD2

1989

Ronald Rivest (MIT)

128

Attaque possible, même si pas utilisée.

Plus sûr.

MD4

1990

Ronald Rivest (MIT)

128

MD5

1991

Ronald Rivest (MIT)

128

MD6

2008

Ronald Rivest (MIT) avec un groupe.

512

Calcul extrêmement rapide d'immenses nombres de hashs en parallèle sur d'immenses fichiers. Arbre de Merkle  et NLFSR.

SHA-0

1993

NSA

160

Famille de 6 fonctions de hachage comprenant :
SHA-256 opérant sur des mots de 32 bits
SHA-512 opérant sur des mots de 64 bits.
SHA-224 et SHA-384
SHA-512/256 et SHA-512/224

Collisions suspectes volontairement permises par la NSA. 1ère découverte de collision complète par Antoine Joux  (cryptologue français)  en août 2004.

SHA-1

1995

NSA

160

2019 - Risque (actuellement théorique)
Juillet 2022 - les signatures SHA-1 dans les certificats, depuis longtemps considérées comme n'étant plus suffisamment sécurisées, ne sont plus prises en charge.

SHA-2

2001

NSA

SHA-224 - 224
SHA-256 - 256
SHA-384 - 384
SHA-512 - 512
SHA-512/224 - 224
SHA-512/256 - 256

Famille de six fonctions de hachage avec des digests (valeurs de hachage) de 224, 256, 384 ou 512 bits: SHA-224, SHA-256, SHA-384, SHA-512, SHA-512/224, SHA-512/256 .

Résistent aux collisions

SHA-3
Anciennement nommé Keccak

2015

Guido Bertoni, Joan Daemen, Michaël Peeters et Gilles Van Assche

SHA3-224 - 224
SHA3-256 - 256
SHA3-384 - 384
SHA3-512 - 512
SHAKE128 - d (arbitraire)
SHAKE256 - d (arbitraire)

Famille de six fonctions de hachage basées sur RadioGatún, du même groupe d'auteurs, présenté en août 2006.
Se propose de remplacer MD5, SHA-0 et SHA-1 et leurs attaques avérées ou possibles.

Résistent aux collisions

SHA-256

2001

NSA

256

Il est conseillé universellement d'abandonner MD5 et SHA-1 au profit de SHA-256, principalement dans le hachage des mots de passe, même si cela occupe plus le processeur et rend les bases de données d'identifiants/mots de passe plus volumineuses.

Résistent aux collisions