Questo mostra il meccanismo della connessione.
Quanti tasti vengono utilizzati in questa connessione? Quali sono? Chi li conosce? Qual è lo scopo di ciascuna chiave?
Ci sono almeno tre chiavi:
La chiave di sessione può essere sostituita senza problemi durante la sessione in determinate configurazioni. Questo può essere usato per fornire PFS (perfetta sicurezza in avanti) in suite di crittografia che lo supportano.
Non esiste alcun limite intrinseco sul numero di chiavi di sessione che possono essere utilizzate per una singola connessione.
In alcune configurazioni una o più chiavi pubbliche intermedie di X.509 CA (catena) si trovano anche nella catena di firma della chiave pubblica del server. Questi sono noti a tutte le parti che si connettono a qualsiasi server firmato dalla stessa catena e al server. Il server deve fornire queste chiavi durante l'handshake TLS. In tutte le configurazioni di una connessione TLS convalidata dalla CA, la catena verrà firmata nella radice da una CA radice che il software client è configurato per affidarsi in modo intrinseco.
Se si includono certificati CA ci sono almeno quattro chiavi e possibilmente di più se vengono utilizzati certificati CA intermedi.
Tutti insieme dovrebbero esserci sedici (16) tasti che entrano in gioco:
(a) Chiave di firma della CA globale di GeoTrust, utilizzata per firmare automaticamente il certificato di GeoTrust e per firmare il certificato di Google Internet Authority G2. Lo sa solo Geo.
(b) Chiave di verifica globale della CA GeoTrust, utilizzata per verificare le firme sul certificato di GeoTrust e il certificato di Google Internet Authority G2. Tutti lo sanno.
(c) La chiave di firma di Google Internet Authority G2, utilizzata per firmare il certificato di Google.ca. Lo sa solo Google Internet Authority G2.
(d) Chiave di verifica di Google Internet Authority G2, utilizzata per verificare la firma sul certificato di google.ca. Tutti lo sanno.
(e) Chiave di firma di Google.ca, utilizzata per firmare la chiave pubblica effimera Diffie-Hellman (ECDHE) di Google.ca. Solo google.ca lo sa.
(f) Chiave di verifica di Google.ca, utilizzata per verificare la firma sulla chiave pubblica ECDHE di google.ca. Tutti lo sanno.
(g) La chiave pubblica ECDHE di Google.ca, inviata al cliente per l'accordo chiave. Tutti lo sanno.
(h) La chiave privata ECDHE di Google.ca, utilizzata per generare la chiave pubblica corrispondente e per applicare alla chiave pubblica del client la forma di segreto condiviso. Solo Google.ca lo sa.
(i) Chiave pubblica ECDHE del cliente, inviata a google.ca per l'accordo chiave. Tutti lo sanno.
(j) Chiave privata ECDHE del client, utilizzata per generare la chiave pubblica corrispondente e per applicare la chiave pubblica google.ca per formare il segreto condiviso. Solo il client lo sa.
(k) Segreto condiviso. È il risultato dello scambio di chiavi ECDHE, chiamato anche segreto pre-master. Solo client e server lo sanno.
(l) Maestro segreto. Derivato da valori pre-master secret e client / server random e utilizzato per derivare la seguente chiave simmetrica. Solo client e server lo sanno.
(m) Chiave di crittografia simmetrica di scrittura client. Solo client e server lo sanno.
(n) Chiave di crittografia simmetrica di scrittura server. Solo client e server lo sanno.
(o) Chiave MAC di scrittura client. Solo client e server lo sanno.
(p) Tasto MAC di scrittura del server. Solo client e server lo sanno.
Vedi I primi pochi millisecondi di una connessione HTTPS , Generazione Un sacco di sezione Keys.
Hai:
- cient_write_MAC_secret[SecurityParameters.hash_size]
- server_write_MAC_secret[SecurityParameters.hash_size]
- client_write_key[SecurityParameters.key_material_length]
- server_write_key[SecurityParameters.key_material_length]
- client_write_IV[SecurityParameters.IV_size]
- server_write_IV[SecurityParameters.IV_size]
Anche se si chiamerebbero o meno le chiavi IVs è un altro argomento (e potrebbero anche non essere usate, ad esempio in modalità di cifratura AES stream).
Inoltre avrai le chiavi private e pubbliche nel certificato.
Entrambe le parti conoscono tutte le chiavi precedenti, ad eccezione della chiave privata che solo il server conosce. I MAC sono usati per autenticare ogni messaggio e write_keys sono usati per crittografarli. Tieni presente che il client e il server utilizzano chiavi diverse per crittografare i messaggi.
La coppia di chiavi pubblica e privata viene utilizzata per autenticare il server, ovvero il client sa che sta parlando con il server corretto e che la connessione non è stata intercettata. Questo perché il client crittografa un segreto che può essere decodificato dal server solo con la sua conoscenza della chiave privata o che il server invia numeri casuali (nel caso di Diffie-Hellman) firmati dalla chiave privata. Il client può utilizzare la chiave pubblica per verificare la firma.
Leggi altre domande sui tag tls key-exchange