Upload
duongkhanh
View
220
Download
0
Embed Size (px)
Citation preview
Primalitàe Fattorizzazione
Dip
arti
men
to d
i In
form
atic
a, S
iste
mis
tica
e C
om
unic
azio
ne
Univ
ersi
tàdeg
li S
tudi
di
Mil
ano –
Bic
occ
a
Alberto Leporati
e-m
ail:
Crittografia
—Corso di Laurea Specialistica —
—in Inform
atica —
Alberto Leporati
Corso di Crittografia
2
�per RSA, ènecessario generare numeri
primimoltograndi
�problema: testare se un numero intero
n ¥
2èprimooppure composto, in tempo
polinomialerispetto a l
og
2n
�esistono molti algoritmi:
�Solovay-Strassen, Miller-Rabin, …(algoritmi
probabilistici)
�AKS (del 2002) èun algoritmo deterministico
Test di primalità
Alberto Leporati
Corso di Crittografia
3
�un algoritmo probabilistico può sbagliare
con probabilità
p; tuttavia, se eseguiamo
mprove indipendentila probabilitàdi
sbagliare diventa 1
/pm
�quindi, si sparaa casoun numero e si testa
se èprimo
�quanti tentatividovremo fare in media?
�teorema dei numeri primi: un numero intero
ncompreso tra
1ed �
ha probabilità
1/l
n�
di essere primo
Test di primalità
Alberto Leporati
Corso di Crittografia
4
�esempio: un numero di 512 bit ha
probabilità
1/l
n2
512@
1/3
55di essere primo
Ødopo circa 355 tentativi, si trova un
numero primo
�osservazione: fattorizzareun intero
sembra essere molto piùdifficileche
determinare se èprimo o composto
Øpossiamo determinare che un numero è
composto, senza
conoscerne i fattori
primi
Test di primalità
Alberto Leporati
Corso di Crittografia
5
�si conoscono molti criteridel tipo:
se C
(x)èvero, allora xècomposto
�tuttavia, se C
(x)èfalso, xpotrebbe essere sia
primo che composto
� ���
�la preimmaginedi “vero”èun sottoinsieme proprio
dei numeri composti
primi
C(x) = falso
C(x) = vero
x
Test di primalità
Alberto Leporati
Corso di Crittografia
6
�si possono applicare piùcriteriin sequenza
�tuttavia, non si conosce
un insieme di
criteri che dia esattamentel’insieme dei
numeri composti
�pertanto, il meglio
che possiamo fare è
applicarli tutti, e considerare primo un
numero che li rende tuttifalsi
Øpiùcriteri usiamo, piùèbassa la
probabilitàdi sbagliare
Test di primalità
Alberto Leporati
Corso di Crittografia
7
�si basa sul teorema di Eulero(piccolo teorema di
Fermat)
�sia
mun intero dispari, e
wun intero tale che
MC
D(w
, m
) =
1
�se m
èprimo, allora w
m-1ª
1 m
od
m
�diciamo che
wèun testimoneper la primalitàdi m
�se m
ècomposto, èpoco probabile
che la
congruenza valga
�se vale, diciamo che
mèuno pseudoprimorispetto a w
�in tal caso, w
èun falso testimoneper la primalitàdi m
Criterio di Eulero
Alberto Leporati
Corso di Crittografia
8
�definiamo il criterio:
C(x
) =
verose e solo se
wx-
1T
1 m
od
x
per qualche
wtale che
MC
D(w
, x)
= 1
�teorema(Salomaa, pag. 138): tuttioppure
al piùmetàdegli interi w
tali che
1§
w <
m
e M
CD
(w,
m)
= 1sono testimoni per la
primalitàdi
m
�possiamo allora agire come segue:
�dato m, scegliamo a caso w
tale che
1 §
w <
m
Criterio di Eulero
Alberto Leporati
Corso di Crittografia
9
�se M
CD
(w, m
) >
1, allora m
ècomposto
�se M
CD
(w, m
) =
1, calcoliamo
u =
wm
-1m
od
m
�se u
∫1, allora m
ècomposto, altrimenti w
èun
testimoneper la primalitàdi m
�per il teorema, se abbiamo trovato
ktestimoni la probabilitàche
msia composto
è§
1/2
k , a meno chetutti i
wtali che
1 §
w
< m
e M
CD
(w,
m)
= 1siano testimoni
�in tal caso, m
può ancora essere composto
�numeri di Carmichael(però sono molto rari)
Criterio di Eulero
Alberto Leporati
Corso di Crittografia
10
�èun altro test del tipo:
se C
(x)èvero, allora xècomposto
�se C
(x)èfalso, la probabilitàche
xsia primo è
< 1
/2
�a œ
�p*èun residuo quadraticomodulo
pse
a T
0 m
od
pe la congruenza
y2ª
a m
od
pammette soluzione
�se yèuna soluzione, l’unica altra soluzione
è–
y m
od
p =
p –
y
�se a
T0 m
od
pe la congruenza
y2ª
a m
od
pnon
ha soluzione, si dice che
aèun non residuo
quadraticomodulo
p
Test di Solovay-Strassen
Alberto Leporati
Corso di Crittografia
11
�determinarese aèun residuo quadratico
modulo
ppuò essere fatto in tempo
polinomiale(rispetto a
log
2p) usando
l’algoritmo square-and-multiply, grazie al
criterio di Eulero
�teorema(criterio di Eulero): sia
p ∫
2primo. Un intero aèun residuo quadratico
modulo
pse e solo se:
a(p
-1)/
2ª
1
mo
dp
Test di Solovay-Strassen
Alberto Leporati
Corso di Crittografia
12
�sia
p ∫
2primo, e a un intero. Il simbolo di
Legendre
(a/p
)èdefinito come segue:
−
≡
=
pa
pa
pa
pa
m
od
r.
q.
non
u
n
è se
1
m
od
r.
q.
un
è
se1
mod
0se
0
�teorema(Stinson, pag. 175): sia p
∫2primo.
Allora:
(a/p
) =
a(p
-1)/
2m
od
p
Test di Solovay-Strassen
Alberto Leporati
Corso di Crittografia
13
�sia
nun intero positivo dispari, la cui
fattorizzazione è:
∏ =
=k i
e ii
pn
1 ∏ =
=
k ii
ie
pa
na
1
�sia a un intero. Il simbolo di Jacobi(a
/n)è
definito come segue:
�osservazione: se nèprimo, (
a/n
) ª
a(n
-1)/
2m
od
n
Test di Solovay-Strassen
Alberto Leporati
Corso di Crittografia
14
�se nècomposto, la congruenza può valere
oppure no. Se vale,
nèuno pseudo-primo di
Eulerorispetto ad a
�se nècomposto, allora può essere pseudo-
primo rispetto al piùmetàdegli
a œ
�p*
�vale (
a/n
) =
0se e solo se M
CD
(a, n
) >
1
(quindi
nècomposto)
Test di Solovay-Strassen
Alberto Leporati
Corso di Crittografia
15
Solovay-Strassen(n)
if n mod 2 = 0 then return “n ècomposto”
a ≠R{1, 2, …, n-1}
x = (a/n)
if x = 0 then return “n ècomposto”
y = a(n-1)/2mod n
if x ªy mod n
then return “n èprimo”
else return “n ècomposto”
�resta da calcolare
(a/n
)in modo efficiente
Test di Solovay-Strassen
Alberto Leporati
Corso di Crittografia
16
�lo si può fare grazie alle seguenti regole:
�se m
1ª
m2
mo
dn, allora (
m1/n
) =
(m
2/n
)
Øci si può sempre ridurre ad a
< n
� � �
±
≡−
±≡
=
8
mo
d3
se
1
8m
od
1
se1
2
nn
n
≡≡
−=
altr
imen
ti
4m
od
3
se
mn
nm
mn
nm
=
nm
nm
nmm
21
21
Calcolo di (a/n)
Alberto Leporati
Corso di Crittografia
17
2 p
rop
riet
à
lap
er
1
1 p
rop
riet
à
lap
er
52
4 p
rop
riet
à
lap
er
5
11
7
2 p
rop
riet
à
lap
er
11
75
3 p
rop
riet
à
lap
er
1
175
11
72
1 p
rop
riet
à
lap
er
1
17
40
4 p
rop
riet
à
lap
er
11
7
74
11
2 p
rop
riet
à
lap
er
7
41
1
11
7
3 p
rop
riet
à
lap
er
7
41
1
11
7
74
11
2
1 p
rop
riet
à
lap
er
74
11
18
72
4 p
rop
riet
à
lap
er
7
41
1
92
83
92
83
74
11
3
4
−=
=
=
=
−
=
−
=
−
=
=
−
=
−
=
−
=
basta applicare in
sequenzale
proprietà4, 1, 3, 2
Calcolo di (a/n): esempio
Alberto Leporati
Corso di Crittografia
18
�èun altro test del tipo:
se C
(x)èvero, allora xècomposto
�èpiùefficientedel test di Solovay-
Strassen: se
C(x
)èfalso, la probabilità
che
xsia primo è< ¼
�per la correttezzadell’algoritmo, si veda
[ Stinson, pag. 180]
Test di Miller-Rabin
Alberto Leporati
Corso di Crittografia
19
Miller-Rabin(n)
sia n-1 = 2k m, con m dispari
a ≠R{1, 2, …, n-1}
b = ammod n
if b ª1 mod n then return “n èprimo”
for i = 0 to k –1
do if b ª-1 mod n
then return “n èprimo”
else b = b2mod n
return “n ècomposto”
Test di Miller-Rabin
Alberto Leporati
Corso di Crittografia
20
�come abbiamo visto, scomporre un intero
nin
fattori primi èconsiderato difficile
�facendo alcune ipotesi, esistono algoritmi che
fattorizzano nsenzaprovare a dividere per tutti
i numeri compresi tra
1e
�algoritmo
p-1
di Pollard
�algoritmo ρdi Pollard
�molti altri…
�nel caso generale, tutti questi algoritmi hanno
tempo di esecuzione esponenziale
Algoritm
i di fattorizzazione
n
Alberto Leporati
Corso di Crittografia
21
�pubblicato nel 1974
�supponiamoche
p|ne
pèprimo
�inoltre, supponiamoche se qèla potenza di un
primo che divide
p-1, allora q
§B, dove
Bèun
limite superiore prefissato Ø
(p-1
) |
B!
�per il piccolo teorema di Fermat, vale:
2p
-1ª
1 m
od
p
�dato che
(p-1
) |
B!, allora:
2B
!ª
1
mod
pda cui
p |
(2
B!–
1)
�allora p
| d
= M
CD
(2B
!–
1, n), e dsaràun divisore
non banaledi n, a meno che
2B
!–
1 =
1
Algoritm
o p-1
di Pollard
Alberto Leporati
Corso di Crittografia
22
Pollard p-1(n, B)
@calcola a = 2B! mod n
for j = 2 to B do a = aj
mod n
d = MCD(a-1, n)
if 1 < d < n
then return d
else return “fallimento”
�tempo di esecuzione:
O(B
log
2B
(log
2n)2
+(l
og
2n)3
)
Algoritm
o p-1
di Pollard
Alberto Leporati
Corso di Crittografia
23
�se B
= O
((lo
g2n)i ), l’algoritmo èpolinomialema ha
pochechance di successo
�se B
@, l’algoritmo risponde correttamente,
ma ha tempo di esecuzione esponenziale
�l’algoritmo funziona benesolo se
nèdivisibile per
un primo
ptale che
p-1ha fattori piccoli
�in RSA, èfacileevitare questo caso: basta
scegliere p
1, q
1grandi tali che
p =
2p
1+
1e
q =
2q
1+
1sono primi (strong primes), e porre
n =
pÿq
n
Algoritm
o p-1
di Pollard
Alberto Leporati
Corso di Crittografia
24
�sia
pil piùpiccolo divisore primo di
n�supponiamo di trovare
x, x
’œ�
n tali che
x ∫
x’e
x ª
x’m
od
p
�allora p
§M
CD
(x –
x’,
n)
< n, e quindi otteniamo
un divisore non banaledi ncalcolando
MC
D(x
–x’
, n)
�l’algoritmo ρdi Pollard trova xe
x’
�definisce f
(x)
= x
2+
a, dove
aèuna costante
piccola (es: a
= 1)
�parte da
x 1œ�
nscelto a caso, e costruisce la
sequenza
x 1,
x 2,
x 3, …
,dove:
x j=
f(x
j-1)
mod
n
Algoritm
o ρ ρρρ
di Pollard
Alberto Leporati
Corso di Crittografia
25
�si tratterebbe di trovare
x i∫
x j, con
i <
j, tali che
MC
D(x
i–
x j,
n)
> 1
�si dimostrache se x
iª
x jm
od
pallora f
(xi)
ªf(
x j)
mod
p Ø"δ¥
0,
x i
+δª
x j+δ
mod
p
�costruito un grafoi cui vertici sono in �
p, e i lati
vanno da
x ia
x i+
1, abbiamo una coda iniziale:
x 1Ø
x 2Ø
…Ø
x iseguita da un ciclo:
x iØ
x i+
1Ø
…Ø
x jª
x i�l’algoritmo risulta piùsemplice se poniamo
j =
2i
Algoritm
o ρ ρρρ
di Pollard
Alberto Leporati
Corso di Crittografia
26
Pollard Rho(n, x1)
x = x1
x’= f(x) mod n
p = MCD(x –x’, n)
while p = 1
do @all’i-esima iterazione,
@x = xie x’= x2i
x = f(x) mod n
x’= f(x’) mod n
x’= f(x’) mod n
p = MCD(x –x’, n)
if p = n
then return “fallimento”
else return p
x 1
x 2x i ª
x jx i+
1 x j-1
Algoritm
o ρ ρρρ
di Pollard
Alberto Leporati
Corso di Crittografia
27
�il numero mediodi iterazioni richieste per trovare
pèal più
�dato che
p <
, la complessitàdell’algoritmo è
O(n
1/4
)
�esempio:
n =
15770708441, x
1=
1, f
(x)
= x
2+
1
Allora:
x 422
= 2
261992698
x 211
= 7
149213937
MC
D(x
422
–x 2
11, n)
= 1
35979
Algoritm
o ρ ρρρ
di Pollard
p
n
Alberto Leporati
Corso di Crittografia
28
�quadratic sieve(Carl Pomerance, fine anni ’80)
�elliptic curve(Ariel Lenstra, metàanni ’80):
versione modificata dell’algoritmo p-1 di Pollard,
applicato sui punti di curve ellittiche
�number field sieve(A. Lenstra e H. Lenstra,
1990): èl’algoritmo usato attualmente
�nel 2000, number field sieveèstato usato per
fattorizzare un modulo di RSA di 155 cifre
(= 512 bit), usando circa 300 computer in parallelo
(su Internet)
Algoritm
i usati attualm
ente