Lo scopo di questa procedura è che Alice e Bob eseguano uno scambio di chiavi Diffie-Hellman verificato. Funziona così:
- Alice invia i suoi schemi di firma supportati a Bob. Dice solo "schemi supportati". Suppongo che siano intesi schemi di firma.
- Bob seleziona uno schema di firma.
- Alice sceglie
a
e inviaA = g^a mod p
eSig_Alice(A)
a Bob. - Bob sceglie
b
e inviaB = g^b mod p
eSig_Bob(B)
ad Alice. - Calcolano come al solito
K = g^(a*b)
. - Alice invia l'HMAC di tutti i messaggi fino a questo punto a Bob. Suppongo che questo HMAC sia inviato sul canale criptato perché
K
è già stato calcolato. Non ho idea se solo i messaggi inviati da Alice siano intesi o se siano inclusi anche quelli che ha ricevuto. - Bob invia l'HMAC di tutti i messaggi fino a questo punto ad Alice. Di nuovo, probabilmente sul canale crittografato.
Capisco perché Alice manda l'HMAC dei suoi messaggi a Bob: Per essere sicuro che Bob abbia effettivamente ricevuto tutti gli schemi di firma che supporta. Potrebbe darsi che ci sia un uomo-in-the-middle che ha rimosso tutti gli schemi di firma sicura così Bob ha dovuto scegliere uno non sicuro in cui il MitM può rapidamente falsificare le rispettive firme in modo da poter stabilire un canale crittografato tra lui e Alice e un altro tra lui e Bob.
Ma qual è lo scopo di Bob che invia l'HMAC sui suoi messaggi ad Alice? Cosa può imparare Alice da quell'HMAC? Se c'è un MitM che ha simulato una scelta debole di Bob nei confronti di Alice, deve già essere stato in grado di impersonare completamente Bob in 4.
, quindi conosce K
e quindi l'invio dell'HMAC sul canale crittografato non pone mai alcuna difficoltà al MitM.
Sto trascurando qualcosa? Conosci le risposte alle domande che ho pronunciato in 6.
? Do 6.
e 7.
si verificano in parallelo? Non sembra nella grafica fornita nella lezione dove per 1.
, 3.
e 6.
una freccia va da Alice a Bob e per 2.
, 4.
e 7.
, una freccia va da Bob ad Alice. Non capisco perché 4.
e 3.
non vengano scambiati. Perché Bob dovrebbe aspettare una risposta da Alice?