L’algoritmo di Diffie-Hellman

Nel 1976 Diffie e Hellman hanno proposto un metodo particolare per generare e trasmettere su un canale insicuro una chiave segreta, da utilizzare successivamente per un algoritmo di cifratura simmetrico.

[adsense:block:adcontenuto]

Poiché le caratteristiche dell’algoritmo sono state più tardi utilizzate come base per lo sviluppo degli algoritmi a chiavi asimmetriche, l’interesse per questo metodo va oltre il suo principale obiettivo appena ricordato..
Detti X e Y i due interlocutori, il procedimento si divide nei seguenti passi:

  • 1. X e Y scelgono pubblicamente un valore naturale N (grande) e un altro valore s appartenente all’intervallo di valori G=[0,N-1].
  • 2. X sceglie in modo casuale e privato un valore a nell’intervallo G; calcola poi il valore x = sa mod N, e invia x a Y.
  • 3. Analogamente Y sceglie in modo casuale e privato un valore b nell’intervallo G; calcola poi il valore y = sb mod N, e invia y a X.
  • 4. A questo punto entrambi gli interlocutori possono calcolare la stessa chiave privatamente, X nella forma Kx=ya mod N, Y nella forma Ky=xb mod N.

[adsense:block:adcontenuto]

Che la chiave calcolata separatamente sia la stessa si verifica facilmente poiché risulta:

  • Kx = ya mod N = (sb mod N)a mod N = (sb)a mod N
  • Ky = xb mod N = (sa mod N)b mod N = (sa)b mod N = (sb)a mod N = Kx

Attraverso il canale insicuro sono transitati N, s, x e y ma non a e b, necessari per il calcolo della chiave: la sicurezza è basata sulla elevata difficoltà computazionale di ricavare l’esponente a della formula x = sa mod N (logaritmo intero) noti N, s e x, e analogamente per b e y.

[adsense:block:adcontenuto]

Esempio:
N=1000 s= 9 X sceglie a=4 e calcola x= 94 mod 1000 = 6561 mod 1000 = 561
Y sceglie b = 6 e calcola y= 96 mod 1000 = 531441 = 441
Kx = 4414 mod 1000 = 37822859361 mod 1000 = 361
Ky = 5616 mod 1000 = 31172897213027361 mod 1000 = 361

Risorse per sviluppo: 

Ti potrebbero anche interessare:

Registrazione a pagamento con Ubercart (creare account contestualmente all'acquisto)

Scrivo questa guida per le forti richieste trovate sul web di creare una situazione tale che l'utente anonimo, solo dopo aver pagato, può essere un utente registrato. In realtà la cosa si può mascherare creando un prodotto in cui vendete un ruolo con l'uc_role (modulo incluso nell'ubercart) e configurando l'ubercart in modo che permetta l'acquisto all'anonimo creandogli automaticamente l'account.
Drupal: