Société de Sécurité Informatique - Audit Firewall Appliances
La sécurité informatique - La sécurité des informations

Les Fonctions de Hachage


Background


Une fonction de hachage est aussi appelée fonction de hachage à sens unique ou "one-way hash function" en anglais. Ce type de fonction est très utilisé en cryptographie, principalement dans le but de réduire la taille des données à traiter par la fonction de cryptage. En effet, la caractéristique principale d'une fonction de hachage est de produire un haché des données, c'est-à-dire un condensé de ces données. Ce condensé est de taille fixe, dont la valeur diffère suivant la fonction utilisée : nous verrons plus loin les tailles habituelles et leur importance au niveau de la sécurité.

Destruction d'information - Conservation de propriétés


Prenons l'exemple des empreintes digitales : dans la perception que nous en avons à l'heure actuelle, une empreinte digitale est unique et représente un individu d'une façon si certaine que nous pouvons la qualifier de sure. Pourtant la connaissance de cette empreinte ne permet pas à elle-seule de remonter à l'individu, ni de reconstituer cet individu. Il faut que la correspondance ait été préalablement établie dans une base de données pour que l'identification puisse avoir lieu par comparaison.

C'est exactement ce genre de propriétés que présente une fonction de hachage. En effet, le haché est caractéristique d'un texte ou de données uniques. Différentes données donneront toutes des condensés différents. De plus, tout comme l'empreinte digitale, le condensé ne contient pas assez d'informations en lui-même pour permettre la reconstitution du texte original : c'est pour cela que l'on parle d'ailleurs de fonction à sens unique (l'opération de hachage est destructrice dans le sens où elle conduit à une perte d'information). Mais il faut bien comprendre que le but d'un condensé n'est pas de véhiculer ou de transporter de l'information. Il est juste représentatif d'une donnée particulière et bien définie. D'autant que les algorithmes de hachage les plus courants sont publics et ne représentent pas en eux-mêmes un secret.

Pourquoi hacher?


Le but d'un condensé est simple : représenter des données de façon certaine tout en réduisant la taille utile qui sera réellement chiffrée. Prenons l'exemple de la cryptographie asymétrique; tout le monde admet qu'elle est très sure, fiable et durable. Néanmoins, sa complexité (calcul sur des nombres premiers de plusieurs centaines de chiffres par exemple) entraine une inévitable lourdeur d'emploi (charge CPU, etc...). On évite donc de l'utiliser pour de grandes masses de données ou pour des chiffrements de flux.

Par contre imaginez que vous souhaitiez envoyer un fichier par mail, mais que ce fichier est de taille importante. Vous souhaitez de plus rassurer le destinataire sur la provenance de ce fichier (vous) et sur son contenu. Plutôt que de chiffrer votre fichier directement avec votre clé privée, vous aller hacher votre fichier et chiffrer le condensé obtenu avec votre clé privée. Vous enverrez ensuite votre fichier original ainsi que le condensé chiffré (la signature) à votre destinataire.

Celui-ci va, lors de la réception, hacher d'une part le fichier reçu et d'autre part déchiffrer le condensé reçu (au moyen de votre clé publique).

S'il n'y a pas égalité entre les 2 résultats, cela signifiera :

Dans les 2 cas, ni l'intégrité ni l'authentification du fichier n'ont été vérifiées. Il ne faut donc pas faire confiance au fichier.


Nous voyons comment dans ce cas simple, l'utilisation d'une fonction de hachage permet de s'assurer de l'intégrité des données et indirectement de les authentifier. Il existe bien sûr de nombreuses autres applications pour les fonctions de hachage, comme les MACs (message authentication code), certificats, etc...

Fonctions de hachage usuelles




Importance de la taille des condensés


On peut se demander pourquoi il existe plusieurs tailles de condensés ou encore pourquoi celle-ci est fixe. Il faut garder à l'esprit le but ultime d'un haché qui est d'être le plus court possible, tout en gardant ses propriétés. Or, cela nous amène tout naturellement au problème des collisions, également connu sous la dénomination de théorème ou paradoxe des anniversaires. Je n'aborderai pas ici l'explication originale de ce théoreme.

Prenons donc notre haché H, qui présente une longueur de n bits. Nous pouvons d'ores et déjà déduire qu'il n'existe que 2n hachés de ce type possibles (puisque chaque bit n'a que 2 valeurs possibles, 0 ou 1). Le problème survient quand on se rend compte que de l'autre côté, nous pouvons avoir une infinité de textes ou données initiaux (dont la taille, elle, n'est pas fixée). Nous risquons donc, un jour ou l'autre, de produire un haché qui pourrait correspondre à un autre texte original (ou à plusieurs) : c'est la perte de la propriété principale d'un condensé, qui est l'unicité. Nous avons trouvé une collision.

Le théorême des anniversaires prouve qu'il faut 2n/2 essais pour trouver une collision au hasard. C'est le chiffre qui sera utilisé pour évaluer la force d'une fonction de hachage. Pourtant, il ne faut pas négliger le fait que la collision citée précédemment a été obtenue au hasard, ce qui n'est pas exploitable par une personne malveillante. En effet, le but serait de trouver un message significatif et bien formé conduisant au même haché, ce qui augmente considérablement les essais et calculs nécessaires (et le rend quasiment impossible). Quoiqu'il en soit, cela suffit en théorie pour briser la propriété d'unicité de notre condensé...

D'un point de vue pratique, et dans l'état de l'art actuel, il est généralement accepté que 256 calculs représentent un défit réalisable. Comme exemple, les clés DES de 56 bits sont réellement faibles et crackables. En conséquence, avec n/2=56 et n=112, le théorème des anniversaires nous indique que les hachés de 112 bits sont faibles et donc insuffisants à l'heure actuelle. De la même manière, les hachés de 128 bits (n/2=64) ne représentent plus une sécurité à moyen terme. C'est pour cela que la norme actuelle est à 160 bits (n/2=80) voire plus dans le cas de SHA-2.

SoGoodToBe
18 Novembre 2001

Partagez cet article

Envoyer cet article par Email ! Imprimer cet article ! Exporter cet article en PDF ! Facebook Twitter Google Bookmarks

SecuriteInfo.com est une entreprise française de sécurité informatique. Nous proposons différentes solutions matérielles et prestations de services permettant de sécuriser les données des Systèmes d'Information d'entreprises ou de collectivités.
Twitter SecuriteInfo.com
Facebook SecuriteInfo.com
BOINC calcul scientifique
© 2004-2016 - Tous droits réservés - SecuriteInfo.com