Scambio di chiavi di Diffie-Hellman

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.

Aritmetica modulare
...

Definizione

Dato , (oppure a % M) denota il resto della divisione di a per M.
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: e

Proprietà: moltiplicazione modulare (o prodotto modulare)

Il prodotto di due valori in modulo per un valore è uguale al prodotto dei resti dei due valori e per in modulo .

Dimostrazione:
siano e , con , allora esistono e tali che e .
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 dobbiamo fare per poi moltiplicarlo con , ecc.
, il motivo è che è multiplo di dunque il resto di per è 0, tale 0 viene moltiplicato per il modulo di , qualunque sia il loro risultato viene annullato quando moltiplicato per zero. Lo stesso ragionamento vale per gli altri addendi che contengono la .

Abbiamo dimostrato che: dove e sono i resti di e , il che equivale a dire che:

Lo stesso ragionamento vale per le potenze.

Proprietà

La potenza di per in modulo è uguale alla potenza del resto di per elevato a in modulo .

Dimostrazione:
sia con
allora esiste tale che .
Pertanto


ma non è altro che , dunque come volevasi dimostrare

Notazione I

divide
Ovvero tale che
Ovvero

Per ogni (infatti )
Per ogni (infatti )
Per ogni (infatti )

Proprietà I

Se e allora infatti:
sia e allora .
Vediamolo con un esempio: se , il che vuol dire che e , il che vuol dire che , allora e in particolare

Se e allora per ogni intero i, j.
Infatti, se e , allora , ovvero equivale ad moltiplicare per una costante più alta.

Proprietà II

Se e , allora .
Per mostrare un esempio, troviamo prima due numeri e , il cui MCD sia 1.
Supponiamo che , i divisori di sono:
Scegliamo invece , i divisori di sono:

Adesso vogliamo che divida , scegliamo , in tal modo divide poiché il resto della divisione tra e restituisce come resto. La proprietà dice che se è vero che divide e che il massimo divisore comune tra e è , allora divide .

Notazione II

"X congruente a Y modulo M".
Esempio:


Significa che X diviso M dà resto 1 (quindi per qualche )
Tale equivalenza ci dice che e sono tra di loro coprimi.
Esempio: , infatti con

Scambio di chiavi di Diffie-Hellman
...

Informazioni note:

  • : numero primo
  • : radice primitiva di

Chiave privata di A:
Chiave pubblica di A:

Chiave privata di B:
Chiave pubblica di B: Scambio di chiavi.png

Chiave condivisa: Entrambi gli estremi di questa comunicazione possono giungere allo stesso calcolo. Il calcolo sopra è stato effettuato da Alice, a partire dalla chiave pubblica di Bob. Ma Bob potrebbe fare la stessa cosa, partendo dalla chiave pubblica di Alice, la differenze è che Bob otterrebbe alla fine , ma le proprietà della matematica ci dicono che scambiando l'ordine di due fattori il risultato della moltiplicazione non cambia, per cui, essendo e noti ad entrambi (Bob e Alice), la chiave che ottengono alla fine la stessa. Bob e Alice adesso condividono una chiave.

Per capire cos'è una radice primitiva dobbiamo comprendere che cosa è la , nota anche come la funzione totiente (o funzione di Eulero).

Funzione di Eulero

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 conta quanti numeri coprimi con , ci sono fino a .

Esempio: , i numeri minori di , che non hanno fattori in comune con se non l', sono: , dunque .

Cos'è una radice primitiva?

Diciamo che un numero è una radice primitiva modulo n se e solo se l'ordine di modulo n è .

In altre parole, se è una radice primitiva modulo n, allora elevando a tutti i possibili esponenti da a , otterremo un insieme completo di resti diversi modulo n, ovvero per ogni numero che va da a usato come esponente di , e applicatagli l'operazione , si ottengono numeri primi diversi.
, dunque, genera tutti i numeri coprimi con n quando elevato a potenze successive.

Esempio: consideriamo

Numeri primi minori di

Dobbiamo adesso trovare un numero tale che elevandolo a ogni risulta che

Proviamo con .
OK
OK
Tuttavia, ci rendiamo conto che, qualsiasi usato come potenza per , ci darà sempre in , il che vuol dire che il numero di valori primi generati da non sarà dell'ordine di . Infatti ha numeri primi. Usando , avremo solo come valore generato.

Proviamo con .
OK
OK
OK
Abbiamo di nuovo il 2
I numeri generati da sono e sono che non sono dell'ordine di .

Proviamo con .
OK
OK
OK
OK
OK
OK
Abbiamo nuovamente il 3
I numero generati da sono , dunque sono dell'ordine di .

Non tutti gli interi hanno radici primitive. Infatti, gli unici interi con radici primitive sono quelli della forma e , dove è qualsiasi numeri dispari primo a è un intero positivo.

Esponente modulare e logaritmo discreto
...

Abbiamo detto che la chiave pubblica di a è: L'esponente modulare consente di trovare a partire da .
Mentre il logaritmo discreto consente di trovare a partire da .
Ed è proprio questa la difficoltà da superare per rompere Diffie-Hellman.

Realizzare 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.

Problemi di Diffie-Hellman
...

  • Diffie-Hellman protegge rispetto alla lettura non autorizzata dei dati trasmessi in rete, ma non protegge rispetto ad attacchi di tipo attivo.
  • Diffi-Hellman permette solo di scambiare chiavi, non permette di cifrare direttamente messaggi, arbitrari, quindi non può essere usato direttamente per autenticare o per la firma digitale.

Attacco man in the middle allo scambio delle chiavi con Diffie-Hellman
...

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:

  1. Darth prepara l'attacco generando due chiavi casuali private: e , da queste genere le due chiavi pubbliche corrispondenti e
  2. Alice invia la sua chiave pubblica a Bob.
  3. Darth intercetta e invia a Bob la chiave pubblica che ha generato al passo 1 . Darth allora calcola .
  4. Bob riceve la chiave pubblica (inviata da Darth a sua insaputa) e calcola .
  5. Bob invia la sua chiave pubblica ad Alice
  6. Darth intercetta la chiave pubblica di Bob e invia ad Alice. Darth calcola
  7. Alice riceve la chiave pubblica (invia da Darth a sua insaputa) e calcola

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:

  1. Alice invia un messaggio cifrato usando la chiave che condivide con Darth
  2. Darth intercetta il messaggio cifrato e lo decifra ottenendo
  3. Darth invia a Bob oppure , ovvero Darth può decidere se inviare il messaggio originale, o se inviare un messaggio qualsiasi.

Man_in_the_middle.png

La soluzione a questo attacco è l'utilizzo di un canale autenticato per lo scambio delle chiavi pubbliche.

Prossimo argomento: Struttura RSA.