Les fonctions SHA-0, SHA-1 et SHA-2 ont été conçues par laNSA ; 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 s'appelait originellement SHA, et a été publiée en 1993 commeFederal Information Processing Standard[2]. Elle est inspirée des fonctionsMD4 etMD5 deRon 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 est une version légèrement modifiée deSHA-0 publiée en 1995 commeFederal Information Processing Standard[3], qui produit comme celle-ci un haché de 160 bits. Il existe des attaques théoriques pour la recherche decollisions, 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 est une famille de fonctions de hachage cryptographiques publiée en 2002 commeFederal 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, 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.