La protezione dei dati mentre passano attraverso Internet di solito richiede la protezione in due modi:
- Riservatezza - garantendo nessuno tranne i destinatari previsti possono leggere i dati
- Integrità , assicurandosi che nessuno possa modificare o manomettere i dati in transito
La riservatezza viene fornita utilizzando la crittografia simmetrica e l'integrità viene fornita utilizzando un codice di autenticazione dei messaggi (MAC).
Sia la crittografia simmetrica che i MAC richiedono che entrambe le parti abbiano chiavi identiche e segrete (una "chiave" in questo senso è semplicemente un numero, convertito in binario).
Il problema quindi è come fanno entrambe le parti a stabilire chiavi identiche e segrete su Internet? (o qualsiasi altro mezzo insicuro). Questo è noto come " il problema di scambio delle 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 non sicuro . O, per dirla più semplicemente ...
Immagina che tu e il tuo amico foste in una stanza affollata, circondati da persone dall'aspetto dubbioso. Supponi che tu e il tuo amico doveste concordare un numero identico, ma non volete che nessun altro nella stanza sappia qual è il numero. Diffie-Hellman consentirebbe a te e al tuo amico di scambiare abilmente alcuni numeri e da quei numeri calcola un altro numero identico. E anche se tutti nella stanza hanno sentito i numeri scambiati, non hanno modo di determinare il numero finale a cui tu e il tuo amico siete arrivati.
Possiamo vedere un esempio di ciò che si verifica nell'immagine qui sotto. Alice e Bob useranno lo scambio di chiavi Diffie-Hellman per stabilire un segreto condiviso.
Chiunque "ascoltasse" la conversazione "ascolterebbe" solo i numeri scambiati al centro: 13
, 6
, 2
, 9
. Non esiste un modo coerente per combinare questi quattro numeri per ottenere il segreto condiviso finale: 3
senza conoscere uno dei valori privati di Alice o Bob ( 5
o 4
) che non sono mai stati condivisi.
Questo è il bello di Diffie-Hellman.
I numeri usati nell'esempio sopra sono piccoli per mantenere la matematica semplice. In realtà, i numeri utilizzati nei moderni scambi Diffie-Hellman sono (o dovrebbero essere) almeno 2048 bit, il che richiederebbe circa 617 cifre per essere scritti !!
Dopo aver terminato lo scambio di chiavi Diffie-Hellman, entrambe le parti ora possiedono un valore identico, noto solo a ciascuna parte.
Questo valore diventa il "punto di partenza" da cui possono essere generate chiavi aggiuntive.
In precedenza, abbiamo menzionato la crittografia simmetrica e i codici di autenticazione dei messaggi che richiedono ciascuno una chiave segreta. Bene, prendi il tuo DH Shared Secret e combinalo con alcuni altri valori e ora hai la crittografia e le chiavi MAC di cui hai bisogno.
Il vantaggio aggiuntivo è che combinare i valori per creare le chiavi è facile ... essere eseguito tutte le volte necessarie.
In effetti, 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 nell'altra direzione). Tutte e quattro le chiavi sono state generate dallo stesso valore iniziale iniziale, derivato da Diffie-Hellman.