A metà degli anni 70 il NIST aveva proposto DES come algoritmo di crittazione simmetrica. Ma in parallelo si sviluppò anche la crittografia di tipo asimmetrico , in particolare dai signori Diffie ed Hellman che proposero un nuovo tipo di crittografia basato su chiavi (pubbliche e private).
Un altra proposta fu data da 3 ricercatori Rivest, Shamir e Adleman (RSA) che utilizzava un problema computazionalmente difficile da risolvere , in particolare trovare due numeri primi che moltiplicati danno n.
In particolare la crittografia Asimmetrica fa uso di due tipologie di chiavi , le chiavi pubbliche che sono su dei server pubblici dove posso accedere per recuperarle e le chiavi private che sono le chiavi segrete dei singoli utenti.
RSA si basa su un problema di Fattorizzazione.
Prendo 2 numeri primi Molto grandi ($p,q$), grandi a seconda di quando il NIST effettua il controllo in questo momento siamo sui 2000 bit.
$$ n = p*q $$
Avendo $n$ non riesco a trovare $p$ e $q$ A meno che di non conoscere un’ informazione detta (Trapdoor)
Oltre a questi due numeri devo scegliere anche un altro numero $e$ tale per cui:
$$ MCD(e,\phi(n)) =1 \\ \text{ossia } e \text{ deve avere inverso mod } \phi(n) \\ 1 <e<\phi(n) $$
$m$ è il messaggio che devo cifrare
Elevo $m$ alla $e$ → $m^e$ e ne faccio il modulo $n$ e ottengo :
$$ m^e = C \mod n $$
$C$ è il critto testo che verrà spedito sul canale
Devo calcolare $d$ ossia inverso moltiplicativo di $e$
$$ d * e \equiv 1 \mod \phi(n) $$
$$ C^d = m \mod n $$
Dove $m$ è il messaggio