Upload
nguyennga
View
225
Download
0
Embed Size (px)
Citation preview
Un po’ di teoria dei numeriApplicazione alla crittografia RSA
Christian Ferrari
Liceo di Locarno
Matematica
L’aritmetica modulare di Zn Le diverse basi numeriche I numeri primi Il protocollo di crittografia RSA
Sommario
1 L’aritmetica modulare di Zn
Le congruenzeL’anello Zn
Le potenze in Zn e algoritmo di LegendreMCD e algoritmi di Euclide ed Euclide estesoL’inverso in Zn
La funzione ϕ(n) di EulerIl piccolo teorema di Fermat e il teorema di EulerUn complemento sulle strutture algebriche
2 Le diverse basi numericheLa notazione posizionale e le diverse basiIl logaritmo e la lunghezza di un numero
3 I numeri primiAlcuni teoremi sui numeri primiAlcuni criteri di primalitaLa fattorizzazione dei numeri primi: un problema NP
L’aritmetica modulare di Zn Le diverse basi numeriche I numeri primi Il protocollo di crittografia RSA
Sommario
Gli aspetti della teoria dei numeri sviluppati precedentementesono (in parte) utilizzata per implementare il seguente protocollodi crittografia:
⇒ Il protocollo di crittografia RSALa generazione delle chiaviDal testo al messaggio numerico e viceversaCifrare e decifrareIl teorema RSALa sicurezza di RSALa firma digitale
L’aritmetica modulare di Zn Le diverse basi numeriche I numeri primi Il protocollo di crittografia RSA
Le congruenze
Consideriamo l’insieme dei numeri relativi Z.
Teorema
Siano a, b ∈ Z con b > 0. Allora esistono q, r ∈ Z unici e cheverificano
a = bq + r con 0 ≤ r < b .
Nel teorema precedente a e detto dividendo, b divisore, qquoziente e r resto della divisione euclidea a : b. Inoltre seb < 0 allora 0 ≤ r < |b|.
Definizione
Siano a, b ∈ Z. Se il resto della divisione euclidea e nullo, ossia seesiste q ∈ Z tale che a = bq, si dice che b divide a e si nota b|a.
L’aritmetica modulare di Zn Le diverse basi numeriche I numeri primi Il protocollo di crittografia RSA
Le congruenze
Definizione
Siano a, b ∈ Z e n ∈ N, n > 1. Si dice che a e congruente a bmodulo n se n divide a− b. Ossia se esiste k ∈ Z tale chea− b = kn. In questo caso si nota a ≡ b mod n.
La relazione di congruenza possiede le seguenti proprieta:
1 a ≡ a mod n (riflessivita);
2 se a ≡ b mod n, allora b ≡ a mod n (simmetria);
3 se a ≡ b mod n e b ≡ c mod n, allora a ≡ c mod n(transitivita).
Ad esempio: −3 ≡ 4 mod 7, 11 ≡ 4 mod 7, −3 ≡ 11 mod 7 . . ..
L’aritmetica modulare di Zn Le diverse basi numeriche I numeri primi Il protocollo di crittografia RSA
Le congruenze
Teorema
Ogni a ∈ Z e congruente modulo n al resto della divisioneeuclidea di a per n.
a ≡ b mod n se e solo se a e b hanno lo stesso resto nelladivisione euclidea per n.
Possiamo classificare i numeri in Z in classi, dette classiequivalenti modulo n o classi di resti modulo n.
Ad esempio se n = 7:
. . . . . . . . . . . . . . . . . . . . .−7 −6 −5 −4 −3 −2 −10 1 2 3 4 5 67 8 9 10 11 12 13. . . . . . . . . . . . . . . . . . . . .
tutti i numeri in colonna appartengono alla stessa classe.
L’aritmetica modulare di Zn Le diverse basi numeriche I numeri primi Il protocollo di crittografia RSA
L’anello Zn
Data una classe di equivalenza modulo n si definisce unrappresentante, che sceglieremo come il numero compreso tra 0 en− 1.
Definizione
Notiamo Zn l’insieme delle classi di equivalenza modulo n.Indichiamo ogni classe con un suo rappresentante
Zn = {0, 1, . . . , n− 1} .
Operazioni in Zn
Le operazioni + (addizione) e · (moltiplicazione) sono definitecome il risultato modulo n delle operazioni in Z.
L’aritmetica modulare di Zn Le diverse basi numeriche I numeri primi Il protocollo di crittografia RSA
L’anello Zn
Le tavole di addizione e di moltiplicazione di Z7 sono riportate quisotto a titolo di esempio.
+ 0 1 2 3 4 5 60 0 1 2 3 4 5 61 1 2 3 4 5 6 02 2 3 4 5 6 0 13 3 4 5 6 0 1 24 4 5 6 0 1 2 35 5 6 0 1 2 3 46 6 0 1 2 3 4 5
· 0 1 2 3 4 5 60 0 0 0 0 0 0 01 0 1 2 3 4 5 62 0 2 4 6 1 3 53 0 3 6 2 5 1 44 0 4 1 5 2 6 35 0 5 3 1 6 4 26 0 6 5 4 3 2 1
L’aritmetica modulare di Zn Le diverse basi numeriche I numeri primi Il protocollo di crittografia RSA
L’anello Zn
Ecco le proprieta delle operazioni in Zn.
Teorema
L’addizione in Zn gode delle seguenti proprieta:
associativita;
commutativita;
esiste l’elemento neutro (lo 0);
per ogni a ∈ Zn esiste l’elemento inverso.
(Zn,+) e un gruppo commutativo.
Teorema
La moltiplicazione in Zn gode delle seguenti proprieta:
associativita;
commutativita;
esiste l’elemento neutro (l’1).
L’aritmetica modulare di Zn Le diverse basi numeriche I numeri primi Il protocollo di crittografia RSA
L’anello Zn
La seguente definizione ci permette di caratterizzare meglio Zn.
Definizione
Sia A un insieme munito di due operazioni ? e �, se vale:
(A, ?) e un gruppo commutativo;
� e associativa ed esiste l’elemento neutro;
la distributiva di � rispetto a ?;
(A, ?, �) e un anello. Se � e commutativa allora (A, ?, �) e dettoun anello commutativo.
Poiche vale la distributiva della moltiplicazione rispettoall’addizione (con ? = + e � = ·) abbiamo:
Teorema
(Zn,+, ·) e un anello commutativo.
L’aritmetica modulare di Zn Le diverse basi numeriche I numeri primi Il protocollo di crittografia RSA
Potenze in Zn
Il calcolo delle potenze in Zn richiede di:
calcolare ar (r ∈ N∗);
calcolare il resto della divisione euclidea ar : n.
Questo processo diventa computazionalmente complesso se inumeri in gioco sono grandi. Il seguente teorema (secondo punto)permette di ovviare al problema.
Teorema
Se a1 ≡ a2 mod n e b1 ≡ b2 mod n, allora:
a1 + b1 ≡ a2 + b2 mod n;
a1b1 ≡ a2b2 mod n.
L’aritmetica modulare di Zn Le diverse basi numeriche I numeri primi Il protocollo di crittografia RSA
Potenze in Zn
Un algoritmo e un processo che, partendo da dei dati iniziali,viene ripetuto cosı da ottenere il risultato cercato. Ogni ripetizionee detta passo o iterazione.
Ecco un algoritmo semplice per il calcolo delle potenze che sfruttail teorema precedente:
ak = aak−1 e
(a ≡ b1 mod n (b1 = a)ak−1 ≡ bk−1 mod n
=⇒ ak ≡ b1bk−1 mod n
Algoritmo semplice per le potenze in Zn
start k = 1: porre b1 = a;
passo k = 2: a2 ≡ b1b1 mod n;
passo k = 3: a3 ≡ b1b2 mod n;
passo k generale: ak ≡ b1bk−1 mod n;
stop : quando k = n.
L’aritmetica modulare di Zn Le diverse basi numeriche I numeri primi Il protocollo di crittografia RSA
Potenze in Zn
Un algoritmo piu efficace, noto come algoritmo di Legendre, sibasa sull’idea seguente per calcolare
ar ≡ b mod n .
Si scrive r =Pd
i=0 ri2i dove ri ∈ {0, 1} (ossia si scompone r
in base 2).
Quindi ar =Qd
i=0 a(ri2
i).
Si sfrutta poi che
se a2 ≡ b2 mod n allora a4 ≡ b2b2 mod n[= b4 mod n];
e quindi a8 ≡ b4b4 mod n[= b8 mod n];
. . . cosı da ricomporre ar ≡ b mod n come prodotto di potenzedel tipo 2i calcolate modulo n.
L’aritmetica modulare di Zn Le diverse basi numeriche I numeri primi Il protocollo di crittografia RSA
Potenze in Zn
Ecco un esempio: 718 in Z15.
Scriviamo 18 in base 2: 18 = 24 + 21 = 16 + 2.
Allora 718 = 716+2 = 716 · 72.
Calcoliamo7 ≡ 7 mod 15
72 = 7 · 7 ≡ 7 · 7 mod 15 ≡ 4 mod 1574 = 72 · 72 ≡ 4 · 4 mod 15 ≡ 1 mod 1578 = 74 · 74 ≡ 1 · 1 mod 15 ≡ 1 mod 15716 = 78 · 78 ≡ 1 · 1 mod 15 ≡ 1 mod 15
Quindi
716 · 72 ≡ 4 · 1 mod 15 =⇒ 716 ≡ 4 mod 16
e in Z15 si ha 718 = 4.
L’aritmetica modulare di Zn Le diverse basi numeriche I numeri primi Il protocollo di crittografia RSA
MCD e algoritmi di Euclide ed Euclide esteso
Definizione
Il massimo comun divisore di due numeri a, b ∈ N, non entrambinulli, e il loro piu grande divisore comune ed e notato MCD(a, b).
Il massimo comun divisore possiede le seguenti proprieta:
1 MCD(a, a) = a (se a > 0);
2 MCD(a, 0) = a;
3 MCD(a, b) = MCD(a− b, b), se a > b.
4 MCD(a, b) = MCD(b, r), se a > b ed r e il resto delladivisione euclidea a = bq + r.
Definizione
Due numeri naturali a, b sono detti coprimi (o anche relativamenteprimi) se MCD(a, b) = 1.
L’aritmetica modulare di Zn Le diverse basi numeriche I numeri primi Il protocollo di crittografia RSA
MCD e algoritmi di Euclide ed Euclide esteso
Un algoritmo, noto come algoritmo di Euclide, permette dicalcolare rapidamente l’MCD tra due numeri (grandi) sulla basedella proprieta MCD(a, b) = MCD(b, r).
Algoritmo di Euclide
start k = 1:
porre a1 = a e b1 = b con a > b;calcolare r1 tale che a1 = b1q1 + r1;
passo k = 2:
porre a2 = b1 e b2 = r1;calcolare r2 tale che a2 = b2q2 + r2;
passo k generale:
porre ak = bk−1 e bk = rk−1;calcolare rk tale che ak = bkqk + rk;
stop : quando rn = 0 allora bn = rn−1 = MCD(a, b).
L’aritmetica modulare di Zn Le diverse basi numeriche I numeri primi Il protocollo di crittografia RSA
MCD e algoritmi di Euclide ed Euclide esteso
Ecco un esempio: a = 123, b = 14.
k ak bk rk1 123 14 11 123 = 14 · 8 + 112 14 11 3 14 = 1 · 11 + 33 11 3 2 11 = 3 · 3 + 24 3 2 1 3 = 1 · 2 + 15 2 1 0 2 = 1 · 2 + 0
Quindi MCD(123, 14) = 1 e i numeri 123 e 14 sono coprimi.
Osserviamo che 123 = 3 · 41, 14 = 7 · 22 e 11 e primo, e si ha
MCD(123, 14) = MCD(14, 11) = MCD(11, 3) = MCD(3, 2)= MCD(2, 1) = MCD(1, 0) = 1 .
L’aritmetica modulare di Zn Le diverse basi numeriche I numeri primi Il protocollo di crittografia RSA
MCD e algoritmi di Euclide ed Euclide esteso
Il seguente teorema permette di scrivere l’MCD in modo utile alcalcolo dell’inverso in Zn.
Teorema
Siano a, b ∈ Z, allora esistono s, t ∈ Z tale che
as+ bt = MCD(a, b) .
Se a e b sono coprimi si ha l’identita di Bezout
as+ bt = 1 .
Un algoritmo noto come algoritmo di Euclide estesopermette di calcolare s, t e MCD(a, b).
I numeri s, t ∈ Z non sono unici. Ad esempio
3 = MCD(9, 6) = 1 · 9 + (−1) · 6 = 9 · 3 + (−4) · 6 .
L’aritmetica modulare di Zn Le diverse basi numeriche I numeri primi Il protocollo di crittografia RSA
MCD e algoritmi di Euclide ed Euclide esteso
Algoritmo di Euclide esteso
start k = 1: porre (con a > b)
r0 = a, s0 = 1, t0 = 0 e r1 = b, s1 = 0, t1 = 1;
passo k = 2:
calcolare q1 e r2 tale che r0 = r1q1 + r2;
calcolare
¨s2 = s0 − s1q1t2 = t0 − t1q1
passo k generale:
calcolare qk−1 e rk tale che rk−2 = rk−1qk−1 + rk;
calcolare
¨sk = sk−2 − sk−1qk−1
tk = tk−2 − tk−1qk−1
stop : quando rn+1 = 0, allora rn = asn + btn e
rn = MCD(a, b) sn = s tn = t .
L’aritmetica modulare di Zn Le diverse basi numeriche I numeri primi Il protocollo di crittografia RSA
MCD e algoritmi di Euclide ed Euclide esteso
Ecco un esempio: a = 123, b = 14.
k rk sk tk qk0 123 1 0 −1 14 0 1 8 123 = 8 · 14 + 112 11 1 −8 1 14 = 1 · 11 + 33 3 −1 9 3 11 = 3 · 3 + 24 2 4 −35 1 3 = 1 · 2 + 15 1 −5 44 2 2 = 1 · 2 + 0
Quindi MCD(123, 14) = 1, s = −5 e t = 44, da cui
1 = 123 · (−5) + 14 · 44 .
L’aritmetica modulare di Zn Le diverse basi numeriche I numeri primi Il protocollo di crittografia RSA
L’inverso in Zn
Definizione
Sia a ∈ Z e n ∈ N, n > 1, tali che MCD(a, n) = 1. Un elementoa ∈ Zn tale che aa ≡ 1 mod n e detto inverso di a modulo n.Ossia aa = 1 in Zn.
La congruenza equivale a
aa+ n(−k) = 1 = MCD(a, n)
e quindi possibile calcolare a (e (−k)) con l’algoritmo diEuclide esteso (se il il valore di a 6∈ Zn si torva il suo elementocongruente in Zn).
In generale non tutti gli elementi (non nulli) di Zn hanno uninverso.
L’aritmetica modulare di Zn Le diverse basi numeriche I numeri primi Il protocollo di crittografia RSA
L’inverso in Zn
Ecco ad esempio le tavole di moltiplicazione di Z7 e Z9.
· 0 1 2 3 4 5 60 0 0 0 0 0 0 01 0 1 2 3 4 5 62 0 2 4 6 1 3 53 0 3 6 2 5 1 44 0 4 1 5 2 6 35 0 5 3 1 6 4 26 0 6 5 4 3 2 1
Esempio: l’inverso di 14 in Z123.
· 0 1 2 3 4 5 6 7 80 0 0 0 0 0 0 0 0 01 0 1 2 3 4 5 6 7 82 0 2 4 6 8 1 3 5 73 0 3 6 0 3 6 0 3 64 0 4 8 3 7 2 6 1 55 0 5 1 6 2 7 3 8 46 0 6 3 0 6 3 0 6 37 0 7 5 3 1 8 6 4 28 0 8 7 6 5 4 3 2 1
L’algoritmo di Euclide esteso fornisce
1 = 123·(−5)+14·44⇐⇒ 14·44−1 = 5·123⇐⇒ 14·44 ≡ 1 mod 123
Quindi 14 · 44 = 1 in Z123 e l’inverso cercato e 44.
L’aritmetica modulare di Zn Le diverse basi numeriche I numeri primi Il protocollo di crittografia RSA
La funzione ϕ(n) di Euler
Definizione
La funzione indicatrice di Euler e l’applicazione ϕ che ad ogninumero naturale n > 1 associa il numero di numeri naturaliinferiori a n e coprimi a n:
ϕ(n) = #{a ∈ N : a ≤ n e MCD(a, n) = 1} .
ϕ(n) indica quindi il numero di elementi invertibili in Zn.
La funzione indicatrice di Euler possiede le seguenti proprieta:
1 ϕ(p) = p− 1, se p e un numero primo;
2 ϕ(pr) = pr−1(p− 1), se p e un numero primo e r ∈ N∗;3 ϕ(nm) = ϕ(n)ϕ(m), se MCD(n,m) = 1 e n,m ∈ N∗.
Ad esempio: ϕ(7) = 7− 1 = 6 e ϕ(9) = 31(3− 1) = 6.
L’aritmetica modulare di Zn Le diverse basi numeriche I numeri primi Il protocollo di crittografia RSA
Il piccolo teorema di Fermat e il teorema di Euler
Piccolo teorema di Fermat
Sia a ∈ N e p un numero primo. Allora ap ≡ a mod p.
Sia a ∈ N e p un numero primo tali che MCD(a, p) = 1.Allora ap−1 ≡ 1 mod p.
Il piccolo teorema di Fermat fornisce velocemente l’inverso di a inZp nel caso in cui p e primo. Infatti
aap−2 ≡ 1 mod p
ossia ap−2 e (congruente al)l’inverso cercato.
Ad esempio abbiamo
47−1 ≡ 1 mod 7 =⇒ 47−1 = 1 in Z7
e 47−2 ≡ 2 mod 7 cioe 2 e l’inverso di 4 in Z7.
L’aritmetica modulare di Zn Le diverse basi numeriche I numeri primi Il protocollo di crittografia RSA
Il piccolo teorema di Fermat e il teorema di Euler
Teorema di Euler
Siano a, n ∈ N, n > 1, tali che MCD(a, n) = 1. Alloraaϕ(n) ≡ 1 mod n.
Grazie al teorema di Euler si puo osservare che (se esiste) l’inversodi a in Zn e dato da aϕ(n)−1 (o il suo congruente in Zn), infatti siha
aaϕ(n)−1 ≡ 1 mod n .
Ad esempio abbiamo
2ϕ(9) ≡ 1 mod 9 =⇒ 2ϕ(9) = 1 in Z9
e 2ϕ(9)−1 ≡ 5 mod 9 cioe 5 e l’inverso di 2 in Z9.
L’aritmetica modulare di Zn Le diverse basi numeriche I numeri primi Il protocollo di crittografia RSA
Un complemento sulle strutture algebriche
Definizione
Sia (E, ?, �) un anello commutativo. Un elemento a ∈ E, a 6= 0, edetto divisore di zero se esiste un elemento b ∈ E, b 6= 0, tale che
a � b = 0
In questo caso anche b e un divisore di zero.
Ad esempio nell’anello (Z9,+, ·) abbiamo
3 · 6 = 0
3 e 6 sono quindi divisori di zero in Z9.
Teorema
Se p e un numero primo allora Zp non ammette divisori di zero.
L’aritmetica modulare di Zn Le diverse basi numeriche I numeri primi Il protocollo di crittografia RSA
Un complemento sulle strutture algebriche
Definizione
Un anello commutativo (E, ?, �) privo di divisori di zero e dettoanello integro.
In un anello integro tutti gli elementi diverso da 0 sonosemplificabili rispetto a �, ossia
a � b = a � c =⇒ b = c
b � a = c � a =⇒ b = c
Questo non e vero se l’anello ammette dei divisori di zero.
Ad esempio in (Z9,+, ·)3x = 3y 6=⇒ x = y
cosa che invece e vera in (Z7,+, ·)3x = 3y =⇒ x = y .
L’aritmetica modulare di Zn Le diverse basi numeriche I numeri primi Il protocollo di crittografia RSA
Un complemento sulle strutture algebriche
Definizione
Siano (E, ?, �) un anello commutativo. Se per ogni a ∈ E, a 6= 0,esiste l’elemento inverso, allora (E, ?, �) e detto un campo.
Teorema
Se p e un numero primo allora Zp e un campo.
L’aritmetica modulare di Zn Le diverse basi numeriche I numeri primi Il protocollo di crittografia RSA
La notazione posizionale
Nel sistema decimale, il numero 4634 si puo scrivere come
4634 = 4 · 103 + 6 · 102 + 3 · 101 + 4 · 100
Le posizioni delle cifre, da destra a sinistra, corrispondono allepotenze di 10. La prima posizione e quella a potenza zero.
Il valore numerico e la somma delle moltiplicazioni della cifranella posizione i−esima per 10i.
Questo sistema di scrivere i valori numerici e detto notazioneposizionale: i simboli (cifre) usati per scrivere i numeri assumonovalori diversi a seconda della posizione che occupano nellanotazione.
L’aritmetica modulare di Zn Le diverse basi numeriche I numeri primi Il protocollo di crittografia RSA
La notazione posizionale
Ecco una definizione di sistema di numerazione posizionale:
si sceglie un numero naturale b ≥ 2, che chiameremo base;
si scelgono n numeri (βn−1βn−2 . . . β1β0)b, che chiameremocifre dove βi ∈ N e 0 ≤ βi ≤ b− 1;
si compongono i numeri tenendo presente che il valore di ognicifra va moltiplicato per:
b0 cioe 1 (unita) se e l’ultima cifra alla destra del numero chestiamo considerando;
b1 cioe b se e la seconda cifra da destra;
b(i−1) se e la i−esima cifra da destra;
la somma tutti i valori cosı ottenuti e il numero decimale chestiamo considerando:
M ≡ (M)10 =n−1Xi=0
βibi .
L’aritmetica modulare di Zn Le diverse basi numeriche I numeri primi Il protocollo di crittografia RSA
Cambiamento di base: dalla base b alla base 10
Dato un numero in base b, ossia la sequenza (βn−1βn−2 . . . β1β0)b
delle sue cifre, si ottiene il numero in base 10 scrivendo in formapolinomiale
(M)10 =n−1Xi=0
βibi .
Ad esempio le cifre (1100)2 in base 2 danno il numero seguente inbase 10
1 · 23 + 1 · 22 + 0 · 21 + 0 · 20 = (12)10
Quindi(1100)base 2 = (12)base 10
L’aritmetica modulare di Zn Le diverse basi numeriche I numeri primi Il protocollo di crittografia RSA
Cambiamento di base: dalla base 10 alla base b
Dato un numero in base 10 x ≡ (x)10, ossia la sequenza(xn−1xn−2 . . . x1x0)10 delle sue cifre, si ottiene il numero in base bcon le seguenti divisioni euclidee:
x = q0b+ r0;
q0 = q1b+ r1;
q1 = q2b+ r2;
. . .
qn−2 = qn−1b+ rn−1 dove qn−1 = 0.
I resti ottenuti, letti dall’ultimo al primo, sono le cifre del numero(x)10 in base b: (rn−1rn−2 . . . r1r0)b, ossia
(x)10 = (xn−1xn−2 . . . x1x0)10 = (rn−1rn−2 . . . r1r0)b .
L’aritmetica modulare di Zn Le diverse basi numeriche I numeri primi Il protocollo di crittografia RSA
Cambiamento di base: dalla base 10 alla base b
Esempio (4634)10 in base 10
4634 = 463 · 10 + 4;
463 = 46 · 10 + 3;
46 = 4 · 10 + 6;
4 = 0 · 10 + 4;
e si ottengono le cifre attese.
Esempio (12)10 in base 2
12 = 6 · 2 + 0;
6 = 3 · 2 + 0;
3 = 1 · 2 + 1;
1 = 0 · 2b+ 1.
Quindi (12)10 = (1100)2.
La scomposizione in base 2 dell’esponente di una potenza in Zn eutile per l’algoritmo di Legendre.
Attenzione: Nelle applicazioni un numero decimale sara scrittosenza precisare la base 10 (·)10.
L’aritmetica modulare di Zn Le diverse basi numeriche I numeri primi Il protocollo di crittografia RSA
Il logaritmo e la lunghezza di un numero
Definizione
Siano a, b ∈ R+, a 6= 1. Allora x ∈ R e il logaritmo di base a di bse
ax = b⇐⇒ x = loga(b) .
Le proprieta del logaritmo utili per i nostri scopi sono:
1 loga(a) = 1;
2 loga(xy) = loga(x) + loga(y);
3 loga(xr) = r loga(x).
Ad esempio
4807 = 4.807 · 103 =⇒ log10(4807) = log10(4.807) + log10
�103�
= log10(4.807) + 3 log10(10)= 0.68 + 3 = 3.68
L’aritmetica modulare di Zn Le diverse basi numeriche I numeri primi Il protocollo di crittografia RSA
Il logaritmo e la lunghezza di un numero
Per “misurare” la lunghezza di un numero decimale M“contiamo” le sue cifre.
Il logaritmo di base 10 permette di ottenere questo datorapidamente
# cifre M = blog10(M) + 1c
dove bxc e la parte intera di x.
Ad esempio
# cifre 4807 = blog10(4807) + 1c = b3.68 + 1c = b4.68c = 4
L’aritmetica modulare di Zn Le diverse basi numeriche I numeri primi Il protocollo di crittografia RSA
I numeri primi
Definizione
Un numero p ∈ N, p > 1, e detto numero primo se a|p, cona ∈ N, implica a = p o a = 1, ossia se i soli divisori di p in N sono1 e se stesso. I numeri in N maggiori o uguali a 2 che non sonoprimi sono detti numeri composti.
I numeri primi sono i “mattoni” di base dell’aritmetica.
Il numero primo piu grande oggi conosciuto e detto il numerodi Mersenne
M43112609 = 243112609 − 1
che e della forma Mp = 2p − 1 con p a sua volta primo.
L’aritmetica modulare di Zn Le diverse basi numeriche I numeri primi Il protocollo di crittografia RSA
Teoremi sui numeri primi
Teorema fondamentale dell’aritmetica
Ogni numero naturale n > 1 puo essere scritto come il prodottofinito di numeri primi (chiamati fattori primi), e questa espressionee unica (salvo l’ordine), ossia
n = pm11 pm2
2 · · · pmrr
dove p1, . . . , pr sono numeri primi e m1, . . . ,mr ∈ N∗.
Teorema di Euclide
Esistono infiniti numeri primi.
Teorema
Se n > 1 e un numero naturale composto, allora possiede unfattore primo inferiore o uguale a
√n.
L’aritmetica modulare di Zn Le diverse basi numeriche I numeri primi Il protocollo di crittografia RSA
Alcuni criteri di primalita
Per testare se un numero n ∈ N non e primo e possibile utilizzareper esempio il piccolo teorema di Fermat, infatti�
∀ a ∈ N e p primo =⇒ ap ≡ a mod p�
m�∃ a ∈ N e ap 6≡ a mod p =⇒ p non primo
�E importate osservare che
�∀ a ∈ N e ap ≡ a mod p 6=⇒ p primo
�.
Ad esempio
327 ≡ 0 mod 27 quindi 27 non e primo;
511 ≡ 5 mod 11 → non si puo concludere;
515 ≡ 5 mod 15 → non si puo concludere;
715 ≡ 13 mod 15 → quindi 15 non e primo.
Esistono numeri, detti numeri di Carmichael, per i quali, per ognia, an ≡ a mod n ma n e composto (ad esempio: 3 · 11 · 17 = 561).
L’aritmetica modulare di Zn Le diverse basi numeriche I numeri primi Il protocollo di crittografia RSA
Alcuni criteri di primalita
Il piccolo teorema di Fermat permette di ottenere un sempliceesempio di test di primalita probabilistico. Si procede cosı:
si sceglie un numero a aleatoriamente;
si testa se an ≡ a mod n, se la congruenza non e verificatastop e n e composto (a e detto testimone contro la primalita);
si ripete l’operazione fino ad avere la certezza richiesta, in talcaso se n non e stato riconosciuto come composto e dettoprobabilmente primo.
Chiaramente i numeri di Carmichael sfuggono al test per ogni a.
Attenzione: sapere se n e composto non implica conoscere la suafattorizzazione.
L’aritmetica modulare di Zn Le diverse basi numeriche I numeri primi Il protocollo di crittografia RSA
Alcuni criteri di primalita
Un altro criterio di primalita, piu di interesse teorico che altro, e ilteorema seguente
Teorema (di Wilson)
Un numero naturale n > 1 e primo se e solo se n divide(n− 1)! + 1.
dove n! = n · (n− 1) · (n− 2) · 2 · 1.
Ad esempio
n = 11 si ha (11− 1)! + 1 = 3628801 e 11|3628801, 11 eprimo;
n = 15 si ha (15− 1)! + 1 = 87178291201 e15 6 |87178291201, 15 non e primo.
L’aritmetica modulare di Zn Le diverse basi numeriche I numeri primi Il protocollo di crittografia RSA
Rarefazione dei numeri primi
Teorema di rarefazione dei numeri primi
Se n e un numero naturale, il numero di numeri primi tra 1 e n aapprossimativamente uguale e
#{m ∈ N : 1 < m ≤ n,m primo } ≈ n
lnn.
Dove ln(x) = loge(x) con e = 2.718281828 . . . ∈ R\Q chiamatonumero di Euler.
L’aritmetica modulare di Zn Le diverse basi numeriche I numeri primi Il protocollo di crittografia RSA
La fattorizzazione dei numeri primi
Sia n = ab, stimiamo il numero di tentativi per scoprire a e busando il teorema della radice quadrata.
Sappiamo che un fattore (ad esempio a) soddisfa a ≤ √nallora vi sono approssimativamente
√n
ln√n
numeri primi da testare come divisori di n.
Se n ≈ 1050 (quindi un numeri di 50 cifre) allora√n ≈ 1025 e
i tentativi sono √n
ln√n≈ 1.74 · 1023 .
Per un computer capace di effettuare 1000 miliari di test alsecondo sono necessari piu di 1.7 · 1011 secondi, ossia circa5600 anni!
L’aritmetica modulare di Zn Le diverse basi numeriche I numeri primi Il protocollo di crittografia RSA
La fattorizzazione dei numeri primi
Prova di fattorizzazione con maple 9 su pentium 4, 2.60 GHz.
T[s
]
ℓ
0
20 30 40 50
500
1000
1500
Tempo di fattorizzazione T in funzione della lunghezza ` delnumero
T = 0.0005e0.285` .
L’aritmetica modulare di Zn Le diverse basi numeriche I numeri primi Il protocollo di crittografia RSA
La fattorizzazione dei numeri primi
Dal risultato precedente per ` = 300 (RSA) si ottiene
T ≈ 1026 y > eta dell’Universo .
Anche per gli algoritmi e i computer piu veloci il problema difattorizzare in numeri primi un numero con molte cifre epraticamente impossibile da risolvere.
Il problema della fattorizzazione:
non e (per ora) risolvibile in un tempo polinomiale in `, bensıin un tempo esponenziale;
data la soluzione la verifica si ottiene in un tempo polinomiale.
L’aritmetica modulare di Zn Le diverse basi numeriche I numeri primi Il protocollo di crittografia RSA
La fattorizzazione dei numeri primi
Secondo la teoria della complessita computazionale, la teoriache studia la le risorse di calcolo richieste per risolvere un datoproblema, vi sono:
problemi semplici (detti della classe P): esiste un algoritmoche richiede un tempo polinomiale rispetto alla dimensionedei dati del problema (il numero di cifre nella fattorizzazione);
problemi difficili (detti della classe NP), ossia problemi per iquali data una possibile soluzione la sua verifica avviene conun algoritmo in tempo polinomiale.
Per la classe NP esistono algoritmi esponenziali . . . ma non si sase esistono algoritmi polinomiali.
La fattorizzazione e un problema NP ed e questa la “garanzia”della sicurezza della crittografia RSA.
L’aritmetica modulare di Zn Le diverse basi numeriche I numeri primi Il protocollo di crittografia RSA
La fattorizzazione dei numeri primi
Un altro problema della classe NP e il calcolo della funzione ϕ(n)di Euler senza conoscere la fattorizzazione n = pq.
T[s
]
ℓ
0
20 30 40 50
500
1000
1500
Tempo di calcolo T in funzione della lunghezza ` del numero
T = 0.0005e0.287` .
L’aritmetica modulare di Zn Le diverse basi numeriche I numeri primi Il protocollo di crittografia RSA
Crittografia a chiave pubblica
Il destinatario D pubblica la propria chiave pubblica e ognimittente M che desidera inviargli un messaggio dovra usarlaper cifrare il proprio messaggio.
La chiave pubblica di D e nota a tutti, come pure il messaggiocifrato inviato da M.
Solo D sa come decifrarlo grazie alla sua chiave privata, talechiave e ignota anche a M.
Questo tipo di crittografia e noto come crittografia a chiaveasimmetria o crittografia a chiave pubblica, poiche M e D noncondividono una chiave privata segreta e comune.
L’aritmetica modulare di Zn Le diverse basi numeriche I numeri primi Il protocollo di crittografia RSA
Crittografia a chiave pubblica
Il principio della crittografia a chiave pubblica si basa sul fatto chela conoscenza della chiave pubblica e dell’algoritmo stesso nonsiano sufficienti per risalire alla chiave privata. Tale meccanismo ereso possibile grazie all’uso di funzioni unidirezionali (a botola):
facili da calcolare;
difficili da invertire;
data un’informazione supplementare (la botola) la funzione efacile da invertire.
Ad esempio:
x xe mod n
con (n, e) facile
con n difficile
anche con d facile
L’aritmetica modulare di Zn Le diverse basi numeriche I numeri primi Il protocollo di crittografia RSA
Il protocollo RSA
Il protocollo di crittografia RSA e diviso nelle seguenti parti:
la generazione delle chiavi pubblica (e, n) e privata (d, n);
la conversione del testo in un numero M e viceversa;
la cifratura del messaggio M e la sua decifratura.
e, n d, nC C MM
M D(mittente) (destinatario)
testo testoM → tt→M
L’aritmetica modulare di Zn Le diverse basi numeriche I numeri primi Il protocollo di crittografia RSA
La generazione delle chiavi
Si scelgono aleatoriamente due numeri primi p e q e sicalcola n = pq(in pratica n ha circa 300 cifre decimali (n ≈ 10300), p e q non sono
troppo vicini, (p− 1) e (q − 1) devono avere fattori primi grandi);
si calcola la funzione di Euler
ϕ(n) = ϕ(pq) = ϕ(p)ϕ(q) = (p− 1)(q − 1) ;
si sceglie e < ϕ(n) coprimo a ϕ(n), ossia MCD(e, ϕ(n)) = 1;
si calcola d tale che ed ≡ 1 mod ϕ(n), ossia d e l’inverso di ein Zϕ(n).
La condizione MCD(e, ϕ(n)) = 1 garantisce l’esistenza dell’inversodi e in Zϕ(n).
La coppia (e, n) costituisce la chiave pubblica;
la coppia (d, n) costituisce la chiave privata.
L’aritmetica modulare di Zn Le diverse basi numeriche I numeri primi Il protocollo di crittografia RSA
La generazione delle chiavi
Ecco un esempio:
scegliamo p = 11, q = 5, quindi n = 55;
si ha ϕ(55) = ϕ(11)ϕ(5) = 40;
scegliamo e = 7, poiche si ha MCD(7, 40) = 1;
si ottiene d = 23, infatti 7 · 23(= 161) ≡ 1 mod 40.
Chiave pubblica: (e = 7, n = 55).
Chiave privata: (d = 23, n = 55).
L’aritmetica modulare di Zn Le diverse basi numeriche I numeri primi Il protocollo di crittografia RSA
Dal testo al numero e viceversa
E necessario definire un alfabeto in cui ogni lettera e messa incorrispondenza con un numero.
Consideriamo l’alfabeto seguente (spazio, lettere minuscole)composto da 27 elementi
{ , a, b, c, d, e, f, g, h, i, j, k, l,m, n, o, p, q, r, s, t, u, v, w, x, y, z}
messi in corrispondenza con i 27 numeri
{0, 1, 2, 3, . . . , 24, 26} .
Il messaggio di k lettere αk−1 . . . α0 e in corrispondenza con lasequenza di numeri `k−1 . . . `0
αk−1 . . . α0 ←→ `k−1 . . . `0 .
L’aritmetica modulare di Zn Le diverse basi numeriche I numeri primi Il protocollo di crittografia RSA
Dal testo al numero
Si stabilisce la corrispondenza αk−1 . . . α0 ↔ `k−1 . . . `0;
si considera la sequenza `k−1 . . . `0 come le cifre di un numeroM in base 27 ossia M = (`k−1 . . . `0)27;
si trasforma (`k−1 . . . `0)27 in base 10
M =k−1Xi=0
`i27i .
Ad esempio: ciao
α3 = c, α2 = i, α1 = a, α0 = o↔ `3 = 3, `2 = 9, `1 = 1, `0 = 15
quindi
M = (3 9 1 15)27 =⇒M = 15·270+1·271+9·272+3·273 = 65652
L’aritmetica modulare di Zn Le diverse basi numeriche I numeri primi Il protocollo di crittografia RSA
Dal numero al testo
Si effettuano le divisioni euclidee successive per ottenere lecifre in base 27 del numero M in base 10, ossiaM = (`k−1 . . . `0)27;
si ristabilisce la corrispondenza `k−1 . . . `0 ↔ αk−1 . . . α0.
Ad esempio: M = 65652
65652 = 2431 · 27 + 152431 = 90 · 27 + 1
90 = 3 · 27 + 93 = 0 · 27 + 3
da cui M = (3 9 1 15)27 e si ritrova il messaggio ciao.
L’aritmetica modulare di Zn Le diverse basi numeriche I numeri primi Il protocollo di crittografia RSA
Cifrare e decifrare
Dato un messaggio
1 < M < n (i calcoli sono in Zn)
(se M ≥ n e necessario suddividere il messaggio in piu messaggi dilunghezza adeguata).
Il mittente M cifra M grazie a P = (e, n) come segue
EP(M)→ C ≡M e mod n ,
C costituisce il messaggio cifrato di M che viene inviato aldestinatario D;
il destinatario D decifra C grazie a Q = (d, n)
DQ(C)→M ≡ Cd mod n .
L’aritmetica modulare di Zn Le diverse basi numeriche I numeri primi Il protocollo di crittografia RSA
Cifrare e decifrare
Ecco un esempio.
Sia il messaggio M = 13 e la chiave dell’esempio precedente:
P = (e = 7, n = 55) e Q = (d = 23, n = 55)
Il mittente M cifra M
EP(13)→ 7 ≡ 137 mod 55 ,
C = 7 costituisce il messaggio cifrato di M = 13 che vieneinviato al destinatario D;
il destinatario D decifra C
DQ(7)→ 13 ≡ 723 mod 55 .
L’aritmetica modulare di Zn Le diverse basi numeriche I numeri primi Il protocollo di crittografia RSA
Il teorema RSA
Alla base del sistema di crittografia a chiave pubblica RSA (dalnome dei tre matematici Rivest, Shamir e Adleman che lainventarono nel 1977) vi e il seguente teorema che riportiamo percompletezza
Teorema RSA
Siano p e q sono due numeri primi distinti e n = pq, se e e coprimoa ϕ(n) e d e tale che ed ≡ 1 mod ϕ(n), allora per ogni a ∈ N
aed ≡ a mod n .
L’aritmetica modulare di Zn Le diverse basi numeriche I numeri primi Il protocollo di crittografia RSA
La sicurezza di RSA
Per rompere il codice RSA e necessario ottenere d dellachiave privata;
e quindi necessario conoscere ϕ(n).
Osserviamo che da ϕ(n) e n si ricavano facilmente p e q:
ϕ(n) = (p−1)(q−1) = n−(p+q)+1 =⇒(p+ q = n− ϕ(n) + 1pq = n
quindi p e q sono le soluzioni dell’equazione di secondo grado(relazioni di Viete)
x2 − (p+ q)x+ pq = 0 .
Dal punto di vista della complessita computazionale trovareϕ(n) senza la fattorizzazione n = pq e equivalente allafattorizzazione (entrambi hanno un algoritmo esponenziale);
ma la fattorizzazione e un problema difficile (tipo NP) per inumeri grandi e questa e la sicurezza di RSA.
L’aritmetica modulare di Zn Le diverse basi numeriche I numeri primi Il protocollo di crittografia RSA
La sicurezza di RSA
La RSA Security pubblica sfide per rompere il codice RSA, detteRSA-X, dove X e il numero di cifre decimali di n o di bit (cifre inbase 2) del numero binario associato al numero decimale n.
RSA-129 – 129 cifre decimali (prima sfida, 1977):fattorizzato nel 1994 in 8 mesi con 600 computer in rete;
RSA-640 – 193 cifre decimali: fattorizzato nel 2005;
RSA-200 – 200 cifre decimali: fattorizzato nel 2005 in 3 mesisu un cluster di 80 CPU di 2.2 GHz, ecco i numeri
n = 2799783391122132787082946763872260162107044678695542853756000992932
6128400107609345671052955360856061822351910951365788637105954482006
576775098580557613579098734950144178863178946295187237869221823983
p = 35324619344027701212726049781984643686711974001976
25023649303468776121253679423200058547956528088349
q = 79258699544783330333470858414800596877379758573642
19960734330341455767872818152135381409304740185467
Alcune sfide aperte: RSA-704 – 212 cifre decimali (30’000 $),RSA-1024 – 309 cifre decimali (100’000 $).
L’aritmetica modulare di Zn Le diverse basi numeriche I numeri primi Il protocollo di crittografia RSA
La firma digitale
La crittografia RSA puo essere utilizzata come firma digitale.
Sia M il messaggio (tutti possono vederlo ma il destinatario deveavere la certezza che il mittente sia quello che si e firmato).
Il mittente M firma M grazie alla sua chiave privataQ = (d, n) come segue
FQ(M)→ C ≡Md mod n ,
il destinatario D decifra C grazie alla chiave pubblicaP = (e, n) del mittente M
DP(C)→M ≡ Ce mod n .
Tutti possono decifrare C ma vi e la garanzia che il mittente e unosolo, infatti solo il mittente autentico possiede la chiave privata eassociata a quella pubblica d utilizzata per decifrare.
L’aritmetica modulare di Zn Le diverse basi numeriche I numeri primi Il protocollo di crittografia RSA
La firma digitale e il messaggio segreto
E possibile avere la segretezza e la firma digitale, ossia:
solo il destinatario D puo decodificare il messaggio (segreto);
solo il mittente M puo averlo inviato (firma digitale).
Ecco come si procede.
il mittente firma il messaggio con la propria chiave privata:F ≡MdM mod nM;
il mittente codifica F con la chiave pubblica di D:C ≡ F eD mod nD;
il destinatario decodifica C con la propria chiave privata:F ≡ CdD mod nD;
il destinatario decodifica F con la chiave pubblica di M:M ≡ F eM mod nM.