Secure Hash Algorithm
Gli Algoritmi SHA sono cinque funzioni crittografiche di hash sviluppate dalla National Security Agency (NSA) e pubblicate dal NIST come un Federal Information Processing Standard degli USA.
SHA sta per Secure Hash Algorithm.
Un algoritmo di hash calcola una rappresentazione digitale di lunghezza fissa (nota come message digest) di una sequenza di dati in ingresso (il messaggio) di lunghezza qualunque.
Un tale algoritmo è chiamato “sicuro” quando (citando lo standard),
“è computazionalmente impraticabile:
- trovare un messaggio che corrisponda ad un dato message digest, oppure
- trovare due messaggi distinti che producano lo stesso message digest.
Ogni cambiamento del messaggio porterà, con probabilità molto alte, ad un diverso message digest.”
I cinque algoritmi sono chiamati SHA-1, SHA-224, SHA-256, SHA-384, e SHA-512.
Le ultime quattro varianti sono talvolta chiamate tutte insieme SHA-2.
SHA-1 produce un message digest di 160 bits; il numero nel nome delle altre quattro varianti (p.e. SHA-224) indica il numero di bit prodotti.
SHA-1 viene impegato in diverse applicazioni e protocolli ampiamente diffusi, inclusi TLS and SSL, PGP, SSH, S/MIME, e IPsec. Viene considerato il successore di MD5, una funzione di hash molto utilizzata in passato.
La sicurezza di SHA-1 è stata in parte compromessa dai crittoanalisti. [1] Sebbene non siano ancora noti attacchi alle varianti SHA-2, esse hanno un algoritmo simile a quello di SHA-1 per cui sono in atto sforzi per sviluppare algoritmi di hashing alternativi e migliorati.[2][3] Un concorso aperto per la realizzazione di una nuova funzione SHA-3 è stato formalmente annunciato nel Federal Register il 2 novembre 2007.[4] "La NIST sta avviando un concorso per lo sviluppo di uno o più algoritmi di hashing aggiuntivi attraverso una competizione pubblica, come per il processo di sviluppo dell' Advanced Encryption Standard (AES)."[5] Le iscrizioni si sono concluse il 31 ottobre 2008 e la proclamazione del vincitore e la pubblicazione del nuovo standard sono previste per il 2012.
Siti Internet per il calcolo degli hash
- Hash'em all! — Hashing online di testo e files con svariati algoritmi
- http://www.johnmaguire.us/tools/hashcalc/index.php – Consente l'encoding di stringhe di lunghezza nulla
Standards: SHA-0, SHA-1, SHA-2, SHA-3...
- Specifications for a Secure Hash Standard (SHS) – Draft for proposed SHS standard (SHA-0)
- Secure Hash Standard (SHS) – Proposed SHS standard (SHA-0)
- RFC 3174, “US Secure Hash Algorithm 1 (SHA-1)”
- RFC 4634, “US Secure Hash Algorithms (SHA and HMAC-SHA)”
- CSRC Cryptographic Toolkit – Official NIST site for the Secure Hash Standard
- FIPS 180-2: Secure Hash Standard (SHS) (PDF, 236 kB) – Current version of the Secure Hash Standard (SHA-1, SHA-224, SHA-256, SHA-384, and SHA-512), 1 August 2002, amended 25 February 2004
- NIST Cryptographic Hash Project SHA-3 competition
Cryptanalysis
Implementations
- The OpenSSL Project – The widely used OpenSSL
crypto
library includes free, open-source implementations of SHA-1, SHA-224, SHA-256, SHA-384, and SHA-512 - Crypto++ Crypto++ Library is a free C++ class library of cryptographic schemes.
- Bouncy Castle The Bouncy Castle Library is a free Java and C# class library that contains implementations of the SHA-1, SHA-224, SHA-256, SHA-384 and SHA-512 algorithms as well as other algorithms like Whirlpool, Tiger, RIPEMD, GOST-3411, MD2, MD4 and MD5.
Tutorials and example code
- Comparison of SHA function in different languages
- A SHA-1 implementation in C by Christophe Devine
- SHA-1 implementations in C and C++, including Win32 and Linux binaries by Paul E. Jones (RFC Co-Author)
- A SHA-2 implementation in C by Olivier Gay
- A SHA implementation in C by Brian Gladman
- SHA-2 implementation in Delphi by eCat (Note: This version may give incorrect results for SHA-256.)
- A Visual Basic SHA-1 implementation by John Taylor
- SHA-1 implementation in JavaScript by Chris Veness
Test Vectors
The NESSIE project test vectors for SHA-1, SHA-256, SHA-384, and SHA-512.
SHA1 reverse lookup databases
- HASHsearch - decodifica gli hash MD5 e SHA1 (480 000+ stringhe)
-->
- ^ http://www.schneier.com/blog/archives/2005/02/cryptanalysis_o.html
- ^ http://www.schneier.com/blog/archives/2005/11/nist_hash_works_4.html
- ^ http://www.heise-security.co.uk/articles/75686/2
- ^ http://csrc.nist.gov/groups/ST/hash/documents/FR_Notice_Nov07.pdf
- ^ http://www.csrc.nist.gov/pki/HashWorkshop/index.html