In generale l'autenticazione basata su certificato consiste di due parti principali:
- A presenta un certificato a B e in qualche modo dimostra a B che ha accesso alla chiave privata del certificato.
- B verifica che il contenuto del certificato corrisponda alle aspettative. Queste aspettative sono in genere un emittente di fiducia noto a B, un argomento specifico, che il certificato non è scaduto o revocato, ecc. Ma potrebbe anche essere che B già conosca il certificato esatto da aspettarsi e confronta semplicemente il certificato o la sua impronta digitale con il noto uno.
Queste parti potrebbero essere attaccate all'interno di un attacco MITM come segue:
- L'attaccante MITM presenta il certificato originale da A a B.
Questo dovrebbe essere possibile solo se l'attaccante ha una chiave privata corrispondente. Supponendo che il certificato non usi una chiave debole in primo luogo, allora l'hacker deve in qualche modo rubare la chiave privata originale, ad esempio hackerando A. Ma potrebbe anche essere che provi che il peer ha la chiave privata per il certificato è sbagliato. Di solito questa dimostrazione è fatta firmando una sfida che è (almeno in parte) basata su dati casuali generati dal server. Se il controllo della proprietà della chiave privata viene implementato in modo errato su B, potrebbe essere possibile per l'utente malintenzionato riprodurre una prova precedentemente inviata da A.
- L'attaccante MITM presenta il proprio certificato (dove ha la chiave privata) a B.
In questo caso B deve in qualche modo essere ingannato nel credere che questo certificato sia valido per A. In genere funziona se il certificato non è sufficientemente convalidato in primo luogo, ad esempio non convalidandolo affatto. Potrebbe anche essere possibile che l'autore dell'attacco sia in grado di ottenere un certificato valido da una CA ritenuta affidabile da B come emittente del certificato.
In altre parole, se implementato correttamente, nessun MITM è possibile. Ma ci sono vari modi in cui potrebbe essere stato implementato in modo errato.