Strumenti per sviluppatori · SHA calcolatore hash
Collisione, preimmagine e seconda preimmagine: i tre obiettivi di sicurezza hash
· Sfondo
sha-256 crittografia sicurezza
Un avviso indica che un algoritmo presenta problemi di collisione ed è necessario sapere se il proprio utilizzo ne è interessato. Questo post definisce le tre proprietà di resistenza, mostra quali casi d'uso dipendono da quali e le applica a SHA-1.
Il mio utilizzo è influenzato? - la domanda a cui raramente un consulente risponde direttamente
Arriva un avviso che dice che SHA-1 ha problemi di collisione, quindi il tuo sistema deve essere aggiornato. Ma cosa succede se il tuo sistema utilizza SHA-1 solo per la derivazione delle chiavi, non per l'autenticazione dei messaggi? Cosa succede se SHA-1 viene utilizzato solo per deduplicare file identici e non per dimostrare l'autenticità? La domanda "il mio sistema è interessato?" Non è possibile rispondere senza capire quale proprietà della funzione hash è effettivamente interrotta e da quale proprietà dipende il caso d'uso.
Una funzione hash fornisce molteplici proprietà di sicurezza: resistenza alla preimmagine, resistenza alla seconda preimmagine e resistenza alla collisione. Un'interruzione in una proprietà non ne interrompe un'altra e alcuni casi d'uso dipendono solo da proprietà che rimangono sicure. Il calcolatore hash ToolAcre SHA visualizza gli algoritmi e le relative larghezze digest, proprietà che determinano i limiti per ciascun obiettivo di sicurezza. Comprendere queste proprietà è il primo passo per decidere se un avviso influisce sul sistema.
Resistenza alla preimmagine: dato un hash, non è possibile trovare un input che lo produca
La resistenza alla preimmagine significa che, dato un digest, non dovrebbe essere possibile trovare un input che produca quel digest. Ricevi l'hash di una password e vuoi indovinare la password; questo è un attacco di preimmagine. La seconda resistenza alla preimmagine significa che, dato un messaggio e il suo hash, non dovrebbe essere possibile trovare un messaggio diverso con lo stesso hash. Hai un file scaricato e il suo checksum SHA-256; un utente malintenzionato vuole scambiare il file con un file diverso che abbia lo stesso hash; questo è un secondo attacco di preimmagine.
La resistenza alle collisioni significa che non dovrebbe essere possibile trovare due messaggi diversi con lo stesso hash. Stai firmando un documento; un utente malintenzionato vuole creare un documento diverso con la stessa firma; questo è un attacco di collisione. Questi tre scenari richiedono quantità diverse di lavoro da parte dell'aggressore e i limiti di sicurezza differiscono. La resistenza alla preimmagine è la proprietà più forte e raramente è quella che viene danneggiata. Dato un riassunto, trovare una preimmagine richiede una ricerca con la forza bruta attraverso lo spazio dei possibili input. La larghezza del digest influisce sullo spazio di ricerca generico, ma questo articolo non indica un conteggio delle operazioni senza derivarlo e definire il modello di attacco.
Seconda resistenza alla preimmagine: dato un input, non è possibile trovare un input diverso con lo stesso hash
La seconda resistenza alla preimmagine è la successiva più forte e raramente viene interrotta isolatamente. Dato un messaggio e il suo hash, trovare un messaggio diverso con lo stesso hash richiede anche un lavoro esponenziale nella dimensione del digest. Le ricerche di seconda immagine preliminare e di collisione garantiscono all'aggressore scelte diverse, quindi i loro limiti generici non sono intercambiabili. Qui è sufficiente la distinzione qualitativa; nessun limite numerico viene affermato senza una derivazione in linea. Un algoritmo perde la seconda resistenza alla preimmagine se si verifica un attacco strutturale che non richiede forza bruta.
La resistenza alle collisioni è la più debole delle tre proprietà ed è quella che più spesso si rompe o si piega. Una ricerca di collisione consente all'attaccante di scegliere entrambi gli input, a differenza degli altri due obiettivi, quindi ha un limite generico diverso. Questo articolo omette intenzionalmente le cifre relative ai compleanni e le tempistiche dell'hardware perché la loro derivazione e il loro approvvigionamento non rientrano nel materiale verificato.
Resistenza alle collisioni: non è possibile trovare due input con lo stesso hash e perché questo è il più debole dei tre
La mappatura delle tre proprietà di sicurezza ai casi d'uso mostra quale proprietà è richiesta per ciascuna attività. La deduplicazione si basa sul presupposto che se due file hanno lo stesso hash, sono lo stesso file. Ciò richiede resistenza alle collisioni: se le collisioni sono possibili, un utente malintenzionato può creare due file diversi con lo stesso hash e rompere l’invariante di deduplicazione. Si tratta tuttavia di un requisito debole, poiché le collisioni pratiche sono estremamente rare anche se teoricamente possibili.
Le firme digitali richiedono una resistenza alle collisioni in forma forte. Quando un firmatario produce una firma per l'hash di un documento e un verificatore successivamente controlla la firma, i due devono controllare lo stesso hash. Se le collisioni sono facili, un utente malintenzionato può falsificare la firma di un documento diverso trovando una collisione con il documento firmato. Questo è l'attacco che ha motivato l'aggiornamento da SHA-1 a SHA-256 nei certificati. Un certificato firmato da una CA e un certificato contraffatto con la stessa firma superano entrambi la verifica se l'hash presenta una collisione.
La resistenza alle collisioni differisce dagli obiettivi pre-immagine; nessuna cifra legata al compleanno appare senza derivazione
L'archiviazione indirizzata al contenuto utilizza gli hash come chiavi di ricerca. Se un file viene archiviato nella posizione determinata dal suo hash e successivamente recuperato utilizzando lo stesso hash, le due operazioni devono raggiungere lo stesso file. Ciò richiede resistenza alle collisioni se sono presenti aggressori attivi, ma richiede solo una seconda resistenza alla preimmagine se gli aggressori sono passivi. Un attaccante passivo non può creare una collisione; possono solo osservare se i file legittimi si scontrano per caso.
La verifica del download utilizza un checksum per confermare che un file recuperato da Internet non è danneggiato. Il checksum viene solitamente pubblicato insieme al file da una fonte attendibile. Un utente malintenzionato che modifica il file scaricato non può aggiornare il checksum senza accedere alla fonte attendibile. Questo caso d'uso richiede una seconda resistenza alla preimmagine: dato il file originale e il suo checksum, l'aggressore non dovrebbe essere in grado di produrre un file diverso con lo stesso checksum. La resistenza alla SHA-1 seconda preimmagine è ancora solida nonostante le interruzioni di collisione.
Mappare l'integrità e gli usi della denominazione sulle proprietà richieste; gli hash semplici non memorizzano le password
L'archiviazione delle password è l'unico caso d'uso in cui una funzione hash non è lo strumento giusto. Se le password vengono archiviate come hash SHA-256 e il database degli hash viene divulgato, un utente malintenzionato può eseguire un attacco con dizionario: sottoporre a hash milioni di ipotesi e verificare se qualcuna corrisponde agli hash archiviati. L'aggressore ha bisogno di una sola preimmagine per ciascuna password e una funzione veloce offre all'aggressore un efficiente ciclo di confronto offline senza limiti di velocità di applicazione.
Le password necessitano di una funzione salted per utente deliberatamente lenta, con molta memoria, come Argon2id, scrypt o bcrypt. Un salt univoco per utente fa sì che password identiche producano record archiviati diversi, mentre la memoria configurata della funzione password e i costi in termini di tempo rendono ciascun candidato deliberatamente più costoso. I parametri esatti richiedono un benchmarking locale e non sono prescritti qui. Il calcolatore dell'hash ToolAcre SHA non esegue l'hashing della password e la documentazione della guida spiega perché SHA-256 non è adatto a questo caso d'uso.
Esempio realizzato: applicazione della mappatura a SHA-1 in un repository Git rispetto a SHA-1 in un certificato
Un esempio funzionante: SHA-1 in un repository Git. Ogni commit Git ha un hash SHA-1 come ID oggetto. Se la resistenza alle collisioni SHA-1 viene interrotta, un repository Git è vulnerabile? La risposta è: forse. Un utente malintenzionato potrebbe creare un commit con lo stesso SHA-1 di un commit esistente e inviarlo a un server di repository, che potrebbe quindi servire commit diversi a client diversi. Tuttavia, ciò richiede la scelta di un bersaglio specifico e il calcolo di una collisione, il che è costoso anche con SHA-1 rotto.
I membri del progetto Git hanno pubblicato una tabella di marcia per la migrazione a SHA-256, ma l'urgenza è moderata perché l'attacco pratico richiede sia tecniche di collisione che compromissione del server. Per uno sviluppatore che chiede "la sicurezza del mio repository Git dipende dalla resistenza alle collisioni SHA-1?" la risposta è sì, ma il rischio pratico è basso rispetto ad altre minacce alla sicurezza. Il calcolatore hash ToolAcre SHA fornisce sia SHA-1 che SHA-256, etichettati in modo appropriato, in modo che gli sviluppatori possano calcolarli e comprenderne la differenza.
Conclusione: dai un nome alla proprietà prima di farti prendere dal panico: il calcolatore di hash ToolAcre SHA ti consente di vedere le lunghezze digest che impostano i limiti di ciascun algoritmo
Per qualsiasi sistema che utilizza SHA-1, la decisione di eseguire l'aggiornamento dipende dal fatto che il caso d'uso richieda o meno la proprietà specifica non funzionante. Se il caso d'uso riguarda le firme digitali o la deduplicazione contro aggressori attivi, è richiesta la resistenza alle collisioni e SHA-1 non funziona, quindi esegui immediatamente l'aggiornamento a SHA-256. Se il caso d'uso è l'archiviazione indirizzata al contenuto o i checksum, è necessaria una seconda resistenza alla preimmagine e SHA-1 è ancora sicuro per tale scopo, sebbene SHA-256 sia preferibile per la prova futura.
Se il caso d'uso è la derivazione della chiave o la verifica della password, è richiesta la resistenza alla preimmagine e non dovrebbe essere utilizzato nulla in questo toolkit perché le funzioni più veloci sono migliori per la derivazione della chiave. Il calcolatore hash ToolAcre SHA consente agli sviluppatori di calcolare i digest e vedere le proprietà in azione. Comprendere queste tre proprietà e abbinarle ai casi d'uso è la base per effettuare scelte crittografiche sicure nei sistemi reali.