Number Theory Teoria dei numeri

Teoria dei numeri
Number Theory
Concetti preliminari per RSA
¾
¾
¾
¾
¾
Barbara Masucci
Dipartimento di Informatica ed Applicazioni
Università di Salerno
[email protected]
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à
http://www.dia.unisa.it/professori/masucci
1
Barbara Masucci - DIA – Università di Salerno
Congruenze mod n
Teorema della divisione
¾ Dati a є Z, n є N esiste un’unica coppia (q,r) con
¾ a e b sono congruenti mod n
(a ≡b mod n) se
a mod n = b mod n
0 ≤r≤ n-1 tale che
¾ 73 ≡ 4 mod 23
a=q·n+r
quoziente
¾ 73 mod 23 = 4 mod 23
¾ 21 ≡-9 mod 10
resto
¾ 21 mod 10 = -9 mod 10
¾ r è indicato con a mod n
¾ Se a ≡ b mod n allora n|(b-a)
¾a=11, n=7, 11=1·7+4 Æ r=11 mod 7=4
¾ Se a ≡ b mod n allora b ≡ a mod n
¾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
Aritmetica Modulare
L’insieme Zn
¾ [a]n={a+kn, k є Z}
¾Addizione modulo n
¾ Insieme dei numeri che divisi per n danno lo stesso resto a mod n
¾ (a mod n) + (b mod n) = (a+b) mod n
¾ Rappresentata dal più piccolo intero positivo che è in essa
¾ b є [a]n
b=a+kn
¾ Zn={[a]n, 0 ≤a≤ n-1}
b-a=kn
per semplicità
n | (b-a)
b≡ a mod n
¾Proprietà
¾
¾
¾
¾
¾
Zn={0,…, n-1}
¾ Esempio: Z4={[0]4, [1]4, [2]4, [3]4}
¾ [0]4={…, -12, -8, -4, 0, 4, 8, 12, …}
¾ [1]4={…, -11, -7, -3, 1, 5, 9, 13, …}
¾ [2]4={…, -10, -6, -2, 2, 6, 10, 14, …}
4
Massimo Comune
Divisore (gcd)
Barbara Masucci - DIA – Università di Salerno
5
L’insieme Zn*
Zn* = { [a]n, 0<a≤ n-1 e gcd(a,n)=1}
¾ d è il massimo comune divisore di a e n se
¾ Esempio: Z4*={ [1]4, [3]4}
¾ d è un divisore di a e n
¾ ogni divisore di a e n è un divisore di d
¾ [1]4={…, -11, -7, -3, 1, 5, 9, 13, …}
d=a·x+n·y
¾ [3]4={…, -9, -5, -1, 3, 7, 11, 15, …}
¾ Esempio: Z8*={ [1]8, [3]8, [5]8, [7]8}
¾ Proprietà
¾ [1]8={…, -23, -15, -7, 1, 9, 17, 25, …}
¾ 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
Barbara Masucci - DIA – Università di Salerno
¾ (l’inversa additiva di x è y tale che x+y≡ 0 mod n)
(Zn, +) gruppo additivo mod n
¾ [3]4={…, -9, -5, -1, 3, 7, 11, 15, …}
Barbara Masucci - DIA – Università di Salerno
Commutativa
Associativa
Distributiva
Identità
Esistenza inversa additiva
¾ [3]8={…, -21, -13, -5, 3, 11, 19, 30, …}
6
Barbara Masucci - DIA – Università di Salerno
7
Aritmetica Modulare
Aritmetica mod 8
¾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)
1
2
3
4
5
6
7
0
1
2
3
4
5
6
7
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
(Zn *, ·) gruppo moltiplicativo mod n
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
8
Barbara Masucci - DIA – Università di Salerno
Barbara Masucci - DIA – Università di Salerno
9
Algoritmo di Euclide:
Esempi
Algoritmo di Euclide
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)
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
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
0
0
10
Barbara Masucci - DIA – Università di Salerno
11
Algoritmo di Euclide:
complessità
Algoritmo di Euclide Esteso
¾ Assumiamo a > n ≥ 0
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)
¾ 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
12
Barbara Masucci - DIA – Università di Salerno
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
99
78
21
15
6
3
78
21
15
6
3
0
Barbara Masucci - DIA – Università di Salerno
3
3
3
3
3
3
-11
3
-2
1
0
1
¾ 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)
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:
y
14
-11
3
-2
1
0
14
13
Barbara Masucci - DIA – Università di Salerno
Barbara Masucci - DIA – Università di Salerno
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
15
Soluzione di ax≡b (mod n)
Soluzione di ax≡1 (mod n)
(a,n)
¾ Ha soluzioni se e solo se g|b gg == gcd
gcd(a,n)
¾ Ha soluzioni se e solo se gcd(a,n) =1
¾ Se g|b ci sono esattamente g distinte
¾ Se gcd(a,n) =1 l’unica soluzione mod n è:
x´
soluzioni mod n:
b n
x' + i
g g
dove
dove
per i = 0,1,…, g-1
¾ Tale soluzione viene denotata con a-1 mod n
(inversa moltiplicativa di a, mod n)
g = a·x′+n·y (da Euclide-esteso (a,n) )
16
Barbara Masucci - DIA – Università di Salerno
Soluzione di ax≡1 (mod 8)
1 = 1-1 mod 8
3=
mod 8
5 = 5-1 mod 8
7 = 7-1 mod 8
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
17
Barbara Masucci - DIA – Università di Salerno
Soluzione di ax≡1 (mod 7)
Ha soluzioni se e solo se gcd(a,7) =1
Ha soluzioni se e solo se gcd(a,8) =1
3-1
1 = a·x′+n·y (da Euclide-esteso (a,n) )
5
0
5
2
7
4
1
6
3
6
0
6
4
2
0
6
4
2
1 = 1-1 mod 7
7
0
7
6
5
4
3
2
1
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
18
0
1
2
3
4
5
6
0
0
0
0
0
0
0
0
Barbara Masucci - DIA – Università di Salerno
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
19
Esempio: calcolo di 5-1 mod 7
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
(d,
x,
y)
a n
return (d, x, y)
d = x·a + y·n
1 = -2·7 + 3·5
3=
5-1
mod 7
Esempio: calcolo di 5-1 mod 11
7
5
d
1
x y
-2 3
5
2
1
1 -2
2
1
1
0
1
1
0
1
1
0
20
Barbara Masucci - DIA – Università di Salerno
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
(d,
x,
y)
a n
return (d, x, y)
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
11
5
d
1
x y
1 -2
5
1
1
0
1
1
0
1
1
0
9 = 5-1 mod 11
21
Teorema cinese del resto
Teorema cinese del resto
Esempio
Dati
x≡2 mod 5
¾ m1, m2,…,mt interi positivi tali che gcd(mi,mj)=1, i≠j
x≡3 mod 13
¾ M= m1·m2 …·mt
¾ a1, a2,…,at interi
a1=2, m1=5, M1=13, y1=13-1 mod 5=2
Esiste una sola soluzione modulo M al sistema di congruenze
x≡a1 mod m1
x≡a2 mod m2
…
x≡at mod mt
a2=3, m2=13, M2=5, y2=5-1 mod 13= 8
M=65
t
X = ∑ ai ⋅ Mi ⋅ yi mod M
Soluzione del sistema:
i=1
Mi = M/mi
Barbara Masucci - DIA – Università di Salerno
2
X = ∑ ai ⋅ Mi ⋅ yi mod 65 = 2 ⋅ 26 + 3 ⋅ 40 mod65 = 42 mod 65
yi = Mi-1 mod mi
i=1
22
Barbara Masucci - DIA – Università di Salerno
23
Elevazione a potenza modulare
Metodo naive
Elevazione a potenza modulare
Calcolo di xy mod z
Calcolo di xy mod z
¾Metodo naive
Potenza_Modulare_naive
Potenza_Modulare_naive (x,
(x, y,
y, z)
z)
¾Metodo left-to-right
aa ←
← 11
for
for ii == 11 to
to yy do
do
aa ←
← (a
(a··x)
x) mod
mod zz
return
return aa
¾Metodo right-to-left
Barbara Masucci - DIA – Università di Salerno
24
Elevazione a potenza modulare
Metodo naive
Calcolo di
xy
Barbara Masucci - DIA – Università di Salerno
25
Elevazione a potenza modulare
Metodo left-to-right
Calcolo di xy mod z
mod z
Idea:
y = y020+ y121 +… +yt2t
y = y0+2(y1+ 2(y2+… +2(yt-1+2yt)))))
Potenza_Modulare_naive
(x, y,
y, z)
z)
Potenza_Modulare_naive (x,
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
Esempio:
40 = 0·20 + 0·21 + 0·22 +1·23 + 0·24 +1·25
40 = 0 + (2 (0 + 2 (0 + (2 (1 + 2 (0 + 2·1))))))
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
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)))))
xy
y0+2(y1+2(y2+…+2(yt-1+2yt)))))
=x
y 2(y +2(y +…+2(yt-1+2yt)))))
= x 0x 1 2
y
= x 0 (x
y1+2(y2+…+2(yt-1+2yt))))) 2
y1
= x (x ( … (x
yt-1
Idea:
28
y = y020+ y121 +… +yt2t
y
y
xy = x 0 (… (x t-1(x t)2)2… )2
Potenza_Modulare
Potenza_Modulare (x,
(x, y,
y, z)
z)
aa ←
← 11
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
y
y
(x0
(x1
2 2 2 2 2
(x0 (x1) ) ) ) )
Barbara Masucci - DIA – Università di Salerno
29
Elevazione a potenza modulare
Metodo left-to-right
y = y0+2(y1+… +2(yt-1+2yt)))))
y
y
xy = x 0 (… (x t-1(x t)2)2… )2
x40 = x0 ( x0
Elevazione a potenza modulare
Metodo left-to-right
Calcolo di xy mod z
y = y0+2(y1+… +2(yt-1+2yt)))))
40 = 0 + (2 (0 + 2 (0 + (2 (1 + 2 (0 + 2·1))))))
y
(x t)2)2… )2
Barbara Masucci - DIA – Università di Salerno
Idea:
y = y020+ y121 +… +yt2t
Esempio: x40
40 = 0·20 + 0·21 + 0·22 + 1·23 + 0·24 + 1·25
)
y
y
y +…+2(yt-1+2yt))))) 2 2
= x 0 ( x 1( x 2
))
y0
Calcolo di xy mod z
Potenza_Modulare
Potenza_Modulare (x,
(x, y,
y, z)
z)
aa ←
← 11
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
334040mod
mod 73=8
73=8
yy55=1,
=1, yy44=0,
=0, yy33=1,
=1, yy22=0,
=0, yy11=0,
=0, yy00=0
=0
30
Barbara Masucci - DIA – Università di Salerno
31
Elevazione a potenza modulare
Metodo right-to-left
Calcolo di xy mod z
y = y020+ y121 +… +yt2t
0
Idea:
Elevazione a potenza modulare
Metodo right-to-left
1
t
Calcolo di xy mod z
0 y
Idea:
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
y = y020+ y121 +… +yt2t
1 y
t yt
xy = (x2 ) 0 · (x2 ) 1 · … · (x2 )
Esempio: x40
40 = 0·20+ 0·21 +0·22 + 1·23 + 0·24 + 1·25
0
0
0
1
0
x40 = (x1) · (x2) · (x4) · (x8) · (x16) · (x32)
32
Barbara Masucci - DIA – Università di Salerno
Elevazione a potenza modulare
Metodo right-to-left
Calcolo di xy mod z
1 y
33
Barbara Masucci - DIA – Università di Salerno
Elevazione a potenza modulare
Metodo right-to-left
y = y020+ y121 +… +yt2t
0 y
Idea:
1
t yt
Calcolo di xy mod z
0 y
Idea:
xy = (x2 ) 0 · (x2 ) 1 · … · (x2 )
y = y020+ y121 +… +yt2t
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
0
0
=1
1
x
=1
x2
=1
x4
1
0
x40 = (x1) · (x2) · (x4) · (x8) · (x16) · (x32)
Barbara Masucci - DIA – Università di Salerno
1
=1
x8
x16
x32
34
0
0
0
=1
=1
=1
1
0
x40 = (x1) · (x2) · (x4) · (x8) · (x16) · (x32)
x40 =
Barbara Masucci - DIA – Università di Salerno
1
=1
x8
· x32
35
Elevazione a potenza modulare
Metodo right-to-left
Potenza_Modulare
Potenza_Modulare (x,
(x, y,
y, z)
z)
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
0
25
1
1
625
625
0
681
625
Numeri primi
Polinomiale nella
lunghezza
dell’esponente
596mod
5596
5 mod 1234
1234
6
7
8
1
0
1
0
0
1
1011 369 421 779 947 925
67
67 1059 1059 1059 1013
36
pi primo, ei intero positivo
Barbara Masucci - DIA – Università di Salerno
37
¾Per ogni a ∈ Zn*, aφ(n) = 1 mod n
φ(n) = cardinalità di Zn* (funzione di Eulero)
¾Esempi:
se p primo
¾a=3, n=10, φ(10)=4 Æ 34=81=1 mod 10
¾a=2, n=11, φ(11)=10 Æ 210=1024=1 mod 11
se p,q primi
Barbara Masucci - DIA – Università di Salerno
n = p1e1 p2e2... pkek
Teorema di Eulero
Zn* = { [a]n, 0<a≤ n-1 e gcd(a,n)=1}
⎛
1⎞ ⎛
1 ⎞ ⎛
1 ⎞
¾ φ(n) = n ⋅ ⎜⎜ 1 − ⎟⎟ ⋅ ⎜⎜ 1 − ⎟⎟ L ⎜⎜ 1 − ⎟⎟
⎝ p1 ⎠ ⎝ p2 ⎠ ⎝ pk ⎠
¾ Ogni intero composto n > 1 può essere scritto in
modo unico come prodotto di potenze di primi
9
Funzione di Eulero
¾ φ(pq) = (p-1)(q-1)
¾ Esempi: 2, 3, 5, 7, 11, 13, 17, 19,...
¾ Teorema fondamentale dell’aritmetica
Barbara Masucci - DIA – Università di Salerno
¾ φ(p) = p-1
¾ Un intero p > 1 è un numero primo se e solo
se i suoi unici divisori sono 1 e sé stesso
se n = p1e1 p2e2... pkek,
pi primo, ei ≥ 0
38
Barbara Masucci - DIA – Università di Salerno
39
Generazione di un
primo ‘grande’
Teorema di Fermat
¾Se p è primo, per ogni a ∈ Zp*,
ap-1 = 1 mod p
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.
¾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
Barbara Masucci - DIA – Università di Salerno
40
41
Barbara Masucci - DIA – Università di Salerno
Distribuzione dei
numeri primi
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.
¾ π(x) = numero di primi in [2,x]
¾ Teorema dei numeri primi: lim
x →∞
π (x)
x/ln x
=1
π(x) è circa x/ln x
Come testare se un numero p è primo?
Che probabilità abbiamo che p sia primo?
Barbara Masucci - DIA – Università di Salerno
¾ Esempio: π(1010) = 455.052.511
1010/ln 1010 ≈ 434.294.481,9 (4% in meno)
42
Barbara Masucci - DIA – Università di Salerno
43
Scelta di un primo
di 512 bit
Scelta di un primo
di 1024 bit
¾ Scelto un intero in [2,2512] la probabilità che sia
primo è circa 1 su ln 2512 (ln 2512 ≈ 354,89)
¾ Scelto un intero in [2,21024] la probabilità che sia
primo è circa 1 su ln 21024 (ln 21024 ≈ 709,78)
¾ Numero medio di tentativi ≈ 354,89
¾ Numero medio di tentativi ≈ 709,78
¾ Se si scelgono solo dispari, numero medio di tentativi
≈ 177,44
¾ Se si scelgono solo dispari, numero medio di tentativi
≈ 354,89
¾ Se si scelgono dispari in [2511,2512] la probabilità è
¾ Se si scelgono dispari in [21023,21024] probabilità
≈
1 …
(
…
512
511
2
2
−
512
ln 2
ln 2511
)
… 1
1
2
511
2
≈
1
177,79
≈
1 …
510 bit scelti a caso
Barbara Masucci - DIA – Università di Salerno
44
Test di Primalità
(
…
21024
21023
−
ln 21024 ln 21023
)
… 1
1
1023
2
2
≈
1
355,23
1022 bit scelti a caso
45
Barbara Masucci - DIA – Università di Salerno
Test di primalità probabilistici
Due tipi di test:
p
¾ Probabilistici
¾ Deterministici
primo
Test
Test Primalità
Primalità
Probabilmente!
Probabilmente!
composto
Certamente!
Certamente!
¾ 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
Barbara Masucci - DIA – Università di Salerno
46
Barbara Masucci - DIA – Università di Salerno
47
Test di primalità
probabilistici
Test di primalità probabilistici
Test di Solovay-Strassen
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
¾Pubblicato nel 1977
¾Probabilità di errore ≤ (1/2)t
Test di Miller-Rabin
¾Il più usato in pratica
Scelgo
Scelgo aa
Barbara Masucci - DIA – Università di Salerno
48
Test di Miller-Rabin
¾Probabilità di errore ≤ (1/4)t
49
Barbara Masucci - DIA – Università di Salerno
Test di Miller-Rabin
k
¾Data la sequenza aq, a2q, …,a2 q, se p è
primo una delle due condizioni è vera:
¾Sia p il numero da testare
¾p-1=2kq, con q dispari e k>0
k
¾Scegli a∈[1, p-1] e calcola aq, a2q, …,a2 q
(quadrati ripetuti)
¾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
Barbara Masucci - DIA – Università di Salerno
¾Il più veloce
50
¾aq =1 mod p
j-1
= -1 mod p per qualche j ∈[1, k]
¾Altrimenti p è composto
¾a2
q
Barbara Masucci - DIA – Università di Salerno
51
Test di Miller-Rabin
Test di Miller-Rabin
Insieme di witness 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”
WMR(p) = {a : a ≠ 1 mod p and
j
a2 q ≠ -1 mod p per ogni j∈[0,k-1]}
¾ Se p è un primo dispari
WMR(p) è vuoto
¾for j=0 to k-1 do
j
¾if a2 q = -1 mod p, then return “primo”
¾return “composto”
¾ Se p è un numero composto dispari
| WMR(p) | ≥ (3/4) ·φ(p)
Polinomiale nella
lunghezza dell’input
52
Barbara Masucci - DIA – Università di Salerno
Test di Miller-Rabin p=29
Witness di Miller-Rabin
2
29-1
29-1 == 222 ··77
¾ 107 mod 29=17 (continua)
¾
(107)2
mod 29=28=-1 mod 29 (stop: “primo”)
2
221-1
221-1 == 222 ··55
55
WMR(221) = {a : a ≠ 1 mod 221 and
j
a2 ·55 ≠ -1 mod 221 per ogni j∈[0,1]}
¾ a=5
55
¾ (555)2 mod 221=168 (valori terminati, stop: “composto”)
¾ a=21
¾ 27 mod 29=12 (continua)
¾
Witness di Miller-Rabin
¾ 555 mod 221=112 (continua)
¾ a=2
(27)2
53
Barbara Masucci - DIA – Università di Salerno
Test di Miller-Rabin p=221
WMR(29) = {a : a ≠ 1 mod 29 and
j
a2 ·7 ≠ -1 mod 29 per ogni j∈[0,1]}
¾ a=10
7
k
p-1
p-1==22kqq con
conqqdispari
dispari
q
¾ 2155 mod 221=220= -1 mod 221 (stop: “primo”)
mod 29=28= -1 mod 29 (stop: “primo”)
¾ Per ogni a ∈ {1,…,220}/ WMR(221), output: “primo”
¾ Prova per tutti gli a ∈[1,28]: sempre output “primo”
Barbara Masucci - DIA – Università di Salerno
¾ a=1, 21, 47, 174, 200, 220
54
Barbara Masucci - DIA – Università di Salerno
55
Test di primalità
deterministici
Bibliografia
¾ Fino al 2002, non erano noti test deterministici
efficienti
¾cap. 4 (Finite Fields)
¾cap. 8 (Introduction to Number Theory)
¾ Nel 2002, primo test deterministico
polinomiale proposto da Agrawal, Kayal e
¾Introduction to Algorithms
by Cormen, Leiserson, Rivest (I ed)
Saxena
¾cap 31 (Number Theory)
¾ Miller-Rabin ancora usato perché più efficiente
Barbara Masucci - DIA – Università di Salerno
¾Cryptography and Network Security
by W. Stallings (2005)
56
Barbara Masucci - DIA – Università di Salerno
57