Scambio di chiavi Diffie-Hellman

Indice dei contenuti

    Il protocollo di scambio di chiavi Diffie-Hellman (DH), pubblicato da Whitfield Diffie e Martin Hellman nel 1976, è stato il primo sistema crittografico pratico a risolvere il problema della distribuzione delle chiavi: come concordare un segreto condiviso attraverso un canale completamente pubblico e non sicuro, senza essersi incontrati in precedenza. Fu una rivoluzione concettuale che ha posto le basi dell’intera crittografia a chiave pubblica moderna.

    Principio matematico

    La sicurezza di DH si fonda sul problema del logaritmo discreto: dato un gruppo ciclico di ordine qq, un generatore gg e il valore gamodpg^a \bmod p, trovare aa è computazionalmente difficile per valori sufficientemente grandi di pp.

    Il protocollo in forma classica (DH su Zp\mathbb{Z}_p^*):

    1. Alice e Bob concordano pubblicamente un primo pp e un generatore gg (parametri pubblici).
    2. Alice sceglie un segreto aa, calcola A=gamodpA = g^a \bmod p e lo invia a Bob.
    3. Bob sceglie un segreto bb, calcola B=gbmodpB = g^b \bmod p e lo invia ad Alice.
    4. Alice calcola K=Bamodp=gabmodpK = B^a \bmod p = g^{ab} \bmod p.
    5. Bob calcola K=Abmodp=gabmodpK = A^b \bmod p = g^{ab} \bmod p.

    Entrambi ottengono lo stesso segreto K=gabmodpK = g^{ab} \bmod p. Un osservatore che conosce A=gaA = g^a e B=gbB = g^b non riesce a calcolare gabg^{ab} senza risolvere il logaritmo discreto.

    Vulnerabilità al man-in-the-middle

    DH nella sua forma base non autentica i partecipanti: un attaccante MitM può intercettare lo scambio, stabilire due sessioni DH separate (una con Alice, una con Bob), e decifrare tutto il traffico di entrambi. Per questo DH viene sempre abbinato a un meccanismo di autenticazione — tipicamente certificati X.509 in TLS.

    DHE e ECDHE: forward secrecy

    La variante DHE (Diffie-Hellman Ephemeral) genera nuove chiavi DH per ogni sessione. Questo garantisce la forward secrecy (perfect forward secrecy, PFS): anche se la chiave privata a lungo termine del server viene compromessa in futuro, le sessioni passate non sono decifrabili perché le chiavi effimere usate per quelle sessioni non esistono più.

    ECDHE (Elliptic Curve Diffie-Hellman Ephemeral) sostituisce il gruppo moltiplicativo Zp\mathbb{Z}_p^* con un gruppo di punti su una curva ellittica, ottenendo la stessa forward secrecy con chiavi molto più corte. TLS 1.3 richiede obbligatoriamente ECDHE (o DHE) — le suite senza forward secrecy sono state eliminate dallo standard.

    Parametri e sicurezza

    Per DH classico su Zp\mathbb{Z}_p^*, i parametri devono essere scelti con cura:

    • Il primo pp deve essere sufficientemente grande: 2048 bit è il minimo attuale (NIST), 3072 bit per sicurezza a lungo termine.
    • Usare safe primes (p=2q+1p = 2q + 1 con qq primo) e lavorare nel sottogruppo di ordine qq per evitare attacchi su piccoli sottogruppi.
    • Logjam attack (2015): ha dimostrato che molti server usavano gli stessi parametri DH a 512 bit o 1024 bit, vulnerabili a precomputazione. ECDHE su curve standardizzate (P-256, X25519) è immune a questa classe di attacchi.

    Diffie-Hellman e crittografia post-quantistica

    L’algoritmo di Shor risolverebbe il problema del logaritmo discreto (su cui si basa DH classico) così come il problema della fattorizzazione (su cui si basa RSA). La crittografia post-quantistica sviluppa protocolli di scambio di chiavi su problemi matematici diversi, resistenti anche agli algoritmi quantistici.

    Ultimo aggiornamento: