29
Primalità e Fattorizzazione Dipartimento di Informatica, Sistemistica e Comunicazione Università degli Studi di Milano – Bicocca Alberto Leporati e-mail: [email protected] [email protected] Crittografia Corso di Laurea Specialistica in Informatica

Crittografia in Informatica - bio.disco.unimib.itleporati/crittografia/Primalit%E0%20e%20... · Primalitàe Fattorizzazione Dipartimento di Informatica, Sistemistica e Comunic azione

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:

[email protected]

[email protected]

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

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)/

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

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

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+

…Ø

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

Alberto Leporati

Corso di Crittografia

29

Num

ber field sieve

Elliptic cu

rve

Qua

dra

tic sieve

()

nn

oe

Oln

lnln

))1(

1(+

()

pp

oe

Oln

lnln

2))

1(1(+

()

3/

23

/1

)ln

(ln

)))

(ln

1(9

2.

1(n

no

eO

+

Algoritm

i usati attualm

ente