Qual è il problema esatto se un sito Web ha un certificato SHA-1?

4

C'è stata una recente domanda sulla fiducia (o meno) su un sito Web che mostra un certificato SHA-1. Vorrei sapere se ho capito correttamente il problema.

I pericoli sono (a) che qualcuno riesca a reindirmi a un altro sito, a produrre un certificato falso, e come risultato ottengo una connessione totalmente sicura a un sito web gestito da hacker malvagi. E (b) che mi collego al sito a cui voglio collegarmi, ma i malvagi hacker decodificano ciò che invio e ricevo.

È corretto che gli hacker potrebbero creare un falso certificato SHA-1 per un piccolo sito Web a un costo enorme ma non impossibile, e allo stesso costo creare un falso certificato SHA-1 per www.amazon.com? Dal momento che mi reindirizzerebbero al loro sito, la sicurezza del sito Web effettivo sarebbe completamente irrilevante. Questo piccolo sito Web e il sito Web di Amazon potrebbero avere una sicurezza indistruttibile, il che non aiuta poiché non riesco mai a contattarli. In altre parole, se vedo un certificato SHA-1 per Amazon, probabilmente è falso.

D'altra parte, se quel piccolo sito Web, o www.amazon.com, utilizzasse realmente un certificato SHA-1, sarebbe più facile decifrare i messaggi scambiati con il sito? Un hacker potrebbe in qualche modo "rompere" i certificati e quindi decifrare facilmente tutti i messaggi scambiati con Amazon? O la comunicazione è altrettanto sicura e criptata indipendentemente dal certificato?

Grazie, Gordon, per aver risposto alla domanda: utilizzare un certificato di bassa qualità sul tuo sito non rende il tuo sito meno sicuro. Il problema è indiretto: i certificati di bassa qualità potrebbero essere falsificati, quindi i dei browser (e gli utenti) dovrebbero rifiutare i certificati di bassa qualità, ma finché molti siti utilizzano certificati di bassa qualità, i browser non possono farlo.

    
posta gnasher729 28.05.2016 - 15:50
fonte

2 risposte

7

Il vero rischio per la sicurezza dell'utilizzo dei certificati SHA-1 (o MD5) è indiretto e quindi facile da perdere. Il problema non è la sicurezza del vero certificato del server, è il criterio client che consente al client di fidarsi di certificati a bassa sicurezza. Considera due scenari qui (e userò MD5, perché è già stato dimostrato inadeguato):

  • Un client si connette al tuo server, il server presenta un certificato firmato MD5, il client riceve il tuo certificato (cioè se c'è un attacco in corso, è uno che consente al tuo vero cert tramite il client), e (per alcuni motivo) il cliente lo accetta. Questa connessione è sicura . L'unica cosa per cui è necessaria la firma è verificare che il client abbia ricevuto il tuo certificato, e dal momento che ha ... tutto va bene.

    In questo caso, il livello di sicurezza della firma sul certificato è irrilevante.

  • Un client tenta di connettersi al server, ma avviene una sorta di attacco di intercettazione / MITM / impersonificazione che sostituisce un diverso certificato (impostore). L'algoritmo di firma sul cert d'imposta non ha bisogno di corrispondere al tuo certificato reale; potresti avere un certificato firmato SHA-2 e l'impostore potrebbe presentare un certificato con MD5 e il client non sarebbe in grado di dire che non stava visualizzando il tuo vero certificato.

    Ancora una volta, il livello di sicurezza della firma sul tuo certificato (reale) è irrilevante. E non c'è modo per il cliente di dire la differenza tra i due casi.

Quindi l'algoritmo di firma sul tuo certificato è irrilevante, giusto? Non esattamente. Ciò che conta davvero è ciò che il cliente accetterà come certificato valido. Se il cliente accetterà certs firmati MD5, il client sarà vulnerabile ai certificati impostori. Allo stesso modo, se il cliente accetterà i cerattivi SHA-1 senza lanciare un attacco sibilante, diventerà vulnerabile in futuro (forse presto?) Quando forgiare i cerattivi SHA-1 diventa pratico. Per prevenire questa vulnerabilità, i client (principalmente i browser) vengono gradualmente aggiornati con requisiti di convalida dei cert più rigidi.

Ma i requisiti per i cert del cliente non possono praticamente essere aggiornati fino a quando tutti / molti certs del server sono aggiornati, altrimenti i client lanciano allarmi / errori di rifiuto / ecc in tutto e saremo nella posizione di insegnare agli utenti a ignora / ignora gli avvisi di sicurezza, che è una cosa molto brutta da insegnare loro .

E questo è il vero problema con i certificati SHA-1: richiedono ai clienti aspettative di bassa sicurezza per connettersi al proprio server. E non solo per il tuo server specifico; inoltre hanno un effetto indiretto sulla sicurezza del web (e dell'infrastruttura TLS) nel suo complesso, perché rendono difficile per i clienti (sia software che utenti) avere grandi aspettative sulla sicurezza e la fiducia.

Se continui a utilizzare i certificati SHA-1 a questo punto, stai trattenendo la sicurezza generale di Internet.

    
risposta data 28.05.2016 - 20:50
fonte
8

Il problema è causato dall'inevitabile fenomeno di " Hash Collision "

I pericoli dei certificati fidati che usano SHA1 parte dalla tecnica utilizzata dalle autorità di certificazione (CA) per firmarli e come li verifica il browser web.

Come forse sapete, l'intero certificato non è firmato, ma solo l'hash del certificato viene firmato.

Assumiamo un certificato con i seguenti dati all'interno di A con valore A produce un hash 7d157d7c000ae27db146575c08ce30df893d3a64 .

Ora se una terza parte è in grado di creare un certificato X con valore arbitrario *************** tale che l'hash sha1 è 7d157d7c000ae27db146575c08ce30df893d3a64 allora può essere usato come una sostituzione e il browser non essere in grado di dire la differenza come gli hash sarebbero uguali e quindi le firme corrisponderebbero.

Il cattivo in questa storia non è altro che la nostra legge di Moore

di fiducia

Un hash sha1 è un algoritmo di hash unidirezionale a 120 bit (20 byte). Il che significa che può produrre 2 ^ 120 = 1329227995784915872903807060280344576 valori univoci.

Questo è stato più che sufficiente anni fa quando è iniziata tutta questa storia, ma i computer sono diventati così veloci che la potenza di calcolo necessaria per produrre una collisione scade ogni anno.

Nel 2012, Jesse Walker ha scritto una stima dei costi per produrre una collisione. In base alle stime, la collisione costerebbe $ 2 milioni nel 2012, $ 700.000 nel 2015, $ 173.000 nel 2018 e $ 43.000 nel 2021 - > link

Ciò significa che molte aziende, organizzazioni e governi oggi hanno una potenza di calcolo sufficiente a produrre un certificato falso che passerà attraverso il test.

Hai ragione, se c'è un sito che usa sha1 c'è una grande possibilità che possa essere infranto. Non ancora da hacker di poco tempo, ma è meglio chiudere i buchi prima che l'acqua inizi a filtrare.

    
risposta data 28.05.2016 - 19:18
fonte

Leggi altre domande sui tag