Secure Hash Algorithm

Schéma du fonctionnement de l'algorithme de hachage SHA-1

Le préfixe SHA (acronyme de Secure Hash Algorithm) est associé à plusieurs fonctions de hachage cryptographiques publiées par le NIST en tant que Federal Information Processing Standard (FIPS).

Les fonctions SHA-0, SHA-1 et SHA-2 ont été conçues par la NSA ; leurs spécifications sont décrites par les publications FIPS-180, dont la dernière version à ce jour est le FIPS-180-4[1].

SHA-0
SHA-0 s'appelait originellement SHA, et a été publiée en 1993 comme Federal Information Processing Standard[2]. Elle est inspirée des fonctions MD4 et MD5 de Ron Rivest. Le NIST recommande formellement de ne pas l'utiliser depuis 1996, pour des questions de sécurité. Elle est cependant restée un objet d'étude pour la communauté académique, en tant que prototype de SHA-1.
SHA-1
SHA-1 est une version légèrement modifiée de SHA-0 publiée en 1995 comme Federal Information Processing Standard[3], qui produit comme celle-ci un haché de 160 bits. Il existe des attaques théoriques pour la recherche de collisions, de complexité nettement moindre que l’attaque générique des anniversaires. Elle a été très utilisée dans les protocoles et applications de sécurité, mais, à cause de l'existence de ces attaques, tend à être remplacée par SHA-256.
SHA-2
SHA-2 est une famille de fonctions de hachage cryptographiques publiée en 2002 comme Federal Information Processing Standard[4], qui regroupe à l'origine SHA-224, SHA-256, SHA-384 et SHA-512. Ces fonctions produisent des hachés de taille différente (désignée par le suffixe, en bits). Le standard FIPS-180-4 () est augmenté de deux versions tronquées de SHA-512, SHA-512/256 (haché de 256 bits) et SHA-512/224 (haché de 224 bits). Elles utilisent des algorithmes très similaires, eux-mêmes largement inspirés de celui de SHA-1. L'un est à base de mots de 32 bits (et d'un découpage en blocs de 512 bits) pour SHA-256 et sa version tronquée SHA-224. L'autre est à base de mots de 64 bits (et d'un découpage en blocs de 1024 bits) pour SHA-512 et ses versions tronquées SHA-384, SHA-512/256 et SHA-512/224. Les attaques connues sur SHA-1 n'ont pu être transposées à SHA-2, même si la construction est proche.
SHA-3
SHA-3, originellement Keccak, est une nouvelle fonction de hachage cryptographique décrite en par la publication FIPS-202[5]. Elle a été sélectionnée en par le NIST à la suite d'un concours public lancé en 2007, ceci car les faiblesses découvertes sur MD5 et SHA-1 laissent craindre une fragilité de SHA-2 qui est construite sur le même schéma[6]. Elle possède des variantes qui peuvent produire des hachés de 224, 256, 384 et 512 bits. Elle est construite sur un principe tout à fait différent de celui des fonctions MD5, SHA-1 et SHA-2.
  1. Voir la page (en) Secure Hashing du NIST, et le standard (en) FIPS-180-4[PDF] en date d'août 2015. Cette version est essentiellement identique à celle de mars 2012 : seule la clause qui élargit les fonctions de hachages utilisables à SHA-3 a été mise à jour, voir FIPS-180-4 (version de mars 2012)[PDF].
  2. Voir ma page d'archive du NIST et FIPS-180.
  3. Voir la page d'archive du NIST.
  4. Voir la page d'archive du NIST.
  5. Voir la page (en) Secure Hashing du NIST, et le standard (en) FIPS-202 publié en août 2015.
  6. La page du NIST sur le concours (en) Cryptographic Hash Algorithm Competition et celle annonçant le gagnant (en) NIST Selects Winner of Secure Hash Algorithm (SHA-3) Competition, publié le 2 octobre 2012.