RSA
Monica Bianchini
[email protected]
Dipartimento di Ingegneria dell’Informazione
Università di Siena
Introduzione  1
• Nella crittografia classica, Alice e Bob scelgono
segretamente una chiave k, che viene utilizzata per
costruire una funzione di codifica ek ed una funzione di
decodifica dk (uguale a ek o direttamente derivabile da
essa): crittosistemi di questo tipo sono detti a chiave
privata, dato che la conoscenza di ek li rende vulnerabili
• Lo svantaggio principale dei metodi a chiave privata è
che richiedono la comunicazione della chiave fra Alice e
Bob, su un canale sicuro, prima della trasmissione di
qualsiasi messaggio cifrato… potrebbe essere molto
difficile da realizzare!
• Per esempio, se Alice e Bob vivono lontani e decidono di
comunicare via e-mail, non avranno accesso a nessun
canale ragionevolmente sicuro per lo scambio della
chiave
Introduzione  2
•
•
•
•
I crittosistemi a chiave pubblica rendono il calcolo di
dk, a partire da ek, computazionalmente irrealizzabile
 ek può essere resa pubblica
Alice potrà inviare il messaggio cifrato a Bob
utilizzando ek, ma solo Bob sarà in grado di decifrarlo,
poiché sarà l’unico a conoscere dk
L’idea dei crittosistemi a chiave pubblica è dovuta a
Diffie e Hellman (1976), mentre la prima realizzazione
pratica si ha l’anno successivo, ad opera di Rivest,
Shamir e Adleman, che formularono RSA
Da allora, sono stati formalizzati molti e diversi
crittosistemi a chiave pubblica, la cui sicurezza è
affidata alla difficoltà di risoluzione di problemi
matematici distinti
Introduzione  3
•
•
•
•
•
RSA: la sicurezza è basata sulla difficoltà di
fattorizzazione di interi “grandi”
Merkle-Hellman Knapsack: la sicurezza del sistema, e
di altri correlati, è basata sulla NP-completezza del
problema della somma di sottoinsiemi; tutti i sistemi
di questo tipo si sono, tuttavia, rivelati insicuri,
tranne il crittosistema di Chor-Rivest
McEliece: è basato sulla teoria algebrica dei codici,
ed è a tutt’oggi ritenuto sicuro; la sicurezza è basata
sulla difficoltà del problema di decodificare un codice
lineare (che è NP completo)
ElGamal: la sicurezza è basata sulla difficoltà del
calcolo del logaritmo discreto in campi finiti
Curve ellittiche: sono crittosistemi che traggono
origine da sistemi tipo ElGamal, ma operano sulle
curve ellittiche piuttosto che sui campi finiti. Sono i
sistemi più sicuri, anche per chiavi piccole
Introduzione  4
Una osservazione molto importante è che i sistemi a
chiave pubblica non possono garantire la sicurezza
incondizionata, poiché una spia, essendo venuta in
possesso di un testo cifrato y, può codificare ogni
possibile testo in chiaro x, utilizzando ek che è
pubblica, fino a trovare l’unico x tale che y=ek(x)
 Per i sistemi a chiave pubblica, è sensato studiare
la sicurezza computazionale
•
A questo scopo, può essere concettualmente utile
pensare ad un sistema a chiave pubblica, in termini
astratti, come ad una funzione unidirezionale
•
La funzione pubblica di codifica, ek, deve essere
semplice da calcolare, ma difficile da invertire, per
tutti tranne che per Bob: una funzione siffatta è una
funzione one-way (unidirezionale)
 ek deve essere una funzione iniettiva one-way
•
Introduzione  5
•
•
•
•
•
Le funzioni unidirezionali giocano un ruolo fondamentale nella
crittografia, sia per la costruzione di crittosistemi a chiave
pubblica, sia in altri contesti
Sfortunatamente, anche se vi sono varie classi di funzioni
che sono ritenute unidirezionali, non esiste per nessuna di
esse una prova certa
Sia n il prodotto di due numeri primi “grandi”, p e q, e sia b
un intero positivo. : ZnZn definita da
(x) = xb (mod n)
è ritenuta essere una funzione unidirezionale (e, di fatto, è
la funzione di codifica in RSA)
Tuttavia, l’essere one-way non è una proprietà sufficiente
per , poiché Bob deve essere in grado di decifrare i
messaggi in maniera efficiente
Bob deve possedere una trapdoor  una sorta di canale
preferenziale  che gli permetta di accedere rapidamente
all’informazione codificata, cioè Bob può decifrare
facilmente il testo codificato perché possiede informazione
aggiuntiva su k
 ek deve essere iniettiva, trapdoor, one-way
Ancora sulla Teoria dei Numeri  1
•
Ricordiamo che Zn è un anello, per ogni intero positivo n.
Inoltre, ogni b  Zn tale che MCD(b,n)=1 ammette un
inverso in Zn, con (n) numero degli interi positivi minori
di n e primi con n
•
Sia Zn* l’insieme dei residui modulo n che sono primi con
n. Zn* è un gruppo abeliano rispetto alla moltiplicazione
•
L’operazione di moltiplicazione modulo n è associativa e
commutativa, e 1 è l’elemento neutro
•
Ogni elemento in Zn* ammette inverso
•
Zn* è chiuso rispetto all’operazione di moltiplicazione,
poiché se x e y sono primi con n, tale è anche il loro
prodotto xy
 Sappiamo che,  b  Zn* esiste b-1, ma non conosciamo
un algoritmo efficiente per calcolarlo: tale algoritmo è
noto come algoritmo di Euclide esteso
L’algoritmo di Euclide  1
•
Descriviamo l’algoritmo di Euclide, nella formulazione di
base, utilizzata per calcolare il più grande divisore
comune di due interi positivi, r0 e r1, con r0> r1
•
L’algoritmo di Euclide
seguenti divisioni
consiste
nell’esecuzione
r0=q1r1+ r2 0<r2<r1
r1=q2r2+ r3 0<r3<r2
rm-2=qm-1rm-1+ rm 0<rm<rm-1
rm-1=qmrm
da cui si ricava facilmente che
MCD(r0,r1)=MCD(r1,r2)=…=MCD(rm-1,rm)=rm
Pertanto, MCD(r0,r1)=rm
delle
L’algoritmo di Euclide  2
• Poiché l’algoritmo di Euclide calcola il più grande
divisore comune, può essere utilizzato per determinare
se un intero positivo b <n ha un inverso modulo n,
partendo con r0=n e r1=b; tuttavia non serve a
calcolare effettivamente l’inverso
• Teorema 1
Per 0jm, rj tjr1 (mod r0), dove qj,rj sono definiti
dall’algoritmo di Euclide e tj sono definiti dalla relazione
di ricorrenza
t0=0, t1=1, tj=tj-2-qj-1tj-1 (mod r0) se j2
• Infatti…
L’asserto è banalmente vero per j=0 e j=1. Per
induzione, supponiamo che la relazione sia valida per
j=i-1 e j=i-2, con i2, allora
ri=ri-2-qi-1ri-1  ti-2r1-qi-1 ti-1r1 (mod r0)
(ti-2-qi-1 ti-1 ) r1 (mod r0)  tir1 (mod r0)
• Corollario 1
Sia MCD(r0,r1)=1. Allora tm=r-1 (mod r0)
•
L’algoritmo di Euclide  3
La sequenza di numeri t0,t1,…,tm viene calcolata con
l’algoritmo di Euclide, contemporaneamente a qj,rj
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
n0=n
b0=b
t0=0
t=1
q= n0/b0 
r=n0-qb0
while r>0 do
temp=t0-qt
if temp0 then temp=temp (mod n)
if temp<0 then temp=n – ((-temp) (mod n))
t0=t
t=temp
n0=b0
b0=r
q= n0/b0 
r=n0-qb0
if b01 then
b non ammette inverso modulo n
else
b-1=t (mod n)
L’algoritmo di Euclide  4
•
•
Note
o Nell’algoritmo descritto, non viene utilizzato nessun
vettore per tenere traccia dei successivi qj,rj e tj,
dato che in tutti i calcoli sono coinvolti soltanto gli
ultimi due termini delle diverse successioni
o Nel passo 10., l’espressione per il calcolo di temp
è stata scritta in modo tale che la riduzione
modulo n venga eseguita con argomento positivo (e
fornisca un risultato positivo)
Esempio 1
Si vuole calcolare 28-1 (mod 75). L’algoritmo di Euclide
esteso svolge i seguenti passi
75=228+19
7328 (mod 75)=19
28=119+9
328 (mod 75)=9
19=29+1
6728 (mod 75)=1
9=91
Passo 6.
Passo 12.
Passo 16.
Passo 12.
Passo 16.
Passo 12.
Passo 16.
 28-1 (mod 75)=67
Il teorema Cinese dei Resti  1
• Il teorema Cinese dei Resti è un metodo per risolvere
certi sistemi di congruenze
• Siano m1,…,mr interi positivi primi fra loro ed a1,…,ar
interi; si consideri il sistema di congruenze:
xa1 (mod m1)
xa2 (mod m2)
xar (mod mr)
• Il teorema Cinese dei Resti asserisce che il sistema ha
un’unica soluzione modulo M= m1 m2… mr
• Si consideri la funzione : ZM Zm1  Zm … Zm r
2
(x)=(x (mod m1),…,x (mod mr))
• Esempio 2
Siano r=2, m1=5, m2=3  M=15, e la funzione 
assume i valori…
(0)=(0,0) (1)=(1,1) (2)=(2,2)
(3)=(3,0)
(6)=(1,0)
(9)=(4,0)
(12)=(2,0)
(4)=(4,1)
(7)=(2,1)
(10)=(0,1)
(13)=(3,1)
(5)=(0,2)
(8)=(3,2)
(11)=(1,2)
(14)=(4,2)
Il teorema Cinese dei Resti  2
• Provare il teorema del Cinese dei Resti equivale a
provare che la funzione  è una bi-iezione (è il caso
dell’esempio precedente, in cui è facile calcolare -1)
• Per 1ir, si definisca Mi=M/mi  MCD(Mi,mi)=1, i
-1
• Per 1ir, si definisca yi=Mi (mod mi): l’inverso esiste
perché MCD(Mi,mi)=1 e può essere calcolato con
l’algoritmo di Euclide
• Si noti che Miyi1 (mod mi), per 1ir
• Definiamo : Zm  Zm2 … Zm r ZM come
1
r
(a1,…ar)=aiMiyi (mod M)
i=1
• Mostreremo che =-1, il che fornisce una formula
esplicita per la risoluzione del sistema di congruenze
originale
Il teorema Cinese dei Resti  3
• Definiamo X=(a1,…ar) e sia 1jr
• Consideriamo il termine aiMiyi, ridotto modulo mj: se
i=j, aiMiyi  ai (mod mj); se ij, invece, aiMiyi  0 (mod
mj), poiché Mi è divisibile per mi. Pertanto…
X
r

aiMiyi (mod
i=1
mj) aj (mod mj)
 X è una soluzione del sistema di congruenze
• Inoltre, la funzione  mappa domini di ugual cardinalità
M e poiché si è appena dimostrato che è suriettiva,
deve essere anche iniettiva, cioè è una bi-iezione e
-1=
• -1 è una funzione lineare degli argomenti a1,…ar
Il teorema Cinese dei Resti  4
• Esempio 3
Siano r=3, m1=7, m2=11, m3=13  M=1001. Di
conseguenza, M1=143, M2=91, M3=77 e y1=5, y2=4,
y3=12. Pertanto, -1: Z7 Z11Z13  Z1001 è definita da
-1 (a1,a2,a3)=715a1+364a2+924a3 (mod 1001)
Se x5 (mod 7), x3 (mod 11), x10 (mod 13),
x=7155+3643+92410 (mod 1001)
=13907 (mod 1001)=894 (mod 1001)
che può essere provato riducendo 894 modulo 7,11,13
• Teorema 2 (Teorema Cinese dei Resti )
Siano m1,…,mr interi positivi primi fra loro ed a1,…,ar
interi. Il sistema delle r conguenze xai (mod mi), per
1ir, ammette soluzione unica modulo M=m1 m2… mr,
X
-1
r

aiMiyi (mod
i=1
M)
con Mi=M/mi, yi=Mi (mod mi), per 1ir
•
•
•
•
•
Altri risultati  1
Un altro risultato della Teoria dei Gruppi, noto come
Teorema di Lagrange, è rilevante per la descrizione
delle proprietà del crittosistema RSA
Per un gruppo moltiplicativo finito G, si definisce
ordine di un elemento gG il più piccolo intero positivo
m, tale che gm=1
Teorema 3 (Teorema di Lagrange )
Sia G un gruppo moltiplicativo di ordine n e sia gG.
Allora, l’ordine di g è un divisore di n
Corollario 2 (Teorema di Eulero )
Se bZn*, allora b(n)1 (mod n)
Infatti…
Zn* è un gruppo moltiplicativo di ordine (n )
Corollario 3 (Teorema di Fermat )
Sia p un numero primo e bZp. Allora, bpb (mod p)
Infatti…
/
Se p è primo, (p)=p-1. Pertanto, per b0
(mod p), il
risultato segue dal Corollario 2. Se b0 (mod p), il
risultato è ancora vero perché 0p 0 (mod p)
Altri risultati  2
•
•
•
•
•
Pertanto, se p è primo, Zp* è un gruppo di ordine p-1,
ed ogni elemento in Zp* ha ordine che divide p-1.
Comunque, se p è primo, il gruppo Zp* è ciclico: esiste un
elemento Zp* che ha ordine uguale a p-1
Teorema 4
Se p è primo, Zp* è un gruppo ciclico
Un elemento  di ordine p-1 è un elemento primitivo
modulo p
Un elemento  è primitivo se e solo se {i: 0ip-2}=Zp*
Supponiamo che p sia primo ed  sia un elemento
primitivo modulo p. Ogni elemento Zp* può essere
riscritto come =i, con 0ip-2, in maniera univoca;
l’ordine di =i è p-1/MCD(p-1,i)   è esso stesso un
elemento primitivo se e solo se MCD(p-1,i)=1  il
numero degli elementi primitivi modulo p è (p-1)
Altri risultati  3
•
Esempio 4
Sia p=13. Calcolando le successive potenze del 2, si
può verificare che 2 è un elemento primitivo modulo 13:
20 mod 13=1
21 mod 13=2
22 mod 13=4
23 mod 13=8
24 mod 13=3
25 mod 13=6
26 mod 13=12
27 mod 13=11
28 mod 13=9
29 mod 13=5
210 mod 13=10
211 mod 13=7
L’elemento 2i è primitivo se e solo se MCD(i,12)=1, cioè
sse i=1,5,7,11  gli elementi primitivi modulo 13 sono
2,6,7,11
Il crittosistema RSA  1
•
RSA è realizzato in Zn, dove n è il prodotto di due
numeri primi distinti p e q  (n )=(p-1)(q-1)
Sia n =pq, con p e q numeri primi. Siano P = C = Zn
Sia K ={(n,p,q,a,b): n =pq, p,q primi, ab1 (mod (n ))}
Per k=(n,p,q,a,b):
ek(x) = xb (mod n)
dk(y) = ya (mod n)
x,y  Zn
I valori di n e b sono pubblici, p,q ed a segreti
•
Le operazioni di codifica e decodifica sono inverse.
Infatti, poiché ab1 (mod (n)), ab=t(n)+1, per qualche
intero t1. Sia xZn*, allora…
(xb)a  xt(n)+1 (mod n)  (x(n))t x (mod n)
 1t x (mod n)  x (mod n)
Il crittosistema RSA  2
•
•
•
•
•
Esempio 5: Un piccolo crittosistema RSA insicuro
Supponiamo che Bob abbia scelto p=101 e q=113 
n=11413 e (n)=100112=11200. Poiché 11200=26527,
un intero b può essere utilizzato quale esponente di
codifica se e solo se b non è divisibile per 2, 5 o 7
In pratica, Bob non fattorizzerà (n), verificherà solo
che MCD((n),b)=1 utilizzando l’algoritmo di Euclide
Supponiamo che Bob scelga b=3533; allora l’algoritmo di
Euclide calcola b-1=6597 (mod 11200)  l’esponente di
codifica è a=6597
Bob pubblica n=11413 e b=3533. Supponiamo che Alice
voglia inviare il testo in chiaro 9726, Alice calcolerà
97263533 (mod 11413)=5761
ed invierà il testo cifrato 5761 sul canale
Quando Bob riceve y=5761, utilizza l’esponente di
decifratura segreto a per calcolare
57616597 (mod 11413)=9726
Sicurezza di RSA
• La sicurezza del crittosistema RSA è basata
sulla “speranza” che ek(x)=xb (mod n) sia oneway, così da rendere computazionalmente
impossibile, per una spia, decrittare il testo
cifrato
• La scappatoia (trapdoor) che permette a Bob
di decifrare il codice cifrato è costituita dalla
conoscenza della fattorizzazione di n=pq
• Dato che Bob conosce p e q, può calcolare
(n)=(p-1)(q-1)
e
quindi
l’esponente
di
decifratura a, utilizzando l’algoritmo di Euclide
esteso
Implementazione di RSA  1
•
•
Ci sono diversi aspetti del crittosistema RSA che
devono
essere
approfonditi,
quali
i
dettagli
implementativi,
l’efficienza
delle
operazioni
di
codifica/decodifica, la sicurezza
Per realizzare il crittosistema, Bob…
1.
2.
3.
4.
5.
•
Genera due numeri primi grandi, p e q
Calcola n =pq e (n)=(p-1)(q-1)
Sceglie in maniera casuale un intero positivo 0b(n) tale
che MCD(b,(n))=1
Calcola a=b-1 (mod (n)) utilizzando l’algoritmo di Euclide
Rende nota la chiave pubblica kp=(n,b)
L’attacco più ovvio che può essere sferrato a RSA
consiste quindi nel tentativo di fattorizzare n. Se la
fattorizzazione di n può essere calcolata facilmente,
allora altrettanto facilmente si può calcolare (n) e
quindi l’esponente a di decifratura (così come fa Bob)
Implementazione di RSA  2
Si congettura che il problema di violare RSA sia
polinomialmente equivalente al problema di fattorizzare
n, ma non esiste a tutt’oggi una prova certa
Comunque… affinché RSA sia sicuro occorre certamente
che n=pq sia sufficientemente grande da rendere la
fattorizzazione computazionalmente irrealizzabile
Gli algoritmi di fattorizzazione sono in continua
evoluzione (parallelamente all’evoluzione dell’hardware):
•
•
•
o
o
Supponiamo che un algoritmo di fattorizzazione sia in
grado di fattorizzare numeri aventi fino a 130 cifre
decimali  per garantire la sicurezza, occorre scegliere p
e q a 100 cifre così che n abbia almeno 200 cifre
Si osservi inoltre che, un eventuale implementazione
hardware di RSA a 512 bit, sarebbe in grado di
realizzare interi con 154 cifre decimali (poiché il numero
di bit nella rappresentazione binaria è circa log210 volte il
numero delle cifre decimali)
Implementazione di RSA  3
Per quanto riguarda le operazioni di codifica/decodifica,
entrambe presuppongono un elevamento a potenza
modulo n
• Dato che n è molto grande, occorre utilizzare
un’aritmetica di alta precisione per effettuare i calcoli
in Zn, ed il tempo impiegato per i calcoli dipenderà dal
numero di bit della rappresentazione binaria di n
• Supponiamo che n sia rappresentabile con k bit, cioè
k=log2n+1; si può dimostrare che un’addizione ed una
moltiplicazione sono eseguibili in tempo proporzionale,
rispettivamente, a k e k2. Inoltre, una riduzione modulo
n di un intero rappresentato con al più 2k bit può
essere realizzata in O (k2)
• Siano x,yZn; xy (mod n) può essere calcolato
effettuando prima il prodotto xy (che ha 2k cifre) e
quindi la riduzione modulo n  La moltiplicazione
modulare costa complessivamente, in tempo, O (k2)
•
Implementazione di RSA  4
Consideriamo ora l’operazione di esponenziazione
modulare, cioè il calcolo di xc (mod n ): in RSA sia la
funzione di codifica che quella di decodifica sono
esponenziazioni modulari
• L’elevamento a potenza in modulo può essere realizzato
effettuando c-1 moltiplicazioni modulari; tuttavia,
questa tecnica è molto inefficiente per c grande e,
normalmente, c può essere dell’ordine di grandezza di
(n)-1, che è esponenziale in k
• La tecnica “elevamento al quadrato-moltiplicazione”
riduce il numero di moltiplicazioni modulari necessarie al
calcolo di xc (mod n ) ad al più 2l, dove l è il numero di
bit della rappresentazione binaria di c  poiché lk, il
tempo richiesto per il calcolo è O (k3)
• Pertanto le fasi di codifica/decodifica in RSA vengono
eseguite in tempo polinomiale in k (numero dei bit per
rappresentare il plaintext)
•
Implementazione di RSA  5
•
La tecnica “elevamento al quadrato-moltiplicazione”
presuppone che l’esponente b sia rappresentato, in
notazione binaria, come
l-1
b=b i2i
i=0
con b i uguale a 0 o 1, 0il-1
1.
2.
3.
4.
•
z=1
for i=l-1 downto 0 do
z=z2 (mod n)
if bi=1 then z=zx (mod n)
Il numero di operazioni eseguite dall’algoritmo
comprende l elevamenti a potenza (passo 3.). Inoltre il
numero di moltiplicazioni modulari (passo 4.) è uguale al
numero di bit ad 1 nella rappresentazione binaria di b,
che è un intero compreso fra 0 e l  Il numero totale
di operazioni è 2l
Implementazione di RSA  6
•
Esempio 6
Sia n=11413 e b=3533, come nell’Esempio 5. Alice
codifica il plaintext 9726 utilizzando l’algoritmo di
“elevamento al quadrato-moltiplicazione” per valutare
97263533 (mod 11413), come segue…
i
11
10
9
8
7
6
5
4
3
2
1
0
bi
1
1
0
1
1
1
0
0
1
1
0
1
z
1 9726=9726
972629726=2659
26592=5634
563429726=9167
916729726=4958
495829726=7783
77832=6298
62982=4629
462929726=10185
1018529726=105
1052=11025
1102529726=5761
2
 Il testo cifrato è 5761
Implementazione di RSA  7
Il secondo passo dell’algoritmo realizzato da Bob, per
implementare il crittosistema RSA, è diretto e viene
eseguito in un tempo dell’ordine O ((logn)2)
• I passi 3. e 4. presuppongono l’uso dell’algoritmo di
Euclide. Siano r0 ed r1 gli interi di cui si vuol calcolare il
massimo divisore comune e sia r0>r1
•
o In ciascuna iterazione dell’algoritmo vengono calcolati un
quoziente ed un resto, in tempo O ((log r0)2)
o Se è possibile ottenere un limite superiore al numero di
iterazioni, si otterrà, in conseguenza, un limite sulla
complessità dell’algoritmo  Il Teorema di Lamé asserisce
che se s è il numero di iterazioni, allora fs+2r0, con fi iesimo numero di Fibonacci. Dato che fi ((1+5)/2)i, s è
O(log r0)
 Il tempo totale è O((log n )3) (in realtà, un esame più
accurato, conduce a O((log n )2) )
Implementazione di RSA  8
Resta ancora aperto il problema di come Bob realizzi il
primo passo del suo algoritmo di implementazione di RSA
• Nella pratica, per generare numeri primi grandi la tecnica
comunemente usata è quella di generare numeri casuali
grandi e quindi effettuare un test di primalità con un
algoritmo probabilistico di tipo Monte Carlo
• Tali algoritmi sono veloci: il test su un numero intero n ha
durata polinomiale in log2n, il numero di bit della
rappresentazione binaria di n (in particolare, O((log2n)2));
tuttavia è possibile che l’algoritmo sbagli, dichiarando
primo un numero che non lo è effettivamente
• Eseguendo l’algoritmo più volte, la prpbabilità di errore
può comunque essere ridotta al di sotto di una soglia
prestabilita
•
Implementazione di RSA  9
Altra questione fondamentale è quella di stabilire quanti
interi casuali (di lunghezza prefissata) occorre testare,
prima di rilevare un numero primo
• Un famoso risultato della Teoria dei Numeri stabilisce che
il
numero
di
interi
primi
minori
di
N
è
approssimativamente N/ln(N)
• Pertanto se p è un numeo casuale, la probabilità che sia
primo è 1/ln(p)
• Per fare una stima, con interi rappresentati con 512 bit,
1/ln(p) 1/177, cioè, in media, su 177 interi casuali ve ne
sarà uno primo o, escludendo i numeri pari, al più due
•
Un esempio di attacco a RSA  1
È possibile attaccare RSA in maniera diversa dal
riuscire a calcolare una fattorizzazione per n ?
• Se Oscar viene a conoscenza del valore di (n ), i due
numeri primi p e q possono essere calcolati quali
soluzioni del sistema
n=pq
(n )=(p-1)(q-1)
Infatti, sostituendo q=n/p nella seconda equazione, si
ottiene l’equazione di secondo grado in p
p 2-(n-(n )+1)p+n=0
le cui soluzioni sono esattamente p e q, i fattori di n
 Rilevare (n ) è difficile quanto fattorizzare n
•
Un esempio di attacco a RSA  2
•
Esempio 7
Supponiamo che Oscar abbia appreso che n=84773093
e (n )=84754668. L’informazione può essere utilizzata
per scrivere la seguente equazione di secondo grado
p 2 – 18426p +84773093=0
che, risolta, fornisce i due fattori di n, p=9539 e
q=8887