Teoria dei Numeri
Number Theory
Cifrari asimmetrici più comuni
basati sulla Teoria dei Numeri
“… both Gauss and lesser mathematicians may be
justified in rejoicing that there is one science at
any rate, and that their own, whose very remoteness
from ordinary human activities keep it gentle and
clean.”
Barbara Masucci
Dipartimento di Informatica ed Applicazioni
Università di Salerno
[email protected]
http://www.dia.unisa.it/professori/masucci
G. H. Hardy, A Mathematician’s Apology, 1940
1
Barbara Masucci - DIA – Università di Salerno
Teoria dei numeri
Teorema della divisione
¾ Dati a є Z, n є N esiste un’unica coppia (q,r) con
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à
¾ Algoritmi per la fattorizzazione
¾
¾
¾
¾
¾
0 ≤r≤ n-1 tale che
a=q·n+r
quoziente
resto
¾ 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
Barbara Masucci - DIA – Università di Salerno
2
Barbara Masucci - DIA – Università di Salerno
3
Congruenze mod n
¾ a e b sono congruenti mod n
L’insieme Zn
¾ [a]n={a+kn, k є Z}
(a ≡b mod n) se
¾ Insieme dei numeri che divisi per n danno lo stesso resto a mod n
a mod n = b mod n
¾ Rappresentata dal più piccolo intero positivo che è in essa
¾ 73 ≡ 4 mod 23
¾ b є [a]n
¾ 73 mod 23 = 4 mod 23
¾ Zn={[a]n, 0 ≤a≤ n-1}
¾ 21 ≡-9 mod 10
b≡ a mod n
Zn={0,…, n-1}
¾ [1]4={…, -11, -7, -3, 1, 5, 9, 13, …}
¾ [2]4={…, -10, -6, -2, 2, 6, 10, 14, …}
¾ Se a ≡ b mod n allora b ≡ a mod n
¾ [3]4={…, -9, -5, -1, 3, 7, 11, 15, …}
4
Barbara Masucci - DIA – Università di Salerno
5
Massimo Comune
Divisore (gcd)
Aritmetica Modulare
¾Addizione modulo n
¾ 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
¾ (a mod n) + (b mod n) = (a+b) mod n
¾Proprietà
d=a·x+n·y
Commutativa
Associativa
Distributiva
Identità
Esistenza inversa additiva
¾ 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’inversa additiva di x è y tale che x+y≡ 0 mod n)
(Zn, +) gruppo additivo mod n
Barbara Masucci - DIA – Università di Salerno
per semplicità
n | (b-a)
¾ [0]4={…, -12, -8, -4, 0, 4, 8, 12, …}
¾ Se a ≡ b mod n allora n|(b-a)
¾
¾
¾
¾
¾
b-a=kn
¾ Esempio: Z4={[0]4, [1]4, [2]4, [3]4}
¾ 21 mod 10 = -9 mod 10
Barbara Masucci - DIA – Università di Salerno
b=a+kn
6
Barbara Masucci - DIA – Università di Salerno
7
Aritmetica Modulare
L’insieme Zn*
Zn* = { [a]n, 0<a≤ n-1 e gcd(a,n)=1}
¾Moltiplicazione modulo n
¾ Esempio: Z4*={ [1]4, [3]4}
¾ (a mod n) · (b mod n) = (a · b) mod n
¾ [1]4={…, -11, -7, -3, 1, 5, 9, 13, …}
¾Proprietà
¾ [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, …}
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
8
Barbara Masucci - DIA – Università di Salerno
Aritmetica mod 8
Algoritmo di Euclide
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
Barbara Masucci - DIA – Università di Salerno
9
Barbara Masucci - DIA – Università di Salerno
10
Descritto negli Elementi di Euclide (circa 300 A. C.)
Euclide
Euclide (a,n)
(a,n)
if
n
=
0
if n = 0 then
then return
return aa
else
else return
return Euclide
Euclide (n,
(n, aa mod
mod n)
n)
Teorema
Teorema della
della ricorsione
ricorsione del
del gcd
gcd
Per
Per tutti
tutti gli
gli interi
interi aa ≥≥ 00 ee nn >> 00
gcd(a,
gcd(a, n)
n) == gcd(n,
gcd(n, aa mod
mod n)
n)
Barbara Masucci - DIA – Università di Salerno
11
Algoritmo di Euclide:
Esempi
Algoritmo di Euclide:
complessità
¾ Assumiamo a > n ≥ 0
Euclide (30, 21) = Euclide (21, 9)
= Euclide (9, 3)
= Euclide (3, 0) = 3
¾ 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
Euclide (4864, 3458) = Euclide (3458, 1406)
= Euclide (1406, 646)
= Euclide (646, 114)
= Euclide (114, 76)
= Euclide (76, 38)
= Euclide (38, 0) = 38
Barbara Masucci - DIA – Università di Salerno
¾ 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
12
Algoritmo di Euclide Esteso
Algoritmo di Euclide Esteso
Euclide-esteso
Euclide-esteso (a,n)
(a,n)
if
if nn == 00 then
then return
return (a,
(a, 1,1, 0)
0)
(d´,
(d´, x´,
x´, y´)
y´) ←
← Euclide-esteso
Euclide-esteso (n,
(n, aa mod
mod n)
n)
(d,
(d, x,
x, y)
y) ←
← (d´,
(d´, y´,
y´, x´x´- ⎣a/n⎦
⎣a/n⎦ y´)
y´)
return
(d,
x,
y)
return (d, x, y)
a
n
d
x
Euclide-esteso
Euclide-esteso (a,n)
(a,n)
if
if nn == 00 then
then return
return (a,
(a, 1,1, 0)
0)
(d´,
x´,
y´)
←
Euclide-esteso
(d´, x´, y´) ← Euclide-esteso (n,
(n, aa mod
mod n)
n)
(d,
x,
y)
←
(d´,
y´,
x´⎣a/n⎦
y´)
(d, x, y) ← (d´, y´, x´- ⎣a/n⎦ y´)
return
return (d,
(d, x,
x, y)
y)
99
78
21
15
6
3
¾ 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)
Barbara Masucci - DIA – Università di Salerno
13
Barbara Masucci - DIA – Università di Salerno
14
78
21
15
6
3
0
Barbara Masucci - DIA – Università di Salerno
3
3
3
3
3
3
-11
3
-2
1
0
1
y
14
-11
3
-2
1
0
15
Soluzione di ax≡b (mod n)
Soluzione di ax≡b (mod n)
Dati
a, b, n calcolare x
0
1
3x≡7 (mod 8) soluzione 5
2
3
2x≡4 (mod 8) soluzione 2,6
4
4x≡2 (mod 8) nessuna soluzione 5
6
7
Esempi:
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
Barbara Masucci - DIA – Università di Salerno
7
0
7
6
5
4
3
2
1
16
Soluzione di ax≡1 (mod n)
soluzioni mod n:
b n
x' + i
g g
dove
per i = 0,1,…, g-1
g = a·x′+n·y (da Euclide-esteso (a,n) )
17
Barbara Masucci - DIA – Università di Salerno
Ha soluzioni se e solo se gcd(a,8) =1
1 = 1-1 mod 8
¾ Se gcd(a,n) =1 l’unica soluzione mod n è:
3 = 3-1 mod 8
x´
5 = 5-1 mod 8
1 = a·x′+n·y (da Euclide-esteso (a,n) )
¾ Tale soluzione viene denotata con a-1 mod n
(inversa moltiplicativa di a, mod n)
Barbara Masucci - DIA – Università di Salerno
¾ Se g|b ci sono esattamente g distinte
Soluzione di ax≡1 (mod 8)
¾ Ha soluzioni se e solo se gcd(a,n) =1
dove
(a,n)
¾ Ha soluzioni se e solo se g|b gg == gcd
gcd(a,n)
7 = 7-1 mod 8
18
0
1
2
3
4
5
6
7
0
0
0
0
0
0
0
0
0
Barbara Masucci - DIA – Università di Salerno
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
19
Soluzione di ax≡1 (mod 7)
Ha soluzioni se e solo se gcd(a,7) =1
1 = 1-1 mod 7
4 = 2-1 mod 7
5 = 3-1 mod 7
2 = 4-1 mod 7
3 = 5-1 mod 7
6 = 6-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
Euclide-esteso
Euclide-esteso (a,n)
(a,n)
if
n
=
0
then
return
if n = 0 then return (a,
(a, 1,1, 0)
0)
(d´,
(d´, x´,
x´, y´)
y´) ←
← Euclide-esteso
Euclide-esteso (n,
(n, aa mod
mod n)
n)
(d,
(d, x,
x, y)
y) ←
← (d´,
(d´, y´,
y´, x´x´- ⎣a/n⎦
⎣a/n⎦ y´)
y´)
return
a n
return (d,
(d, x,
x, y)
y)
6
0
6
5
4
3
2
1
d = x·a + y·n
1 = -2·7 + 3·5
3=
20
Barbara Masucci - DIA – Università di Salerno
d = x·a + y·n
1 = 1·11 + (-2)·5
-2 =
5-1
mod 11
-2 = 9 mod 11
Barbara Masucci - DIA – Università di Salerno
5-1
mod 7
7
5
d
1
x y
-2 3
5
2
1
1 -2
2
1
1
0
1
1
0
1
1
0
21
Barbara Masucci - DIA – Università di Salerno
Teorema cinese del resto
Esempio: calcolo di 5-1 mod 11
Euclide-esteso
Euclide-esteso (a,n)
(a,n)
if
if nn == 00 then
then return
return (a,
(a, 1,1, 0)
0)
(d´,
(d´, x´,
x´, y´)
y´) ←
← Euclide-esteso
Euclide-esteso (n,
(n, aa mod
mod n)
n)
(d,
x,
y)
←
(d´,
y´,
x´⎣a/n⎦
y´)
(d, x, y) ← (d´, y´, x´- ⎣a/n⎦ y´)
return
a n
return (d,
(d, x,
x, y)
y)
Esempio: calcolo di 5-1 mod 7
Dati
¾ m1, m2,…,mt interi positivi tali che gcd(mi,mj)=1, i≠j
¾ M= m1·m2 …·mt
¾ a1, a2,…,at interi
11
5
d
1
x y
1 -2
5
1
1
0
1
1
0
1
1
0
9 = 5-1 mod 11
22
Esiste una sola soluzione modulo M al sistema di congruenze
x≡a1 mod m1
x≡a2 mod m2
…
x≡at mod mt
t
X = ∑ ai ⋅ Mi ⋅ yi mod M
i=1
Mi = M/mi
Barbara Masucci - DIA – Università di Salerno
yi = Mi-1 mod mi
23
Teorema cinese del resto
Elevazione a potenza modulare
Esempio
x≡2 mod 5
Calcolo di xy mod z
x≡3 mod 13
¾Metodo naive
¾Metodo left-to-right
a1=2, m1=5, M1=13, y1=13-1 mod 5=2
a2=3, m2=13, M2=5, y2=5-1 mod 13= 8
¾Metodo right-to-left
M=65
Soluzione del sistema:
2
X = ∑ ai ⋅ Mi ⋅ yi mod 65 = 2 ⋅ 26 + 3 ⋅ 40 mod65 = 42 mod 65
i=1
Barbara Masucci - DIA – Università di Salerno
24
Barbara Masucci - DIA – Università di Salerno
25
Elevazione a potenza modulare
Metodo naive
Elevazione a potenza modulare
Metodo naive
Calcolo di xy mod z
Calcolo di xy mod z
Potenza_Modulare_naive
Potenza_Modulare_naive (x,
(x, y,
y, z)
z)
Potenza_Modulare_naive
Potenza_Modulare_naive (x,
(x, y,
y, z)
z)
aa ←
← 11
for
for ii == 11 to
to yy do
do
aa ←
(a
← (a··x)
x) mod
mod zz
return
return aa
aa ←
← 11
for
for ii == 11 to
to yy do
do
aa ←
← (a
(a··x)
x) mod
mod zz
return
return aa
512
Se y è di 512 bit, occorrono ≈ 2
operazioni
Esponenziale nella lunghezza dell’esponente
Barbara Masucci - DIA – Università di Salerno
26
Barbara Masucci - DIA – Università di Salerno
27
Elevazione a potenza modulare
Metodo left-to-right
Calcolo di xy mod z
Idea:
Elevazione a potenza modulare
Metodo left-to-right
y = y020+ y121 +… +yt2t
Calcolo di xy mod z
Idea:
y = y0+2(y1+ 2(y2+… +2(yt-1+2yt)))))
y = y020+ y121 +… +yt2t
y = y0+2(y1+ 2(y2+… +2(yt-1+2yt)))))
y +2(y +2(y +…+2(y
Esempio:
40 = 0·20 + 0·21 + 0·22 +1·23 + 0·24 +1·25
y
y1+2(y2+…+2(yt-1+2yt))))) 2
y
y
= x 0(x
)
y
y
y +…+2(yt-1+2yt))))) 2 2
= x 0(x 1(x 2
))
40 = 0 + (2 (0 + 2 (0 + (2 (1 + 2 (0 + 2·1))))))
= x 0 (x 1( … (x
28
Barbara Masucci - DIA – Università di Salerno
Elevazione a potenza modulare
Metodo left-to-right
Calcolo di xy mod z
Idea:
+2y )))))
t-1
t
xy = x 0 1 2
y 2(y +2(y +…+2(yt-1+2yt)))))
= x 0x 1 2
y
y = y020+ y121 +… +yt2t
yt-1
y
(x1
Barbara Masucci - DIA – Università di Salerno
Calcolo di xy mod z
xy = x 0 (… (x
2 2 2 2 2
(x0 (x1) ) ) ) )
30
y = y020+ y121 +… +yt2t
y = y0+2(y1+… +2(yt-1+2yt)))))
y
(x t)2)2… )2
40 = 0 + (2 (0 + 2 (0 + (2 (1 + 2 (0 + 2·1))))))
(x0
29
Barbara Masucci - DIA – Università di Salerno
Idea:
Esempio: x40
40 = 0·20 + 0·21 + 0·22 + 1·23 + 0·24 + 1·25
x40 = x0 ( x0
y
(x t)2)2… )2
Elevazione a potenza modulare
Metodo left-to-right
y = y0+2(y1+… +2(yt-1+2yt)))))
xy = x 0 (… (x
yt-1
yt-1
y
(x t)2)2… )2
Potenza_Modulare
Potenza_Modulare (x,
(x, y,
y, z)
z)
aa ←
1
←1
for
for ii == tt downto
downto 00 do
do
aa ←
← (a
(a··a)
a) mod
mod zz
if
then aa ←
← (a
(a·· x)
x) mod
mod zz
if yyi i == 11 then
return
a
return a
Se y è di 512 bit, occorrono ≈ 512 operazioni
Polinomiale nella lunghezza dell’esponente
Barbara Masucci - DIA – Università di Salerno
31
Elevazione a potenza modulare
Metodo left-to-right
Elevazione a potenza modulare
Metodo right-to-left
Potenza_Modulare
Potenza_Modulare (x,
(x, y,
y, z)
z)
aa ←
1
←1
for
for ii == tt downto
downto 00 do
do
aa ←
← (a
(a··a)
a) mod
mod zz
if
then aa ←
← (a
(a·· x)
x) mod
mod zz
if yyi i == 11 then
return
a
return a
Calcolo di xy mod z
y = y020+ y121 +… +yt2t
0
Idea:
1
t
xy = x2 y0+2 y1…+2 yt
0
1
t
= x2 y0 · x2 y1 · … · x2 yt
0 y
1 y
t y
= (x2 ) 0 · (x2 ) 1 · … · (x2 ) t
334040mod
mod 73=8
73=8
yy55=1,
=1, yy44=0,
=0, yy33=1,
=1, yy22=0,
=0, yy11=0,
=0, yy00=0
=0
32
Barbara Masucci - DIA – Università di Salerno
Elevazione a potenza modulare
Metodo right-to-left
Calcolo di xy mod z
Elevazione a potenza modulare
Metodo right-to-left
y = y020+ y121 +… +yt2t
0 y
Idea:
1 y
t yt
Calcolo di xy mod z
y = y020+ y121 +… +yt2t
0 y
Idea:
xy = (x2 ) 0 · (x2 ) 1 · … · (x2 )
1 y
t yt
xy = (x2 ) 0 · (x2 ) 1 · … · (x2 )
Esempio: x40
Esempio: x40
40 = 0·20+ 0·21 +0·22 + 1·23 + 0·24 + 1·25
40 = 0·20+ 0·21 +0·22 + 1·23 + 0·24 + 1·25
0
33
Barbara Masucci - DIA – Università di Salerno
0
0
1
0
0
1
=1
x1
Barbara Masucci - DIA – Università di Salerno
0
0
1
0
1
x8
=1
x16
x32
x40 = (x1) · (x2) · (x4) · (x8) · (x16) · (x32)
x40 = (x1) · (x2) · (x4) · (x8) · (x16) · (x32)
34
=1
x2
=1
4
x
Barbara Masucci - DIA – Università di Salerno
35
Elevazione a potenza modulare
Metodo right-to-left
Calcolo di xy mod z
Idea:
xy =
Elevazione a potenza modulare
Metodo right-to-left
y = y020+ y121 +… +yt2t
0 y
(x2 ) 0
·
1 y
(x2 ) 1 ·
…·
t y
(x2 ) t
Esempio: x40
40 = 0·20+ 0·21 +0·22 + 1·23 + 0·24 + 1·25
x40 =
x40 =
0
(x1)
·
=1
0
(x2) ·
=1
0
(x4) ·
1
(x8) ·
0
(x16)
·
1
(x32)
=1
=1
x8
36
Numeri primi
0
25
1
1
625
625
0
681
625
Polinomiale nella
lunghezza
dell’esponente
596mod 1234
55596
mod 1234
6
7
8
9
1
0
1
0
0
1
1011 369 421 779 947 925
67
67 1059 1059 1059 1013
37
Barbara Masucci - DIA – Università di Salerno
Funzione di Eulero
¾ Un intero p > 1 è un numero primo se e solo
se i suoi unici divisori sono 1 e sé stesso
Zn* = { [a]n, 0<a≤ n-1 e gcd(a,n)=1}
¾ Esempi: 2, 3, 5, 7, 11, 13, 17, 19,...
φ(n) = cardinalità di Zn* (funzione di Eulero)
¾ Teorema fondamentale dell’aritmetica
¾ φ(p) = p-1
¾ Ogni intero composto n > 1 può essere scritto in
modo unico come prodotto di potenze di primi
se p primo
¾ φ(pq) = (p-1)(q-1)
se p,q primi
⎛
1⎞
1⎞ ⎛
1 ⎞ ⎛
¾ φ(n) = n ⋅ ⎜⎜ 1 − ⎟⎟ ⋅ ⎜⎜ 1 − ⎟⎟ L ⎜⎜ 1 − ⎟⎟
⎝ p1 ⎠ ⎝ p2 ⎠ ⎝ pk ⎠
n = p1e1 p2e2... pkek
pi primo, ei intero positivo
Barbara Masucci - DIA – Università di Salerno
if
if yy == 00 then
then return
return 11
X
X←
← x;
x; PP ←
← 11
if
then PP ←
← xx
if yy00 == 11 then
for
for ii == 11 to
to tt do
do
X
←
X
·X
X ← X ·X mod
mod zz
if
then P ← P ·X mod z
if yyi=1
i=1 then P ← P ·X mod z
return
return PP i 0 1 2
3
4
5
yi 0
X 5
P 1
· x32
Barbara Masucci - DIA – Università di Salerno
Potenza_Modulare
Potenza_Modulare (x,
(x, y,
y, z)
z)
38
Barbara Masucci - DIA – Università di Salerno
se n = p1e1 p2e2... pkek,
pi primo, ei ≥ 0
39
Teorema di Eulero
Teorema di Fermat
¾Per ogni a ∈ Zn*, aφ(n) = 1 mod n
¾Se p è primo, per ogni a ∈ Zp*,
ap-1 = 1 mod p
¾Esempi:
¾Se p è primo, per ogni a ∈ Z
ap = a mod p
Esempi:
¾a=3, n=10, φ(10)=4 Æ 34=81=1 mod 10
¾a=2, n=11, φ(11)=10 Æ 210=1024=1 mod 11
¾a=7, p=19 Æ 718 = 1 mod 19
¾a=10, p=5 Æ 105 = 10 mod 5 = 0 mod 5
Barbara Masucci - DIA – Università di Salerno
40
Generazione di un
primo ‘grande’
Barbara Masucci - DIA – Università di Salerno
41
Generazione di un
primo ‘grande’
1.
1. Genera
Genera aa caso
caso un
un dispari
dispari pp di
di grandezza
grandezza appropriata
appropriata
2.
Testa
se
p
è
primo
2. Testa se p è primo
3.
3. Se
Se pp èè composto,
composto, go
go to
to 1.
1.
1.
1. Genera
Genera aa caso
caso un
un dispari
dispari pp di
di grandezza
grandezza appropriata
appropriata
2.
2. Testa
Testa se
se pp èè primo
primo
3.
3. Se
Se pp èè composto,
composto, go
go to
to 1.
1.
Come testare se un numero p è primo?
Che probabilità abbiamo che p sia primo?
Barbara Masucci - DIA – Università di Salerno
42
Barbara Masucci - DIA – Università di Salerno
43
Distribuzione dei
numeri primi
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)
¾ π(x) = numero di primi in [2,x]
π (x)
¾ Teorema dei numeri primi: lim
x →∞
x/ln x
=1
¾ Numero medio di tentativi ≈ 354,89
¾ Se si scelgono solo dispari, numero medio di tentativi
≈ 177,44
π(x) è circa x/ln x
¾ Esempio: π(1010) = 455.052.511
¾ Se si scelgono dispari in [2511,2512] la probabilità è
1010/ln 1010 ≈ 434.294.481,9 (4% in meno)
≈
1 …
(
…
2512
2511
−
ln 2512 ln 2511
)
… 1
1
2
511
2
≈
1
177,79
510 bit scelti a caso
44
Barbara Masucci - DIA – Università di Salerno
Scelta di un primo
di 1024 bit
Barbara Masucci - DIA – Università di Salerno
45
Test di Primalità
¾ 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
Due tipi di test:
¾ Probabilistici
¾ Deterministici
¾ Se si scelgono dispari in [21023,21024] probabilità
≈
1 …
(
…
21024
21023
−
ln 21024 ln 21023
… 1
)
1
1023
2
2
1022 bit scelti a caso
Barbara Masucci - DIA – Università di Salerno
≈
1
355,23
46
Barbara Masucci - DIA – Università di Salerno
47
Diminuizione della
probabilità di errore
Test di primalità probabilistici
p
primo
Test
Test Primalità
Primalità
Probabilmente!
Probabilmente!
dichiarato primo) di tale test ≤ 1/2
composto
Insieme di witness W(p)
Certamente!
Certamente!
¾ dato a∈[0, p-1] è facile verificare se a∈W(p)
¾ se p è primo allora W(p) è vuoto
Scelgo
Scelgo aa
¾ se p è composto allora |W(p)| ≥ p/2
Barbara Masucci - DIA – Università di Salerno
48
Test di primalità
probabilistici
¾ Se il test viene ripetuto indipendentemente t
volte allora la probabilità di errore ≤ (1/2)t
49
Barbara Masucci - DIA – Università di Salerno
Test di Miller-Rabin
¾ Basato sul Teorema di Fermat:
Test di Solovay-Strassen
¾ Se p è primo, per ogni a ∈ Zp*, ap-1
¾Pubblicato nel 1977
= 1 mod p
¾ Algoritmo
¾Probabilità di errore ≤ (1/2)t
¾ p dispari, p-1 pari
¾ p-1=2kq, con q dispari e k>0
Test di Miller-Rabin
k
¾ Scegli 1 < a < p-1 e calcola aq, a2q, …,a2 q
k
¾ 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
¾Il più usato in pratica
¾ Se j=0, allora aq = 1 mod p ( cioè aq – 1 mod p =0)
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ò jdividere il primo, altrimenti j non è il più piccolo valore
per cui a2 q = 1 mod p
j-1
¾ p divide il secondo fattore, da cui a2 q = -1 mod p
¾Il più veloce
¾Probabilità di errore ≤ (1/4)t
Barbara Masucci - DIA – Università di Salerno
¾ Probabilità di errore (n è composto ma viene
50
Barbara Masucci - DIA – Università di Salerno
51
Test di Miller-Rabin
Test di Miller-Rabin p=29
Insieme di witness di Miller-Rabin
Witness di Miller-Rabin
k
p-1
p-1==22kqq con
conqqdispari
dispari
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
2
29-1
29-1 == 222 ··77
WMR(29) = {a : a ≠ 1 mod 29 and
j
a2 ·7 ≠ -1 mod 29 per ogni j∈[0,1]}
¾ a=10
7
¾ 107 mod 29=17 (continua)
¾ (107)2 mod 29=28=-1 mod 29 (stop: “primo”)
WMR(p) è vuoto
¾ a=2
¾ Se p è un numero composto dispari
| WMR(p) | ≥ (3/4) ·φ(p)
¾ 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”
52
Barbara Masucci - DIA – Università di Salerno
53
Test di primalità
deterministici
Test di Miller-Rabin p=221
Witness di Miller-Rabin
Barbara Masucci - DIA – Università di Salerno
2
221-1
221-1 == 222 ··55
55
WMR(221) = {a : a55 ≠ 1 mod 221 and
j
a2 ·55 ≠ -1 mod 221 per ogni j∈[0,1]}
¾ a=5
¾ Fino al 2002, il miglior test deterministico era una
variante di Cohen e Lenstra del test di Adleman,
Pomerance e Rumely [1983]
¾ Complessità (ln p)O(lg lg lg p)
¾ 555 mod 221=112 (continua)
¾ (555)2 mod 221=168 (valori terminati, stop: “composto”)
¾ Nel 2002, primo test deterministico polinomiale
¾ a=21
proposto da Agrawal, Kayal e Saxena
¾ 2155 mod 221=220= -1 mod 221 (stop: “primo”)
¾ Complessità O(ln p)6+ε
¾ Per ogni a ∈ {1,…,220}/ WMR(221), output: “primo”
¾ a=1, 21, 47, 174, 200, 220
Barbara Masucci - DIA – Università di Salerno
54
Barbara Masucci - DIA – Università di Salerno
55
Fattorizzazione
Complessità algoritmi
La sicurezza di molte tecniche crittografiche
Un algoritmo ha complessità
si basa sulla intrattabilità della fattorizzazione:
¾ pienamente esponenziale se il suo running time è O(2ck),
dove k è la taglia dell’input e c>0 è una costante
¾ crittosistema RSA, Rabin
¾ sub-esponenziale se il suo running time è O(2o(k)), dove k è
¾ firme digitali RSA
la taglia dell’input
Esempio: n=3337
Soluzione p = 47, q = 71
56
Barbara Masucci - DIA – Università di Salerno
Calcolo di un fattore primo:
a
n]
1-a
con c > 0 ed 0 < a < 1
(esponenziale nella lunghezza dell’input)
Barbara Masucci - DIA – Università di Salerno
57
Barbara Masucci - DIA – Università di Salerno
Lq[a,c] = O(e(c+o(1))(ln q) (lnln q) )
Complessità caso peggiore Θ( n ) = Θ(21/2 log n)
n ≈2
dell’input e c>0 è una costante
Complessità di tempo sub-esponenziale in media
Se p|n allora p è fattore di n
Se n ha 512 bit allora
¾ polinomiale se il suo running time è O(kc), dove k è la taglia
Fattorizzazione:
complessità algoritmi
Fattorizzazione:
un semplice algoritmo
Per tutti i primi p in [2,
f(n)
=0
¾ f(n)=o(g(n)) se lim
n →∞ g(n)
Dato n, calcolare due primi p,q>1 tali che n=p•q
¾ Algoritmo basato su curve ellittiche: Ln[ 1/2, 1]
¾ Quadratic sieve: Ln[ 1/2, 1]
¾ General number field sieve: Ln[ 1/3, 1.923]
256
il più veloce
58
Barbara Masucci - DIA – Università di Salerno
59
General Number field sieve
in pratica
Quadratic sieve in pratica
¾ Quadratic sieve è migliore dell’algoritmo basato su
curve ellittiche
¾ General Number field sieve è migliore del Quadratic
sieve solo per interi di almeno 110-120 cifre decimali
1 mips per anno
13
≈ 3 ·10 istruzioni
anno
1984
1988
1993
1994
numero digit
71
106
120
129
numero bit
236
350
397
425
1 mips per anno
13
≈ 3 ·10 istruzioni
anno
1996
1999
mips per anno
0.01
140
825
5000
Barbara Masucci - DIA – Università di Salerno
RSARSA-129
1600 computer
per 8 mesi
factoring by e-mail
60
61
¾ Prova algoritmo Rho di Pollard
¾ Algoritmo basato su curve ellittiche: tempo medio
¾ Prova algoritmo basato su curve ellittiche
)
¾ Cerca fattori “grandi”
¾ Prova Quadratic sieve
II numeri
numeri più
più difficili
difficili da
da fattorizzare
fattorizzare sono
sono del
del
tipo
tipo nn == pq
pq con
con p,q
p,q primi
primi della
della stessa
stessa lunghezza
lunghezza
Barbara Masucci - DIA – Università di Salerno
Barbara Masucci - DIA – Università di Salerno
RSARSA-155
300 workstation +
CRAY per 5 mesi
¾ Prova divisione per alcuni piccoli primi (2,3,5,7,…)
¾ Algoritmo Rho di Pollard: tempo medio O(√p)
(lnln q)1/2
mips per anno
500
8000
¾ Cerca fattori “piccoli”
Algoritmi per calcolare un fattore p di n:
1/2
numero bit
430
512
Una strategia generale per
fattorizzare
Calcolo di fattori “piccoli”
Lp[1/2, √2] = O(e(√2+o(1))(ln q)
numero digit
130
155
62
¾ Prova General Number field sieve
Barbara Masucci - DIA – Università di Salerno
63
Bibliografia
¾Cryptography and Network Security
by W. Stallings (2003)
¾cap. 4 (Finite Fields)
¾cap. 8 (Introduction to Number Theory)
¾Introduction to Algorithms
by Cormen, Leiserson, Rivest (I ed)
¾cap 31 (Number Theory)
Barbara Masucci - DIA – Università di Salerno
64
Scarica

Number Theory Teoria dei Numeri Teoria dei numeri