Conosco superficialmente SSL e cosa fanno i certificati. Recentemente ho visto alcune discussioni sul blocco dei certificati ma non c'era una definizione. Una ricerca DDG non ha rivelato nulla di utile. Che cos'è il blocco del certificato?
Conosco superficialmente SSL e cosa fanno i certificati. Recentemente ho visto alcune discussioni sul blocco dei certificati ma non c'era una definizione. Una ricerca DDG non ha rivelato nulla di utile. Che cos'è il blocco del certificato?
In genere i certificati vengono convalidati controllando la gerarchia delle firme; MyCert
è firmato da IntermediateCert
che è firmato da RootCert
e RootCert è elencato nell'archivio "certificati di cui fidarsi" del mio computer.
Il blocco del certificato era il punto in cui si ignora l'intera cosa e si dice di fidarsi di solo questo certificato o forse di fidarsi solo dei certificati firmati da questo certificato , ignorando tutte le altre CA radice che altrimenti potrebbero essere ancore di fiducia. Spesso era noto anche come Key Pinning, poiché in realtà era l'hash della chiave pubblica che veniva salvato.
Ma in pratica, Key Pinning si è rivelato causare più problemi di quanti ne risolva. Spesso veniva configurato in modo errato dai proprietari del sito e, in caso di compromissione del sito, gli aggressori potevano bloccare in modo intenzionale un certificato che il proprietario del sito non controllava. Key Pinning è stato ritirato nel 2017 ed è stato completamente rimosso da Chrome e Firefox nel novembre 2019. Inizialmente non è mai stato supportato da IE e Safari.
La sostituzione consigliata è utilizzare Expect -CT per indicare ai browser di richiedere che il certificato venga visualizzato nei log di Certificate Transparency.
È ambiguo, ma si riferisce a soluzioni per un problema nella verifica della catena di certificati SSL. In sostanza, la fiducia in SSL si riduce ai certificati di root, i certificati in cui il tuo sistema si fida per essere autentici. Questi vengono forniti con il tuo sistema operativo o con il tuo browser. Se uno di questi è compromesso, tutti i certificati firmati da questo e quelli firmati in modo transitorio devono essere considerati compromessi.
TACK o Pubblico Key Pinning Extension (chiamata cert pinning da chrome, apparentemente) consente all'amministratore di un server di "appuntare" la firma della chiave pubblica di un'autorità di certificazione (CA) a un certificato, che viene verificato dal client (fornito tramite estensione SSL). Se la chiave del certificato CA è diversa al momento del recupero della catena di certificati, è probabile che il certificato CA venga compromesso. Sorgente
Anche il blocco del certificato può fare riferimento per importare il certificato di un host nel tuo truststore, piuttosto che fidarsi dei certificati CA. Ciò riduce il rischio che un certificato CA venga compromesso ma ti obbliga ad aggiornare i certificati se scadono manualmente. Sorgente
I certificati server SSL provengono dal mondo X.509. Il client verifica la validità del certificato del server convalidando molte firme crittografiche dalle Autorità di certificazione . La bellezza dello schema è che è senza stato : un dato server potrebbe cambiare il suo certificato ogni cinque minuti e continuerebbe a funzionare con i client.
È stato affermato che mentre supportare certificati a rotazione rapida è fantastico ma inutile, perché in pratica un dato server cambia il suo certificato una volta anno ; infatti, un cambio anticipato del certificato è indicativo di alcune attività sospette in corso. Il blocco del certificato è un modo per un server di affermare che ciò non dovrebbe accadere in condizioni normali e che il client dovrebbe sollevare un sopracciglio metaforico in caso di cambio di certificato imprevisto. Questa è un'estensione del protocollo, suggerita ma non ancora ampiamente supportata. In realtà sembra che ci siano diverse proposte concorrenti relativamente simili.
Vedi anche Convergence, ancora un'altra estensione di protocollo che può essere considerata come "blocco del certificato da parte di terze parti fidate". La convergenza e le proposte di blocco dei certificati ruotano tutte attorno alla stessa idea di base, che è di avere uno stato nel client (o almeno da qualche parte) e attivare avvisi di sicurezza quando i certificati cambiano troppo spesso o troppo presto . Se una qualsiasi di queste proposte raggiungerà mai un'ampia accettazione (cioè sarà implementata in modo compatibile da IE, Firefox, Chrome e Safari, e saranno utilizzati dalla maggior parte degli amministratori di sistema del server SSL) è indovinato.
In genere ciò che accade in una connessione HTTPS è che il client richiede il certificato SSL dal server conforme a SSL con cui sta comunicando tramite https. Il server fornirà un certificato dal suo archivio chiavi. Dopo che il client riceve questo certificato, convalida le sue credenziali a seconda che
Ora se le connessioni sono proxy e puoi fare in modo che il dispositivo si fidi del tuo certificato CA radice (canaglia), puoi intercettare le connessioni sicure. Questo è essenzialmente un attacco man-in-the-middle. Ora ecco cosa succede nel pinning SSL che potenzialmente aggiunge un ulteriore livello di sicurezza dagli attacchi man-in-the-middle.
L'app raggrupperà i certificati del server noto con se stessa. Quando l'app tenta di stabilire una connessione sicura con il server, convalida il certificato ricevuto dal server con quelli con cui è stato fornito in bundle. Quindi, anche se il sistema operativo convalida la catena di certificati ricevuti rispetto a una CA radice (potenzialmente non autorizzata), l'app rifiuterà la connessione visualizzando l'errore di rete.
Nota: ho provato a rispondere a questa domanda dal punto di vista del blocco SSL nelle app Android. Il pinning SSL è facilmente possibile in tali app perché l'app conosce già il server (nome host) a cui si connetterà. Lo stesso potrebbe essere difficile da implementare nei browser. Penso che il browser Chrome lo implementa già.
Ho anche scritto un codice di esempio che mostra il blocco dei certificati in Android. Puoi trovarlo su github. Puoi anche trovare la stessa app su playstore.
Ulteriori informazioni:
SSL / I certificati TLS sono firmati da altri certificati. I browser normalmente riconoscono un certificato come valido quando in un punto di questa catena di firme viene trovata un'entità attendibile. Le firme delle entità attendibili si trovano nell'installazione di base del sistema operativo e dei browser. È un elenco incorporato di circa 100 entità.
Se una delle autorità di certificazione attendibili è compromessa o se l'autorità di certificazione è vittima di una frode, può rilasciare un certificato valido a un criminale. Il criminale avrà un certificato SSL / TLS perfetto a tuo nome. Il criminale sarà in grado di effettuare attacchi credibili e riusciti "uomo nel mezzo". L'utente vedrà informazioni sul certificato valido sul tuo sito web.
Inoltre, non è difficile convincere l'utente a installare una nuova autorità di certificazione affidabile. Ad esempio, in Brasile, l'autorità di certificazione ufficiale non è riconosciuta dai principali browser e tutti devono installare un'autorità di certificazione aggiuntiva. I browser sono diventati molto bravi in questo: fai clic su un link e rispondi sì. Per raggiungere questo livello di usabilità credo che questo sia un compito comune in tutto il mondo.
Le autorità di certificazione non possono essere completamente attendibili. Il processo per ottenere un certificato non è affatto sicuro. Ne ho già acquistato uno in un'azienda e ho pagato poco. Ovviamente è meglio di niente. Ma ha bisogno di miglioramenti.
Al primo accesso al sito Web secure.example.com, il sito Web invia un messaggio nascosto al browser client che traduce vagamente come:
"nei prossimi N giorni il sito secure.example.com utilizzerà il certificato CECECECE. In quel periodo non accettare un altro certificato, anche se l'autorità di certificazione afferma che è valido per questo sito. Se succede avvisami su http://100.200.100.200/callbacks/warn_pinning.php ".
Non risolve la debolezza del processo di firma del certificato delle autorità di certificazione. Ma minimizza la finestra di opportunità di un criminale per cavarsela con un uomo nel mezzo dell'attacco. L'attacco funzionerà solo se l'utente ottiene il primo accesso al sito web.
È simile alla sicurezza SSH. Al primo accesso viene salvata la firma della chiave del server. Se in futuro l'accesso l'identificazione non corrisponde, il sistema genera un avviso. L'avvertimento è preso sul serio perché accade solo quando si apportano modifiche reali.
La cosa migliore per una grande azienda è ricevere una notifica tramite i reclami dei clienti che qualcuno ha rilasciato un vero certificato TLS / SSL a loro nome a un criminale. A quanto mi risulta, il meccanismo di blocco è stato proposto da Google
Il blocco può essere effettuato anche al di fuori del browser, compilando l'impronta digitale del certificato reale in un'app.
Penso che sia solo un'implementazione HSTS per conservare i certificati SSL dei client browser quando viene effettuato un attacco sslstrip MITM contro l'utente web