Un attacco man-in-the-middle è quando un utente malintenzionato si inserisce tra il cliente e server, e impersona il client quando parla al server e impersona il server quando parla al client. "Impersonificazione" ha senso solo nella misura in cui è un'identità peer prevista; non puoi impersonare un cliente anonimo.
Dal punto di vista del server , se il client mostra un certificato e utilizza la sua chiave privata come parte di un messaggio CertificateVerify (come descritto nel standard SSL/TLS , sezione 7.4.8), e il server convalida il certificato del client per quanto riguarda un insieme di trust ancore che non include una radice ostile o incompetente CA, quindi il server ha la garanzia che stia parlando con il client giusto (quello identificato dal certificato client). La garanzia vale per tutti i dati successivi all'interno della connessione (essa NON si estende ai dati scambiati prima dell'handshake in cui il cliente ha mostrato un certificato, nel caso in cui l'handshake fosse una "rinegoziazione").
Ciò significa che un certificato client protegge in effetti dallo scenario specifico di una CA canaglia iniettata nell'archivio fidato client . In tale scenario, "l'attaccante" è riuscito a fare in modo che il client si fidasse di una CA radice specifica controllata dagli aggressori, consentendo all'aggressore di eseguire un attacco MitM creando al volo un certificato falso per il server di destinazione (questo è esattamente cosa succede con alcuni proxy "filtraggio dei contenuti SSL" che vengono distribuiti in alcune organizzazioni). Tale MitM interrompe l'autenticazione del certificato client, perché ciò che il client firma come parte di un messaggio CertificateVerify è un hash calcolato su molti dati, incluso il certificato del server - nello scenario MitM, il client non vede il certificato "giusto" e quindi calcola una firma errata, che il server rileva.
Dal punto di vista del client , if un certificato client è stato richiesto dal server e mostrato dal client, quindi il il client sa che il vero server rileverà qualsiasi MitM. Il client non rileverà il MitM stesso; e se c'è un attacco MitM in corso, il client sta davvero parlando con l'attaccante e l'attaccante non dirà al client "a proposito, sei attualmente sotto attacco".
In questo senso, un certificato client impedisce un vero MitM (noto anche come "rappresentazione a due lati") ma non protegge da frodi più semplici (rappresentazione unilaterale, ovvero server falsi).
Bottom line: In presenza di SSL con autenticazione client-server reciproca (entrambi inviano un certificato all'altro), un MitM di successo richiede che l'attaccante installi CA canaglia sia nel client che nel server. Tuttavia, se l'attaccante può piazzare una CA canaglia nel solo client, il client si trova ancora in una situazione piuttosto brutta (anche se un MitM completo viene bloccato).