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 q, un generatore g e il valore g^a \bmod p, trovare a è computazionalmente difficile per valori sufficientemente grandi di p.

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

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

    Entrambi ottengono lo stesso segreto K = g^{ab} \bmod p. Un osservatore che conosce A = g^a e B = g^b non riesce a calcolare g^{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 \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 \mathbb{Z}_p^*, i parametri devono essere scelti con cura:

    • Il primo p deve essere sufficientemente grande: 2048 bit è il minimo attuale (NIST), 3072 bit per sicurezza a lungo termine.
    • Usare safe primes (p = 2q + 1 con q primo) e lavorare nel sottogruppo di ordine q 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: