Convalida certificato [duplicato]

0

Scusa se è già stato chiesto in precedenza, ma non sono riuscito a trovare una risposta da nessuna parte. Forse ho trascurato qualcosa, ma non riesco a capire come funziona la convalida dei certificati.

Questo post spiega come funziona SSL / TLS, ma quando arriva per la convalida del certificato, le cose non sono così chiare per me.

A quanto ho capito, il punto dei certificati è quello di garantire che io, come cliente, identifichi correttamente il certificato (ad esempio Google, userò Google come esempio da ora in poi) e garantirò uno scambio di chiavi pubbliche.

Per semplificare le cose, supporrò che non ci sia una catena di certificati, cioè, il certificato che Google invia è un certificato di root attendibile. Ora, Google mi invia questo certificato (un flusso di byte, chiamiamolo B) che viene firmato utilizzando la chiave privata della CA. Usando la chiave pubblica della CA, sono in grado di verificare che effettivamente il certificato è stato firmato utilizzando la chiave privata della CA, quindi la fiducia è garantita.

La domanda che ho è questa: questo flusso di byte (B) che Google mi invia è sempre lo stesso? Google invia la stessa cosa quando crea una connessione sicura? In tal caso, cosa mi impedisce di prendere questo e usarlo per identificarmi erroneamente come Google? Se è unico per ogni richiesta, sembra che Google debba sempre contattare la CA per crittografarla utilizzando la propria chiave privata.

Che cosa sto sbagliando?

    
posta Catalin Stefan Cernat 31.08.2016 - 00:57
fonte

2 risposte

0

Dopo aver convalidato il certificato è reale e valido, è possibile utilizzare la chiave pubblica sul certificato per crittografare le comunicazioni. Dal momento che il server è in teoria l'unica parte con la chiave privata, sono gli unici che possono decifrare il tuo messaggio. Il messaggio che rispedisci di solito contiene informazioni per impostare un canale crittografato a due vie più permanente.

Quindi, se un utente malintenzionato prende il flusso di byte che è il certificato di Google e te lo presenta, puoi effettivamente pensare che siano Google. Tuttavia, l'autore dell'attacco non sarà in grado di continuare a comunicare con te: non sarà in grado di capire la tua risposta perché non ha i mezzi per decrittografarlo.

La chiave privata dei server può anche essere utilizzata per firmare digitalmente il contenuto che può quindi essere verificato con la chiave pubblica. Quindi, puoi essere sicuro che il contenuto che ricevi è stato convalidato da un proprietario del certificato (ad esempio il server) a un certo punto per qualche scopo: un utente malintenzionato può comunque prendere l'intero contenuto firmato e presentarlo a te ma non sarà in grado per modificare i dettagli o la firma non corrisponderà. Spesso i contenuti firmati in questo modo hanno date incluse e / o altri metodi, come il destinatario previsto, per garantire che l'efficacia di quanto sopra sia ridotta o eliminata.

    
risposta data 31.08.2016 - 02:16
fonte
0

Forniamo alcune cose e userò anche Google. Google ti ha inviato il suo certificato nell'handshake iniziale TLS, il certificato stesso è stato firmato dall'autorità di certificazione, una parte fidata su cui tutti sono d'accordo ad avere valore. Il certificato Google afferma di essere:

  • Dalla Google Corporation
  • Da un dominio specifico (ignora wildcard per ora)
  • Da un indirizzo specifico (ignora SNI per ora)
  • Firmato da una parte fidata
  • Valido tra un determinato periodo.
  • Alcune informazioni aggiuntive (DNS, estensioni e simili)

Quando riceviamo il certificato, possiamo controllare la data, l'indirizzo e il dominio. Se una qualsiasi di queste informazioni non corrisponde alla situazione attuale, contrassegnare il certificato come non valido e uscire. Questo ci lascia con una rivendicazione di identità organizzativa non verificata. Per quanto ne sappiamo, questo non è nemmeno un server di proprietà di Google, o meglio ancora, nessuna delle informazioni di cui sopra avrebbe potuto essere falsificata. Questo è dove la catena della fiducia salta in.

Convalida della firma

Il certificato è firmato dall'autorità di certificazione. Conosciamo questa CA, perché abbiamo la sua chiave pubblica memorizzata nel nostro archivio di certificati del sistema operativo. Ora procediamo come segue, troviamo l'emittente del certificato (che è elencato nel certificato) che ha firmato questo certificato, cerca la chiave pubblica nel keystore e verifica l'autenticità del certificato. Se il certificato è stato effettivamente scritto da questa CA, allora è valido, altrimenti assumiamo manomissioni e smetti.

Ovviamente questo è un esempio troppo semplificato. Nel vero PKI succede molto di più. In risposta alle tue ultime domande, si Google invierà sempre lo stesso certificato, altrimenti lo re-emetterebbe per ogni richiesta. In SSL / TLS il certificato viene inviato nell'handshake iniziale.

Richiesta di firma

Dobbiamo affidarci alla CA e, per poter firmare il certificato, Google deve dimostrare di essere davvero Google. Questo può accadere in vari modi, tramite controllo del dominio, e-mail o (per i certificati EV) con documenti ufficiali.

Se dovessi emettere un certificato da qualche CA e provare a passarlo come Google, qualcuno o qualcosa dovrebbe notare che il reclamo non è valido e ti rimane un certificato autofirmato.

Pubblicazioni

Questo sistema non è solido come la roccia, per esempio; un governo che è autorizzato a firmare i certificati potrebbe firmare il proprio certificato falso di Google, e lo accetteremo volentieri. Sono stati compiuti progressi per rendere questo disco pubblico, così possiamo vedere cosa succede a porte chiuse.

    
risposta data 31.08.2016 - 01:42
fonte

Leggi altre domande sui tag