Why bother and make sure that the other party actually possesses the correct shared secret? It is said that this is a requirement for a secure key exchange. But why?
Oltre ad altri motivi, a volte è richiesta una conferma chiave durante la convalida dell'algoritmo. Ad esempio, il del NIST del sistema di convalida dei sistemi di accordi chiave (KASVS) li richiede in alcune istanze.
Per completezza, ecco la definizione del NIST dalla Sezione 4.1, pagina 7:
A procedure to provide assurance to one party (the key confirmation recipient) that another party (the key confirmation provider) actually possesses the correct secret keying material and/or shared secret.
Even if the other party hasn't computed a correct value for the shared secret, it doesn't matter. It won't be able to decipher the information sent anyway.
Questo potrebbe non essere necessariamente vero. Se un cattivo può in qualche modo contaminare lo scambio, può essere in grado di imparare alcune cose in assenza di un'interruzione completa controllando i parametri. In questo caso, l'esecuzione del protocollo si fermerebbe immediatamente alla fase di conferma della chiave piuttosto che dare all'attaccante più di un morso della proverbiale mela.
Protocolli per l'autenticazione e l'identificazione delle chiavi (pagine 162-63) in realtà descrive un attacco allo scambio di chiavi che è ostacolato dalla conformazione della chiave, quindi non è teorico.
Non ho mai implementato un protocollo di conferma della chiave, ma mi aspetto che si tratti di un protocollo challenge / response a due vie che non utilizza direttamente il materiale di codifica. Probabilmente aggiunge da 2 a 4 messaggi aggiuntivi al protocollo.
È bidirezionale perché entrambe le parti dovrebbero dimostrare la conoscenza della chiave. Non usa direttamente il materiale di codifica per evitare di rivelare informazioni sulla chiave effettiva di un avversario.
Su una nota correlata, non usi mai direttamente il materiale segreto / chiave condivisa. Devi spostarlo dal dominio Diffie-Hellman in un altro dominio in cui i valori sono ugualmente probabilmente (cioè, distribuiti uniformemente). IPSec utilizza HKDF per questo passaggio.