Scambio di chiavi di Diffie Hellman
...

Informazioni note ad entrambi i nodi
...

  • numero primo
  • è una radice primitiva di

Non è un vero è proprio cifrario, ma può essere usato per implementare uno scambio di chiave simmetrica (da condividere).

Cos'è una radice primitiva?
...

Diciamo che è una radice primitiva di , se e solo se l'ordine di .
Ovvero è una radice di se elevando a tutti i numeri presenti in si ottengono sempre numeri diversi. Si dice anche che è un generatore per .

Bob
...

...

Cosa serve per realizzare Diffie-Hellman?
...

Per realizzare Diffie-Hellman, occorre:

Requisito 2
...

Per la generazione di un numero primo (molto grande) viene utilizzato un algoritmo che sfrutta dei test probabilistici come quello di Miller-Rabin.

Requisito 1
...

L'algoritmo utilizzato in versione iterativa ha complessità dove è il numero di bit del numero passato all'algoritmo.

L'algoritmo in versione ricorsiva invece ha complessità .

Requisito 3
...

Non incluso nel programma del corso.

...

La chiave pubblica di Alice è la radice elevata a in modulo .

Chiave condivisa
...

Alice ha sia la chiave pubblica di Bob, che la sua chiave privata.
Chiave di Alice:
Per la proprietà dell'aritmetica modulare, due moduli applicati allo stesso termine, si riducono ad un solo modulo.
Bob sarà in grado di fare lo stesso calcolo, giungendo al medesimo risultato.
Alice e Bob adesso condividono la stessa chiave.

...

la chiave privata di Alice è un intero

Alice
...

Alice
...

...

Contro
...

Gli algoritmi per cifrare e decifrare con RSA, hanno complessità , che non può competere con algoritmi simmetrici come AES che hanno complessità .
Anche gli algoritmi per la generazione delle chiavi sono considerati inefficienti.

Realizzazione RSA
...

Per realizzare RSA occorrono

  • un algoritmo efficiente per calcolare
  • un algoritmo efficiente per generare primo
  • un algoritmo per calcolare l'inverso moltiplicativo di

Requisito 3
...

Si sfrutta l'algoritmo di Euclide generalizzato con lo scopo di trovare tali che .

Pro
...

  • Si ritiene computazionalmente difficile il problema di decifrare un messaggio cifrato con RSA senza conoscere la corrispondente chiave .
  • Si ritiene computazionalmente difficile calcolare a partire da e senza conoscere e .
  • Si ritiene computazionalmente difficile calcolare a partire da , avendo un grande.

In generale: questo cifrario è basato sulla difficoltà di calcolare la fattorizzazione di numeri ottenuti moltiplicando numeri primi molto grandi. Il problema per un attaccante, è che noto e , dove è il prodotto di numeri primi molto grande, è molto difficile trovare i fattori che lo formano.

Generazione chiavi
...

  1. Vengono scelti due numeri primi: e .
  2. Viene calcolato , dove è detto modulo RSA.
  3. , viene scelto un valore , in modo che , ovvero e sono relativamente primi, quindi .
  4. Adesso viene calcolato l'inverso moltiplicativo di , tale inverso è , è l'esponente di decifrazione
Cifratura
...

Decifratura
...

  • Mittente e ricevente non condividono chiavi.
  • Per cifrare/decifrare si usano chiavi diverse.
  • Gli algoritmi per la cifratura/decifratura non sono efficienti.
  • Decifrare senza conoscere la chiave richiede risorse computazionali molto potenti.

RSA
...

Attacco MITM a Diffie-Hellman
...

DH soffre di un attacco di tipo Man-In-The-Middle. Supponendo che un terzo elemento, diciamo Darth, intercetti la comunicazione tra Alice e Bob e che questo conosca e . Anche Darth è in grado di generare delle chiavi pubbliche e ne genera 2. Poi intercetta la chiave pubblica di Alice e le invia la sua prima chiave pubblica. Alice e Darth adesso condividono una chiave. Darth, fa in modo che la chiave di Alice non venga inoltrata a Bob, inoltrandogli invece la sua seconda chiave pubblica. Bob invia la sua chiave pubblica ad Alice, ma anche essa viene intercettata da Darth e non fatta pervenire ad Alice. Adesso anche Bob e Darth condividono un'altra chiave. Alice e Bob pensano di condividere la stessa chiave, ma in realtà entrambi condividono una chiave con Darth. Quando Bob invia un messaggio ad Alice, in realtà lo cifrerà con la chiave che condivide con Darth, che intercetta il messaggio, lo manipola come vuole e lo inoltra ad Alice.

1) Alice invia la sua chiave pubblica a Bob
2) Bob invia la sua chiave pubblica ad Alice
Requisito 1
Requisito 2