Ho superficialmente familiarità con SSL e cosa certifica. Recentemente ho visto alcune discussioni su Cert Pinning ma non c'era una definizione. Una ricerca DDG non ha rivelato nulla di utile. Che cos'è il blocco dei certificati?
In genere i certificati vengono convalidati controllando la gerarchia delle firme; MyCert
è firmato da IntermediateCert
che è firmato da RootCert
e RootCert è elencato nell'archivio "certificates to trust" del mio computer.
Il blocco del certificato è il punto in cui ignori tutto ciò e dì fiducia questo certificato solo o forse fidati solo dei certificati firmati da questo certificato .
Quindi, ad esempio, se vai su google.com, il tuo browser si fiderà del certificato se è firmato da Verisign, Digicert, Thawte o dall'Hong Kong Post Office (e dozzine di altri). Tuttavia, se si utilizza (nelle versioni più recenti) Microsoft Windows Update, i certificati firmati da Microsoft saranno SOLO. No Verisign, no Digicert, nessun ufficio postale di Hong Kong.
Inoltre, alcuni browser più recenti (Chrome, ad esempio) eseguiranno una variazione del blocco dei certificati utilizzando il meccanismo HSTS . Precaricano un set specifico di hash delle chiavi pubbliche in questa configurazione HSTS, che limita i certificati validi a solo quelli che indicano la chiave pubblica specificata.
È 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 radice, i certificati in cui il sistema si fida per essere genuini. Quelli o vengono con il tuo sistema operativo o con il tuo browser. Se uno di questi è compromesso, tutti i certificati firmati da questo e i certificati firmati in modo transitorio devono essere considerati come compromessi.
L'estensione TACK o Pinning chiave pubblica (indicata come pin cert da chrome, apparentemente) consente all'amministratore di un server di "pin" la firma di una chiave pubblica dell'autorità di certificazione (CA) a un certificato, che viene verificata da il client (fornito tramite estensione SSL). Se la chiave del certificato CA è diversa al momento del richiamo della catena di certificati, è probabile che il certificato CA venga compromesso. Origine
Il blocco dei certificati può anche fare riferimento all'importazione di un certificato di un host nel tuo trust store, piuttosto che affidarsi ai certificati CA. Ciò riduce il rischio che un certificato CA venga compromesso ma impone l'aggiornamento dei certificati se scadono manualmente. Source
I certificati del server SSL provengono dal mondo X.509 . Il client verifica la validità del certificato del server convalidando un sacco di firme crittografiche da Autorità di certificazione . La bellezza dello schema è che è stateless : un determinato server potrebbe cambiare il suo certificato ogni cinque minuti e funzionerebbe ancora con i client.
È stato sostenuto che mentre si supportano i certificati a rotazione rapida è fantastico ma inutile, perché in pratica un determinato server cambia il proprio certificato una volta per anno ; in effetti, uno switch certificato precoce è indicativo di alcuni affari in corso. Il blocco dei certificati è un modo per il server di affermare che ciò non dovrebbe avvenire in condizioni normali e che il client dovrebbe sollevare un sopracciglio metaforico nel caso in cui si verifichi un cambio di certificato imprevisto. Questa è un'estensione del protocollo, suggerita ma non ancora ampiamente supportata. In realtà sembrano esserci diverse proposte concorrenti relativamente simili.
Vedi anche Convergence , un'altra estensione di protocollo che può essere pensata come "blocco del certificato da parte di terzi fidati". La convergenza e il certificato che blocca le proposte danzano intorno alla stessa idea di base, che è avere qualche stato nel client (o da qualche parte, almeno) e attivare avvisi di sicurezza quando i certificati cambiano troppo spesso o troppo presto . Se una qualsiasi di queste proposte raggiungerà un'accettazione ampia (cioè verrà implementata in modo compatibile da IE, Firefox, Chrome e Safari, e saranno utilizzati dalla maggior parte degli amministratori di server SSL) è ipotizzabile da chiunque. / p>
Generalmente ciò che accade in una connessione https è che il client richiede il certificato SSL dal server conforme SSL che sta comunicando con https. Il server fornirà un certificato dal suo keystore. Dopo che il client ha ricevuto questo certificato, convalida le sue credenziali a seconda che
Ora se le connessioni sono proxy e puoi far sì che il dispositivo consideri attendibile il tuo certificato CA root (canaglia), puoi intercettare le connessioni sicure. Questo è essenzialmente un attacco man-in-the-middle. Ora ecco cosa succede nel blocco SSL che potenzialmente aggiunge un ulteriore livello di sicurezza dagli attacchi man-in-the-middle-
L'app unisce i certificati server conosciuti con essa. Quando l'app tenta di stabilire una connessione sicura con il server, convalida il certificato ricevuto dal server con quelli con cui è stato associato. Quindi, anche se il sistema operativo convalida la catena di certificati ricevuta contro una CA radice (potenzialmente pericolosa), l'app rifiuterà la connessione visualizzando l'errore di rete.
Nota: ho cercato di rispondere a questa domanda dal punto di vista del blocco SSL nelle app Android. Il blocco 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 però. Penso che il browser Chrome lo implementa già.
Ho anche scritto un codice di esempio che dimostra il pin cert in Android. Puoi trovarlo su github . Puoi anche trovare la stessa app su playstore .
Ulteriori informazioni:
I certificati SSL / TLS sono firmati da altri certificati. I browser normalmente riconoscono un certificato come valido quando in qualche punto di questa catena di firme viene trovata un'entità fidata. Le firme delle entità fidate arrivano 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 nel suo nome. Il criminale sarà in grado di realizzare attacchi "uomo nel mezzo" di successo e credibile. L'utente vedrà un certificato valido informazioni sul tuo sito web.
Inoltre, non è difficile convincere l'utente a installare una nuova autorità di certificazione attendibile. Ad esempio, in Brasile, l'autorità di certificazione ufficiale non viene riconosciuta dai principali browser e tutti devono installare un'autorità di certificazione aggiuntiva. I browser sono diventati molto bravi: basta cliccare su un link e rispondere 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 fidate. Il processo per ottenere un certificato non è affatto sicuro. Ne ho già comprato uno in un'azienda e non ne ho più di quello che pago. Certamente è 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 si traduce liberamente come:
"nei prossimi N giorni il sito web secure.example.com utilizzerà il certificato CECECECE. In quel periodo non accetti un altro certificato, anche se l'autorità di certificazione afferma che è valido per questo sito Web. Se ciò accade avvisami al link ".
Non risolve la debolezza del processo di firma dei certificati delle autorità di certificazione. Ma minimizza la finestra di opportunità di un criminale per cavartela con un uomo nel mezzo dell'attacco. L'attacco funzionerà solo se ottiene l'utente nel suo primo accesso al sito web.
È simile alla sicurezza SSH. Al primo accesso viene salvata la firma della chiave del server. Se in futuro l'identificazione non corrisponde, il sistema genera un avvertimento. L'avvertimento è preso sul serio perché accade solo quando si apportano cambiamenti reali.
La cosa migliore per una grande azienda è ricevere notifiche tramite reclami da parte dei clienti che qualcuno ha emesso un vero certificato TLS / SSL nel nome di un criminale. Da quanto ho capito, il meccanismo di fissaggio è 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 mantenere i certificati SSL dei client browser quando viene eseguito un attacco sslstrip MITM contro l'utente Web
Leggi altre domande sui tag public-key-infrastructure tls certificates certificate-pinning