La protezione dei dati mentre passa attraverso Internet di solito richiede la protezione in due modi:
-
Riservatezza - assicurando che nessuno tranne i destinatari desiderati possa leggere i dati
-
Integrità - assicurando che nessuno possa modificare o manomettere i dati in transito
La riservatezza è fornita utilizzando Crittografia simmetrica e l'integrità viene fornita utilizzando un Message Authentication Code (MAC) .
Sia Symmetric Encryption che i MAC richiedono che entrambe le parti abbiano identiche e chiavi segrete (una "chiave" in questo senso è semplicemente un numero, convertito in binario).
Il problema allora è Come fanno entrambe le parti a stabilire identiche e chiavi su Internet? (o qualsiasi altro mezzo insicuro). Questo è noto come " il problema di scambio di chiavi ".
Una delle soluzioni per questo problema è l'algoritmo Diffie-Hellman.
Diffie-Hellman consente a due parti di stabilire un segreto condiviso su un mezzo insicuro . O, per dirla più semplicemente ....
Immagina che tu e il tuo amico stiate in piedi in una stanza affollata, circondata da persone dall'aspetto dubbioso. Supponi che tu e il tuo amico abbiate bisogno di concordare un numero identico, ma non volete che nessun altro nella stanza sappia quale numero sia. Diffie-Hellman permetterebbe a te e ai tuoi amici di scambiare abilmente alcuni numeri, e da quei numeri che calcolano un altro numero identico. E anche se tutti nella stanza hanno sentito i numeri scambiati, non hanno modo di determinare il numero finale in cui tu e il tuo amico siete arrivati.
Possiamo vedere un esempio di ciò che si verifica nell'immagine qui sotto. Alice e Bob utilizzeranno lo scambio di chiavi Diffie-Hellman per stabilire un segreto condiviso.
Chiunque"ascolta" nella conversazione "sente" solo i numeri scambiati nel mezzo: 13
, 6
, 2
, 9
. Non esiste un modo coerente per combinare questi quattro numeri per raggiungere il segreto condiviso finale: 3
senza conoscere uno dei valori privati di Alice o Bob ( 5
o 4
) che non sono mai stati condivisi.
Che è la bellezza di Diffie-Hellman.
I numeri usati nell'esempio sopra sono piccoli per mantenere semplice la matematica. In realtà, i numeri utilizzati nei moderni scambi Diffie-Hellman sono (o dovrebbero essere) al minimo 2048 bit - il che richiederebbe approssimativamente 617 cifre da scrivere !!
Dopo aver terminato lo scambio di chiavi Diffie-Hellman, entrambe le parti ora possiedono un valore identico, noto solo a ciascuna delle parti.
Questo valore diventa il "punto di partenza" da cui è possibile generare chiavi aggiuntive.
In precedenza, abbiamo menzionato la codifica simmetrica e i codici di autenticazione dei messaggi, ciascuno dei quali richiede una chiave segreta. Bene, prendi il tuo DH Shared Secret e combinalo con pochi altri valori e ora hai i tasti Encryption e MAC di cui hai bisogno.
L'ulteriore vantaggio è che la combinazione di valori per creare chiavi è facile ... Può essere eseguita tutte le volte che è necessario.
Infatti, molti protocolli di sicurezza (SSL / TLS, IPsec, ecc.) generano un set di chiavi per proteggere il traffico in ogni direzione - un totale di quattro chiavi (MAC + Crittografia in una direzione , MAC + Crittografia nella direzione opposta). Tutte e quattro le chiavi generate dallo stesso valore iniziale iniziale, derivate da Diffie-Hellman.