Sei sulla pagina 1di 6

Aritmetica Modulare e Cifratura RSA Versione 1.

02
2023-05-18

Aritmetica Modulare e Cifratura RSA


1. Introduzione
La cifratura RSA serve a criptare un messaggio e a rendere praticamente impossibile decriptarlo se non si è in
possesso della chiave. Supponiamo che E sia un sito di e-commerce e A un acquirente. Sia H un hacker che
controlla il flusso di dati da E ad A e viceversa; H è interessato al numero di carta di credito di A, che indico
con N.
E manda all’acquirente A una chiave pubblica F. Tramite questo numero A cripta il suo numero N,
convertendolo in M. Il sito E riceve M e lo riconverte in N e l’operazione di acquisto si conclude.
Nel frattempo l’hacker H ha “visto” la chiave pubblica F e il codice criptato M (ovvero le stesse informazioni
che conosce E): è possibile che questi dati siano sufficienti a calcolare N per il sito E, ma non per l’hacker H
? La risposta è no. E allora come rendere sicura la transazione? Mandando altri dati? Resta il problema che E
deve essere in grado di ritradurre M in N, H invece no.

2. Aritmetica dell’Orologio o Modulare


Considero l’aritmetica dell’orologio: so che, ad esempio, 14 → 2 oppure 19 → 7 , che scriviamo
rispettivamente 14 = 2 ( mod12 ) e 19 = 7 ( mod12 ) . Analogamente 24 = 0 ( mod12 ) .
Si parla di aritmetica “modulo 12”; posso considerare “orologi” con qualunque numero n  2 di ore.
Nell’algebra modulo n ci sono n classi di equivalenza, ovvero tutti i numeri INTERI di appartengono ad
una ed una sola classe, i cui rappresentanti sono i numeri da 0 a n − 1 . Pertanto indico con n l’insieme dei
“numeri interi modulo n” (orologio a n ore).
Ad esempio se n = 7 ho le classi 0, 1, 2, 3, 4, 5, 6 . Se scrivo 10 = 3 ( mod 7 ) significa che 10 appartiene
alla classe del 3 .
A che classe appartiene il numero −3 ? Siccome 7 − 3 = 4 , −3 appartiene alla classe del 4 .

In generale, il rappresentante del numero x nell’algebra modulo n è il resto della divisione con resto x : n .
Ad esempio chi è il rappresentante di 83 modulo 25 ? Siccome 83 = 25  3 + 8 , allora 83 = 8 ( mod 25) o anche
83  25 3 .

Le addizioni e le moltiplicazioni (e quindi le potenze) si svolgono normalmente, ma i risultati vanno riscritti


modulo n . Ad esempio nell’orologio a 12 ore:
7 + 8 = 15 = 3 ( mod12 ) 5  7 = 35 = 11( mod12 )
7  7 = 49 = 1( mod12 ) 6  8 = 48 = 0 ( mod12 )
Dall’ultima operazione osservo che NON vale più la LAP. L’algebra modulare NON è un dominio di integrità.

prof. Menara Enrico 1


Aritmetica Modulare e Cifratura RSA Versione 1.02
2023-05-18

3. Inversi nell’Aritmetica Modulare


Dato un elemento n cerco il suo inverso rispetto alla moltiplicazione (cioè il suo reciproco): come avviene
nell’algebra classica, due numeri sono uno l’inverso dell’altro rispetto alla moltiplicazione (cioè sono
reciproci) se il loro prodotto è l’elemento neutro della moltiplicazione, che è ancora 1. Ovviamente 0 = n non
è MAI invertibile.
Nell’orologio l’inverso di 7 è 7 stesso: infatti come abbiamo visto prima 7  7 = 49 = 1( mod12 ) . Chi è l’inverso
di 4?
Proviamo:
4 1 = 4 ( mod12 ) 4  2 = 8 ( mod12 ) 4  3 = 0 ( mod12 ) 4  4 = 4 ( mod12 )
4  5 = 8 ( mod12 ) 4  6 = 0 ( mod12 ) 4  7 = 4 ( mod12 ) 4  8 = 8 ( mod12 )
4  9 = 0 ( mod12 ) 4 10 = 4 ( mod12 ) 4 11 = 8 ( mod12 ) 4 12 = 0 ( mod12 )
Deduco che 4 non ha inverso nell’orologio a 12 ore.
Se considero l’orologio a 9 ore scopro che 4  7 = 28 = 1( mod9 ) , cioè 4 e 7 sono uno l’inverso dell’altro.
Vale il seguente teorema: nell’algebra modulo n gli unici numeri invertibili sono i numeri primi con n .

Quindi nell’orologio gli invertibili sono


1 1 1 = 1( mod12 ) 5 5  5 = 25 = 1( mod12 )
7 7  7 = 49 = 1( mod12 ) 11 11 11 = 121 = 1( mod12 )
Il caso vuole che ognuno sia l’inverso di se stesso, ma non è sempre così! Ad esempio nell’algebra modulo 9
abbiamo:
1 1  1 = 1( mod 9 ) 2e5 2  5 = 10 = 1( mod 9 )
4e7 4  7 = 28 = 1( mod 9 ) 8 8  8 = 64 = 1( mod 9 )

Casi Speciali:
• nell’algebra modulo n il numero n −1 è SEMPRE l’inverso di se stesso: infatti
( n − 1)  ( n − 1) = ( n − 1) = n2 − 2n + 1 = n ( n − 2 ) + 1 = 1( mod n ) ;
2

• se n è primo, tutti i numeri da 1 a n − 1 sono primi con esso e quindi invertibili.

4. La Funzione di Eulero
La Funzione di Eulero di un numero naturale n si indica con  ( n ) (è “phi” e si legge “fi” di n ) e associa a
n il numero di numeri naturali compresi tra 1 e n che sono primi con n :

: →
n  ( n ) = #a  | MCD ( a, n ) = 1

La funzione di Eulero gode di queste proprietà:


a. se n è primo, allora  ( n ) = n − 1 (l’abbiamo visto alla fine del punto precedente);

prof. Menara Enrico 2


Aritmetica Modulare e Cifratura RSA Versione 1.02
2023-05-18

b. se MCD ( a, b ) = 1 allora  ( ab ) =  ( a )   ( b ) ;
c. se p e q sono primi distinti allora  ( pq ) = ( p − 1)  ( q − 1) (da a. e b.);

d. se p è primo allora  ( p m ) = p m − p m −1 ;

In generale  ( n ) si calcola così: se la fattorizzazione di n è n = p1e1  p2e2   pr er , allora (da b. e d.) è:

 ( n ) =  ( p1e  p2 e 
1 2
 pr er ) =  ( p1e1 )   ( p2 e2   pr er ) = =

=  ( p1e1 )   ( p2 e2 )    ( pr er ) = ( p1e1 − p1e1 −1 )   ( pr er − pr er −1 ) =

 1   1   1   1 
= p1e1  1 −    pr er  1 −  = n  1 −    1 − 
 p1   pr   p1   pr 

Ad esempio, se n = 72 = 23  32 risulta:
 1  1
 ( 72 ) = ( 23 − 22 )  ( 32 − 31 ) = 4  6 = 24
1 2
oppure  ( 72 ) = 72  1 −   1 −  = 72   = 24
 2  3 2 3

Nota Bene: per numeri composti (cioè non primi) grandi il calcolo della funzione di Eulero è proibitivo.

5. I Teoremi di Fermat e di Eulero


Vale il teorema di Fermat: se n è primo, allora a n −1  1( mod n ) a  n .
Da cui ho il seguente corollario: se n è primo, allora l’inverso di a  n , a  0 in n è a n − 2 ( mod n ) .
Infatti a  a n − 2 = a n −1  1( mod n ) .

Ad esempio (1234 ) è (1234 )  303( mod 1789 ) , cioè in


−1 1787
in 1789 1789 l’inverso di 1234 è 303.

Il teorema di Fermat viene generalizzato dal teorema di Eulero: n  2, a  n invertibile (cioè tale che

MCD ( a, n ) = 1 , vale a ( n )  1( mod n ) .

Da cui ho il seguente corollario: n  2, a  n invertibile ( MCD ( a, n ) = 1 ), l’inverso di a  n , a  0 in

n è a ( n )−1 ( mod n ) . Infatti a  a ( n)−1 = a ( n)  1( mod n ) .

Ricordo che se n è primo (ipotesi del teorema di Fermat) allora  ( n ) = n − 1 (proprietà a. di  ( n ) ) e quindi


a
 ( n)
 1( mod n )
il teorema di Eulero si riduce a quello di Fermat:   a n −1  1( mod n )
 ( n) n −1

a =a
Quindi la funzione di Eulero sarebbe utile per calcolare l’inverso di un elemento a  n qualunque sia n , ma
come abbiamo già detto in precedenza se n è grande non primo il calcolo di  ( n ) risulta proibitivo.
L’alternativa è usare l’algoritmo di Euclide per la divisibilità: se MCD ( a, n ) = 1 significa che esistono r e s
(calcolabili con il suddetto algoritmo) tali che 1 = ra + sn , da cui ra = 1 − sn cioè ra  1( mod n ) , ovvero r è
l’inverso di a in n .

prof. Menara Enrico 3


Aritmetica Modulare e Cifratura RSA Versione 1.02
2023-05-18

6. Una cifratura “hackerabile”


Dopo questa immersione nell’algebra pura (teoria dei numeri), torno alla situazione descritta nel primo
paragrafo:
• E manda la chiave pubblica F all’acquirente A;
• A converte il suo codice N in M tramite F : supponiamo che sia M = N F ; poi spedisce M ad E ;
• per riconvertire M in N , sia E che (ahimè) l’hacker H calcolano N = F M .
Questo metodo non funziona perché sia E che H riescono a trovare N .

7. Una cifratura “impossibile”


Immaginiamo una situazione un po’ diversa, in cui si usa la matematica modulare:
• E manda la chiave pubblica F ed un numero pubblico n all’acquirente A;
• A converte il suo codice N in M tramite F e n : supponiamo che sia M = N F ( mod n ) ; poi spedisce
M ad E ;
• per riconvertire M in N , sia E che H devono risolvere l’equazione x F ( mod n ) = M cioè

x F = M + ny, y  : se n è alto, è un problema che non può essere risolto in tempi ragionevoli, e
d’altronde deve essere risolvibile per E e non per H , non da tutti e due e neppure da nessuno dei due…
Come può fare E per riconvertire M in N in tempi ridottissimi?

prof. Menara Enrico 4


Aritmetica Modulare e Cifratura RSA Versione 1.02
2023-05-18

8. La cifratura RSA
Riconsidero l’ultimo esempio, ma invece di considerare un numero n generico, procedo in modo differente:
• E si procura due numeri primi p e q molto grandi;
• E calcola n = p  q ;
• E calcola  ( n ) = ( p − 1)( q − 1) ; (proprietà d. della funzione di Eulero)
• E sceglie la chiave pubblica F prendendo un numero minore di  ( n ) e primo con  ( n ) (

MCD ( F , ( n ) ) = 1 );

• per il teorema di Eulero l’inverso di F in  (n) è il numero G = F


  ( n )  −1
( mod  ( n ) ) . Questo numero
è la chiave privata che viene calcolata da E , ma non diffusa;
• E invia ad A sia F che n , ma tiene per sé  ( n ) , G e la scomposizione pq di n ;
• A converte il suo numero N in M così: M = N F ( mod n ) e lo spedisce ad E ;
• E calcola M G ( mod n ) : quello che trova è proprio N (qui sotto è spiegato perché);
• quest’ultimo passaggio non è replicabile da H , in quanto non conosce G e non può ricavarlo in tempi
ragionevoli da F e n , gli unici dati che possiede.
Vediamo più dettagliatamente perché M G ( mod n ) = N .

Vale M G ( mod n ) = ( N F ) ( mod n ) = N FG ( mod n ) . F e G sono uno l’inverso dell’altro modulo  ( n ) ,


G

ovvero FG  1( mod  ( n ) ) cioè FG = 1 + t   ( n ) , t  .

(
Dunque N FG ( mod n ) = N 1+t  ( n ) ( mod n ) = N 1  N t  ( n ) ( mod n ) = N  N  ( n ) ) ( mod n ) .
t

Essendo n = p  q con p e q primi molto grandi, sicuramente N è primo con n ; quindi posso usare il

teorema di Eulero, per il quale N  ( n)  1( mod n ) e quindi N  ( n ) ( )  1( mod n ) .


t

Concludo che M G ( mod n ) = N FG ( mod n ) = N  1( mod n ) = N .

prof. Menara Enrico 5


Aritmetica Modulare e Cifratura RSA Versione 1.02
2023-05-18

9. Un esempio concreto
Siano p = 11 e q = 5 . Quindi n = pq = 55 ,  ( 55) = ( p − 1)( q − 1) = 10  4 = 40 .

Inoltre  ( ( 55) ) =  ( 40 ) = 16 .

Sia F = 13 la chiave pubblica ( F deve essere minore di  ( 55 ) = 40 ), che viene comunicata con n = 55 .

Allora G = F
  ( n )  −1
( mod  ( n ) ) = 13 ( mod 40 ) = 37 .
16 −1

Suppongo che il numero da criptare sia N = 14 . Allora M = N F ( mod n ) = 1413 ( mod55) = 49 . L’acquirente
A invia al sito di e-commerce E il codice M = 49 . Per decriptare M = 49 , E calcola
N = M G ( mod n ) = 4937 ( mod55 ) = 14 . Invece l’hacker H , per trovare N deve risolvere l’equazione

x13 ( mod 55 ) = 49 cioè x13 = 49 + 55 y, y  .

prof. Menara Enrico 6

Potrebbero piacerti anche