Perché questo cifrario è basato sulla difficoltà di calcolare la fattorizzazione di numeri ottenuti moltiplicando numeri primi molto grandi.
Per implementare RSA sono necessari tre ingredienti:
Le chiavi:
Il ciphertext
Cifrando
Se
Sappiamo che il ciphertext viene generato a partire da:
E che il plaintext viene ottenuto a partire da:
Dai calcoli sopra, dobbiamo dimostrare che:
Sappiamo che
Diciamo che il prodotto tra
Quindi
Ora, dentro
Questo insieme è formato da tutti i numeri che vanno da
In questo insieme quindi vi sono, tutti gli
Notiamo che, i multipli di
Possiamo riscrivere l'equazione sopra come:
Quanti sono i multipli di
Quindi:
Teorema di Eulero
Se
Avendo dimostrato che la funzione di Eulero di un numero
Sappiamo che se
Per il teorema di Eulero abbiamo detto che:
Abbiamo dimostrato che se
Nel caso in cui si verifica che
se
Notiamo anche che
Consideriamo uno solo dei due casi:
Se
Se abbiamo
Quindi
Da quest'ultima considerazione possiamo dire che, per il teorema di Eulero:
Gli algoritmi per cifrare e decifrare con RSA, hanno complessità
Anche gli algoritmi per la generazione delle chiavi sono considerati inefficienti.
Supponiamo che Alice e Bob vogliono comunicare utilizzando questo sistema di crittografia.
Supponiamo che Alice generi le su chiavi e fornisce la sua chiave pubblica a Bob, quindi escludiamo il fatto che Bob generi le sue chiavi per fornire la sua chiave pubblica.
Diciamo che Alice scelga come numeri primi:
A questo punto attraverso l'algoritmo esteso di Euclide va calcolato l'inverso moltiplicativo
Bob riceve la chiave pubblica di Alice:
Allora, Bob prepara un certo messaggio che viene elevato a
A questo punto Bob prende il messaggio e per cifrarlo fa m = .-.
, il motivo per cui abbiamo scelto due punti e un trattino è che tali simboli convertiti in decimale non superano la dimensione del modulo che abbiamo scelto
Il punto in decimale risulta essere 46, mentre il trattino 45.
Allora abbiamo m = 46 45 46
.c = 12 30 12
.
Bob allora prende il messaggio cifrato e lo invia ad alice.
Alice riceve il messaggio e per decifrarlo esegue: m = .-.
Supponiamo di avere la chiave pubblica di Alice:
Avendo questi due valori dovremmo sapere in che modo è fattorizzato 77. In questo caso è molto semplice, poiché
Prossimo argomento: Funzioni di hash.