Whirlpool (fonction de hachage) - Whirlpool (hash function)
Général | |
---|---|
Créateurs | Vincent Rijmen , Paulo SLM Barreto |
Première publication | 2000, 2001, 2003 |
Dérivé de | Carré , AES |
Certification | NESSIE |
Détail | |
Tailles de résumé | 512 bits |
Réclamations de sécurité | Grande taille de hashsum |
Structure | Miyaguchi-Preneel |
Les manches | dix |
Meilleure cryptanalyse publique | |
En 2009, une attaque rebond a été annoncée qui présente des collisions complètes contre 4,5 rounds de Whirlpool en 2120 opérations, des collisions semi-free-start contre 5,5 rounds en 2120 temps et des quasi-collisions semi-free-start contre 7,5 rounds en 2128. temps. |
En informatique et en cryptographie , Whirlpool (parfois appelé WHIRLPOOL ) est une fonction de hachage cryptographique . Il a été conçu par Vincent Rijmen (co-créateur de l' Advanced Encryption Standard ) et Paulo SLM Barreto , qui l'a décrit pour la première fois en 2000.
Le hachage a été recommandé par le projet NESSIE . Il a également été adopté par l' Organisation internationale de normalisation (ISO) et la Commission électrotechnique internationale (CEI) dans le cadre de la norme internationale conjointe ISO / CEI 10118-3 .
Caractéristiques de conception
Whirlpool est un hachage conçu après le chiffrement par bloc Square , et est considéré comme faisant partie de cette famille de fonctions de chiffrement par bloc.
Whirlpool est une construction Miyaguchi-Preneel basée sur une norme de cryptage avancée (AES) substantiellement modifiée .
Whirlpool prend un message de toute longueur inférieure à 2 256 bits et renvoie un résumé de message de 512 bits .
Les auteurs ont déclaré que
- "WHIRLPOOL n'est pas (et ne sera jamais) breveté. Il peut être utilisé gratuitement dans n'importe quel but."
Changements de version
Le Whirlpool original s'appellera Whirlpool-0 , la première révision de Whirlpool s'appellera Whirlpool-T et la dernière version s'appellera Whirlpool dans les vecteurs de test suivants.
- Dans la première révision en 2001, la S-box a été changée d'une boîte générée aléatoirement avec de bonnes propriétés cryptographiques à une qui a de meilleures propriétés cryptographiques et est plus facile à implémenter dans le matériel.
- Dans la deuxième révision (2003), une faille dans la matrice de diffusion a été trouvée qui abaissait la sécurité estimée de l'algorithme en dessous de son potentiel. La modification des constantes de matrice rotative 8x8 de (1, 1, 3, 1, 5, 8, 9, 5) à (1, 1, 4, 1, 8, 5, 2, 9) a résolu ce problème.
Structure interne
La fonction de hachage Whirlpool est une construction Merkle – Damgård basée sur un chiffrement par bloc de type AES W en mode Miyaguchi – Preneel .
Le chiffrement par bloc W consiste en une matrice d'états 8x8 d'octets, pour un total de 512 bits.
Le processus de cryptage consiste à mettre à jour l'état avec quatre fonctions rondes sur 10 tours. Les quatre fonctions rondes sont SubBytes (SB), ShiftColumns (SC), MixRows (MR) et AddRoundKey (AK). Au cours de chaque tour, le nouvel état est calculé comme .
Sous-octets
L' opération SubBytes applique une permutation non linéaire (la S-box) à chaque octet de l'état indépendamment. La S-box 8 bits est composée de 3 S-box 4 bits plus petites.
ShiftColumns
L' opération ShiftColumns décale cycliquement chaque octet dans chaque colonne de l'état. La colonne j a ses octets décalés vers le bas de j positions.
MixRows
L' opération MixRows est une multiplication à droite de chaque ligne par une matrice 8 × 8 sur . La matrice est choisie de telle sorte que le numéro de branche (une propriété importante lorsqu'on regarde la résistance à la cryptanalyse différentielle ) soit 9, ce qui est maximal.
AddRoundKey
L' opération AddRoundKey utilise xor au niveau du bit pour ajouter une clé calculée par la planification de clé à l'état actuel. La planification des clés est identique au chiffrement lui-même, sauf que la fonction AddRoundKey est remplacée par une fonction AddRoundConstant qui ajoute une constante prédéterminée à chaque tour.
Hashs Whirlpool
L'algorithme Whirlpool a subi deux révisions depuis sa spécification originale de 2000.
Les personnes incorporant Whirlpool utiliseront très probablement la révision la plus récente de Whirlpool; bien qu'il n'y ait aucune faiblesse de sécurité connue dans les versions antérieures de Whirlpool, la révision la plus récente présente de meilleures caractéristiques d'efficacité de mise en œuvre matérielle et est également susceptible d'être plus sécurisée. Comme mentionné précédemment, il s'agit également de la version adoptée dans la norme internationale ISO / CEI 10118-3 .
Les hachages Whirlpool de 512 bits (64 octets) (également appelés résumés de messages ) sont généralement représentés sous forme de nombres hexadécimaux à 128 chiffres .
Ce qui suit illustre une entrée ASCII de 43 octets (sans les guillemets) et les hachages Whirlpool correspondants:
Version | Chaîne d'entrée | Hash calculé |
---|---|---|
Whirlpool-0 | " Le renard brun rapide saute par-dessus le chien paresseux " |
4F8F5CB531E3D49A61CF417CD133792CCFA501FD8DA53EE368FED20E5FE0248C 3A0B64F98A6533CEE1DA614C3A8DDEC791FF05FEE6D971D57C1348320F4EB42D |
Whirlpool-T | " Le renard brun rapide saute par-dessus le chien paresseux " |
3CCF8252D8BBB258460D9AA999C06EE38E67CB546CFFCF48E91F700F6FC7C183 AC8CC3D3096DD30A35B01F4620A1E3A20D79CD5168544D9E1B7CDF49970E87F1 |
Tourbillon | " Le renard brun rapide saute par-dessus le chien paresseux " |
B97DE512E91E3828B40D2B0FDCE9CEB3C4A71F9BEA8D88E75C4FA854DF36725F D2B52EB6544EDCACD6F8BEDDFEA403CB55AE31F03AD62A5EF54E42EE82C3FB35 |
Même un petit changement dans le message entraînera (avec une probabilité extrêmement élevée de ) un hachage différent, qui sera généralement complètement différent, tout comme le font deux nombres aléatoires non liés. Ce qui suit montre le résultat de la modification de l'entrée précédente par une seule lettre (un seul bit, même, dans les encodages compatibles ASCII), en remplaçant d par e :
Version | Chaîne d'entrée | Hash calculé |
---|---|---|
Whirlpool-0 | « Le renard brun rapide saute par- dessus les paresseux EOG » |
228FBF76B2A93469D4B25929836A12B7D7F2A0803E43DABA0C7FC38BC11C8F2A 9416BBCF8AB8392EB2AB7BCB565A64AC50C26179164B26084A253CAF2E012676 |
Whirlpool-T | « Le renard brun rapide saute par- dessus les paresseux EOG » |
C8C15D2A0E0DE6E6885E8A7D9B8A9139746DA299AD50158F5FA9EECDDEF744F9 1B8B83C617080D77CB4247B1E964C2959C507AB2DB0F1F3BF3E3B299CA00CAE3 |
Tourbillon | « Le renard brun rapide saute par- dessus les paresseux EOG » |
C27BA124205F72E6847F3E19834F925CC666D0974167AF915BB462420ED40CC5 0900D85A1F923219D832357750492D5C143011A76988344C2635E69D06F2D38C |
Le hachage d'une chaîne de longueur nulle est:
Version | Chaîne d'entrée | Hash calculé |
---|---|---|
Whirlpool-0 | "" |
B3E1AB6EAF640A34F784593F2074416ACCD3B8E62C620175FCA0997B1BA23473 39AA0D79E754C308209EA36811DFA40C1C32F1A2B9004725D987D3635165D3C8 |
Whirlpool-T | "" |
470F0409ABAA446E49667D4EBE12A14387CEDBD10DD17B8243CAD550A089DC0F EEA7AA40F6C2AAAB71C6EBD076E43C7CFCA0AD32567897DCB5969861049A0F5A |
Tourbillon | "" |
19FA61D75522A4669B44E39C1D2E1726C530232130D407F89AFEE0964997F7A7 3E83BE698B288FEBCF88E3E03C4F0757EA8964E59B63D93708B138CC42A66EB3 |
Implémentations
Les auteurs fournissent des implémentations de référence de l'algorithme Whirlpool, y compris une version écrite en C et une version écrite en Java . Ces implémentations de référence ont été publiées dans le domaine public.
Adoption
Deux des premiers programmes cryptographiques grand public largement utilisés qui ont commencé à utiliser Whirlpool étaient FreeOTFE , suivi de TrueCrypt en 2005.
VeraCrypt (un fork de TrueCrypt ) a inclus Whirlpool (la version finale) comme l'un de ses algorithmes de hachage pris en charge.
Voir également
Les références
Liens externes
- La fonction de hachage WHIRLPOOL sur la Wayback Machine (archivé 29/11/2017)
- Jacksum sur SourceForge.net , une implémentation Java des trois révisions de Whirlpool
- whirlpool sur GitHub - Une implémentation Go open source de la dernière révision de Whirlpool
- Une implémentation Matlab de la fonction de hachage Whirlpool
- RHash , un outil de ligne de commande open source , qui peut calculer et vérifier le hachage Whirlpool.
- Module Perl Whirlpool au CPAN
- Module Digest implémentant l'algorithme de hachage Whirlpool dans Ruby
- Ironclad un paquet de cryptographie Common Lisp contenant une implémentation Whirlpool
- La norme ISO / CEI 10118-3: 2004
- Vecteurs de test pour le hachage Whirlpool du projet NESSIE
- Implémentation C # gérée
- Module Python Whirlpool