Perché AES 128bit è considerato molto strong ma SHA a 160 bit è deprezzato?

4

Perché l'AES a 128 bit è considerato molto strong ma lo SHA a 160 bit non è sufficientemente sicuro? Google / chrome / browser sembra abbandonare il supporto per i certificati SSL SHA1. Presumo che sia più semplice calcolare SHA di un round di AES, ma ci sono molti più bit in SHA. Capisco che MD5 è stato deprezzato da bc l'algoritmo è stato rotto abbastanza da non creare difficoltà in una collisione, ma non credo che entri in gioco con SHA?

    
posta 29.04.2016 - 02:44
fonte

2 risposte

9

Per le funzioni di hash (come SHA-1) utilizzate per firmare i certificati SSL, la sicurezza è completamente compromessa se si verificano attacchi di collisione efficaci. A causa del compleanno paradosso , una funzione di hash N-bit fornisce in modo efficace circa N / 2 bit di sicurezza contro gli attacchi di collisione. Questo è un brute-forcer in grado di creare collisioni per una funzione hash N-bit dopo aver generato circa 2 stringhe N / 2 a hash. Quindi una funzione hash a 160 bit fornisce circa 80 bit di sicurezza contro le collisioni (significa che ci vuole circa 2 80 sforzo per generare una collisione tramite brute-force).

Per un codice a blocchi (come AES), si usa una chiave N-bit che mappa un blocco di testo (128 bit nel caso di AES) in un blocco di testo cifrato in modo reversibile se si possiede l'N-bit chiave. Quindi, per forzare bruscamente un codice a blocchi con una chiave N-bit (e nessun'altra vulnerabilità), devi provare circa 2 N possibili chiavi finché non trovi una chiave che trasforma il testo cifrato nel messaggio originale .

Quindi (senza considerare eventuali difetti specifici nei due algoritmi), un cifrario a blocchi con una chiave a 128 bit è molto più strong (che richiede 2 128 sforzo alla forza bruta) rispetto all'utilizzo di un SSL certificato firmato con una funzione hash a 160 bit (che richiede 2 80 sforzo per trovare una collisione e compromettere completamente la sicurezza). In effetti, sono circa 2 48 ~ 281 trilioni (10 12 ) volte più sicuri.

Spiegazione del motivo per cui le collisioni interrompono i certificati SSL

In sostanza, un certificato SSL è costituito da alcune informazioni in chiaro p e una firma S fornita da un'autorità di certificazione. Questo testo in chiaro include in genere il nome della tua organizzazione, il tuo nome di dominio e informazioni simili. Se si desidera un nuovo certificato, si inviano quindi queste informazioni a un'autorità di certificazione (CA) a cui i browser Web più diffusi si fidano intrinsecamente. La CA controlla le tue informazioni (ad esempio, verifica che tu sia il proprietario del dominio, ad esempio inviando un codice via email all'indirizzo elencato nei record DNS per quel dominio, OPPURE paghi un certificato di convalida esteso e la CA esegue più controlli che sei tu l'organizzazione che dici di essere). Se le informazioni vengono verificate, l'autorità di certificazione accetterà di firmare e rilasciare la firma per completare il certificato. La firma consiste nell'azzerare le informazioni in chiaro H(p) nel certificato e quindi utilizzare la chiave privata della CA ( K_priv ) per crittografare tale hash ( S = E(K_priv, H(p)) . Quindi chiunque può utilizzare la chiave pubblica corrispondente della CA ( K_public ) (e il tuo sistema operativo e / o browser web in genere viene fornito con un elenco di chiavi pubbliche di autorità di certificazione attendibili) per decrittografare la firma per trovare H(p) = D(K_public, S) e verificare che la firma corrisponda all'hash delle informazioni in chiaro nel certificato SSL.

Quindi se generi circa 2 80 messaggi di testo in chiaro p (alcuni nella forma necessaria per essere un certificato per un dominio, alcuni sotto forma di certificati per l'autorità di certificazione intermedia), potrebbe essere possibile trovare una coppia di due messaggi p1 e p2 che collidono. Se dice p1 identifica un dominio modificato casualmente ( sgnjnjrafaftjhyqsv.com ) che puoi facilmente acquistare (o puoi modificare sottodomini di domini che già possiedi come sgnjnjrafaftjhyqsv.blah.com ), quindi puoi verificare la proprietà di p1 in una CA e tu può ottenere la firma di una CA di p1 . Poiché gli hash corrispondono a H(p1)==H(p2) , puoi prendere la firma dal certificato di p1 e usarla con p2 per generare un certificato valido. Ad esempio, se p2 era un'autorità di certificazione intermedia che consente di firmare altri certificati, è possibile utilizzare quell'autorità di certificazione intermedia per firmare qualsiasi certificato desiderato (e potrebbe, ad esempio, falsificare qualsiasi sito Web desiderato, ignorando almeno altre protezioni). come il blocco dei certificati).

Per riferimento, questo attacco è stato utilizzato con successo per creare false autorità di certificazione intermedie contro MD5 (hash a 128 bit) certificati intorno al 2008 . Nota, ignorare i difetti specifici negli hash rilevanti che trovano una collisione SHA-1 è solo circa 65.000 volte più difficile che trovarne uno in un hash MD5. Con la diminuzione del costo di calcolo, si ritiene che sia fattibile per attacchi sofisticati all'attacco di collisione SHA-1 e minare la sicurezza SSL. L'utilizzo di un hash a 256 bit (come SHA-256) è di circa 18 miliardi di miliardi (18 x 10 18 ) volte più sicuro di un hash a 128 bit (come MD5) contro gli attacchi di collisione (ignorando ancora i difetti specifici in le funzioni hash).

    
risposta data 29.04.2016 - 03:44
fonte
5

AES è un algoritmo di crittografia simmetrica. SHA-1 è una funzione di hashing. Sono animali completamente diversi.

Il problema non è il numero di bit ma le funzioni stesse. Ad esempio puoi prendere MD5. Ha anche 128 bit, ma la creazione di due stringhe in collisione è ora banale.

Il problema non è riuscire a rinforzare le possibilità a 128 bit, ma (a) utilizzare le proprietà delle operazioni md5 per forzare la collisione.

    
risposta data 29.04.2016 - 02:50
fonte

Leggi altre domande sui tag