Esiste una buona alternativa a 160 bit per SHA-1?

2

SHA-1 è stato a lungo considerato insicuro, e ora anche gli attacchi sono stati dimostrati in pratica. L'alternativa proposta per i certificati SSL è la suite SHA-2 di funzioni hash, di cui è più comunemente usato SHA-512.

Tuttavia, l'hash generato da SHA-512 è quasi 4 volte più lungo di SHA-1. Questo non è un problema, l'hash è usato solo dalle macchine, ma per es. verificare manualmente l'integrità del file è scomodo.

Domanda

Esiste una funzione di hash che:

  • ha lo stesso (al massimo) hash a 160 bit lungo come SHA-1,
  • è stato ampiamente analizzato,
  • ma non ha vulnerabilità note?
posta jpa 05.03.2017 - 17:53
fonte

2 risposte

4

Innanzitutto, SHA-256 è significativamente più veloce (di solito) di SHA-512 ed è abbastanza potente per la maggior parte degli usi.

In secondo luogo, puoi troncare l'output di hash , a condizione che tu sia a conoscenza del" paradosso del compleanno "- ad es. 160 bit di output ti danno ~ 80 bit di sicurezza. probabilmente vuoi evitare di troncare se possibile, ma se necessario, SHA-256 troncato a 160 bit è meglio di SHA-1 a questo punto.

Si noti che tutti i recenti attacchi SHA-1 sono basati su collisioni - non ci sono pre-attacchi o 2 ° attacchi pre-attacco, anche contro MD5, quindi "invertendo" questi non sono fattibili (al momento).

    
risposta data 05.03.2017 - 18:11
fonte
-1

Hai disegnato due cose diverse qui:

  • per i certificati SSL che utilizzano SHA1 per HMAC è ancora sicuro, non è necessario cambiarlo (vedere questo pubblicazione correlata )
  • per usi regolari (ad esempio controllo dell'integrità) non esiste un migliore algoritmo meglio utilizzato in 160 bit. Potrebbe valere la pena notare che, a seconda dell'algoritmo, il troncamento di un hash di più bit potrebbe essere ancora un'opzione migliore ( guarda questo argomento )

This is not a problem is the hash is used only by machines, but for e.g. verifying file integrity manually it is inconveniently long.

Questo non è un problema, nel 99,999% dei casi è possibile determinare la mancata corrispondenza con l'occhio. Altrimenti, puoi confrontare i checksum nel tuo terminale, che è facile come questo 8 liner che ti ho appena scritto in meno di 30 secondi (chiamalo sha1check.sh )

#!/usr/bin/env sh

if [ 'sha1sum $1 | cut -d' ' -f1' = "$2" ]; 
then
   echo 1
 else 
   echo 0
fi

Utilizzo:

$ sha1check.sh file.zip ffc06e14fb40db2da3ce0117b4483a8f0ca86937
0

PS: la prima collisione sha1 di successo è stata pubblicata come una settimana fa e i suoi dettagli tecnici sono mantenuti privati. È altamente improbabile che altri utenti tranne Google lo usino.

    
risposta data 05.03.2017 - 17:59
fonte

Leggi altre domande sui tag