testes de primalidade - unicamp...motivação • teste de primalidade: algoritmo que verifica se um...

21
Testes de Primalidade Apresentação Preliminar A17 José Afonso B. Pinto IA012 1S/2013 FEEC UNICAMP

Upload: others

Post on 08-Jul-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Testes de Primalidade - Unicamp...Motivação • Teste de Primalidade: algoritmo que verifica se um número inteiro dado é primo (ou composto) • Números primos são usadospor

Testes de Primalidad

eApresentação Prelim

inar A17

José Afonso B. P

into

IA0121S/2013

FEEC

 ­UNICAMP 

Page 2: Testes de Primalidade - Unicamp...Motivação • Teste de Primalidade: algoritmo que verifica se um número inteiro dado é primo (ou composto) • Números primos são usadospor

Age

nda

•Motivação de Testes dePrimalidad

e

•Quan

tidad

ee Distribuição

 dos Números Primos

•Algoritm

o de Miller­Rab

in

•Biblio

grafia

•Exercícios

Page 3: Testes de Primalidade - Unicamp...Motivação • Teste de Primalidade: algoritmo que verifica se um número inteiro dado é primo (ou composto) • Números primos são usadospor

Motiva

ção

•Teste de Primalidad

e: a

lgoritm

o que ve

rifica se 

um número in

teiro dad

o é primo (ou composto)

•Números primos são usadospor várias primitivas 

criptográficas

–Po

r exem

plo, n

a ge

ração de ch

aves RSA

•Primos úteis em criptografia:

–No m

ínim

o com cen

tenas ou m

ilhares de bits

•Geração

 de Primos para Criptografia:

–Gera­se um número aleatório de Nbits até que o 

número gerad

o seja co

nsiderad

o primo

Page 4: Testes de Primalidade - Unicamp...Motivação • Teste de Primalidade: algoritmo que verifica se um número inteiro dado é primo (ou composto) • Números primos são usadospor

Números Primos & Criptografia

Aplicações de criptografia precisam de muitos 

números primos

•Ex

istem primos suficien

tes?

•Dev

o m

e preocu

par com a possibilidad

e de 

estar usando o m

esmo número primo que o 

meu

 vizinho?

Schneier

(1996)

Page 5: Testes de Primalidade - Unicamp...Motivação • Teste de Primalidade: algoritmo que verifica se um número inteiro dado é primo (ou composto) • Números primos são usadospor

Quan

tidad

ee Distribuição

 deNúmeros 

Primos

•Ex

istem in

finitos números primos

•Teorema dos Números Primos:

–Pa

ra um in

teiro n grande o suficien

te,  o número de 

primos ≤ ntende a ser n / ln

n

•Na proximidad

e de um

número in

teiro n, e

xiste, 

em m

édia, u

m primo para cada ln

n in

teiros

Page 6: Testes de Primalidade - Unicamp...Motivação • Teste de Primalidade: algoritmo que verifica se um número inteiro dado é primo (ou composto) • Números primos são usadospor

Exem

plo daQuan

tidad

ede Números 

Primos

•Número de primosco

m até 512 bits: 2

512  / ln

2512≈ 

10151

•Existem no universo ≈1080  átomos

•A idade do universo é de ≈1010an

os

•Se

 fossem

 necessários para cada átomo1 bilh

ão de

primos a cada μs, então desde o Big­Ban

gaté ag

ora 

precisar­se­iam

 de ≈10113primos Adap

tado de Schneier

(1996)

Page 7: Testes de Primalidade - Unicamp...Motivação • Teste de Primalidade: algoritmo que verifica se um número inteiro dado é primo (ou composto) • Números primos são usadospor

Exem

plo daQuan

tidad

ede Números 

Primos

•Como 10151  >> 10113, ainda restariam ≈10151

primos não

 usados

•Po

rtan

to a probab

ilidad

e de vo

cê e seu

 vizinho estarem

 usando o m

esmo primo é 

muito peq

uen

a

Adap

tado de Schneier

(1996)

Page 8: Testes de Primalidade - Unicamp...Motivação • Teste de Primalidade: algoritmo que verifica se um número inteiro dado é primo (ou composto) • Números primos são usadospor

Algoritm

o de Miller­Rab

in

•Teste dePrimalidad

emuito eficien

te, p

opular

–Complexidad

e polin

omial

–Muito m

ais eficiente do que fatoração

•Verifica se um dad

o número in

teiro satisfaz 2 

propried

ades nec

essárias, m

as não

 suficien

tes,

para que um número seja primo

•Algoritm

o Probab

ilístico

–Probab

ilidad

ede tomar um número composto por 

primo < 25%

Page 9: Testes de Primalidade - Unicamp...Motivação • Teste de Primalidade: algoritmo que verifica se um número inteiro dado é primo (ou composto) • Números primos são usadospor

Algoritm

o de Miller­Rab

inPropried

ade #1

•Se

 

pé primo, e

,

aé um in

teiro positivo

, a< p

•En

tão a

2modp= 1 se e somen

te se:

amodp= 1, o

u,

amodp= ­1 m

odp= p–1

Page 10: Testes de Primalidade - Unicamp...Motivação • Teste de Primalidade: algoritmo que verifica se um número inteiro dado é primo (ou composto) • Números primos são usadospor

Algoritm

o de Miller­Rab

inDem

onstração da Propried

ade #1

1)Se

 a2modp= 1

2)E co

mo a

2modp= (a

modp)(a

modp) 

3)(1), (2) 

(amodp) (a

modp) = 1 

Sendo que (3) é ve

rdad

eira se e somen

te se:

amodp= 1, p

ois 1 x 1 = 1, o

u,

amodp= ­1, p

ois ­1 x ­1 = 1 

Page 11: Testes de Primalidade - Unicamp...Motivação • Teste de Primalidade: algoritmo que verifica se um número inteiro dado é primo (ou composto) • Números primos são usadospor

Algoritm

o de Miller­Rab

inPropried

ade #2

•Se

 pprimo ≥ 3, p

–1 = 2

k q, k

> 0, q

ímpar

•E ainteiro, 1

 < a

< p–1, e

ntão uma das 

condições abaixo

 é verdad

eira:

a)aqmodp= 1, o

u,

b)jinteiro, 1

 ≤j≤ k|a

j­1= ­1 m

odp= p–1 

Page 12: Testes de Primalidade - Unicamp...Motivação • Teste de Primalidade: algoritmo que verifica se um número inteiro dado é primo (ou composto) • Números primos são usadospor

Algoritm

o de Miller­Rab

inDem

onstração da Propried

ade #2

1)pprimo ≥ 3, p

–1 = 2

k q, k

> 0, q

ímpar 

2)Teorema de Fe

rmat: p

primo, a

inteiro > 0, p

não

 divide a

ap­1modp= 1           

3)ainteiro, 1

 < a

< p–1,satifaz

(2) pois p

não

 divide a

4)Dad

o (3) e subst. (1) em

 (2):

a2k qmodp= 1 

Page 13: Testes de Primalidade - Unicamp...Motivação • Teste de Primalidade: algoritmo que verifica se um número inteiro dado é primo (ou composto) • Números primos são usadospor

Algoritm

o de Miller­Rab

inDem

onstração Propried

ade#2

 (co

nt.)

•Dad

a a sequên

cia:

aqmodp, a

2qmodp , a

4qmodp, ..., a

2k­1qmodp , a

2k qmodp

•Cad

a elem

ento da sequên

cia acim

a é o 

quad

rado do elemen

to anterior

•(4) 

o últim

o elemen

to da sequên

cia é 1

Page 14: Testes de Primalidade - Unicamp...Motivação • Teste de Primalidade: algoritmo que verifica se um número inteiro dado é primo (ou composto) • Números primos são usadospor

Algoritm

o de Miller­Rab

inDem

onstração da Propried

ade #2

 (co

nt.)

Então uma das possibilidad

esab

aixo

 tem

 que ser 

verdad

eira:

a)Não

 só o últim

o m

as todos os elem

entos da 

sequên

cia são 1 

aqmodp= 1, o

u,

b)Algum dos elem

entos1, e

xceto o últim

o, m

as 

seu quad

rado m

odp é

1, e

,pela propried

ade 

#1, e

sse elem

ento só pode ser­1 m

odp=p–1 

Page 15: Testes de Primalidade - Unicamp...Motivação • Teste de Primalidade: algoritmo que verifica se um número inteiro dado é primo (ou composto) • Números primos são usadospor

Pseudocó

digo do 

Algoritm

o de Miller­Rab

in

•Miller­Rab

in(n):

–En

trad

a: ninteiro, ímpar ≥ 3

–Sa

ída: composto ou in

conclusivo

 (provave

lmen

te 

primo)

1. A

che os inteiros k> 0, q

ímpar |

n–1 = 2

k q

2. S

elec

ione um in

teiro aleatório a, 1

 < a

< n–1

3. S

e aqmodn= 1 então retorne(inco

nclusivo

)

4. R

epita o passo 5 abaixo

 para j=

 0, ..., k–1

5.  Se

 a2j qmodn = n–1 então retorne(inco

nclusivo

)

6. R

etorne(co

mposto)

Page 16: Testes de Primalidade - Unicamp...Motivação • Teste de Primalidade: algoritmo que verifica se um número inteiro dado é primo (ou composto) • Números primos são usadospor

Algoritm

o de Miller­Rab

inExem

plo #1

Miller­Rab

in(n

= 29):

•n–1 = 28 = 2(14) = 22(7) = 2k q

 k= 2, q

= 7

•a= 10, a

qmodn= 107mod29 = 17 

•17 

1, e

 17 

n –

1 = 28

•j=

 1, a

2j qmodp = 102(7)mod29 = 28

•28 = n–1

•En

tão 29 é provave

lmen

te (> 75%) primo

Page 17: Testes de Primalidade - Unicamp...Motivação • Teste de Primalidade: algoritmo que verifica se um número inteiro dado é primo (ou composto) • Números primos são usadospor

Algoritm

o de Miller­Rab

inExem

plo #2

Miller­Rab

in(n

= 221):

•n–1 = 220= 2(110) = 22(55) = 2k q

 k= 2, q

= 55

•a= 5, a

qmodn= 555mod221= 112 

•112 

1, e

 112 

n –

1 = 220

•j=

 1, a

2j qmodp = 5

2(55)mod221= 168

•168 

n–1 = 220

•En

tão 221 é composto

Page 18: Testes de Primalidade - Unicamp...Motivação • Teste de Primalidade: algoritmo que verifica se um número inteiro dado é primo (ou composto) • Números primos são usadospor

Seleção de Número Aleatório Primo 

usandoo Algoritm

o de Miller­Rab

in

•Miller­Rab

in é um algoritm

o probab

ilístico

–Probab

ilidad

e de tomar um número composto por primo < 

25% = 4

­1

•Pa

ra aumentar a certeza de que um número é primo 

exec

uta­se o algoritm

o várias ve

zes para valores 

diferen

tes do in

teiro aleatório a

•Se

 para um dad

o in

teiro n

o algoritm

o retornar 

inco

nclusivo

 para um número tde valores alea

tórios 

dea, e

ntão n

é primo com uma probab

ilidad

e> 1 –

4­t

Page 19: Testes de Primalidade - Unicamp...Motivação • Teste de Primalidade: algoritmo que verifica se um número inteiro dado é primo (ou composto) • Números primos são usadospor

Seleção de Número Aleatório Primo 

usandoo Algoritm

o de Miller­Rab

in

Miller­

Rab

in(n,a) 

= co

mposto

?

Selecionen≥ 3 

alea

tório, com dad

número de bits

trepetições 

já 

exec

utadas 

para n?

Defina número de

repetições

t ≥ 1

Selecioneaalea

tório,

1 < a

< n­1 

P(n

é primo) > 1 ­4­t

VF

V

F

Page 20: Testes de Primalidade - Unicamp...Motivação • Teste de Primalidade: algoritmo que verifica se um número inteiro dado é primo (ou composto) • Números primos são usadospor

Seleção de Número Aleatório Primo 

•Teorema dos Números Primos: para ninteiro, 

grande o suficiente, o número de primos ≤ n

tende a ser n/ ln

n

•em

 méd

ia um primo a cad

a ln

ninteiros na 

proximidad

e de n

•Se

 testarm

os somen

te números ím

pares, e

ntão o 

número m

édio de testes para se enco

ntrar um 

primo próximo de né de (lnn) / 2

Page 21: Testes de Primalidade - Unicamp...Motivação • Teste de Primalidade: algoritmo que verifica se um número inteiro dado é primo (ou composto) • Números primos são usadospor

Biblio

grafia

•Fe

rguson, N

.,Schneier, B

., e Kohno, T. 

Cry

pto

gra

phy

Enginee

ring: D

esign Principlesand

Pra

cticalA

pplic

ations. In

dianap

olis, E

.U.A.: W

iley

Publishing, In

c., 2

010

•Men

ezes, A

. , van

 Oorsch

ot, P. , Van

stonc, S. 

HandbookofApplie

dCry

pto

gra

phy

. E.U.A: C

RC 

Press, 1

996

•Schneier, B

. Applie

dCry

pto

gra

phy

: Pro

toco

ls, 

Algorith

msandSo

urce Codein C. N

ewYo

rk, 

E.U.A.: John W

iley& Sons Publishing, In

c., 1

996

•Stallin

gs, W

. Cry

pto

gra

phy

andNet

work

Secu

rity

: PrinciplesandPra

ctice. E.U.A: P

rentice

Hall, 2011