Perchè la debolezza di SHA-1 è considerata una minaccia alla sicurezza TLS

7

Se capisco correttamente il ruolo che un algoritmo di hashing (ad esempio SHA-1) gioca nei certificati TLS è il seguente:

  • La funzione di hashing viene applicata alla chiave pubblica di un soggetto.
  • La CA utilizza quindi la propria chiave privata per crittografare l'output dell'hash.
  • L'output di tale crittografia insieme ad altre informazioni diventa il certificato.

Quindi, affermare che qualcuno è determinato a impersonare un sito che ha un certificato SHA-1 e attacca il digest SHA-1, cercando di produrre una collisione hash.

Se trovano un valore diverso che produce lo stesso digest SHA-1 come chiave pubblica effettiva del sito web, che cosa hanno guadagnato?

Potrebbero ora creare un certificato che sembra essere firmato dalla CA, ma invece la chiave pubblica attuale contiene X, ma non sarebbe inutile per loro senza una chiave privata corrispondente per X?

Dovrebbero ancora crackare RSA. E non troverebbe impossibile la ricerca di una chiave privata che corrisponda a X come se attaccasse direttamente la chiave pubblica del soggetto?

In altre parole, che cosa succede se si aggiunge l'hashing alla sicurezza? Ci deve essere qualcosa altrimenti il deprezzamento di SHA-1 non sarebbe un grosso problema. Ho pensato che gli hash fossero usati nelle firme digitali principalmente per motivi di prestazioni, poiché la crittografia a chiave pubblica come RSA è lenta per i grandi input.

    
posta themik81 04.03.2016 - 09:43
fonte

2 risposte

8

If they find a different value that produces the same SHA-1 digest as the website's actual public key, what have they gained?

Supponiamo di avere a che fare con MD5. Gli attacchi SHA-1 sono ancora in corso e presumo che seguano le stesse linee degli attacchi possibili su MD5.

Con MD5 è possibile creare due valori diversi che producono una collisione hash (entro certi limiti). Ciò tuttavia non significa che sia possibile creare una collisione hash, dati solo i dati di input e il valore hash su quei dati.

Nel tuo esempio significa che non puoi semplicemente ottenere un certificato firmato MD5 o SHA1 e quindi creare un falso. Pertanto, i certificati CA interni creati all'interno di una CA non sono molto a rischio. È tuttavia possibile inviare un certificato appositamente formattato a una CA e quindi modificare i dati firmati in modo tale che la firma venga ancora verificata.

Quindi la stessa organizzazione che richiede il certificato è quella che sta facendo l'attacco. Questo significa che hanno già la chiave privata. Quindi sostituire la chiave pubblica potrebbe essere possibile, ma non avrebbe molto senso.

Quindi cosa possono fare. Bene, si tratta di "alcune altre informazioni" all'interno del certificato. Ciò può essere modificato dall'organizzazione che richiede l'informazione. Fondamentalmente possono mettere tutto ciò che vogliono lì dentro. Ciò significa che un certificato per un determinato dominio può diventare un certificato per un altro dominio. Il certificato potrebbe diventare un certificato che può essere utilizzato per creare altri certificati (sebbene i vincoli sulla lunghezza del percorso possano alleviare quel problema).

In altre parole, l'autorità di certificazione firma un hash, che potrebbe essere valido per altri dati. L'autorità di certificazione non sa più quale certificato sta firmando più! Tu, come utente, puoi ottenere un certificato per mail.google.com con una firma valida creata per happy.attacker.com, con l'hacker che detiene la chiave privata. In altre parole, potresti non comunicare affatto con Google!

Idee sbagliate:

The hashing function is applied to a subject's public key.

No, è applicato agli attributi del certificato che richiedono un trust esplicito (quindi anche il nome del dominio nell'esempio); non solo la chiave pubblica.

The CA then uses their private key to encrypt the hash output.

No, la generazione della firma non è crittografia. Per RSA utilizza anche exponentiation modulare , ma ciò non equivale alla crittografia. Anche le specifiche RSA - PKCS # 1 - distinguono tra generazione della firma e crittografia.

The output of that encryption along with some other information becomes the certificate.

Che alcune informazioni siano piuttosto importanti, e molte di esse sono firmate insieme alla chiave pubblica. Periodo di validità, emittente, chiave pubblica, firma, soggetto, utilizzo della chiave, limiti di lunghezza del percorso, informazioni relative alla revoca sono tutti molto importanti.

So, say someone is determined to impersonate a site that has an SHA-1 certificate and attacks the SHA-1 digest, by trying to produce a hash collision.

Ciò richiederebbe ancora circa 2 ^ 159 operazioni. Quindi no, non è probabile che venga mai tentato da un ricercatore serio.

They could now forge a certificate that appears to be signed by the CA but instead of the actual public key contains X, but wouldn't this be useless to them without a matching private key for X?

Bene, si. In realtà, una chiave pubblica non consiste in un singolo valore X, è costituito da un modulo e un esponente, che sono codificati ASN.1 / DER all'interno dei certificati X5.09. Quindi X dovrebbe avere una struttura piuttosto specifica. Se si tenta di rompere il certificato in questo modo (che - come già stabilito sopra - è irrealizzabile). Quindi sarebbe utile solo per sostituire la chiave con una specifica X.

La codifica della chiave e del certificato firmato può tuttavia contenere informazioni aggiuntive. Questo può essere abusato da un utente malintenzionato e in realtà è necessario per eseguire l'attacco MD5 effettivo.

I thought hashes are used in digital signatures mainly for performance reasons, due to the fact that public key cryptography like RSA is slow for large inputs.

No, non solo per motivi di prestazioni. RSA richiede il riempimento, che lascia circa 11 byte in meno della dimensione della chiave (modulo) per il messaggio, nel caso in cui venga utilizzata comunque la precedente imbottitura PKCS # 1 v1.5. Gli attributi firmati in generale sarebbero più grandi di questo. In tal caso è necessario comprimere i dati utilizzando un metodo hash. ECDSA, un altro algoritmo a chiave pubblica, in realtà non può crittografare alcun dato.

In generale, è meglio pensare al metodo hash come opzione di configurazione dell'algoritmo di firma. In altre parole, è una parte integrale dell'algoritmo della firma. Questo è anche il modo in cui è specificato nei vari standard.

    
risposta data 04.03.2016 - 11:57
fonte
0

They could now forge a certificate that appears to be signed by the CA but instead of the actual public key contains X

Esattamente. Hanno creato un certificato che contiene il soggetto stesso degli attaccanti e la loro chiave pubblica. E naturalmente l'attaccante ha anche la chiave privata corrispondente per questo certificato compromesso.

Usando questo possono impersonare qualsiasi server che corrisponda all'oggetto del certificato appena creato o possono fare attacchi di uomo attivo nel mezzo per sniffare e persino modificare il traffico. Ma non possono annusare passivamente una connessione protetta dal certificato originale e decrittografarla.

    
risposta data 04.03.2016 - 10:00
fonte

Leggi altre domande sui tag