Qual è la differenza tra la crittografia SHA e SHA-1?
SHA è l'acronimo di Secure Hash Algorithm, uno standard di crittografia inventato dalla National Security Agency e pubblicato dal National Institutes of Standards and Technology. È stato riscontrato che l'algoritmo SHA originale presentava punti deboli nei suoi metodi di crittografia ed è stato sostituito con SHA-1 per una maggiore sicurezza.
Algoritmo di hash sicuro
SHA è una funzione di hash crittografica. Una funzione hash prende un testo iniziale non crittografato, chiamato testo in chiaro, e produce un numero teoricamente univoco che costituisce il messaggio crittografato. SHA crea un numero a 160 bit, che è un numero compreso tra 0 e 1,46 x 10^48. Non è possibile che questo numero sia garantito univoco per tutti i possibili messaggi di testo in chiaro, poiché il numero di tali messaggi è teoricamente infinito, ma le probabilità sono circa 2^80, ovvero 1,21 x 10^24, contro due messaggi che producono lo stesso cifrato risultato. Se ciò si verifica, si parla di collisione. Una collisione fornisce un attacco matematico a un algoritmo di crittografia, consentendo a un crittografo di decrittografare il testo in chiaro.
SHA-0 e SHA-1
Dopo la sua pubblicazione, sono stati scoperti dei difetti nell'algoritmo SHA originale che consentivano a un attacco crittografico di produrre collisioni di hash, indebolendo gravemente la sua efficacia. È stata sviluppata una versione SHA rivista, SHA-1, che ha creato gli stessi risultati a 160 bit senza i difetti originali nell'algoritmo. L'originale SHA è stato retroattivamente rinominato SHA-0 per distinguere tra il suo utilizzo e l'utilizzo di SHA-1.
Modifiche in SHA-1
I difetti originali in SHA-0 non sono mai stati pubblicati, poiché questi difetti forniscono un toolkit per qualsiasi utente malintenzionato che tenti di decrittografare un messaggio utilizzando la crittografia SHA-0. Le uniche informazioni pubbliche sui punti deboli dell'algoritmo originale indicano che le collisioni di hash sono più probabili che casuali quando si utilizza SHA-0 e che le collisioni che utilizzano il metodo non pubblicato vengono eliminate quando si utilizza SHA-1. Poiché SHA-1 e SHA-0 producono risultati matematici della stessa lunghezza, SHA-1 può essere utilizzato come sostituto immediato nel software per computer dell'algoritmo SHA-0 originale senza richiedere riscritture importanti nel resto del software.
SHA-2 e SHA-3
SHA-1 è risultato essere più robusto di SHA-0, ma lascia margini di miglioramento. Un'analisi matematica dei risultati di SHA-1 ha dimostrato un metodo mediante il quale la crittografia SHA-1 potrebbe essere violata 2.000 volte più velocemente di quanto sarebbe teoricamente possibile controllando tutte le 10^48 possibili combinazioni del suo output. Poiché un algoritmo crittografico ideale impedisce miglioramenti della velocità di decrittazione di questo tipo, l'algoritmo SHA-2 evita questo attacco e aumenta la possibile dimensione dell'hash a 512 bit, o 1,34 x 10^154. SHA-3, un algoritmo di crittografia ancora più potente, è attualmente in fase di sviluppo.