Alice e Bob stanno cercando di impostare una conversazione sicura, ma a loro sconosciuto nel mezzo c'è Eve, che può intercettare e modificare tutti i pacchetti inviati tra loro.
La comunicazione è la seguente:
-
Alice invia un saluto a Bob e include alcuni parametri (ad esempio, una chiave pubblica effimera Diffie-Hellman) A. Eve intercetta il messaggio e sostituisce A con E.
-
Bob risponde con i parametri B e invia anche il suo certificato che contiene la sua chiave pubblica e il suo dominio. Eve lo intercetta. A questo punto Eve e Bob ricavano un EB segreto condiviso da E, B, e i loro dati privati associati (ad esempio, le chiavi private DH temporanee associate), che Alice non conosce.
-
Eve inoltra il messaggio da (2) ad Alice, lasciando lo stesso il certificato (non essendo un CA, non può crearne uno) ma cambiando B a E. A questo punto Alice ed Eva ottengono un EA segreto condiviso da E, A e dati privati associati, che Bob non conosce.
-
Alice verifica il certificato. Non è stato manomesso, quindi non viene generato alcun flag.
-
Alice crittografa un messaggio utilizzando la chiave pubblica di Bob (dal certificato) e invia a Bob. Contiene l'EA segreta condivisa.
-
Eve intercetta questo messaggio (che, ammettiamolo, non può decifrare) e lo scarta. Lei invece ne manda una nuova, cifrata con la sua chiave pubblica, contenente l'EB segreta condivisa. Bob guarda questo e corrisponde al segreto condiviso che si aspettava, e quindi considera la stretta di mano come un successo.
Da ora in poi Bob ed Eve hanno una conversazione usando il segreto condiviso EB, ed Eve e Alice hanno una conversazione usando l'EA segreta condivisa. Né Bob né Alice sanno che Eve sta ascoltando.
Presumibilmente, questo è inteso per essere impedito dal certificato, ma non capisco come.