Si considerino due numeri p e q primi molto grandi:
<aside> 👉 Questo si chiama di fatto problema della fattorizzazione
</aside>
RSA quindi fa utilizzo di una espressione con esponsnti.
$$ i \le log_2(n)\\ \equiv\\ 2^i< n \le 2^{i^1} $$
$$ C = M^e\text{ mod }n \\ M = C^d\text{ mod }n = M^{ed}\text{ mod }n $$
Essendo un algoritmo a chiave pubblica e privata, una delle caratteristiche piu importanti è la seguente:
<aside> 💡 è possibile trovare valori di $e,d,n$ tali che $M=M^{ed}\text{ mod }n$
</aside>
necessitiamo quindi di trovare una relazione del tipo $M=M^{ed}\text{ mod }n$
questa relazione funziona solamente se $e$ e $d$ sono inversi moltiplicativi modulo $\phi(n)$
come visto nella lezione prima, per $p$ e $q$ primi abbiamo che
$$ \phi(n)=\phi(p*q)=(p-1)(q-1)\\ \text{e quindi la relazione tra p e q deve essere di tipo }\\ ed\text{ mod }\phi(n)=1\\ \equiv\\ ed\equiv1\text{ mod }\phi(n) \\ \equiv\\ d\equiv e^{-1}\text{ mod }\phi(n) $$
le componenti di RSA sono quindi
<aside> 💡 Si parla quindi di una cifratura asimmetrica a chiave pubblica e privata con $PU=\text{Chiave Pubblica = }\lbrace e,n\rbrace$ $PR=\text{Chiave Privata= }\lbrace d,n\rbrace$
</aside>
per cifrare e decifrare il messaggio ci avvaliamo della seguente relazione, vista prima
$$
C = M^e\text{ mod }n\\ M = C^d\text{ mod }n $$
Esempio:
Come prima cosa, generiamo le chiavi pubblica e privata:
Ora, dato in input M=88 si può procedere a CIFRARE:
$$ C = M^e\text{ mod }n\\ C=88^7\text{ mod }187\\ \text{ grazie all'aritmetica modulare abbiamo che} \\ C=88^7\text{ mod }187=11\\ $$
Ora, dato in input C=11 è possibile DECIFRARE
$$ M = C^d\text{ mod }n\\ M=11^{23}\text{ mod }187\\ \text{ grazie all'aritmetica modulare abbiamo che} \\ C=11^{23}\text{ mod }187=88\\ $$
ragionando con l’inverso moltiplicativo, è possibile decifrare utilizzando il piccolo teorema di fermat:
$$ \text{noi sappiamo che }\\ de\equiv 1\text{ mod }\phi(n)\\ \text{ed anche che }\\ C^d=(M^{e})^d=M^{ed}\\ \text{quindi }\\ C^d\equiv M^{1+k\text{ mod }\phi(n)}\\ \equiv\\ C^d\equiv M(M^{\phi(n)})^k \equiv\\ C^d\equiv M*(1)^k \text{ mod }n $$
Di seguito un riassunto del funzionamento di RSA: