Strumenti per sviluppatori · SHA calcolatore hash
L'hashing non è crittografia: perché un hash SHA-256 non può essere decrittografato
· Perché è importante
crittografia sicurezza codifica
Non esiste una chiave né un inverso: un hash è una funzione unidirezionale. Questo post spiega la differenza rispetto alla crittografia, perché i siti di ricerca hash sembrano invertire gli hash e cosa significa per l'hashing dei dati personali.
Per favore, decifra questi hash: il ticket che rivela un malinteso su cosa sia l'hashing
Arriva un ticket di supporto che chiede di decrittografare alcuni hash SHA-256. Lo sviluppatore che lo legge sospetta un malinteso su cosa sia l'hashing. La confusione ha senso: sia l'hashing che la crittografia coinvolgono algoritmi crittografici, entrambi producono output che sembrano criptati ed entrambi sono rilevanti per la sicurezza. Ma sono strumenti fondamentalmente diversi. La crittografia è reversibile; l'hashing non lo è. Questa distinzione è talmente importante che confonderli ha rotto i sistemi di sicurezza reali. Il ticket rappresenta una lacuna comune nella comprensione che influisce sulla progettazione del sistema.
Una funzione hash è una funzione unidirezionale. È possibile eseguire l'hashing di un input per ottenere un digest, ma non esiste alcuna chiave né operazione inversa che recuperi l'input dal digest. Questa non è una limitazione o un bug; è la proprietà che definisce un hash. Il calcolatore hash ToolAcre SHA produce riassunti del testo incollato e non esiste un pulsante "decrittografa" perché non potrebbe esistere alcun pulsante. L’operazione è irreversibile per matematica, non per scelta. L'assenza della funzione inversa non è una caratteristica che è possibile richiedere.
La crittografia ha una chiave e un inverso; l'hashing non ha nessuno dei due: la differenza di definizione in termini semplici
La crittografia funziona diversamente. Un algoritmo di crittografia prende testo in chiaro e una chiave e produce testo cifrato. Il testo cifrato è criptato e illeggibile senza la chiave. Fondamentalmente, la stessa chiave può decrittografare il testo cifrato riportandolo in testo in chiaro. La crittografia è reversibile in base alla progettazione. Crittografi per mantenere segreti i dati; decifri per leggerlo di nuovo. La sicurezza della crittografia dipende dal fatto che la chiave sia segreta. Solo il detentore della chiave può invertire la trasformazione.
L'hashing non ha chiave né inversione. Esegui l'hashing di qualcosa per produrre un digest di lunghezza fissa. Lo stesso input produce sempre lo stesso digest. Un input diverso produce un digest diverso, ovvero la proprietà di resistenza alle collisioni. Ma non puoi prendere un riassunto e produrre un input. La funzione va solo in una direzione. Se è necessario crittografare i dati per poterli decrittografare in seguito, l'hashing è lo strumento sbagliato. Se è necessaria un'impronta digitale dei dati per la verifica o l'indirizzamento del contenuto, l'hashing è corretto. Per scegliere lo strumento giusto è necessario comprendere la differenza.
Come funzionano i siti di ricerca hash: dizionari precalcolati di input comuni, non decrittazione
Questa distinzione è così importante che è alla base della sicurezza della verifica della password. Un server non memorizza le password. Memorizza il risultato dell'hashing della password. Quando un utente accede, il server esegue l'hashing del suo invio e lo confronta con il valore memorizzato. Se il server viene compromesso e il suo database viene rubato, l'aggressore non ottiene le password stesse, ma solo gli hash. La natura unidirezionale dell'hash significa che l'aggressore non può decodificare le password dagli hash. La sicurezza del sistema dipende da questa proprietà.
Se invece il server utilizzasse la crittografia, se crittografasse le password e potesse decrittografarle, allora un compromesso che rubasse la chiave esporrebbe immediatamente ogni password. L'hashing viene scelto appositamente perché è irreversibile. Questo è il motivo per cui i sistemi di password utilizzano l’hashing, non la crittografia. L'irreversibilità non è una limitazione; è l'intero modello di sicurezza. Un database di password crittografate è fondamentalmente più debole di uno con hash perché la crittografia è reversibile.
Gli input a bassa entropia sono il punto debole: perché l'hashing di un indirizzo email, di un numero di telefono o di un breve PIN offre poca protezione
Esistono siti di ricerca hash per creare l'illusione della decrittazione. Questi siti ospitano tabelle precalcolate di input comuni e i relativi hash. Le "tabelle arcobaleno" sono dizionari già pronti: una tabella può contenere gli hash delle mille password più comuni, oppure tutte le combinazioni alfanumeriche fino ad una certa lunghezza, oppure intere liste di parole in più lingue. L'operatore del sito ha già eseguito il lavoro di hashing e archiviato i risultati. Quando qualcuno invia un hash a un sito di ricerca, il sito non decrittografa nulla. Cerca semplicemente l'hash nella sua tabella. Se l'hash è presente, ovvero se qualche parola del dizionario o modello di password corrisponde, la tabella restituisce l'input originale. A qualcuno che non ha familiarità con la tecnica sembra una decrittazione magica, ma è solo una ricerca nel database. Il sito non inverte l'hash; lo sta confrontando con valori precalcolati.
Esempio funzionante: hashing di un valore indovinabile e mostra come un dizionario lo recupererebbe, rispetto a un valore casuale lungo che non potrebbe
Questo è il motivo per cui gli input a bassa entropia sono vulnerabili. Se esegui l'hashing di una password comune come "password" o di un valore prevedibile come l'indirizzo email di qualcuno, c'è una ragionevole possibilità che un sito di ricerca abbia già calcolato quell'hash e lo abbia archiviato. La ricerca restituisce immediatamente il valore originale. Se esegui l'hash di una stringa casuale di 256 caratteri, nessun sito di ricerca al mondo avrà quel particolare hash precalcolato. Il sito di ricerca non restituisce nulla perché l'input non era nel loro dizionario. La sicurezza dell'hash dipende interamente dall'entropia dell'input.
Il calcolatore hash ToolAcre SHA lo dimostra direttamente. Elimina una parola comune e un utente malintenzionato determinato potrebbe cercarla se gestisse il proprio servizio di dizionario. Hash un valore casuale lungo e sarebbe improbabile che anche un dizionario enorme lo contenga. Il determinismo dell’hashing – input identici danno output identici – è ciò che rende possibili gli attacchi a dizionario. È anche ciò che rende gli hash utili per la verifica. La stessa proprietà che abilita la ricerca abilita anche la verifica.
Quando si desidera effettivamente la crittografia: i casi in cui i dati devono tornare indietro e in cui un hash è lo strumento sbagliato
Quando vuoi davvero la crittografia, quando devi inviare dati segreti e recuperarli in un secondo momento, una cifratura è lo strumento giusto. AES è lo standard moderno per la crittografia simmetrica: una chiave è condivisa e crittografa il testo in chiaro e decrittografa il testo cifrato. Per la crittografia asimmetrica viene utilizzata la crittografia RSA o a curva ellittica: una chiave pubblica crittografa e una chiave privata decrittografa. Questi strumenti sono reversibili in base alla progettazione. La sicurezza deriva dalla segretezza delle chiavi, non dall’irreversibilità. L'errore è usare l'hashing dove è necessaria la crittografia. Se esegui l'hashing del numero di una carta di credito con l'intenzione di verificarlo in un secondo momento, non hai modo di decrittografarlo. Se si esegue l'hashing di un identificatore personale e in seguito è necessario recuperarlo, l'hashing è stata la scelta sbagliata. Queste sono situazioni che richiedono la crittografia.
Un esempio pratico separa chiaramente i due usi. Hai un elenco di ID utente che devono essere tenuti segreti gli uni dagli altri e dal tuo personale. Li crittografi con AES e memorizzi il risultato. Successivamente, quando devi cercare un utente, lo decodifichi e lo leggi. L'hashing non funzionerebbe; una volta sottoposti a hashing, gli ID vengono persi per sempre. Al contrario, hai password utente. Li hash e conservi l'hash. Quando un utente accede, esegui l'hashing del suo invio e lo confronti con il valore memorizzato. Non è mai necessario recuperare le password stesse. La crittografia sarebbe sbagliata; non è più necessario utilizzare password in testo normale dopo la configurazione iniziale.
Ciò che questo non copre: progetti di hashing con chiave e salati, che alzano il livello ma sono un argomento separato
Il salting e l'hashing con chiave meritano un trattamento separato perché nessuno dei due trasforma un digest in crittografia. Un salt fa sì che input uguali a bassa entropia producano diversi record archiviati e una chiave può limitare chi calcola un valore di autenticazione valido. L'uscita rimane non reversibile; i tentativi di recupero procedono ancora testando gli input candidati piuttosto che applicando un processo inverso.
L'hashing della password aggiunge un costo deliberato e un sale, mentre HMAC autentica i messaggi con una chiave segreta. ToolAcre non implementa nessuna delle due operazioni. Tenerli fuori da questo articolo evita la pericolosa scorciatoia di descrivere il semplice SHA-256 più un prefisso improvvisato come equivalente a un record di password rivisto o a una costruzione di autenticazione del messaggio.
In conclusione: solo andata: il calcolatore di hash ToolAcre SHA calcola i digest; non esiste un pulsante di inversione perché non può esistere
Il calcolatore di hash ToolAcre SHA mostra l'hashing in azione: incolla il testo, ottieni un riepilogo, fatto. Nessuna inversione di rotta è possibile né prevista. Lo strumento rifiuta correttamente di fornire una funzione di "decrittografia", perché non può esistere. Se hai bisogno di crittografia, usa una cifratura adeguata. L'assenza di inversione non è una limitazione dello strumento; è un fatto matematico sull'hashing. Le funzioni unidirezionali sono strumenti potenti proprio perché non possono essere invertite. Impegnano i dati in un modo che non può essere ripreso. Forniscono la verifica senza rivelare l'originale. Consentono sistemi di password sicuri anche in caso di furto del database. Gli hash delle password salati e opportunamente ottimizzati in termini di costi diventano impossibili da invertire attraverso ipotesi. L’irreversibilità è il meccanismo di sicurezza.
Il calcolatore di hash ToolAcre SHA calcola digest che sono unidirezionali, mirati e calcolati correttamente dall'implementazione Web Crypto del browser. Se hai bisogno di eseguire l'hash per verifica o integrità, usalo. Se hai bisogno di mantenere segreti i dati e recuperarli in seguito, la crittografia è il tuo strumento. Comprendere la differenza tra hashing irreversibile e crittografia reversibile è fondamentale per la sicurezza e per costruire sistemi che facciano ciò di cui hai effettivamente bisogno.