Immagina di avere un'applicazione che sta tentando di stabilire una connessione sicura con un server usando SSL. Ora vogliamo che l'utente si autentichi con un certificato client che memorizza in un keystore sicuro.
Quindi, se leggo questa specifica destra sul server sta inviando il suo certificato durante il protocollo di handshake ed è in grado di richiedere un certificato dal client con una richiesta di certificato, se necessario. Ora l'utente invia il suo certificato al server proprio come fatto prima del server, il che significa in chiaro in quanto non sono state ancora scambiate le chiavi.
Quello che non sto ottenendo ora è, se il certificato client viene inviato in chiaro e il certificato non è associato a un dispositivo specifico e la chiave pubblica del client all'interno del suo certificato non viene utilizzata per generare la chiave simmetrica che è usato per la crittografia in seguito, perché non è possibile che un utente malintenzionato annusi il protocollo di handshake tra il client e il server, supponendo che sia seduto nella stessa LAN wireless della sua vittima? Come se potesse vedere il certificato del cliente, copiarlo e usarlo da solo.
Quindi, come viene impedito questo scenario? Perché l'attaccante non sarebbe in grado di modificare alcuni dati del certificato poiché non ha la chiave privata con cui è stato firmato il certificato, ma non sarebbe sufficiente copiare il certificato per rubare l'identità della vittima? Cosa mi manca qui? Il certificato è legato al dispositivo, dopo tutto? Ma pensavo che non sarebbe stato dato che conteneva solo alcune informazioni sul client stesso e sulla sua chiave pubblica.
Ho pensato che sarebbe stata una buona idea inviare il certificato del cliente dopo il protocollo di handshake quando una chiave simmetrica è stata scambiata e i dati dell'applicazione sono stati crittografati. So che potresti anche utilizzare credenziali utente aggiuntive come un nome utente e una password, ma sto solo parlando della sicurezza del certificato client ora.
Quindi cosa ne pensi?