Sei sulla pagina 1di 18

Number Theory

Alfredo De Santis

Dipartimento di Informatica ed Applicazioni
Universit di Salerno
adsi@dia.unisa.it
http://www.dia.unisa.it/professori/ads




Marzo 2012
1
Teoria dei numeri
Concetti preliminari per Crittografia a Chiave
Pubblica
! Aritmetica modulare
! Algoritmo di Euclide per il calcolo del gcd
! Calcolo dellinversa moltiplicativa mod n
! Elevazione a potenza modulare
! Generazione di numeri primi e test di
primalit


2
Teorema della divisione
! Dati a ! Z, n ! N esiste ununica coppia (q,r) con
0 " r " n-1 tale che
a = qn + 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
quoziente resto
3
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
!
! !
4
Linsieme Z
n
! [a]
n
={a+kn, k ! Z}
! Insieme dei numeri che divisi per n danno lo stesso resto a mod n
! Rappresentata dal pi piccolo intero positivo che in essa
! b ! [a]
n
b=a+kn b-a=kn n | (b-a) b a mod n
! Z
n
={ [a]
n
, 0 " a " n-1 } per semplicit Z
n
= {0,, n-1}
! Esempio: Z
4
= { [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, }
! [3]
4
={, -9, -5, -1, 3, 7, 11, 15, }
!
5
Aritmetica Modulare
! Addizione modulo n
! (a mod n) + (b mod n) = (a+b) mod n

! Esempio mod 8 + 0 1 2 3 4 5 6 7
0 0 1 2 3 4 5 6 7
1 1 2 3 4 5 6 7 0
2 2 3 4 5 6 7 0 1
3 3 4 5 6 7 0 1 2
4 4 5 6 7 0 1 2 3
5 5 6 7 0 1 2 3 4
6 6 7 0 1 2 3 4 5
7 7 0 1 2 3 4 5 6
6
Aritmetica Modulare
! Addizione modulo n
! (a mod n) + (b mod n) = (a+b) mod n

! Propriet
! Commutativa
! Associativa
! Identit
! Esistenza inversa additiva
!(linversa additiva di x y tale che x+y 0 mod n)
(Z
n
, +) gruppo additivo mod n
!
7
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 = ax + ny

! 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
8
Linsieme Z
n
*
Z
n
* = { [a]
n
, 0 < a " n-1 e gcd(a,n)=1}
! Esempio: Z
4
*
={ [1]
4
, [3]
4
}
! [1]
4
={, -11, -7, -3, 1, 5, 9, 13, }
! [3]
4
={, -9, -5, -1, 3, 7, 11, 15, }
! Esempio: Z
8
*={ [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, }
9
Aritmetica Modulare
! Moltiplicazione modulo n
! (a mod n) (b mod n) = (a b) mod n
! Propriet
! Commutativa
! Associativa
! Distributiva
! Identit
! Esistenza inversa moltiplicativa
!Linversa moltiplicativa di x y tale che xy 1 mod n)
(Z
n
*, ) gruppo moltiplicativo mod n
!
10
Aritmetica mod 8
0 1 2 3 4 5 6 7
0 0 1 2 3 4 5 6 7
1 1 2 3 4 5 6 7 0
2 2 3 4 5 6 7 0 1
3 3 4 5 6 7 0 1 2
4 4 5 6 7 0 1 2 3
5 5 6 7 0 1 2 3 4
6 6 7 0 1 2 3 4 5
7 7 0 1 2 3 4 5 6
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
Addizione Moltiplicazione
Non tutti gli interi in Z
8
hanno inversa moltiplicativa,
ma quelli in Z
8
*= { [1]
8
, [3]
8
, [5]
8
, [7]
8
} ce lhanno
!!
Algoritmo di Euclide
Descritto negli Elementi di Euclide (circa 300 A. C.)


Serve a calcolare il Massimo Comun Divisore
gcd(30,21) = ?
gcd(63,30) = ?
gcd(4864,3458) = ?




L'edizione 1570
!#
Algoritmo di Euclide
Descritto negli Elementi di Euclide (circa 300 A. C.)


Serve a calcolare il Massimo Comun Divisore
gcd(30,21) = 3
gcd(63,30) = 3
gcd(4864,3458) = 38




L'edizione 1570
13
Teorema della ricorsione del gcd
Per tutti gli interi a ! 0 e n > 0
gcd(a, n) = gcd(n, a mod n)
Algoritmo di Euclide
Euclide (a,n)
if n = 0 then return a
else return Euclide (n, a mod n)
14
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
15
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 dellinput
16
Algoritmo di Euclide
Esteso
! Oltre a computare d = gcd(a,n) computa anche due interi x, y
tali che d = gcd(a,n) = ax+ny
! Stesso running time asintotico di Euclide (a,n)
Euclide-esteso (a,n)
if n = 0 then return (a, 1, 0)
(d, x, y) " Euclide-esteso (n, a mod n)
(d, x, y) " (d, y, x- #a/n$ y)
return (d, x, y)

17
Algoritmo di Euclide
Esteso

Euclide-esteso (a,n)
if n = 0 then return (a, 1, 0)
(d, x, y) " Euclide-esteso (n, a mod n)
(d, x, y) " (d, y, x- #a/n$ y)
return (d, x, y)
a n d x y
99 78 3 -11 14
78 21 3 3 -11
21 15 3 -2 3
15 6 3 1 -2
6 3 3 0 1
3 0 3 1 0
3 = gcd(99,78)
= -11#99+14#78
18
Soluzione di ax%b (mod n)
Esempi:
3x%7 (mod 8) soluzione 5
2x%4 (mod 8) soluzione 2,6
4x%2 (mod 8) nessuna soluzione

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
Dati a, b, n calcolare x
19
Soluzione di ax%b (mod n)
g = gcd(a,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 = ax&+ny (da Euclide-esteso (a,n) )
g
n
i
g
b
x' +
20
Soluzione di ax%1 (mod n)
! Ha soluzioni se e solo se gcd(a,n) =1
! Se gcd(a,n) =1 lunica soluzione mod n :
x

dove 1 = ax&+ny (da Euclide-esteso (a,n) )

! Tale soluzione viene denotata con a
-1
mod n
(inversa moltiplicativa di a, mod n)
21
Soluzione di ax%1 (mod 8)
Ha soluzioni se e solo se gcd(a,8) =1
1 = 1
-1
mod 8
3 = 3
-1
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
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
22
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
6 0 6 5 4 3 2 1
23
Euclide-esteso (a,n)
if n = 0 then return (a, 1, 0)
(d, x, y) " Euclide-esteso (n, a mod n)
(d, x, y) " (d, y, x- #a/n$ y)
return (d, x, y)
Esempio: calcolo di 5
-1
mod 7
a n d x y
7 5 1 -2 3
5 2 1 1 -2
2 1 1 0 1
1 0 1 1 0
1 = -27 + 35
3 = 5
-1
mod 7
d = xa + yn
24
Euclide-esteso (a,n)
if n = 0 then return (a, 1, 0)
(d, x, y) " Euclide-esteso (n, a mod n)
(d, x, y) " (d, y, x- #a/n$ y)
return (d, x, y)
Esempio: calcolo di 5
-1
mod 11
a n d x y
11 5 1 1 -2
5 1 1 0 1
1 0 1 1 0
1 = 111 + (-2)5
-2 = 5
-1
mod 11
d = xa + yn
-2 = 9 mod 11
9 = 5
-1
mod 11
Teorema cinese del resto
Imperatore cinese contava il suo esercito
mediante una sequenza di task
! Formare gruppi di 3. Riportare quanti non ci riuscivano.
! Formare gruppi di 5. Riportare quanti non ci riuscivano.
! Formare gruppi di 7. Riportare quanti non ci riuscivano.
! ...


25
III secolo d.C., matematico cinese Sun Zi
Teorema cinese del resto
26
Teorema cinese del resto
27
X mod 3 = 1
Teorema cinese del resto
28
X mod 5 = 2
Teorema cinese del resto
29
X mod 7 = 2
30
Teorema cinese del resto
Dati
! m
1
, m
2
,,m
t
interi positivi tali che gcd(m
i
,m
j
) = 1, i$j
! M = m
1
m
2
m
t

! a
1
, a
2
, , a
t
interi
Esiste una sola soluzione modulo M al sistema di congruenze
X%a
1
mod m
1
X%a
2
mod m
2


X%a
t
mod m
t
X= a
i
! M
i
! y
i
i=1
t
"
modM
M
i
= M/m
i
y
i
= M
i
-1
mod m
i
31
Teorema cinese del resto
Esempio
X%2 mod 5

X%3 mod 13



Soluzione del sistema:


X= a
i
! M
i
! y
i

i=1
2
"
mod 65
M
i
= M/m
i
y
i
= M
i
-1
mod m
i
a
1
=2 m
1
=5 M
1
=13 y
1
= 13
-1
mod 5 = 2
a
2
=3 m
2
=13 M
2
=5 y
2
= 5
-1
mod 13 = 8
X = a
1
M
1
y
1
+ a
2
M
2
y
2
mod 65
=2! 3! 13+3! 5 ! 8mod 65
=2!26+3! 40mod 65
= 42 mod 65
Teorema cinese del resto
32
Quanti sono?
33
Teorema cinese del resto
Esempio
X%1 mod 3

X%2 mod 5
X%2 mod 7



Soluzione del sistema:


X= a
i
! M
i
! y
i

i=1
2
"
mod 65
M
i
= M/m
i
y
i
= M
i
-1
mod m
i
a
1
=1 m
1
=3 M
1
=35 y
1
= 35
-1
mod 3 = 2
a
2
=2 M
2
=5 M
2
=21 y
2
= 21
-1
mod 5 = 1
a
3
=2 M
3
=7 M
2
=15 y
3
= 15
-1
mod 7 = 1
X = a
1
M
1
y
1
+ a
2
M
2
y
2
+ a
3
M
3
y
3
mod 105
=1! 35!2+2!21 ! 1 +2! 15! 1 mod 105
=1! 70+2!21+2! 15 mod 105
=142 mod 105 = 37 mod 105
34
Elevazione a potenza modulare
Calcolo di x
y
mod z
! Metodo naive
! Metodo left-to-right
! Metodo right-to-left
35
Elevazione a potenza modulare
Metodo naive
Potenza_Modulare_naive (x, y, z)
a " 1
for i = 1 to y do
a " (a


x) mod z
return a
Calcolo di x
y
mod z
36
Elevazione a potenza modulare
Metodo naive
Potenza_Modulare_naive (x, y, z)
a " 1
for i = 1 to y do
a " (a


x) mod z
return a
Calcolo di x
y
mod z
Se y di 512 bit, occorrono ' 2
512
operazioni
Esponenziale nella lunghezza dellesponente
37
Elevazione a potenza modulare
Metodo left-to-right
Calcolo di x
y
mod z y = y
0
2
0
+ y
1
2
1
+ +y
t
2
t

Idea: y = y
0
+2(y
1
+ 2(y
2
+ +2(y
t-1
+2y
t
)))))

Esempio:


40 = 0!2
0
+ 0!2
1
+ 0!2
2
+1!2
3
+ 0!2
4
+1!2
5
40 = 0 + (2 (0 + 2 (0 + (2 (1 + 2 (0 + 2!1))))))

38
Elevazione a potenza modulare
Metodo left-to-right
Calcolo di x
y
mod z y = y
0
2
0
+ y
1
2
1
+ +y
t
2
t

Idea: y = y
0
+2(y
1
+ 2(y
2
+ +2(y
t-1
+2y
t
)))))
x
y
= x
y
0
+2(y
1
+2(y
2
++2(y
t-1
+2y
t
)))))


= x
y
0
x
2(y
1
+2(y
2
++2(y
t-1
+2y
t
)))))


= x
y
0
(x
y
1
+2(y
2
++2(y
t-1
+2y
t
)))))
)
2
= x
y
0
(x
y
1
(x
y
2
++2(y
t-1
+2y
t
)))))
)
2
)
2

= x
y
0
(x
y
1
( (x
y
t-1
(x
y
t
)
2
)
2
)
2
39
Elevazione a potenza modulare
Metodo left-to-right
Esempio: x
40



40 = 0!2
0
+ 0!2
1
+ 0!2
2
+ 1!2
3
+ 0!2
4
+ 1!2
5
40 = 0 + (2 (0 + 2 (0 + (2 (1 + 2 (0 + 2!1))))))
x
40
= x
0
( x
0
(x
0

(x
1
(x
0
(x
1
)
2
)
2
)
2
)
2
)
2

Calcolo di x
y
mod z y = y
0
2
0
+ y
1
2
1
+ +y
t
2
t

Idea: y = y
0
+2(y
1
+ +2(y
t-1
+2y
t
)))))
x
y
= x
y
0
( (x
y
t-1
(x
y
t
)
2
)
2
)
2

40
Elevazione a potenza modulare
Metodo left-to-right
Calcolo di x
y
mod z y = y
0
2
0
+ y
1
2
1
+ +y
t
2
t

Idea: y = y
0
+2(y
1
+ +2(y
t-1
+2y
t
)))))
x
y
= x
y
0
( (x
y
t-1
(x
y
t
)
2
)
2
)
2

Potenza_Modulare (x, y, z)
a " 1
for i = t downto 0 do
a " (a


a) mod z
if y
i
= 1 then a " (a

x) mod z
return a
Se y di 512 bit, occorrono ' 512 operazioni
Polinomiale nella lunghezza dellesponente
41
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 y
i
= 1 then a " (a

x) mod z
return a
3
40
mod 73=8
y
5
=1, y
4
=0, y
3
=1, y
2
=0, y
1
=0, y
0
=0
42
Elevazione a potenza modulare
Metodo right-to-left
Calcolo di x
y
mod z y = y
0
2
0
+ y
1
2
1
+ +y
t
2
t

Idea: x
y
= x
2
0
y
0
+2
1
y
1
+2
t
y
t


= x
2
0
y
0

! x
2
1
y
1

!

! x
2
t
y
t


= (x
2
0
)
y
0
! (x
2
1
)
y
1
! ! (x
2
t
)
y
t
43
Esempio: x
40



40 = 0!2
0
+ 0!2
1
+0!2
2
+ 1!2
3
+ 0!2
4
+ 1!2
5
x
40
= (x
1
)
0

! (x
2
)
0

! (x
4
)
0
! (x
8
)
1
! (x
16
)
0
! (x
32
)
1

Elevazione a potenza modulare
Metodo right-to-left
Calcolo di x
y
mod z y = y
0
2
0
+ y
1
2
1
+ +y
t
2
t

Idea: x
y
= (x
2
0
)
y
0
! (x
2
1
)
y
1
! ! (x
2
t
)
y
t
44
Esempio: x
40



40 = 0!2
0
+ 0!2
1
+0!2
2
+ 1!2
3
+ 0!2
4
+ 1!2
5
x
40
= (x
1
)
0

! (x
2
)
0

! (x
4
)
0
! (x
8
)
1
! (x
16
)
0
! (x
32
)
1

x
1



x
2



x
4


x
8


x
16


x
32



Elevazione a potenza modulare
Metodo right-to-left
Calcolo di x
y
mod z y = y
0
2
0
+ y
1
2
1
+ +y
t
2
t

Idea: x
y
= (x
2
0
)
y
0
! (x
2
1
)
y
1
! ! (x
2
t
)
y
t

=1 =1
=1
=1
45
Esempio: x
40



40 = 0!2
0
+ 0!2
1
+0!2
2
+ 1!2
3
+ 0!2
4
+ 1!2
5
x
40
= (x
1
)
0

! (x
2
)
0

! (x
4
)
0
! (x
8
)
1
! (x
16
)
0
! (x
32
)
1

x
40
=

x
8
! x
32

Elevazione a potenza modulare
Metodo right-to-left
Calcolo di x
y
mod z y = y
0
2
0
+ y
1
2
1
+ +y
t
2
t

Idea: x
y
= (x
2
0
)
y
0
! (x
2
1
)
y
1
! ! (x
2
t
)
y
t

=1 =1
=1
=1
46
Elevazione a potenza modulare
Metodo right-to-left
Potenza_Modulare (x, y, z)
if y = 0 then return 1
X " x; P " 1
if y
0
= 1 then P " x
for i = 1 to t do
X " X

X mod z
if y
i
=1 then P " P

X mod z
return P
5
596
mod 1234
i 0 1 2 3 4 5 6 7 8 9
yi 0 0 1 0 1 0 1 0 0 1
X 5 25 625 681 1011 369 421 779 947 925
P 1 1 625 625 67 67 1059 1059 1059 1013
Polinomiale nella
lunghezza
dellesponente
47
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 dellaritmetica
! Ogni intero composto n > 1 pu essere scritto in
modo unico come prodotto di potenze di primi

n = p
1
e1
p
2
e2
... p
k
ek


p
i
primo, ei intero positivo



48
Funzione di Eulero
! ((p) = p-1 se p primo
! ((pq) = (p-1)(q-1) se p,q primi
! ((n) =
((n) = cardinalit di Z
n
* (funzione di Eulero)
!
!
"
#
$
$
%
&
'
!
!
"
#
$
$
%
&
' (
!
!
"
#
$
$
%
&
' (
k 2 1
p
1
1
p
1
1
p
1
1 n !
se n = p
1
e1
p
2
e2
... p
k
ek
,
p
i
primo, ei > 0
Z
n
* = { [a]
n
, 0 < a " n-1 e gcd(a,n)=1 }
49
Teorema di Eulero
! Per ogni a ) Z
n
*
,

a
((n)
= 1 mod n
! Esempi:
! a=3, n=10, ((10)=4 " 3
4
= 81 = 1 mod 10
! a=2, n=11, ((11)=10 " 2
10
= 1024 = 1 mod 11
50
Teorema di Fermat
! Se p primo, per ogni a ) Z
p
*
,


a
p-1
= 1 mod p

! Se p primo, per ogni a ) Z
p
a
p
= a mod p
Esempi:
! a=7, p=19 " 7
18
= 1 mod 19
! a=10, p=5 " 10
5
= 10 mod 5 = 0 mod 5

51
1. Genera a caso un dispari p di grandezza appropriata
2. Testa se p primo
3. Se p composto, go to 1.
Generazione di un primo grande
52
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?

53
Distribuzione dei numeri primi
! *(x) = numero di primi in [2,x]
! Teorema dei numeri primi:
! Esempio: *(10
23
) = 1.925.320.391.606.803.968.923

(cio 2% in meno)


1
x x/ln
(x)
lim
!
x
=
! "
*(x) circa x/ln x
!(10
23
)
10
23
/ln10
23
!1,020
54
Distribuzione dei numeri primi
! *(x) = numero di primi in [2,x]
! Teorema dei numeri primi:
! Esistono limitazioni, ad esempio, per x>355.990


lim
x!"
!(x)
x/lnx
=1
*(x) circa x/ln x
x
lnx
1 +
1
lnx
!
"
#
$
%
& < !(x) <
x
lnx
1 +
1
lnx
+
2,51
lnx
( )
2
!
"
#
#
$
%
&
&
55
Scelta di un primo di 512 bit
Scelto un intero in [2,2
512
] la probabilit che sia primo
circa 1 su ln 2
512
(ln 2
512
' 354,89)
! Numero medio di tentativi ' 354,89
! Se si scelgono solo dispari, numero medio di tentativi ' 177,44
! Se si scelgono dispari in [2
511
,2
512
] la probabilit



79 , 177
1
2 2
1
2 ln
2
2 ln
2
511 511
511
512
512
) ( ! ! "
1 1
510 bit scelti a caso
56
Scelta di un primo di 1024 bit
Scelto un intero in [2,2
1024
] la probabilit che sia
primo circa 1 su ln 2
1024
(ln 2
1024
' 709,78)
! Numero medio di tentativi ' 709,78
! Se si scelgono solo dispari, numero medio di tentativi ' 354,89
! Se si scelgono dispari in [2
1023
,2
1024
] probabilit



23 , 355
1
2 2
1
2 ln
2
2 ln
2
1023 1023
1023
1024
1024
) ( ! ! "
1 1
1022 bit scelti a caso
57
Test di Primalit
Due tipi di test:
! Probabilistici
! Deterministici
58
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

Test Primalit
p primo
composto
Certamente!
Probabilmente!
59
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
Scelgo a
60
Test di primalit
probabilistici
Test di Solovay-Strassen
! Probabilit di errore + (1/2)
t

Test di Miller-Rabin
! Il pi usato in pratica
! Il pi veloce
! Probabilit di errore + (1/4)
t


!Gary Miller, deterministico, basato
su Riemann hypotesis [1976]
!Michel Rabin, modificato in
probabilistico [1980]
!Robert M. Solovay e
Volker Strassen [1977]
61
Test di Miller-Rabin
! Sia p il numero da testare
! p-1 = 2
k
q, con q dispari e k>0
! Scegli a)[1, p-1] e calcola a
q
, a
2q
, ,a
2
k
q
(quadrati ripetuti)
! Se p primo, a
2
k
q
= 1 mod p (teorema di Fermat)
! Sia j il pi piccolo indice per cui a
2
j
q
= 1 mod p
!Se j=0, allora a
q
= 1 mod p
!Se j>0, allora (a
2
j-1
q
-1)(a
2
j-1
q
+1) mod p =0
!p divide uno dei due fattori
!p non pu dividere il primo, altrimenti j non il pi piccolo
valore per cui a
2
j
q
= 1 mod p
!p divide il secondo fattore, da cui a
2
j-1
q
= -1 mod p

62
Test di Miller-Rabin
! Data la sequenza a
q
, a
2q
, , a
2
k
q
se p
primo una delle due condizioni vera:
! a
q
= 1 mod p
! a
2
j-1
q
= -1 mod p per qualche j )[1, k]

! Altrimenti p composto

63
Test di Miller-Rabin
Test Miller-Rabin (p)
! calcola k>0 e q dispari: p-1=2
k
q
! scegli a caso a)[1, p-1]
! if a
q
=1 mod p, then return primo
! for j=0 to k-1 do
! if a
2
j
q
= -1 mod p, then return primo
! return composto

Running time:
Polinomiale nella lunghezza dellinput
64
Insieme di witness di Miller-Rabin
W
MR
(p) = {a : a
q
, 1 mod p and
a
2
j
q
, -1 mod p per ogni j)[0,k-1]}
! Se p un primo dispari
W
MR
(p) vuoto
! Se p un numero composto dispari
| W
MR
(p) | ! (3/4)

((p)
p-1 = 2
k
q con q dispari
Test di Miller-Rabin
65
Test di Miller-Rabin p=29
Witness di Miller-Rabin
W
MR
(29) = {a : a
7
, 1 mod 29 and
a
2
j
7
, -1 mod 29 per ogni j)[0,1]}
! a=10
! 10
7
mod 29 = 17 (continua)
! (10
7
)
2
mod 29 = 28 = -1 mod 29 (stop: primo)
! a=2
! 2
7
mod 29 = 12 (continua)
! (2
7
)
2
mod 29 = 28 = -1 mod 29 (stop: primo)
! Prova per tutti gli a ) [1,28]: sempre output primo
29-1 = 2
2


7
66
Test di Miller-Rabin p=221
Witness di Miller-Rabin
W
MR
(221) = {a : a
55
, 1 mod 221 and
a
2
j
55
, -1 mod 221 per ogni j)[0,1]}
! a=5
! 5
55
mod 221 = 112 (continua)
! (5
55
)
2
mod 221 = 168 (valori terminati, stop: composto)
! a=21
! 21
55
mod 221 = 220 = -1 mod 221 (stop: primo)
! Per ogni a ) {1,,220}/ W
MR
(221), output: primo
! a = 1, 21, 47, 174, 200, 220
221-1 = 2
2


55
67
Test di primalit
deterministici
! Fino al 2002, non erano noti test deterministici
efficienti (polinomiali)
! Test deterministico AKS O(log
12+%
n)
M. Agrawal, N. Kayal e N. Saxena,
"PRIMES is in P
! Miller-Rabin ancora usato perch pi efficiente
68
Bibliografia
! Cryptography and Network Security
by W. Stallings, 2010
! cap. 4 (Finite Fields)
! cap. 8 (Introduction to Number Theory)
! Introduction to Algorithms
by Cormen, Leiserson, Rivest (I ed)
! cap 31 (Number Theory)


Domande?
69

Potrebbero piacerti anche