Teoria dei numeri - Dipartimento di Informatica

• Corso di Sicurezza su reti
• 11-04-2012
Number Theory
Barbara Masucci
Dipartimento di Informatica ed Applicazioni
Università di Salerno
[email protected]
http://www.dia.unisa.it/professori/masucci
Teoria dei numeri
Concetti preliminari per RSA
 
 
 
 
 
Aritmetica modulare
Algoritmo di Euclide per il calcolo del gcd
Calcolo dell’inversa moltiplicativa mod n
Elevazione a potenza modulare
Generazione di numeri primi e test di
primalità
Teorema della divisione
 Dati a є Z, n є N esiste un’unica coppia (q,r) con
0 ≤r≤ n-1 tale che
a=q·n+r
 r è indicato con a mod n
 a=11, n=7, 11=1·7+4  r=11 mod 7=4
 a=-11, n=7,-11=(-2) ·7+3  r=-11 mod 7=3
• 1
• Corso di Sicurezza su reti
• 11-04-2012
Congruenze mod n
  a e b sono congruenti mod n
(a b mod n) se
a mod n = b mod n
  73
4 mod 23
 73 mod 23 = 4 mod 23
  21 -9 mod 10
 21 mod 10 = -9 mod 10
  Se a b mod n allora n|(b-a)
  Se a b mod n allora b a mod n
L’insieme Zn
 Addizione modulo n
  (a mod n) + (b mod n) = (a+b) mod n
 Proprietà
  Commutativa
  Associativa
  Distributiva
  Identità
  Esistenza inversa additiva
 (l’inversa additiva di x è y tale che x+y 0 mod n)
(Zn, +) gruppo additivo mod n
• 2
• Corso di Sicurezza su reti
• 11-04-2012
Massimo Comune
Divisore (gcd)
 d è il massimo comune divisore di a e n se
  d è un divisore di a e n
  ogni divisore di a e n è un divisore di d
d=a·x+n·y
 Proprietà
  gcd(a, n)=gcd(a, -n)=gcd(-a, -n)=gcd(|a|, |n|)
  gcd(a, 0)=|a|
  se gcd(a, n)=1, a e n sono relativamente primi
L’insieme Zn*
Zn* = { [a]n, 0<a≤ n-1 e gcd(a,n)=1}
  Esempio: Z4*={ [1]4, [3]4}
  [1]4={…, -11, -7, -3, 1, 5, 9, 13, …}
  [3]4={…, -9, -5, -1, 3, 7, 11, 15, …}
  Esempio: Z8*={ [1]8, [3]8, [5]8, [7]8}
  [1]8={…, -23, -15, -7, 1, 9, 17, 25, …}
  [3]8={…, -21, -13, -5, 3, 11, 19, 30, …}
 Moltiplicazione modulo n
  (a mod n) · (b mod n) = (a · b) mod n
 Proprietà
  Commutativa
  Associativa
  Distributiva
  Identità
  Esistenza inversa moltiplicativa
 L’inversa moltiplicativa di x è y tale che x·y 1 mod n)
(Zn *, ·) gruppo moltiplicativo mod n
• 3
• Corso di Sicurezza su reti
• 11-04-2012
0
1
2
3
4
5
6
7
0
1
2
3
4
5
6
7
0
0
1
2
3
4
5
6
7
0
0
0
0
0
0
0
0
0
1
1
2
3
4
5
6
7
0
1
0
1
2
3
4
5
6
7
2
2
3
4
5
6
7
0
1
2
0
2
4
6
0
2
4
6
3
3
4
5
6
7
0
1
2
3
0
3
6
1
4
7
2
5
4
4
5
6
7
0
1
2
3
4
0
4
0
4
0
4
0
4
5
5
6
7
0
1
2
3
4
5
0
5
2
7
4
1
6
3
6
6
7
0
1
2
3
4
5
6
0
6
4
2
0
6
4
2
7
7
0
1
2
3
4
5
6
7
0
7
6
5
4
3
2
1
Addizione
Moltiplicazione
Non tutti gli interi in Z8 hanno inversa moltiplicativa,
ma quelli in Z8*={ [1]8, [3]8, [5]8, [7]8} ce l’hanno
Algoritmo di Euclide
Descritto negli Elementi di Euclide (circa 300 A. C.)
Euclide (a,n)
if n = 0 then return a
else return Euclide (n, a mod n)
Algoritmo di Euclide:
Esempi
Euclide (30, 21) = Euclide (21, 9)
= Euclide (9, 3)
= Euclide (3, 0) = 3
Euclide (4864, 3458) = Euclide (3458, 1406)
= Euclide (1406, 646)
= Euclide (646, 114)
= Euclide (114, 76)
= Euclide (76, 38)
= Euclide (38, 0) = 38
• 4
• Corso di Sicurezza su reti
• 11-04-2012
Algoritmo di Euclide:
complessità
  Assumiamo a > n ≥ 0
  Se a<n, Euclide (a,n) chiama Euclide (n,a) e procede
  Se a=n, Euclide (a,n) termina subito perché a mod n=0
  Al massimo log n chiamate
  Analisi complessa basata sui numeri di Fibonacci
  Per ogni chiamata O( (log a)2 ) operazioni su bit
  Totale: al massimo O( (log a)3 ) operazioni su bit
  Euclide (a,n) richiede al massimo O( (log a)2 ) operazioni
su bit
Polinomiale nella lunghezza dell’input
Algoritmo di Euclide Esteso
  Oltre a computare d=gcd(a,n) computa anche due interi x, y
tali che d = gcd(a,n) = a·x+n·y
  Stesso running time asintotico di Euclide (a,n)
Algoritmo di Euclide Esteso
• 5
• Corso di Sicurezza su reti
• 11-04-2012
Soluzione di ax≡b (mod n)
Dati
a, b, n calcolare x
0 1 2 3 4 5 6 7
Esempi:
3x≡7 (mod 8) soluzione 5
2x≡4 (mod 8) soluzione 2,6
0 0 0 0 0 0 0 0 0
1 0 1 2 3 4 5 6 7
2 0 2 4 6 0 2 4 6
3 0 3 6 1 4 7 2 5
4 0 4 0 4 0 4 0 4
4x≡2 (mod 8) nessuna soluzione 5 0 5 2 7 4 1 6 3
6 0 6 4 2 0 6 4 2
7 0 7 6 5 4 3 2 1
Soluzione di ax≡b (mod n)
  Ha soluzioni se e solo se g|b
  Se g|b ci sono esattamente g distinte
soluzioni mod n:
per i = 0,1,…, g-1
dove
g = a·x′+n·y (da Euclide-esteso (a,n) )
Soluzione di ax≡1 (mod n)
• 6
• Corso di Sicurezza su reti
• 11-04-2012
Soluzione di ax≡1 (mod 8)
0 1 2 3 4 5 6 7
0 0 0 0 0 0 0 0 0
1 0 1 2 3 4 5 6 7
2 0 2 4 6 0 2 4 6
3 0 3 6 1 4 7 2 5
4 0 4 0 4 0 4 0 4
5 0 5 2 7 4 1 6 3
6 0 6 4 2 0 6 4 2
7 0 7 6 5 4 3 2 1
Soluzione di ax≡1 (mod 7)
0
1
2
3
4
5
6
0
0
0
0
0
0
0
0
1
0
1
2
3
4
5
6
2
0
2
4
6
1
3
5
3
0
3
6
2
5
1
4
4
0
4
1
5
2
6
3
5
0
5
3
1
6
4
2
6
0
6
5
4
3
2
1
Esempio: calcolo di 5-1 mod 7
d = x·a + y·n
1 = -2·7 + 3·5
3 = 5-1 mod 7
a
7
n
5
d
1
x y
-2 3
5
2
1
1 -2
2
1
1
0
1
1
0
1
1
0
• 7
• Corso di Sicurezza su reti
• 11-04-2012
Esempio: calcolo di 5-1 mod 11
a
11
d = x·a + y·n
1 = 1·11 + (-2)·5
-2 = 5-1 mod 11
-2 = 9 mod 11
n
5
d
1
x y
1 -2
5
1
1
0
1
1
0
1
1
0
9 = 5-1 mod 11
Teorema cinese del resto
Dati
  m1, m2,…,mt interi positivi tali che gcd(mi,mj)=1, i≠j
  M= m1·m2 …·mt
  a1, a2,…,at interi
Esiste una sola soluzione modulo M al sistema di congruenze
x≡a1 mod m1
x≡a2 mod m2
…
x≡at mod mt
Mi = M/mi
yi = Mi-1 mod mi
Teorema cinese del resto
Esempio
x≡2 mod 5
x≡3 mod 13
a1=2, m1=5, M1=13, y1=13-1 mod 5=2
a2=3, m2=13, M2=5, y2=5-1 mod 13= 8
M=65
Soluzione del sistema:
• 8
• Corso di Sicurezza su reti
• 11-04-2012
Elevazione a potenza modulare
Calcolo di xy mod z
 Metodo naive
 Metodo left-to-right
 Metodo right-to-left
Elevazione a potenza modulare
Metodo naive
Calcolo di xy mod z
Elevazione a potenza modulare
Metodo naive
Calcolo di xy mod z
• 9
• Corso di Sicurezza su reti
• 11-04-2012
Elevazione a potenza modulare
Metodo left-to-right
Calcolo di xy mod z
Idea:
y = y020+ y121 +… +yt2t
y = y0+2(y1+ 2(y2+… +2(yt-1+2yt)))))
Elevazione a potenza modulare
Metodo left-to-right
xy = xy0+2(y1+2(y2+…+2(yt-1+2yt)))))
= xy0x2(y1+2(y2+…+2(yt-1+2yt)))))
= xy0(xy1+2(y2+…+2(yt-1+2yt))))))2
= xy0(xy1(xy2+…+2(yt-1+2yt))))))2)2
= xy0 (xy1( … (xyt-1(xyt)2)2… )2
Elevazione a potenza modulare
Metodo left-to-right
Calcolo di xy mod z
Idea:
y = y020+ y121 +… +yt2t
y = y0+2(y1+… +2(yt-1+2yt)))))
y
yt-1
xy = x 0 (… (x
y
(x t)2)2… )2
• 10
• Corso di Sicurezza su reti
• 11-04-2012
Elevazione a potenza modulare
Metodo left-to-right
Calcolo di xy mod z
Idea:
y = y020+ y121 +… +yt2t
y = y0+2(y1+… +2(yt-1+2yt)))))
y
yt-1
xy = x 0 (… (x
y
(x t)2)2… )2
Potenza_Modulare (x, y, z)
a←1
for i = t downto 0 do
a ← (a · a) mod z
if yi = 1 then a ← (a · x) mod z
return a
Elevazione a potenza modulare
Metodo left-to-right
Potenza_Modulare (x, y, z)
a←1
for i = t downto 0 do
a ← (a · a) mod z
if yi = 1 then a ← (a · x) mod z
return a
Elevazione a potenza modulare
Metodo right-to-left
• 11
• Corso di Sicurezza su reti
• 11-04-2012
Elevazione a potenza modulare
Metodo right-to-left
Elevazione a potenza modulare
Metodo right-to-left
Elevazione a potenza modulare
Metodo right-to-left
• 12
• Corso di Sicurezza su reti
• 11-04-2012
Elevazione a potenza modulare
Metodo right-to-left
Potenza_Modulare (x, y, z)
if y = 0 then return 1
X ← x; P ← 1
if y0 = 1 then P ← x
for i = 1 to t do
X ← X ·X mod z
if yi=1 then P ← P ·X mod z
return P
Numeri primi
 Un intero p > 1 è un numero primo se e solo
se i suoi unici divisori sono 1 e sé stesso
 Esempi: 2, 3, 5, 7, 11, 13, 17, 19,...
 Teorema fondamentale dell’aritmetica
 Ogni intero composto n > 1 può essere scritto in
modo unico come prodotto di potenze di primi
n = p1e1 p2e2... pkek
pi primo, ei intero positivo
Funzione di Eulero
Zn* = { [a]n, 0<a≤ n-1 e gcd(a,n)=1}
φ(n) = cardinalità di Zn* (funzione di Eulero)
 φ(p) = p-1
se p primo
 φ(pq) = (p-1)(q-1)
 φ(n) =
se p,q primi
se n = p1e1 p2e2... pkek,
pi primo, ei ≥ 0
• 13
• Corso di Sicurezza su reti
• 11-04-2012
Teorema di Eulero
 Per ogni a ∈ Zn*, aφ(n) = 1 mod n
 Esempi:
 a=3, n=10, φ(10)=4  34=81=1 mod 10
 a=2, n=11, φ(11)=10  210=1024=1 mod 11
Teorema di Fermat
 Se p è primo, per ogni a ∈ Zp*,
ap-1 = 1 mod p
 Se p è primo, per ogni a ∈ Z
ap = a mod p
Esempi:
 a=7, p=19  718 = 1 mod 19
 a=10, p=5  105 = 10 mod 5 = 0 mod 5
Generazione di un
primo ‘grande’
1. Genera a caso un dispari p di grandezza appropriata
2. Testa se p è primo
3. Se p è composto, go to 1.
• 14
• Corso di Sicurezza su reti
• 11-04-2012
Generazione di un
primo ‘grande’
1. Genera a caso un dispari p di grandezza appropriata
2. Testa se p è primo
3. Se p è composto, go to 1.
Come testare se un numero p è primo?
Che probabilità abbiamo che p sia primo?
Distribuzione dei
numeri primi
  π(x) = numero di primi in [2,x]
  Teorema dei numeri primi:
π(x) è circa x/ln x
  Esempio: π(1010) = 455.052.511
1010/ln 1010 ≈ 434.294.481,9 (4% in meno)
Scelta di un primo
di 512 bit
 Scelto un intero in [2,2512] la probabilità che sia
primo è circa 1 su ln 2512 (ln 2512 ≈ 354,89)
 Numero medio di tentativi ≈ 354,89
 Se si scelgono solo dispari, numero medio di tentativi
≈ 177,44
 Se si scelgono dispari in [2511,2512] la probabilità è
• 15
• Corso di Sicurezza su reti
• 11-04-2012
Scelta di un primo
di 1024 bit
 Scelto un intero in [2,21024] la probabilità che sia
primo è circa 1 su ln 21024 (ln 21024 ≈ 709,78)
 Numero medio di tentativi ≈ 709,78
 Se si scelgono solo dispari, numero medio di tentativi
≈ 354,89
 Se si scelgono dispari in [21023,21024] probabilità
Test di Primalità
Due tipi di test:
  Probabilistici
  Deterministici
Test di primalità probabilistici
 Il test può sbagliare
 numero composto viene dichiarato primo
 probabilità di errore ≤ 1/2
 Ripetendo il test indipendentemente t volte,
probabilità di errore ≤ (1/2)t
• 16
• Corso di Sicurezza su reti
• 11-04-2012
Test di primalità probabilistici
Insieme di witness W(p)
 dato a∈[1, p-1] è facile verificare se a∈W(p)
 se p è primo allora W(p) è vuoto
 se p è composto allora |W(p)| ≥ p/2
Test di primalità
probabilistici
Test di Solovay-Strassen
 Pubblicato nel 1977
 Probabilità di errore ≤ (1/2)t
Test di Miller-Rabin
 Il più usato in pratica
 Il più veloce
 Probabilità di errore ≤ (1/4)t
Test di Miller-Rabin
 Sia p il numero da testare
 p-1=2kq, con q dispari e k>0
 Scegli a∈[1, p-1] e calcola aq, a2q, …,a2
(quadrati ripetuti)
k
q
 Se p è primo, a2 q = 1 mod p (teorema di Fermat)
j
 Sia j il più piccolo indice per cui a2 q = 1 mod p
k
 Se j=0, allora aq = 1 mod p
j-1
j-1
 Se j>0, allora (a2 q -1)(a2 q +1) mod p =0
 p divide uno dei due fattori
 p non può dividere il primo,
altrimenti j non è il più
j
piccolo valore per cui a2 q = 1 mod p
j-1
 p divide il secondo fattore, da cui a2 q = -1 mod p
• 17
• Corso di Sicurezza su reti
• 11-04-2012
Test di Miller-Rabin
k
 Data la sequenza aq, a2q, …,a2 q, se p è
primo una delle due condizioni è vera:
 aq =1 mod p
j-1
= -1 mod p per qualche j ∈[1, k]
 Altrimenti p è composto
 a2
q
Test di Miller-Rabin
Test MR(p)
 calcola k>0 e q dispari: p-1=2kq
 scegli a caso a∈[1, p-1]
 if aq=1 mod p, then return “primo”
 for j=0 to k-1 do
j
 if a2 q = -1 mod p, then return “primo”
 return “composto”
Test di Miller-Rabin
Insieme di witness di Miller-Rabin
WMR(p) = {a : aq ≠ 1 mod p and
j
a2 q ≠ -1 mod p per ogni j∈[0,k-1]}
  Se p è un primo dispari
WMR(p) è vuoto
  Se p è un numero composto dispari
| WMR(p) | ≥ (3/4) ·φ(p)
• 18
• Corso di Sicurezza su reti
• 11-04-2012
Test di Miller-Rabin p=29
Witness di Miller-Rabin
WMR(29) = {a : a7 ≠ 1 mod 29 and
j
a2 ·7 ≠ -1 mod 29 per ogni j∈[0,1]}
  a=10
  107 mod 29=17 (continua)
  (107)2 mod 29=28=-1 mod 29 (stop: “primo”)
  a=2
  27 mod 29=12 (continua)
  (27)2 mod 29=28= -1 mod 29 (stop: “primo”)
  Prova per tutti gli a ∈[1,28]: sempre output “primo”
Test di Miller-Rabin p=221
Witness di Miller-Rabin
WMR(221) = {a : a55 ≠ 1 mod 221 and
j
a2 ·55 ≠ -1 mod 221 per ogni j∈[0,1]}
  a=5
  555 mod 221=112 (continua)
  (555)2 mod 221=168 (valori terminati, stop: “composto”)
  a=21
  2155 mod 221=220= -1 mod 221 (stop: “primo”)
  Per ogni a ∈ {1,…,220}/ WMR(221), output: “primo”
  a=1, 21, 47, 174, 200, 220
Test di primalità
deterministici
 Fino al 2002, non erano noti test deterministici
efficienti
 Nel 2002, primo test deterministico
polinomiale proposto da Agrawal, Kayal e
Saxena
 Miller-Rabin ancora usato perché più efficiente
• 19
• Corso di Sicurezza su reti
• 11-04-2012
 Cryptography and Network Security
by W. Stallings (2005)
 cap. 4 (Finite Fields)
 cap. 8 (Introduction to Number Theory)
 Introduction to Algorithms
by Cormen, Leiserson, Rivest (I ed)
 cap 31 (Number Theory)
• 20