Framework dei certificati SSL 101: in che modo il browser verifica effettivamente la validità di un determinato certificato del server?

63

(Mi spiace, so che questa è una domanda completa di noob e con il rischio di pubblicare un argomento un po 'duplicato. Ho una conoscenza di base di chiave pubblica / privata, hashing, firma digitale ... Ho cercato online & stack forum negli ultimi due giorni ma non riesco a trovare una risposta soddisfacente.

Esempio: Sto navigando su wifi aperto e navigo per la 1a volta. Il server rinvia il suo certificato SSL. Il mio browser fa la sua parte e verifica che il certificato sia firmato da una CA che si fida e tutto vada bene. Faccio clic in giro sul sito web. MA!

Domanda: Qualcuno può davvero spiegarmi in modo semplice in che modo il mio browser effettivamente verifica che il certificato del server sia legittimo? Sì, va bene così sul certificato stesso dice che è emesso da, diciamo "Verisign" ma qual è l'attuale magia crittografica avviene dietro la scena per convalidare che non è un certificato falso? Ho sentito persone spiegare "i certificati SSL vengono verificati utilizzando la chiave pubblica della firma CA", ma questo non ha senso per me. Ho pensato che la chiave pubblica fosse quella di crittografare i dati, non di decrittografare i dati.

Così confuso ... lo apprezzo se qualcuno mi può illuminare. Grazie in anticipo!

    
posta SecurityNoob 22.04.2014 - 23:07
fonte

3 risposte

68

Hai ragione che SSL utilizza una coppia di chiavi asimmetriche. Viene generata una chiave pubblica e una privata, nota anche come infrastruttura a chiave pubblica (PKI). La chiave pubblica è ciò che viene distribuito al mondo e viene utilizzato per crittografare i dati. Tuttavia, solo la chiave privata può decodificare i dati. Ecco un esempio:

Say we both go to walmart.com and buy stuff. Each of us get a copy of Walmart's public key to sign our transaction with. Once the transaction is signed by Walmart's public key, only Walmart's private key can decrypt the transaction. If I use my copy of Walmart's public key, it will not decrypt your transaction. Walmart must keep their private key very private and secure, else anyone who gets it can decrypt transactions to Walmart. This is why the DigiNotar breach was such a big deal

Ora che hai l'idea delle coppie di chiavi private e pubbliche, è importante sapere chi emette effettivamente il certificato e perché i certificati sono affidabili. Sto semplificando eccessivamente questo, ma ci sono specifiche autorità di certificazione root (CA) come Verisign che firmano i certificati, ma firmano anche per le CA intermedie. Ciò segue quella che è chiamata Chain of Trust, che è una catena di sistemi che si fidano l'uno dell'altro. Guarda l'immagine collegata qui sotto per avere un'idea migliore (nota la CA radice è in fondo).

LeorganizzazionispessoacquistanocertificatijollyosiregistranocomeCAintermedieautorizzateafirmaresoloperillorodominio.CiòimpedisceaGoogledifirmarecertificatiperMicrosoft.

Acausadiquestacatenadifiducia,uncertificatopuòessereverificatofinoallaCAprincipale.Perdimostrarlo,DigiCert(emoltialtri)dispongonodistrumentiperverificarequestafiducia.LostrumentodiDigiCertècollegato qui . Ho effettuato una convalida su gmail.com e quando scorri verso il basso lo mostra:

Questodimostracheilcertificatopergmail.comèrilasciatodaGoogleInternetAuthorityG2,cheasuavoltahaemessouncertificatodaGeoTrustGlobal,cheasuavoltahaemessouncertificatodaEquifax.

Oraquandovaisugmail.com,iltuobrowsernonricevesolounblobdihashevaavanti.No,ricevetuttaunaseriedidettagliinsiemealcertificato:

Questi dettagli sono quelli utilizzati dal browser per identificare la validità del certificato. Ad esempio, se la data di scadenza è scaduta, il browser genera un errore cert. Se tutti i dettagli di base del certificato vengono verificati, verrà verificato fino alla CA principale, che il certificato è valido.

Ora che hai un'idea migliore dei dettagli della cert, questa immagine espansa simile alla prima sopra avrà, si spera, più senso:

Questo è il motivo per cui il tuo browser può verificare un cert contro il prossimo, fino alla CA radice, che il tuo browser ha intrinsecamente fiducia.

Spero che questo ti aiuti a capire un po 'meglio!

    
risposta data 22.04.2014 - 23:45
fonte
0

Per chiarire un punto dalla domanda non trattata nella risposta altrimenti eccellente di @ PTW-105 (e chiesto nel commento lì da @ JVE999):

I thought public key is to encrypt data, not to decrypt data...

I tasti funzionano in entrambe le direzioni: ciò che è crittografato con la chiave pubblica può essere decodificato solo con privato e viceversa . Decidiamo solo che uno è privato e uno è pubblico, non c'è alcuna differenza concettuale.

Quindi se I crittografano dati da inviare a te, utilizzo la tua chiave pubblica per crittografarla e solo tu puoi decrittografarla con la tua chiave privata.

Tuttavia, se voglio firmare qualcosa, per provare che proviene da me, quindi generare un hash del messaggio e crittografarlo con il mio private chiave. Quindi chiunque può decodificarlo con la mia chiave pubblica e confrontarlo con l'hash del messaggio, ma sanno che solo io potrei averlo crittografato, dato che ho solo la mia chiave privata. Quindi sanno che l'hash del messaggio non è cambiato da quando l'ho firmato, e quindi che è venuto da me.

Come da commenti, quanto sopra non è del tutto vero. Vedi il link dal commento di @ dave_thompson_085. Tuttavia, questo non è un tutorial "come firmare correttamente", solo chiarendo i ruoli delle chiavi private e pubbliche nella firma dei versi di crittografia. Il punto fondamentale a tale riguardo è questo:

  • Per crittografare i dati, la parte esterna utilizza una chiave pubblica e solo il titolare della chiave privata può decrittografarla.
  • Per firmare, il portachiavi privato utilizza una funzione di hash e la loro chiave privata (più padding appropriato, ecc.). La parte esterna può quindi verificare la firma utilizzando la chiave pubblica. Ciò garantisce che il messaggio provenga dal portachiavi privato (supponendo che nessun altro abbia accesso alla chiave privata).

A volte la firma (a seconda dell'implementazione) può essere eseguita con la stessa coppia di chiavi della crittografia, utilizzata al contrario, oppure può utilizzare una coppia di chiavi distinte (vedere altro link , anche dal commento di @ dave_thompson_085)

    
risposta data 21.08.2017 - 11:33
fonte
0

Se un sito Web ha un certificato valido, significa che un'autorità di certificazione ha adottato misure per verificare che l'indirizzo Web appartenga effettivamente a tale organizzazione. Quando si digita un URL o si segue un collegamento a un sito Web protetto, il browser verificherà il certificato per le seguenti caratteristiche: l'indirizzo del sito web corrisponde all'indirizzo del certificato il certificato è firmato da un'autorità di certificazione (CA) che il browser riconosce come autorità "fidata"

Entrambi i protocolli TLS e SSL utilizzano quello che è noto come sistema di infrastruttura a chiave pubblica (ASI) "asimmetrico". Un sistema asimmetrico utilizza due "chiavi" per crittografare le comunicazioni, una chiave "pubblica" e una chiave "privata". Qualsiasi cosa criptata con la chiave pubblica può essere decifrata solo dalla chiave privata e viceversa. Quando si visita un sito, un sito Web presenta la propria chiave pubblica che il browser convalida e utilizza per crittografare i dati inviati (tra il browser e il server) e solo il server / sito ha la chiave privata in grado di decrittografare i dati.

Alcune informazioni sui tasti: La crittografia asimmetrica (o crittografia a chiave pubblica) utilizza una chiave separata per la crittografia e la decrittografia. Chiunque può utilizzare la chiave di crittografia (chiave pubblica) per crittografare un messaggio. Tuttavia, le chiavi di decodifica (chiavi private) sono segrete. In questo modo solo il destinatario previsto può decifrare il messaggio. L'algoritmo di crittografia asimmetrico più comune è RSA; tuttavia, discuteremo degli algoritmi più avanti in questo articolo.

pieno credito per questi siti:

link

link

    
risposta data 02.02.2018 - 20:31
fonte