SHA-2

SHA-2 (Secure Hash Algorithm) est une famille de fonctions de hachage qui ont été conçues par la National Security Agency des États-Unis (NSA), sur le modèle des fonctions SHA-1 et SHA-0, elles-mêmes fortement inspirées de la fonction MD4 de Ron Rivest (qui a donné parallèlement MD5). Telle que décrite par le National Institute of Standards and Technology (NIST), elle comporte les fonctions SHA-256 et SHA-512 dont les algorithmes sont similaires mais opèrent sur des tailles de mot différentes (32 bits pour SHA-256 et 64 bits pour SHA-512), SHA-224 et SHA-384 qui sont essentiellement des versions des précédentes dont la sortie est tronquée, et plus récemment SHA-512/256 et SHA-512/224 qui sont des versions tronquées de SHA-512. Le dernier suffixe indique le nombre de bits du haché.

Les algorithmes de la famille SHA-2, SHA-256, SHA-384 et SHA-512, sont décrits et publiés en compagnie de SHA-1 comme standard du gouvernement fédéral des États-Unis (Federal Information Processing Standard) dans le FIPS 180-2 (Secure Hash Standard) datant de 2002 (une prépublication pour appels à commentaires a été faite en 2001). La fonction SHA-224 est ajoutée un peu plus tard. La dernière version à ce jour, le FIPS 180-4 (Secure Hash Standard) date de et ajoute les fonctions SHA-512/256 et SHA-512/224[1].

En 2005, des problèmes de sécurité de SHA-1 ont été mis en évidence : il existe pour la recherche de collisions une attaque théorique nettement plus rapide que l'attaque générique des anniversaires sur les fonctions de hachage. Bien que l'algorithme de SHA-2 partage des similarités avec celui de SHA-1, ces attaques n'ont actuellement pas pu être étendues à SHA-2. Le NIST a cependant organisé un concours pour sélectionner une nouvelle fonction de hachage, SHA-3. Le concours a débouché fin 2012 sur le choix d'une nouvelle famille de fonctions dont la conception est très différente de SHA-1 et de SHA-2. La nouvelle famille de fonctions est présentée comme un autre choix possible, elle ne remet pas en cause l'utilisation de SHA-2 du moins dans l'immédiat.

Les fonctions de la famille SHA-2 adoptent le schéma itératif de la construction de Merkle-Damgård
Un tour de la fonction de compression de SHA-2, celle-ci en comporte 64 (SHA-256) ou 80 (SHA-512) :
A, B, C, D, E, F, G et H sont des mots de 32 bits (SHA-256) ou 64 bits (SHA-512) ;
est l'addition modulo 232 (SHA-256) ou 264 (SHA-512), soit l'addition des entiers machines non signés de 32 ou 64 bits, qui est non linéaire sur F2 ;
les fonctions Ch et Ma se calculent par opérations bit à bit logiques, elles sont non linéaires ;
les fonctions Σ0 et Σ1 se calculent par décalage circulaire et xor (somme sur F2) ;
Kt est une constante (32 ou 64 bits) qui dépend du numéro de tour t ;
Wt est un mot de 32 (SHA-256) ou 64 bits (SHA-512) qui dépend du numéro de tour t ; il est obtenu par une procédure d'expansion à partir du bloc de donnée (512 ou 1024 bits) dont le traitement est en cours.