AccueilđŸ‡«đŸ‡·Chercher

MD6

L'algorithme MD6, pour Message Digest 6, est une fonction de hachage cryptographique qui permet d'obtenir l'empreinte numérique d'un fichier (on parle souvent de message). MD6 a été développée par un groupe[1] mené par Ronald L. Rivest, cryptologue américain qui inventa MD5 et participa au développement de RSA, avec Shamir et Adleman.

MD6 a été proposée pour participer à la compétition de fonction de hachage du NIST en 2008 mais ne fut pas retenue lors de la deuxiÚme étape de sélection.

Principe

MD6 prend en entrĂ©e un message de taille au plus bits, pour lequel il calcule une empreinte de d bits, oĂč 0 < d ≀ 512 bits.

De mĂȘme, un certain nombre de paramĂštres, possĂ©dant des valeurs par dĂ©faut, peuvent ĂȘtre modifiĂ©s :

  • ClĂ© K: nulle par dĂ©faut (et donc de taille 0). Peut ĂȘtre utilisĂ©e pour du salage.
  • Hauteur de l'arbre L. En effet, comme dĂ©crit plus loin, MD6 utilise un arbre de Merkle quaternaire. Sa hauteur peut donc ĂȘtre spĂ©cifiĂ©. Si L vaut 0, la compression se fait selon un schĂ©ma sĂ©quentiel (de type Merkle-DamgĂ„rd) permettant d'obtenir le mĂȘme rĂ©sultat. Si L est infĂ©rieur Ă  64, la compression peut ĂȘtre hybride, car commençant pour un parcours d'arbre pour finir pour un parcours sĂ©quentiel.
  • Nombre de tour r: par dĂ©faut, , donc avec la valeur par dĂ©faut de d (256), r=104.
  • Les autres paramĂštres: les constantes utilisĂ©es par la fonction de compression (Q), ou les indices des valeurs hachĂ©s Ă  rĂ©utiliser pour le hachage du tour de boucle suivant(t1, t2, t3, t4, t5) peuvent aussi ĂȘtre modifiĂ©, sous certaines conditions. Par exemple, les valeurs des ti ne peuvent excĂ©der 89.

Mode d'opération

L'arbre de Merkle de MD6

Le mode d'opération par défaut repose sur un arbre de Merkle quaternaire.

L'unitĂ© de mesure est le mot, qui vaut 8 octets, ou 64 bits.

Les feuilles de l'arbre proviennent du fichier Ă  hacher. Elles sont Ă©ventuellement complĂ©tĂ©es par des 0 pour obtenir des feuilles de taille 16 mots, soit 128 octets ou 1024 bits. De plus, chaque nƓud ayant 4 fils, des feuilles/nƓuds supplĂ©mentaires composĂ©s de 0 sont ajoutĂ©s pour obtenir le bon nombre de feuilles/nƓuds. Chaque bloc, composĂ© de quatre nƓuds, est compressĂ© (avec la fonction de compression dĂ©taillĂ©e dans la partie suivante) pour obtenir en sortie un nƓud de taille 16 mots.

Ainsi, on remonte dans l'arbre jusqu'à n'avoir plus qu'un seul nƓud : la racine.

L'empreinte de la fonction de hachage est calculée en tronquant les d derniers bits de la racine de l'arbre (256 par défaut).

Fonction de compression

Données en entrée de la fonction de compression

La fonction de compression prend en entrée un vecteur de 89 mots, composé des éléments suivants :

  • Q un vecteur de 15 mots, Ă©gal Ă  la partie fractionnaire de
  • K les 8 mots de la clĂ© (ou 0 s'il n'y a pas de clĂ©)
  • U 1 mot, indiquant la position du bloc, dont le contenu est dĂ©taillĂ© sur la figure ci-contre
  • V 1 mot, composĂ© de r (le nombre de tour), L (la hauteur maximale de l'arbre), z (vaut 1 lors de la derniĂšre compression, celle qui permet d'obtenir la racine, 0 sinon), p (le nombre de 0 ajoutĂ© (padding)), keylen la taille de la clĂ© et d la taille de l'empreinte Ă  gĂ©nĂ©rer
  • B 1 bloc de 64 mots de donnĂ©es, correspondant Ă  4 nƓuds de 16 mots

La fonction de compression, effectue ensuite r tours (par dĂ©faut 104), composĂ© chacun de 16 boucles indĂ©pendantes. Chacune de ses 16 boucles effectue une quinzaine d'opĂ©rations logiques ou de dĂ©calage de bits (les opĂ©rations logiques sont prĂ©fĂ©rĂ©es aux opĂ©rations arithmĂ©tiques et aux opĂ©rations dĂ©pendant de branchement afin d'empĂȘcher les attaques par canaux auxiliaires).

Chaque tour calcule 89 mots, à partir des 89 mots calculés précédemment (les 89 premiÚres valeurs sont le vecteur de 89 mots passé en entrée de la fonction de compression).

Les 64 derniers mots calculés sont la sortie de la fonction de compression.

Notes et références

  1. Liste des auteurs: Benjamin Agre, Dan Bailey, Sarah Cheng, Christopher Crutchfield, Yevgeniy Dodis, Kermin Fleming, Asif Khan, Jayant Krishnamurthy, Yuncheng Lin, Leo Reyzin, Ron Rivest, Emily Shen, Jim Sukha, Eran Tromer, Yiqun Lisa Yin

Liens externes

Cet article est issu de wikipedia. Text licence: CC BY-SA 4.0, Des conditions supplĂ©mentaires peuvent s’appliquer aux fichiers multimĂ©dias.