Come abbiamo discusso nell'argomentazione precedente, i fondamenti per la crittografia a chiave pubblica furono posti da Diffie e Hellman.
Quello che proporremo non è un vero e proprio cifrario, ma può essere un approccio per implementare uno scambio di chiavi simmetriche.
Come altre tecniche di crittografazione a chiave pubblica, le operazioni effettuate con questa tecnica si basano sull'aritmetica modulare, vediamo di seguito alcune proprietà e definizione utili a per comprendere come funziona lo scambio di chiavi di Diffie-Hellman.
Dato
Il modulo dunque gode della proprietà secondo cui il risultato di una operazione di modulo non supera mai il modulo utilizzato. Vale inoltre la seguente proprietà: per
Esempio:
Il prodotto di due valori
Dimostrazione:
siano
Pertanto
Abbiamo quattro addendi nell'espressione sopra.
Per calcolare il modulo di ciascun addendo, dobbiamo fare il modulo di ogni elemento del prodotto di quell'addendo. Per esempio per calcolare
Abbiamo dimostrato che:
Lo stesso ragionamento vale per le potenze.
La potenza di
Dimostrazione:
sia
allora esiste
Pertanto
ma
Ovvero
Ovvero
Per ogni
Per ogni
Per ogni
Se
sia
Vediamolo con un esempio: se
Se
Infatti, se
Se
Per mostrare un esempio, troviamo prima due numeri
Supponiamo che
Scegliamo invece
Adesso vogliamo che
Esempio:
Significa che X diviso M dà resto 1 (quindi
Tale equivalenza ci dice che
Esempio:
Informazioni note:
Chiave privata di A:
Chiave pubblica di A:
Chiave privata di B:
Chiave pubblica di B:
Chiave condivisa:
Per capire cos'è una radice primitiva dobbiamo comprendere che cosa è la
La funzione di Eulero è una funzione aritmetica che restituisce il numero di interi positivi inferiori a n che sono coprimi con n, ovvero il numero di interi positivi tra 1 e n - 1 che non hanno fattori primi in comune con n, eccetto l'1. In parole semplici, la
Esempio:
Diciamo che un numero
In altre parole, se
Esempio: consideriamo
Numeri primi minori di
Dobbiamo adesso trovare un numero
Proviamo con
Tuttavia, ci rendiamo conto che, qualsiasi
Proviamo con
I numeri generati da
Proviamo con
I numero generati da
Non tutti gli interi hanno radici primitive. Infatti, gli unici interi con radici primitive sono quelli della forma
Abbiamo detto che la chiave pubblica di a è:
Mentre il logaritmo discreto consente di trovare
Ed è proprio questa la difficoltà da superare per rompere Diffie-Hellman.
Per realizzare Diffie-Hellman, occorre:
I primi due algoritmi sono anche necessari per la cifratura e la firma con RSA. RSA verrà affrontato più avanti nella trattazione.
L'attacco man in the middle, letteralmente uomo in mezzo è una attacco che rende lo scambio con Diffie-Hellman insicuro. Supponiamo che i due utenti, Alice e Bob vogliano scambiarsi le chiavi, come abbiamo visto sopra. Supponiamo che ci sia un avversario, Darth. L'attacco procede come segue:
In breve, Darth si è interposto alla comunicazione, ed ha instaurato una comunicazione con entrambi gli estremi della comunicazione. Darth condivide una chiave con Bob e, sempre Darth, condivide una chiave con Alice. Alice e Bob pensando di condividere una chiave segreta, ma così non è. Tutte le future comunicazioni tra Alice e Bob saranno compromesse nel seguente modo:
La soluzione a questo attacco è l'utilizzo di un canale autenticato per lo scambio delle chiavi pubbliche.
Prossimo argomento: Struttura RSA.