Você está na página 1de 75

Universidade de Braslia

Instituto de Cincias Exatas

Departamento de Cincia da Computao

Implementao Eciente de Algoritmos para Teste de


Primalidade

Bruno Cesar Dias Ribeiro

Braslia
2013

Universidade de Braslia
Instituto de Cincias Exatas

Departamento de Cincia da Computao

Implementao Eciente de Algoritmos para Teste de


Primalidade

Bruno Cesar Dias Ribeiro

Monograa apresentada como requisito parcial


para concluso do Bacharelado em Cincia da Computao

Orientador
Prof. Dr. Diego de Freitas Aranha

Braslia
2013

Universidade de Braslia  UnB


Instituto de Cincias Exatas
Departamento de Cincia da Computao
Bacharelado em Cincia da Computao

Coordenador: Prof.

Dr.

Maristela Terto de Holanda

Banca examinadora composta por:


Prof. Dr. Diego de Freitas Aranha (Orientador)  CIC/UnB
Prof. Joo Jos Costa Gondim  CIC/UnB
Prof. Pedro Antnio Dourado de Rezende  CIC/UnB

CIP  Catalogao Internacional na Publicao


Ribeiro, Bruno Cesar Dias.

Implementao Eciente de Algoritmos para Teste de Primalidade /


Bruno Cesar Dias Ribeiro. Braslia : UnB, 2013.
143 p. : il. ; 29,5 cm.

Monograa (Graduao)  Universidade de Braslia, Braslia, 2013.

1. criptograa assimtrica, 2. primalidade, 3. chaves criptogrcas


CDU 004.4

Endereo:

Universidade de Braslia
Campus Universitrio Darcy Ribeiro  Asa Norte
CEP 70910-900
BrasliaDF  Brasil

Universidade de Braslia
Instituto de Cincias Exatas

Departamento de Cincia da Computao

Implementao Eciente de Algoritmos para Teste de


Primalidade

Bruno Cesar Dias Ribeiro

Monograa apresentada como requisito parcial


para concluso do Bacharelado em Cincia da Computao

Prof. Dr. Diego de Freitas Aranha (Orientador)


CIC/UnB

Prof. Joo Jos Costa Gondim

Prof. Pedro Antnio Dourado de Rezende

CIC/UnB

CIC/UnB

Prof.

Dr.

Maristela Terto de Holanda

Coordenador do Bacharelado em Cincia da Computao

Braslia, 22 de Julho de 2013

Agradecimentos
Aos meus pais e irmos, que nunca pouparam esforos para me apoiar e orientar
em todo caminho que decidi seguir. s Professoras Carla Koike, Fernanda Lima, Carla
Castanho e a amigos por acreditarem em minha competncia.

Aos Professores Pedro

Antnio Dourado de Rezende e Diego de Freitas Aranha, cujo conhecimento e entusiasmo


foram denitivos para despertar curiosidade por uma rea fascinante.

Resumo
O desenvolvimento da criptograa, em especial a criptograa de chave assimtrica, foi
fator determinante para o crescimento e popularizao das redes de computadores. Foi responsvel pela viabilizao de demandas como comrcio e correio eletrnicos, assinaturas e
certicaes digitais. O uso adequado de tcnicas criptogrcas requer o desenvolvimento
de aplicaes ecientes que sejam capazes de executar em diversos tipos de dispositivos
que cada vez mais se incorporam vida das pessoas. A gerao de chaves criptogrcas
uma operao no s crtica quanto segurana, mas tambm de alto custo computacional. Este trabalho tem o intuito de estudar sistemas criptogrcos, conceitos tericos
e teste de primalidade, elemento que compe o ncleo do processo de gerao de chaves.
dado enfoque na implementao, otimizao e anlise de desempenho do Teste de Frobenius Quadrtico Simplicado, um teste de primalidade de 2005 e pouco explorado. Os
resultados atingidos so positivos quanto viabilidade da reduo do custo computacional
dessas operaes.

Palavras-chave: criptograa assimtrica, primalidade, chaves criptogrcas

ii

Abstract
The development of cryptography, public key cryptography in particular, was a crucial factor responsible for the growth and popularization of computer networks. It was
responsible for appearance of demands as email, e-commerce, digitals signature and certication. The proper use of cryptographic techniques requires the development of ecient
applications capable of running in all kind of devices witch more and more incorporates
people's lives.

The generation of cryptographic keys is not only a critical security op-

eration but also a have high computational cost. This project has the goal of studying
cryptosystems and their theoretical basis and primality test, the core element of the key
generation process. It has an especial approach on implementing, optimizing and performance analysis of Simplied Frobenius Quadratic Test, a primality test from 2005 and
under explored. The achieved results are positives about the feasibility of reducing the
computational cost of operation.

Keywords: asymmetric cryptography, primality, cryptographic keys

iii

Sumrio
1 Introduo
1.1

1.2

Criptograa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1.1.1

Contexto Histrico

. . . . . . . . . . . . . . . . . . . . . . . . . . .

1.1.2

Criptograa Moderna . . . . . . . . . . . . . . . . . . . . . . . . . .

1.1.3

Segurana . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1.1.4

Princpios de Kercho

. . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Objetivos

2 Sistema Criptogrco
2.1

2.2

2.3

Sistema Criptogrco Simtrico

. . . . . . . . . . . . . . . . . . . . . . . .

2.1.1

Vantagens . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

2.1.2

Desvantagens

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Sistema Criptogrco Assimtrico . . . . . . . . . . . . . . . . . . . . . . .


Funes Unidirecionais . . . . . . . . . . . . . . . . . . . . . . . . .

11

2.2.2

Vantagens . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

12

2.2.3

Desvantagens

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Combinao dos Sistemas

. . . . . . . . . . . . . . . . . . . . . . . . . . .

3 Criptograa de Chave Pblica


3.1

3.2

3.3

2.2.1

12
12

14

Complexidade Computacional . . . . . . . . . . . . . . . . . . . . . . . . .

14

3.1.1

Casos Melhor, Pior e Mdio

. . . . . . . . . . . . . . . . . . . . . .

14

3.1.2

Limites Superior e Inferior . . . . . . . . . . . . . . . . . . . . . . .

15

Teoria dos Nmeros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

16

3.2.1

Nmeros Primos

3.2.2

Teorema Fundamental da Aritmtica

. . . . . . . . . . . . . . . . .

18

3.2.3

Algoritmo Euclidiano . . . . . . . . . . . . . . . . . . . . . . . . . .

19

3.2.4

Congruncia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

20

3.2.5

Teorema Chins do Resto

. . . . . . . . . . . . . . . . . . . . . . .

21

3.2.6

Pequeno Teorema de Fermat . . . . . . . . . . . . . . . . . . . . . .

21

3.2.7

Teorema de Euler . . . . . . . . . . . . . . . . . . . . . . . . . . . .

22

3.2.8

Smbolos de Legendre e Jacobi . . . . . . . . . . . . . . . . . . . . .

22

Algoritmo RSA

. . . . . . . . . . . . . . . . . . . . . . . . . . . .

16

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

23

3.3.1

Esquema de Cifrao . . . . . . . . . . . . . . . . . . . . . . . . . .

25

3.3.2

Esquema de Assinatura Digital

26

3.3.3

Funes de Resumo e Preenchimento

iv

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . .

28

4 Teste de Primalidade

30

4.1

Importncia dos Nmeros Primos . . . . . . . . . . . . . . . . . . . . . . .

30

4.2

Frmula para Primos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

31

4.2.1
4.3

Funo de Mills . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Testes de Primalidade

. . . . . . . . . . . . . . . . . . . . . . . . . . . . .

4.3.1

Crivo de Eratstenes

. . . . . . . . . . . . . . . . . . . . . . . . . .

33

4.3.2

Teste de Fermat . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

34

4.3.3

Teste de Solovay-Strassen

. . . . . . . . . . . . . . . . . . . . . . .

35

4.3.4

Teste de Miller-Rabin . . . . . . . . . . . . . . . . . . . . . . . . . .

36

4.3.5

Teste de Adleman-Huang . . . . . . . . . . . . . . . . . . . . . . . .

37

4.3.6

Teste AKS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

37

5 Teste de Frobenius Quadrtico Simplicado


5.1

5.2

31
32

Implementao

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

40
42

5.1.1

Relic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

43

5.1.2

Quadrado Perfeito

. . . . . . . . . . . . . . . . . . . . . . . . . . .

44

5.1.3

Aritmtica Bsica . . . . . . . . . . . . . . . . . . . . . . . . . . . .

44

5.1.4

Exponenciao Modular

. . . . . . . . . . . . . . . . . . . . . . . .

46

5.1.5

Probabilidade de Erro

. . . . . . . . . . . . . . . . . . . . . . . . .

47

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

47

Otimizao
5.2.1

Crivo para Quadrados Perfeitos

. . . . . . . . . . . . . . . . . . . .

47

5.2.2

Multiplicao de Karatsuba

. . . . . . . . . . . . . . . . . . . . . .

47

5.2.3

Frmula do Quadrado Complexo

. . . . . . . . . . . . . . . . . . .

48

5.2.4

Janela Deslizante . . . . . . . . . . . . . . . . . . . . . . . . . . . .

48

5.2.5

Reduo de Montgomery . . . . . . . . . . . . . . . . . . . . . . . .

49

5.2.6

Mudana Algbrica . . . . . . . . . . . . . . . . . . . . . . . . . . .

51

5.2.7

Reduo Preguiosa . . . . . . . . . . . . . . . . . . . . . . . . . . .

52

5.3

Testes

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

52

5.4

Resultados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

53

5.4.1

Consumo de Tempo . . . . . . . . . . . . . . . . . . . . . . . . . . .

53

5.4.2

Teste de Primalidade . . . . . . . . . . . . . . . . . . . . . . . . . .

56

5.4.3

Gerador de Primos

57

. . . . . . . . . . . . . . . . . . . . . . . . . . .

6 Concluso

60

Referncias

61

Lista de Figuras
2.1
2.2

Modelo de comunicao utilizando criptograa. Adaptado de Menezes [29].


Modelo de comunicao utilizando criptograa simtrica.
Menezes [29].

2.3

Adaptado de

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Modelo de comunicao utilizando criptograa assimtrica. Adaptado de


. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

10

2.4

Menezes [29].

Diagrama de uma funo dita uniderecional. Adaptado de Goldreich [17]. .

11

3.1

Comparao assinttica entre crescimento das funes. Retirado de Hein [19]. 16

3.2

Ilustrao da diculdade da fatorao de nmeros grandes.


xkcd [50].

Retirado de

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

5.1

Fluxograma das etapas do desenvolvimento do projeto.

5.2

Consumo de tempo (%) vs. Tamanho de

. . . . . . . . . . .

Consumo de tempo (%) vs. Tamanho de

43

(em potncia de 2) do TFQS

verso 1. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.3

24

54

(em potncia de 2) do TFQS

verso 5. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

55

5.4

Grco do desempenho entre TFQS verso 1 e verso 5.

. . . . . . . . . .

55

5.5

Grco Rabin vs. TFQS para entrada primo.

. . . . . . . . . . . . . . . .

57

5.6

Grco Rabin vs. TFQS para entrada composto.

5.7

Gerador de primo com semente xa. Rabin vs. TFQS.

. . . . . . . . . . .

58

5.8

Gerador de primo com semente aleatria. Rabin vs. TFQS. . . . . . . . . .

59

vi

. . . . . . . . . . . . . .

57

Lista de Tabelas
2.1

Tabela de terminologias

. . . . . . . . . . . . . . . . . . . . . . . . . . . .

3.1

Algoritmo RSA. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

24

5.1

Probabilidade de erro para o TFQS (bits


Retirada de [43].

vs.

nmero de rodadas

t).

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

47

5.2

Teste de assertivas em componentes.

. . . . . . . . . . . . . . . . . . . . .

53

5.3

Ambiente de testes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
100
Rodadas do Miller-Rabin ajustada para erro de 2
. . . . . . . . . . . . .

53

5.4
5.5

56

Comparao entre as operaes de exponenciao modular simples e em


anel polinomial. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

vii

59

Captulo 1
Introduo
1.1 Criptograa
A criptograa, na sua denio clssica, a tcnica de transformar mensagens em um
padro no compreensvel para que apenas o destinatrio, atravs de um conhecimento
privilegiado, possa retorn-la ao seu estado original, assim, protegendo-a de agentes no
autorizados (adversrios). Este conhecimento privilegiado chamado de chave. uma
forma de escrita secreta, como pode ser observado na etimologia da palavra.
A criptoanlise refere-se ao conjunto de tcnicas para analisar mtodos criptogrcos [4]. Um dos propsitos decifrar criptogramas sem ter acesso chave ou tambm sem
conhecimento do sistema criptogrco utilizado. Para tal, deve-se buscar fraquezas que
possam levar descoberta do texto em claro ou da chave. Pode ser classicada como passiva, no qual a mensagem interceptada sem que o destinatrio saiba do ocorrido, e como
criptoanlise ativa, que consiste em modicar, retransmitir ou substituir a mensagem em
trnsito, algumas dessas aes podem ser detectadas pelas partes.
Criptologia cincia que rene a criptograa e criptoanlise e estuda suas interaes [7].

1.1.1 Contexto Histrico


Por milhares de anos, reis, rainhas e generais conavam o comando e governana
de seus pases a eciente mtodos de comunicao.

Ao mesmo tempo, todos tinham

conscincia das consequncias de suas mensagens cair em mos erradas, no autorizadas,


revelando segredos valiosos a naes rivais. Foi esse risco de interceptaes inimigas que
motivou o desenvolvimento de cdigos e cifras. E do outro lado, os adversrios desvelavam
quebrar essas cifras com intuito de furtar os segredos. A histria da criptograa a histria
das batalhas entre criadores de cdigo e quebradores de cdigo, uma corrida armamentista
intelectual que teve dramtico impacto no curso da histria [46].
Pouco se sabe sobre o incio do uso da criptologia pelas sociedades antigas. Exatamente por sua prpria natureza sigilosa, permanecia envolta em si mesma, a literatura
clssica disponvel escassa, limitada e de difcil pesquisa. H relatos de que prossionais
responsveis pela criptologia militar e diplomtica eram obrigados a manter-se em anonimato e acatar a censura de suas publicaes. David Kahn publicou

The Codebreakers

[22],

um livro no tcnico, mas que rene inmeros materiais histricos que exemplicam o uso

da criptograa, sua maior parte nos perodos das guerras, e que fez um timo servio ao
coletar dados histricos e trazer maior ateno para esta rea.
Historicamente, o uso da criptograa para ns militares era crucial, desde a civilizao
egpcia, datando de 4000 A.C., passando pelo imprio Romano com clssico exemplo da
cifra de Csar, at os tempos modernos, no qual teve papel fundamental nas duas grandes
guerras.

Kahn diz que graas ao uso da criptoanlise, economizou-se mais de um ano

de durao da segunda grande guerra na regio do pacco. evidente que conquistase enorme vantagem ao desvendar manobras militares do seu adversrio.

Infelizmente,

durante esses perodos de conito que ocorrem grandes avanos tecnolgicos, com a
criptograa no foi diferente.

Tradicionalmente, era comum existir linguistas na rea

de criptoanlise, mas a Segunda Guerra Mundial trouxe denitivamente os matemticos


para a ponta [7]. As mentes mais brilhantes do mundo, desta rea, estavam reunidas em
comum esforos de construir novas cifras e novos ataques a cifras de rivais.
Durante todos esses anos, a criptologia era um domnio quase que exclusivo dos militares, mas foi no nal dos anos 60 em diante, com o crescente uso das redes de computadores,
massicao da Internet e redes de transmisso sem os, que surgiu uma forte necessidade de segurana dessa informao, agora digital, e ento passou a ser objeto de estudo
pblico e da comunidade acadmica. Hoje, o estado da arte da criptograa computacional acontece fora dos portes secretos dos militares e, at onde se imaginava, com pouca
inuncia de governos [42].
Esta armao passou a ser questionada aps as recentes denncias e vazamento de
documentos secretos da Agncia de Segurana Nacional norte-americana (NSA) atravs
de Edward Snowden.

Foi revelada no s espionagem, mas tambm grande inuncia

para a escolha de padres criptogrcos nacionais.

1.1.2 Criptograa Moderna


Por sculos, a criptograa se desenvolveu de arte, na qual poucos eram os que tinham
o conhecimento, para cincia. Em

Encyclopedia of Cryptography and Security

[49], Til-

borg cita o artigo de Shannon [44] de 1949, como base da criptograa moderna. Contudo,
naquele tempo, grande parte dos pesquisadores ainda estavam restritos a agncias governamentais e poder blico. Situao que teve mudana gradativa com a expanso das
indstrias de telecomunicaes.
Dada esta nova ordem computacional e o importante marco da criao da criptograa
assimtrica, tendo Die & Hellman [12] como pioneiros, a criptograa moderna passou a
se ocupar muito menos com a obteno de sigilo, seu uso clssico cuja etimologia era justicada plenamente, e alcanou novas propriedades da segurana da informao. Passou
a ser o estudo de tcnicas matemticas relacionadas segurana da informao como a
condencialidade, integridade, autenticao e irretratabilidade (no-repudiao). A criptograa, portanto, no o nico meio de garantir esta segurana, mas sim um conjunto
de tcnicas para tal [29].
Os principais objetivos da criptograa moderna so:

Condencialidade a propriedade de manter o contedo da informao em sigilo


de todos que no estejam autorizados a receb-la.

O sigilo e privacidade podem

ser utilizados como sinnimos de condencialidade.

Existem diversas abordagens

para o fornecimento de condencialidade, que vo desde a prpria proteo fsica do


contedo a algoritmos matemticos que tornam os dados ininteligveis.

Integridade uma propriedade de se resguardar da alterao no autorizada de dados. preciso, para isto , ter a capacidade de detectar a manipulao da mensagem
por partes no autorizadas. Esta abordagem pertence criptoanlise ativa, na qual
a manipulao inclui aes como insero, excluso ou substituio de dados.

Autenticao um servio relacionado identicao. Esta funo se aplica tanto


s entidades quanto a informao em si. Duas partes que buscam uma comunicao
devem identicar uma outra.

Informaes que trafeguem atravs de um canal

devem ser autenticadas com origem, a data de origem, o contedo de dados, hora
de envio, etc. Por estas razes, esta propriedade da criptograa geralmente subdividida em duas classes: autenticao de entidades e autenticao de origem de
dados.

Irretratabilidade um servio que impede uma entidade de negar compromissos ou


aes anteriores. Se surgem conitos devido a uma entidade negar que certas aes
foram realizadas, uma forma de solucionar a situao necessria.

Por exemplo,

uma entidade pode autorizar a aquisio de propriedades por outra entidade e,


posteriormente, negar que tal autorizao foi concedida. necessrio, para sanar a
disputa, que envolva uma terceira parte convel.

1.1.3 Segurana
A segurana de primitivas e protocolos criptogrcos pode ser avaliada sob vrios
modelos [29]. As mtricas de segurana mais comuns so computacional e demonstrvel
(ou provvel).

Segurana incondicional: Assume-se que o adversrio possui poder computacional


ilimitado. A questo apenas se h ou no informao suciente disponvel para
tentar derrotar o sistema criptogrco.

A cifra

One-Time Pad,

que utiliza uma

chave aleatria de tamanho maior ou igual ao da mensagem, um exemplo de cifra


que atinge a segurana incondicional, apesar de ser vulnervel a ataques ativos.

Segurana demonstrvel: O sistema possui segurana demonstrvel se a diculdade


de derrot-lo pode ser reduzida a resoluo de um problema conjecturado como
difcil.

Segurana computacional: Avalia o recurso computacional necessrio para tentar


derrotar o sistema.

Um mtodo dito computacionalmente seguro se o melhor

ataque conhecido excede o poder computacional do adversrio, com boa margem.

1.1.4 Princpios de Kercho


A chave criptogrca, ao contrrio dos algoritmos, o princpio permanente da criptograa. Foi declarado em 1883 por Auguste Kerckhos: a segurana do sistema criptogrco no deve depender do sigilo do algoritmo, mas sim de manter a chave em segredo.

Nenhum inconveniente deve ocorrer caso o sistema criptogrco caia nas mos do inimigo [24, 46]. Kerckhos tambm enunciou, em sua publicao, seis propriedades que so
tidas com grande relevncia at os dias de hoje:
1. O sistema deve ser substancialmente, se no matematicamente, indecifrvel.
2. No deve ser exigido sigilo do sistema. Seu furto no deve causar problemas.
3. Deve ser fcil de se comunicar e de guardar a chave sem necessitar anot-la, tambm
deve ser fcil de alterar a chave entre as partes.
4. O sistema deve ser compatvel com a comunicao via telgrafo.
5. O sistema deve ser portvel e seu uso no deve necessitar mais de uma pessoa.
6. Por m, dada as circunstncias de sua aplicao, o sistema deve ser fcil de usar e
no deve exigir esforo cognitivo nem conhecimento de longas regras [24].

1.2 Objetivos
Aps as recentes denncias sobre os casos de vigilantismo global por parte do Governo
norte-americano [38, 39], a criptograa e segurana digital tm sido um tema constante na
mdia mundial. No momento, h grande discusso a respeito da liberdade e privacidade
individual e a criptograa elemento fundamental para a garantia de tais direitos civis
no cenrio de telecomunicaes globalizado.
O tamanho das chaves de sistemas criptogrcos de chave pblica como o RSA tendem
a crescer consideravelmente nos prximos 10 anos. Em vrios casos h exigncia dessas
chaves serem geradas em sigilo, ento tais aplicaes devem ser executadas tambm em
ambientes seguros como

smartcards

ou dispositivos blindados.

Esses dispositivos normalmente possuem poder computacional muito limitado, tornando a gerao de chaves de alto nvel de segurana uma operao demorada e at
mesmo com tempo de execuo proibitivo.
Este trabalho cr na premissa de que a difuso de criptograa depende de solues
prticas e ecientes. Para isso, o seu objetivo geral reduzir o custo computacional na
gerao de chaves criptogrcas. Como objetivos especcos, tem-se a anlise, implementao e otimizao de algoritmos de teste de primalidade, que so responsveis por maior
porcentagem do tempo de gerao de chaves.
Para isso, ser realizado um estudo sobre sistemas criptogrcos e uma base terica de
Teoria dos Nmeros e lgebra. Em seguida, o foco ser no sistema de chave pblica RSA e
sua gerao de chaves, algoritmos de teste de primalidade e escolha do Teste de Fobrenius
Quadrtico Simplicado para implementao, otimizao e anlise de desempenho.

Captulo 2
Sistema Criptogrco
Para o incio do estudo cientco de tcnicas criptogrcas, primeiramente, necessitamos de elucidar a terminologia da rea e expressar algumas denies formais.
A Tabela 2.1 contm alguns termos que sero usados constantemente.

Tabela 2.1: Tabela de terminologias


Participantes

So as partes envolvidas no processo ou protocolo de comunicao.


Tm aes como enviar, receber ou manipular informao.

Pode

ser uma pessoa, um computador, terminal, etc.


Emissor

Em uma comunicao de duas partes, a entidade legtima que


envia a mensagem.

Receptor

Em uma comunicao de duas partes, a entidade legtima de


destino da mensagem.

Adversrio

a entidade que no nem o emissor nem o receptor e tem o intuito de driblar o protocolo ou servio de segurana de informao
provido pelas partes. Pode ter outros sinnimos como inimigo, atacante, oponente, intruso.

Um adversrio frequentemente tenta se

passar pelo emissor ou receptor legtimos. Precisamos enfatizar que


apesar dos termos ataque e inimigo, essas aes sero realizadas
apenas com objetivos acadmicos.
TTP

Trusted Third Party

(Terceira Parte Convel) uma entidade con-

vel e de comum acordo, denida antecipadamente entre as partes


envolvidas. Como exemplo, podemos citar os rgos certicadores
de chave pblica.
Canal

Canal o meio de transmisso da informao de uma entidade para


outra.

Canal seguro

um canal que no pode ser acessado pelo atacante.

Canal inseguro

um canal que pode ser acessado por quaisquer partes, alm do


emissor e receptor, e que podem realizar aes como ler, inserir,
excluir ou alterar as mensagens de forma indetectvel.

A literatura usualmente exemplica o desao da comunicao utilizando as entidades


Alice, Bob e Oscar, o que j se tornou um padro.

Alice e Bob desejam se comunicar

atravs de um canal inseguro de modo que um adversrio, Oscar, no possa compreender o


contedo da mensagem entre os dois primeiros. Este canal pode ser uma linha telefnica,
uma rede de computador ou at mesmo por correio [48].
Um sistema criptogrco uma quntupla

(M, C, K, Ee , Dd )

que satisfaz as seguintes

propriedades:

A denota um conjunto nito chamado de alfabeto de denio, conjunto de smbolos.


Por exemplo, A = {a, b, c, ..., z} o alfabeto de uma linguagem como o Ingls.
Outro exemplo seria o alfabeto binrio: A = {0, 1}. Este frequentemente usado
como alfabeto padro, pois note que qualquer outro alfabeto pode facilmente ser
codicado com o alfabeto binrio. Uma conjunto de 5

bits

pode gerar 32 cadeias

binrias distintas, assim, pode-se atribuir cada letra do nosso alfabeto a uma nica
cadeia de

bits

de tamanho 5.

Exemplos de padres de codicao utilizados so

o ASCII e Unicode, que possuem no s caracteres do alfabeto, imprimveis, mas


tambm caracteres especiais e de controle.

denido como espao de mensagens.

Um elemento de

cadeia de smbolos de um alfabeto de denio.


de texto claro. Por exemplo,

consiste em uma

M
bits, um

Um elemento de

composto por uma cadeia de

chamado
texto em

portugus, cdigo de uma linguagem de programao, etc.

dene o conjunto de espao de criptogramas.

consiste de cadeias de smbolos

de um alfabeto de denio, mas que se difere do alfabeto de denio de


elemento de

Um

Ee

deve

chamado de criptograma.

o espao de chaves. Um elemento de

Cada elemento

Ee

M.

eK

chamado de chave.

determina uma bijeo de

em

C,

denida por

Ee .

chamado de funo de cifragem, ou algoritmo de cifragem. Note que

ser uma funo bijetiva para que possua uma transformao inversa que retorne um
nico texto claro para cada criptograma distinto. Ou seja:

Para cada

d K, Dd

dene a bijeo de

em

M.

chamado de funo de

decifragem ou algoritmo de decifragem.

Portanto, seja

 Ee

Ee : M C

injetiva: Se

Ee (m1 ) = c

Ee (m2 ) = c,

ento

m1 = m2

para qualquer

m1 , m2 M

 Ee

sobrejetora:

c C,

! m M : Ee (m) = c

{Ee : e K} de funes
de cifrao e um conjunto correspondente {Dd : d K} de decifrao com a
1
propriedade de que para cada e K existe um nico d K tal que Dd = Ee ,
consequentemente, Dd (Ee (m)) = m para todo m M. Ou seja,

Um sistema de cifragem ento, Consiste em um conjunto

{{Ee : e K}, {Dd : d K}} | e K, d K : Dd = Ee1

As chaves

d,

nas denies acima, so chamadas de par de chaves

[4]

(e, d)

Figura 2.1: Modelo de comunicao utilizando criptograa. Adaptado de Menezes [29].

A Figura 2.1 exemplica um modelo simplicado da comunicao entre duas entidades,


utilizando criptograa.
O sistema utilizado na gura 2.1 tem o objetivo de fornecer sigilo comunicao entre
Alice e Bob. Primeiramente, Alice e Bob escolhem um par de chaves

(e, d)

atravs de um

canal seguro. Aps a denio das chaves entre as partes, quando Alice desejar enviar
uma mensagem
ao receber

c,

para Bob, ela calcula o criptograma

calcula o texto claro

m = Dd (c)

c = Ee (m)

e envia para Bob, que

para ler a mensagem de Alice [29].

H dois tipos comuns de sistemas criptogrcos: sistemas baseados em chaves simtricas e sistemas baseados em chaves assimtricas. Nas prximas sees iremos tratar da
construo e utilidades de ambos.

2.1 Sistema Criptogrco Simtrico


O sistema criptogrco simtrico utiliza algoritmos simtricos para cifragem e decifragem. Algoritmos simtricos, as vezes chamados de algoritmos convencionais, so algoritmos nos quais a chave de cifragem pode ser calculada a partir da chave de decifragem e
vice-versa, de forma trivial, em tempo polinomial (veremos os conceitos de complexidade
e diculdade computacional no prximo captulo), ou seja, possuindo
obter

e pode-se facilmente

e vice-versa.

Na maioria destes algoritmos, entretanto, as chaves de cifragem e a chave de decifragem


so as mesmas,

e = d.

Estes algoritmos, tambm chamados de algoritmos de chave

secreta ou de chave nica, requerem que o emissor e receptor escolham uma chave antes
de iniciarem uma comunicao segura [42].
A segurana desse sistema est baseada no sigilo da chave.

No momento em que a

chave for revelada, qualquer entidade terceira pode cifrar e decifrar as mensagens em
trnsito.

Figura 2.2: Modelo de comunicao utilizando criptograa simtrica. Adaptado de Menezes [29].

A Figura 2.2 mostra uma comunicao utilizando um sistema simtrico de criptograa.


Em relao Figura 2.1, notamos o surgimento de um canal seguro no qual a chave
precisa ser distribuda entre os participantes, este canal fundamental para que Alice e
Bob escolham sua chave simtrica e um dos maiores desaos desse sistema, conhecido
como problema da distribuio de chaves [28].

2.1.1 Vantagens
Vantagens do sistema criptogrco simtrico [29]:

Cifras de chave simtrica podem ser desenvolvidos para atingir altas taxas de rendimento ou processamento. Algumas implementaes em
taxas de cifragem que chegam centenas de
plementao em

software

megabytes

hardware

podem atingir

por segundo, enquanto a im-

atinge taxas de processamento de

megabytes

por segundo.

As chaves dos sistemas criptogrcos simtricos costumam ser relativamente pequenas em comparao com as chaves assimtricas.

Sistemas criptogrcos simtricos podem ser empregados pra construo de mecanismos criptogrcos incluindo geradores de nmero pseudoaleatrios, funes de
resumo criptogrcos, vericao eciente de integridade, etc.

Sistemas criptogrcos simtricos podem ser combinados para gerar uma cifra mais
forte.

Utiliza-se produtos de cifra e iteraes com transformaes simples para

construir essas cifras resultantes que continuam simtricas.

A Criptograa de chave simtrica tem uma extensa histria, ento acredita-se que
muito de sua segurana j foi explorada, embora deva ser considerado que muito do
conhecimento nessa rea tem sido adquirido aps a inveno do computador digital,
e, em particular, da criao do DES na dcada de 1970.

2.1.2 Desvantagens
Desvantagens do sistema criptogrco simtrico [29]:

Em um sistema de comunicao entre duas partes, a chave deve permanecer em


sigilo pelas duas entidades.

Em uma grande rede, h vrios pares de chave para ser gerenciados.

Portanto,

necessita-se de ecientes mtodos de gerncia de chaves e o uso de TTP.

Em um sistema de comunicao entre duas entidades Alice e Bob, a boa prtica


criptogrca determina que as chaves devem ser trocadas frequentemente, e, talvez,
trocadas para cada sesso de comunicao.

Mecanismos de assinatura digital que esto surgindo atravs de criptograa de chave


simtrica usualmente requerem chaves muito grandes para funes de vericao
pblica ou o uso de TTP.

2.2 Sistema Criptogrco Assimtrico


O sistema de criptograa assimtrica utiliza uma par de transformaes associadas
de cifragem/decifragem. Sendo
e

{Dd : d K}

{Ee : e K}

o conjunto de transformaes de cifragem

o conjunto de transformaes de decifragem, em que

o espao de

chaves possveis. E principalmente supe que, para cada par, existe a propriedade de ser
1
computacionalmente invivel calcular d tendo o conhecimento de e, onde Dd = Ee .
Tendo este esquema em mente, consideremos a ilustrao da comunicao entre Alice
e Bob, Figura 2.3.

Bob seleciona um par de chaves

(e, d),

envia a chave de cifragem

(chamada de chave pblica) para Alice atravs de qualquer canal e mantm a chave

de decifragem

(chamada de chave privada) em segredo.

Em seguida, Alice pode se

comunicar de forma segura com Bob aplicando a transformao da chave pblica na sua
mensagem

e obtendo o criptograma

tal que

c = Ee (m), supondo autntica a chave


c aplicando a transformao inversa

pblica recebida de Bob. Bob decifra o criptograma

Dd .

Figura 2.3:

Modelo de comunicao utilizando criptograa assimtrica.

Adaptado de

Menezes [29].

Podemos notar como a Figura 2.3 difere da Figura 2.2 no sistema simtrico. Neste
cenrio assimtrico, a chave de cifrao transmitida para Alice atravs de um canal
inseguro. Este canal pode ser o mesmo pelo qual o criptograma tambm ser transmitido.
Uma vez que que a chave de cifragem no precisa ser mantida em segredo, qualquer
outra entidade poder, posteriormente, cifrar mensagens, para Bob, as quais apenas Bob,
portador da chave privada, poder decifr-las, supondo autntica a chave pblica de Bob.
Como modelo mais didtico, pode-se ver a criptograa de chave pblica no como
pares de chaves de Bob, mas sim uma chave mantida em segredo (chave privada) e um
cadeado aberto (chave pblica). O cadeado pblico pode ter quantas cpias seja necessrio
e pode ser analisado por qualquer entidade interessada. A cifragem seria o ato de colocar
uma mensagem dentro de um ba seguro e tranc-lo com o cadeado de Bob, deste modo,
apenas Bob possui a chave que abrir o cadeado.
A criptograa de chave pblica assume o conhecimento e autenticidade da chave pblica e considera que a derivao da chave privada a partir da chave pblica um problema
intratvel, ou seja, assume a existncia de funes unidirecionais e autenticao prvia de
chaves pblicas.
importante resaltar que um sistema criptogrco de chave pblica nunca poder
fornecer segurana incondicional. Isto ocorre pois caso o adversrio tenha acesso a um

y , ele pode cifrar exaustivamente todos os possveis textos claros com a chave
pblica Ee at que encontre um nico texto claro x tal que Ee (x) = y , ento este x a
decifrao de y . Portanto, estudamos a segurana computacional de criptograa de chave

criptograma

pblica [48].

10

2.2.1 Funes Unidirecionais


Grosso modo, funes unidirecionais so funes que so fceis de calcular, mas difceis
de inverter (de modo geral) [17].
Todo o sucesso da criptograa assimtrica est baseado na existncia de funes unidirecionais, obter

Dd

Uma funo injetiva

Ee considerado um problema intratvel.


f : X Y dita estritamente unidirecional se observado:

a partir de

f (x)x X , mas no h maneira eciente


y = f (x) y f (X) [7]

Existe um mtodo eciente para calcular


de obter

da relao

Usando maior rigor matemtico, ainda no h prova de que funes unidirecionais


existam, nem real evidncia de que possam ser construdas, diz Schneier [42] sobre a
publicao de Even [14]. Ainda assim, vrias funes se comportam como unidirecionais,
podem comput-las de forma rpida, mas, at ento, no conhecido maneira eciente
de obter sua inversa.

Figura 2.4: Diagrama de uma funo dita uniderecional. Adaptado de Goldreich [17].

Uma das melhores formas de exemplicar funes unidirecionais utilizar exemplos


palpveis do dia a dia.
Misturar as tintas amarela e azul para obter a tinta verde pode ser comparado a uma
funo unidirecional, pois o processo de misturar as tintas fcil, entretanto, tentar separar as tintas impossvel ou intratvel. A aritmtica modular uma rea da matemtica
rica em funes unidirecionais [46].
Para sedimentar a compreenso do conceito de funes unidirecionais, podemos utilizar
um exemplo mais prtico proposto por Bauer [7]. Em uma lista telefnica, os dados so
compostos pela dupla [Nome] - [nmero de telefone] em ordem alfabtica.

Dado uma

lista telefnica com grande quantidade dados, tendo o nome de uma pessoa, possvel
encontrar seu telefone em tempo hbil, mas a operao inversa, encontra o nome de uma
pessoa tendo apenas o seu telefone, uma tarefa difcil devido a desordem dos telefones.
Assim, seria preciso comparar nmero por nmero at encontrar o seu proprietrio.
O estudo dessas funes fundamental para a segurana computacional, pois h a
possibilidade de se descobrir novos mtodos que solucionam esses problemas, que at
ento acredita-se ser unidirecional, em tempo polinomial.

11

2.2.2 Vantagens
Vantagens do sistema criptogrco assimtrico [29]:

Apenas a chave privada deve ser mantida em segredo. Entretanto, a certicao de


chaves pblicas necessria.

A administrao de chaves em uma rede escalvel requer a presena de um TTP


funcionalmente convel ao contrrio de um TTP incondicionalmente convel. Dependendo do modo de operao, o TTP pode apenas ser exigido em uma forma

o-line.

Dependendo do modo de operao, o par (chave privada, chave pblica) pode permanecer sem modicao por grande perodo de tempo, isto , sendo usado por
vrias sesses e validade de vrios anos, desde que seja preservado o sigilo da chave
privada.

Muitos esquemas de chave pblica fornecem ecientes mecanismos de assinatura


digital. A chave usada para descrever a funo de vericao pblica geralmente
muito menor do que a de criptograa simtrica para ns equivalentes.

Em uma grande rede, o nmero de chaves necessrias consideravelmente menor


do que no cenrio da criptograa simtrica.

2.2.3 Desvantagens
Desvantagens do sistema criptogrco assimtrico [29]:

As taxas de processamento para os mtodos criptogrcos de chave pblica so


extremamente menores do que o melhor esquema de chave simtrica.

Os tamanhos da chave so geralmente maiores do que os necessrios para criptograa simtrica e o tamanho da assinatura de chave pblica maior, fornecendo
autenticao de origem de dados por tcnicas de chave simtrica.

Ainda nenhum mtodo de chave pblica se provou seguro. O mtodo de criptograa


assimtrica mais difundido atualmente tem sua segurana baseada na diculdade de
um pequeno conjunto de problemas em Teoria dos Nmeros, chamado de problema
da fatorao de inteiros.

Criptograa de chave pblica tem uma histria ainda recente em comparao com
a Criptograa simtrica. O que nos faz acreditar que ainda houve pouca explorao
a respeito de sua segurana.

2.3 Combinao dos Sistemas


Dada os cenrios de vantagens e desvantagens das duas classes de sistemas criptogrcos, podemos enumerar as vantagens que possam ser combinadas.

12

Tcnicas de criptograa de chave pblica podem ser usadas para estabelecer uma chave
de sistema criptogrco simtrico a ser usado pelas entidades Alice e Bob. Neste cenrio,
Alice e Bob tiram proveito da validade longa das chaves pblica/privada e da ecincia
do esquema simtrico para cifrar grande quantidade de dados. A cifragem e decifragem
dos dados so os processos que custam maior tempo e o esquema de chave pblica para
estabelecer a chave simtrica apenas uma pequena frao do processo criptogrco. Os
sistemas criptogrcos atuais exploram os pontos fortes de ambos os sistemas:

Criptograa de chave pblica a melhor maneira de se comunicar atravs de um


canal inseguro e at ento a nica forma de fornecer um esquema para assinatura
digital (particularmente a irretratabilidade).

Criptograa de chave simtrica muito eciente para cifrar e garantir integridade


de grandes volumes de dados.

13

Captulo 3
Criptograa de Chave Pblica
3.1 Complexidade Computacional
Um problema computacional pode ser visto como uma coleo innita de instncias
parametrizada em conjunto com uma soluo para cada instncia. A sequncia de entrada
para um problema computacional referida como uma instncia do problema, e no deve
ser confundido com o problema em si.

Na teoria da complexidade computacional, um

problema parametrizvel se refere questo abstrata para ser resolvido. Em contraste,


uma instncia deste problema uma expresso concreta, que pode servir como entrada
para um problema de deciso.
Para uma denio precisa do que signica resolver um problema utilizando uma determinada quantidade de tempo e espao, um modelo computacional tal como a mquina
de Turing determinstica utilizado. O tempo exigido por uma mquina de Turing determinstica

na entrada

o nmero total de transies de estado, ou etapas, que a

mquina faz antes de parar e responder com a sada (


de Turing

opera dentro do tempo

de comprimento n no mximo
tempo

f (n)

f (n).

f (n),

sim ou no).

Diz-se que a mquina

se o tempo exigido por

Um problema de deciso

em cada entrada

pode ser resolvido em

se existe uma operao da mquina de Turing em tempo

f (n)

que resolve o

problema. Como a teoria da complexidade est interessada em classicar problemas com


base na sua diculdade, denem-se conjuntos de problemas com base em alguns critrios.
Denies anlogas podem ser feitas para os requisitos de espao. Embora o tempo e
o espao sejam as mais conhecidas mtricas de complexidade, qualquer medida de complexidade pode ser vista como um recurso computacional.

3.1.1 Casos Melhor, Pior e Mdio


O melhor, o pior e o caso mdio de complexidade referem-se a trs maneiras diferentes
de medir a complexidade de tempo (ou qualquer outra medida de complexidade) de entradas diferentes do mesmo tamanho. Uma vez que algumas entradas de tamanho n podem
ser mais rpidas para resolver do que outras, denimos as seguintes complexidades:

Complexidade no melhor caso: esta a complexidade de resolver o problema para


a melhor entrada de tamanho

n.

14

Complexidade no pior caso: esta a complexidade de resolver o problema para a


pior entrada de tamanho

n.

Complexidade no caso mdio:

esta a complexidade de resolver o problema na

mdia. Essa complexidade s denida com relao a uma distribuio de probabilidade sobre as entradas. Por exemplo, se todas as entradas do mesmo tamanho so
consideradas equiprovveis, a complexidade do caso mdio pode ser denida com
relao distribuio uniforme sobre todas as entradas de tamanho
Por exemplo, considere o algoritmo de ordenao

n.

QuickSort, que resolve o problema de

ordenar uma lista de inteiros que dada como entrada. O pior caso quando a entrada j
2
est ordenada ou est em ordem inversa, e o algoritmo leva tempo O(n ) para este caso.
Se assumirmos que todas as permutaes possveis da lista de entrada so igualmente

O(n log n). O melhor caso ocorre


em tempo O(n log n).

provveis, o tempo mdio necessrio para a ordenao


quando cada piv divide a lista pela metade, tambm

3.1.2 Limites Superior e Inferior


Para classicar o tempo de computao (ou recursos semelhantes, como o consumo de
espao), necessrio provar os limites superiores e inferiores sobre a quantidade mnima
de tempo exigida pelo algoritmo mais eciente para resolver um determinado problema.
A complexidade de um algoritmo geralmente entendida como a sua complexidade
de pior caso, a menos que seja especicado o contrrio.

A anlise de um determinado

algoritmo cai sob o campo de anlise de algoritmos. Esta anlise realizada de maneira
assinttica, para entradas a partir de um determinado valor.

g(n) necessrio mostrar


que existe uma funo f (n) que domina assintoticamente g(n). Assim, f (n) domina g(n)
se existem as constantes positivas c e n0 tais que para qualquer n n0 , g(n) c f (n).
O limite superior indicado pela notao O e desconsidera fatores constantes e termos
Para demonstrar que existe um limite superior para a funo

menores.

Isso faz com que os limites independam dos detalhes especcos do modelo
T (n) = 7n2 + 15n + 40 tem limite superior, ou

computacional utilizado. Por exemplo,


2
complexidade, O(n ).

Para demostrar um limite assinttico inferior


loga. Deve existir uma funo

f (n)

g(n), usa-se ideia ann n0 , 0 c f (n) g(n).

para a funo

tal que para qualquer

Provar Limites inferiores mais difceis, uma vez que limites inferiores fazem uma declarao sobre todos os possveis algoritmos que resolvem um determinado problema, inclusive
algoritmos ainda no conhecidos.
Limites inferiores geralmente tm maior aplicao quando usados como complemento
para denio de limites restritos.
A gura 3.1 ilustra a comparao entre o crescimento assinttico de algumas funes
comuns na anlise de algoritmos.

15

Figura 3.1: Comparao assinttica entre crescimento das funes. Retirado de Hein [19].

3.2 Teoria dos Nmeros


A teoria dos nmeros j foi vista como um tpico belo mas sem grande utilidade prtica
da matemtica. Hoje, algoritmos de teoria dos nmeros so amplamente utilizados devido
a inveno de esquemas criptogrcos baseados em nmeros primos grandes. A viabilidade
desses esquemas se torna possvel atravs da habilidade de encontrar nmeros primos
grandes de maneira rpida e sua segurana repousa na intratabilidade de fatorar o produto
desses primos [10]. Nesta seo expressaremos alguns conceitos da teoria dos nmeros que
sero necessrio para a compreenso dos mtodos criptogrcos apresentados.

3.2.1 Nmeros Primos


Existem algumas pistas de que os egpcios expressaram alguma ateno sobre os nmeros primos, mas acredita-se que foram os antigos gregos (Euclides e Eratstenes), por
volta de 300 a.C., quem produziu estudos documentados.
Os nmeros primos so os blocos de construo para todos os inteiros. Assim como
os tomos so as estruturas elementares das molculas e da matria, os nmeros primos
formam uma espcie de tabela peridica da aritmtica, este fato faz crer que eles tambm
merecem um estudo particular.

16

Deste modo, precisa-se de maneiras de encontrar primos e mtodos para constru-los,


identic-los e, se possvel, quanticar suas ocorrncias. Algumas destas misses levaram
milhares de anos para se completar e algumas ainda esto em aberto [15].
Um nmero

pN

denominado primo, se

p>1

e se seus nicos divisores so

1.

Indicamos por

P = {p N : p

primo}

o conjunto de todos os nmeros primos. Podemos dizer ento que

p P ( a, b N : p = ab a = p
Para um primo

b=1

ou

a=1

b = p)

[8].

p, Zp o grupo aditivo mdulo p, que consiste no conjunto {0, . . . , p1}


p. Neste grupo, todos os elementos, exceto a identidade

e a operao de adio mdulo

0,

tm ordem p.
Zp denota o grupo multiplicativo mdulo p, consiste no conjunto {1, . . . , p
operao de multiplicao mdulo p. Ambos so grupos fechados e cclicos.

1}

e a

n > 1 dito composto se ele no primo. Dois nmeros a, b Z


coprimos (ou primos entre si) se e somente se mdc(a, b) = 1.

Um nmero
chamam-se

Lema de Euclides: sejam,

a, b

c Z.

Se

a|bc

e mdc(a, b)

= 1,

ento

a|c.

Atravs

deste Lema, obtemos o seguinte resultado fundamental dos nmeros primos.


Seja

p P,

ento

a, b N : p|ab p|a

ou

p|b

Em palavras: um nmero primo divide um produto, somente se ele divide um de seus


fatores.

Distribuio dos nmeros primos


Existem innitos nmeros primos.

Esta armao pode ser demonstrada por uma

rpida reduo ao absurdo. Suponha o contrrio, suponha que existe um nmero nito
de primos:

p1 , p2 , p3 , p4 , . . . , pn
Esta uma lista completa dos primos. Agora geramos um nmero
produto de todos os primos da lista,

C = p1 p2 p3 . . . pn .

tal que seja o

Pelo teorema fundamental da

aritmtica 3.2.2, sabemos que um nmero pode ser decomposto em fatores primos nicos,

C so
Q = C + 1:

ou seja, os fatores de
Agora suponha

todos os primos da lista completa e esta expresso nica.

Q = C + 1 = p1 p2 p3 . . . pn + 1
Ento,

pode ser enquadrado em apenas dois casos:

1.

2.

Q composto. Ento Q deve ser divisvel por todos seus fatores primos (pi | Q i
[1, n]), o que no verdade, pois qualquer diviso por pi deixa resto 1. Logo a lista

primo. Ento a lista de primos no completa (absurdo).

no completa (absurdo).

17

H vrias outras provas pra a innidade de primos [40], mas o primeiro registro foi
elucidado por Euclides [13] por volta de 300 a.C., utilizava a mesma ideia apresentada,
mas em um tempo onde ainda no existia a lgebra, toda a aritmtica era realizada
atravs da Geometria, segmentos de reta e circunferncias.

Um fato fascinante, pois a

Matemtica continua to slida quanto era h 2300 anos.


Seja

(n)

a funo que retorne a quantidade de nmeros primos no intervalo

Teorema do Nmero Primo mostra que

(n)

[2, n].

n
,
ln n

isto , as funes possuem comportamento assinttico semelhante.

, tambm podemos interpretar que o espaamento


igual a ln n. Bertrand e Tschebyche foram mais alm

A partir deste resultado da funo


mdio entre os nmeros primos

e apresentaram um limite superior para esse espaamento entre os primos, provaram que
para qualquer natural

n 2,

existe pelo menos um primo

tal que

n < p < 2n

[40].

Estes so timos resultado para o contexto da criptograa, pois a distribuio mostra


que os nmeros primos no s so innitos, como tambm extremamente abundantes e
regulares, no h grandes espaos (gaps ) sem nmeros primos, o que torna uma operao
vivel e desaadora encontrar primos grandes.
Como exemplo gurado, um espao numrico obtido com 512 bits contm aproximada151
77
mente 10
nmeros primos. O nmero de tomos no universo de 10 . Se cada tomo
precisasse de 1 bilho de nmeros primos a cada micro-segundo desde o incio do universo
109
at os dias de hoje, precisaria de apenas 10
primos; ainda assim restariam aproxima151
damente 10
primos [42], ou seja, a quantidade de primos utilizados insignicante,
nma, em relao aos primos possveis dentro de 512

bits.

3.2.2 Teorema Fundamental da Aritmtica


1 < n N pode ser decomposto em fatores primos, quer dizer, existem
p1 , p2 , . . . , p3 P tais que
n = p 1 p2 . . . pr

1. Todo nmero

p1 p2 . . . pr = q1 q2 . . . qs
q1 q2 . . . qr , ento

2. Se

com

p0 s

q0s P

e se

p1 p2 . . . pr

tal como

r = s p1 = q1 , p2 = q2 , . . . , pr = qs

Demonstrao:
1. Se

n=p

um nmero primo, a armao ca clara

Mostramos a armao para


com

1 < m < n.

Seja

S = {t N|1 < t < n}.

Como

n>1

sabemos que

n composto, supondo sua veracidade para todo m N

n S,

isto ,

Pelo princpio da induo, existe um

mN

com

(r = 1).

S 6= .

p1 S

n = p1 m.
18

minimal. claro que

p1

primo e temo

Como

p1 > 1

no primo, segue

1 < m < n.

Como a armao j vlida para este

m,

existem

p + 2, p3 , . . . , pr P

tais que

m = p2 p 3 . . . pr .
Segue, como armado:

n = p1 m = p1 p2 p3 . . . pr
p1 p2 . . . pr = q1 q2 . . . qs
q1 q2 . . . qr .

2. Suponha
tal como

com

p0 s

q0s P

e se

p1 p2 . . . pr

p1 |q1 q2 . . . qs

Temos

Aplicando-se repetidas vezes o resultado do Lema de Euclides, conclumos que


tem que dividir algum dos fatores
Logo existe
Como

p1

k(k 1 s)

qk

Assim,

p1 |qk .

com

p1 = qk q1 .

so primos, temos

Da mesma forma,

p1 = q 1 .

q1 |pl

com

Agora de

p1

q1 , q2 , . . . , qs .

(1 l r)

e segue que

q1 = pl p 1

p1 p2 . . . pr = q1 q 2 . . . q s

ocorre

p2 . . . pr = q2 . . . qs
r 1 = s 1, isto , r = s, p2 = q2 , p3 = q3 , . . . , pr = qs .
resultado p1 = q1 , alcanamos a armao inicial.

Por induo conclumos


Adicionando o

3.2.3 Algoritmo Euclidiano


a, b N dois nmeros, pelo menos um deles diferente de zero, o mximo divisor
entre a e b o nmero natural

Sejam
comum

d = mdc(a, b)
denido pelas duas propriedades:
1.

d|a

d|b

(i. e.

2. Se algum

cN

Podemos denir
Sejam

bZ

divide ambos
divide ambos

d,

a
a

e
e

b).
b,

ento

c|d.

utilizando uma equao diofantina, atravs do teorema [27]:

no ambos igual a zero e seja

d = mdc(a, b).

Ento existem

x, y Z

tais que

ax + by = d.
O Algoritmo 1 mostra o mtodo estendido de Euclides para obter o mximo divisor
comum entre

b.

19

Algorithm 1 Algoritmo euclidiano


Input: a e b N
Output: (r, s, t) tais que r = mdc(a, b) e sa + tb = r
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:

a0 a
b0 b
t0 0
t1
s0 1
s0
q b ab00 c
r a0 qb0
while r > 0 do
temp (t0 qt)
t0 t
t temp
temp s0 qs
s0 s
s temp
a0 b 0
b0 r
q b ab00 c
r a0 qb0

mod

end while
return (r, s, t)

3.2.4 Congruncia
n N um nmero
(a b) mltiplo de n.
Seja

se

a, b Z

xo. Dois nmeros

so ditos congruentes mdulo

Formalmente:

ab
Assim,

ab

mod

n n|a b,

mod

n.

ou mais, a diviso de

por

deixa resto

mod

[27].

Propriedades fundamentais da congruncia:


1.

aa

mod

2. Se

ab

mod

n,

3. Se

ab

mod

bc

mod

n,

ento

ac

4. Se

ab

mod

cd

mod

n,

ento

a+cb+d

ento

ba

mod

n
mod

Se mdc(a, n) = 1, ento existe um inteiro denotado por

a a1 1
O inteiro

a1

mod

20

a1 Zn

n.

chamado de inverso multiplicativo de

ac bd

mdulo

n.

mod

tal que

n,

3.2.5 Teorema Chins do Resto


O teorema chins do resto um mtodo para solucionar certos sistemas de congruncia.

m1 , m2 , . . . , mr coprimos entre si, ou seja, mdc(mi , mj ) = 1 se i 6= j


Suponha a1 , a2 , . . . , ar inteiros e considere o seguinte sistema de congruncia:

Suponha

x a1 (mod m1 )
x a2 (mod m2 )
.
.
.

x ar (mod mr )
O teorema garante que existe uma nica soluo mdulo

M = m1 m2 . . . mr

Algorithm 2 Algoritmo para obter o inverso multiplicativo (a, b).

[48].

Tambm chamado de

Algoritmo de Euclides Estendido.

Input: a e b N
Output: t tal que t b = 1 (mod a)
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:

a0 a
b0 b
t0 0
t1
q b ab00 c
r a0 qb0
while r > 0 do
temp (t0 qt)
t0 t
t temp
a0 b 0
b0 r
q b ab00 c
r a0 qb0

mod

end while
if b0 6= 1 then
return b no tem inverso mod a.
else
return t
end if

3.2.6 Pequeno Teorema de Fermat


O pequeno teorema de Fermat diz que se p um nmero primo, ento para qualquer
p
inteiro a, a a mltiplo de p. Utilizando congruncia:

ap a

(mod

21

p).

Outro resultado conhecido para o Pequeno Teorema de Fermat pode ser trivialmente
obtido dividindo a congruncia por

a:
ap
a
(mod p)
a
a
p1
a
1 (mod p).

3.2.7 Teorema de Euler


O Teorema de Euler tido como uma generalizao do pequeno teorema de Fermat e
diz que se

aN

so coprimos, isto , mdc(a, n)=

a(n) 1
A funo

(n),

ento

n).

tambm chamada de funo totiente, denota a quantidade de inteiros

positivos menores ou iguais a

1kn

(mod

1,

e mdc(k, n)=

que so coprimos com

n.

Formalmente,

(n) = |{k N :

1}|.

Esta funo tem importante aplicao em Criptograa e tambm possui resultado

p,

simples para nmeros primos. Sendo um primo

1 e por p,
(p) = p 1.
(a b) = (a) (b). Assim,

ele divisvel apenas por

logo a quantidade de naturais coprimos e menores que

Uma importante propriedade da funo totiente que

como todo nmero composto pode ser fatorado em um produto nico de primos, podemos
calcular facilmente a funo totiente de qualquer nmero, conhecendo a sua fatorao.

3.2.8 Smbolos de Legendre e Jacobi


O matemtico francs Adrien Marie Legendre continuou o desenvolvimento nos estudos
de Euler a respeito de resduos quadrticos [8].
dito que a Zp um
2
que y a (mod p).

resduo quadrtico mdulo um p primo y Zp

tal

Critrio de Euler
Partindo do pequeno teorema de Fermat, podemos chegar ao seguinte resultado quanto

a, conhecido como critrio de Euler.


a y 2 (mod p). Se p primo, ento ap1 1

residualidade de
Suponha que

(mod

p), a 6 0

(mod

p).

Assim,

ap1 (y 2 )p1 1
(p1)/2
Agora suponha que a
1 (mod
i
a b (mod p) para i Z. Logo,

p).

Seja

(mod

um elemento primitivo mdulo

a(p1)/2 (bi )(p1)/2


Como

p).

(mod

b tem ordem p 1, ento (p 1) | i(p 1)/2.


a so bi/2 mod p. Assim,
resduo quadrtico mdulo

Portanto,

i par e as possveis razes

p a(p1)/2 1

22

ento

p).

quadradas de

p,

(mod

p).

Smbolo de Legendre
Para

a Z, p

primo mpar, o smbolo de Legendre

 
0
a
= 1

se
se
se

 
a
p

a 0 (mod p)
a resduo quadrtico mdulo p
a resduo no-quadrtico mdulo p

Pode-se encarar o smbolo de Legendre como o problema de deciso em relao a

 
a
p

que tem-se armativo para resduo quadrtico e negativo para resduo no-quadrtico.

Smbolo de Jacobi
O smbolo de Jacobi a generalizao para o smbolo de Legendre. Tem importante
aplicao em testes de primalidade e em fatorao de inteiros, portanto fundamental na
criptograa.
Suponha

n N com

a

smbolo de Jacobi

fatorao

n=

Qk

i=1

pei i ,

com

pi P

ei 6= 0 i.

Seja

a Z,

denido por:

  Y
k  ei
a
a
=
n
pi
i=1

3.3 Algoritmo RSA


Criado por R.L. Rivest, A. Shamir e L. Adleman, o RSA um mtodo de Criptograa
utilizado para garantir privacidade ou assinatura de documentos digitais [41]. Este mtodo
prov a primeira implementao de um Sistema Criptogrco de Chave Pblica, conceito
elegante projetado por Die e Hellman [12].
O sistema criptogrco de chave pblica RSA est fortemente baseado na enorme
diferena entre a facilidade de encontrar nmeros primos grandes (100 a 200 dgitos) e
na diculdade de fatorar o produto desses primos [10]. Devemos, entretanto, fazer uma
observao quanto esta armao. Dizer que a segurana do RSA baseia-se completamente
no problema da fatorao de nmeros grandes no uma armao correta.

Devemos

armar, com maior rigor, que conjecturado que sua segurana depende do problema
da fatorao de nmeros grandes, ou que o problema da fatorao fornece uma quota
superior para o custo de ataque matemtico ao RSA.

23

Figura 3.2:

Ilustrao da diculdade da fatorao de nmeros grandes.

Retirado de

xkcd [50].

No h prova matemtica de que a fatorao de

n a nica abordagem para se derivar

a chave privada na criptoanlise do RSA. Provar incondicionalmente que o RSA seguro


implica provar a existncia de funes unidirecionais e, por consequncia, estabelecer a
relao

P 6= N P .

O algoritmo em 3.1 exibido a seguir chamado de RSA verso livro texto, pois o apresenta de forma simplicada e sem qualquer otimizao, assim permitindo uma abordagem
mais didtica.
Tabela 3.1: Algoritmo RSA.
1. Gere dois primos grandes aleatrios e distintos
2.

n pq

(n) (p 1)(q 1)
(1 < b < (n))

3. Escolha b aleatrio com


1
4. a b
mod (n)

(b, n)
(decifragem) (a, n)

A chave pblica (cifragem)


A chave privada

24

tal que mdc(b, (n))

=1

3.3.1 Esquema de Cifrao


O esquema de criptograa de chave pblica pode ser usado para cifrar mensagens
enviadas entre duas partes que se comunicam de modo que um adversrio que tem acesso
ao trfego dos criptogramas no possa decifr-los [10]. O esquema de cifrao, portanto,
utilizado para prover sigilo de contedo na comunicao. Para cifrar uma mensagem

(e, n),

com este mtodo, usando a chave de cifrao pblica

proceda da seguinte forma.

Primeiramente, represente a mensagem como um inteiro com valor entre

n 1.

Seccione a mensagem em uma srie de blocos representados tambm como inteiros, seguindo qualquer padro de representao. Com este procedimento, obtm-se a mensagem
numa forma numrica necessria para a cifragem.
Cifre elevando a mensagem potncia
criptograma

c)

o resto da diviso por

n.

e-zima

mdulo

E(m) = c = me

(mod

Para decifrar o criptograma, eleve-o potncia


decifragem

n.

Ou seja, o resultado (o

Portanto, algoritmo de cifragem

E:

n)

(3.1)

modulo

n.

Assim, o algoritmo de

D(c) = m = cd

(mod

n)

(3.2)

Note que a cifragem no aumenta o tamanho da mensagem, tanto o criptograma


quanto a mensagem so inteiros e tm tamanho de

n 1.

m, c Zn

(3.3)

A chave de cifragem (pblica) , ento, o par de inteiros


de decifragem (privada) o par de inteiros
e

Analogamente, a chave

(d, n).

Para a escolha do par de chaves, primeiro se calcula

(e, n).

como o produto de dois primos

q.
n = p q.
Estes primos so grandes e aleatrios. Apesar de

(3.4)

passar a ser pblico, os fatores

se mantm guardados devido a grande diculdade de se fatorar

esconde o modo como


Escolha um

pode ser derivado de

n.

Assim, tambm

[41].

inteiro aleatrio que seja coprimo com

(n).

Ou seja, que satisfaa:

(n) = (p 1) (q 1)
1 < e < (n) mdc(e, (n)) = 1
Usualmente nas implementaes mais conhecidas, utiliza-se, para o valor de
padres como

3, 5, 17, 257

ou

65537

[9].

e,

primos

Estes so chamados primos de Fermat, so

primos que tm a forma:


n

F (n) = 22 + 1.
O primo

65537

o maior primo de Fermat conhecido,

mais utilizado como expoente

(3.5)

F (n)

para

n = 4.

Tambm o

e, por ser grande o bastante para evitar ataques pelos quais

25

expoentes pequenos tornam o RSA vulnervel (vulnerabilidades que sero discutidas mais

bits 1 [25, 34].


p, q e e de modo a

a frente) e por ter baixo peso de Hamming, quantidade de

d
(n).

O expoente privado
multiplicativo mdulo

calculado em relao a

ser o inverso

Portanto:

de1

(mod

(n)).

A partir dos passos descritos, podemos formalizar o algoritmo RSA no esquema de


cifragem. Cada entidade deve gerar um par de chaves, pblica e privada, correspondentes
como denido no algoritmo 3.

Algorithm 3 Gerao de chaves para RSA em esquema de cifrao


1: Gere dois primos grandes aleatrios
2:
3:
4:

npq
(n) (p 1)(q 1)
Escolha e de modo que 1 < e < (n)

q,

ambos com tamanhos prximos.

e mdc(e, (n))

=1

5: Use o Algoritmo Euclidiano Estendido 1 para encontrar

tal que

1 < d < (n)

e d 1(mod (n))
(b, n)
(decifragem) (a, n)

6: A chave pblica (cifragem)


7: A chave privada

Os inteiros obtidos

tambm So chamados de expoente de cifragem e expoente

de decifragem, respectivamente.
Suponha que Alice deseja cifrar uma mensagem

para Bob e em seguida Bob a

decifra. Para isso, utiliza-se os passos do algoritmo 4

Algorithm 4 Cifragem e decifragem de uma mensagem utilizando RSA


Cifragem: Alice procede.
1: Obtm uma chave pblica autntica de Bob
2: Representa
3:

como inteiro

Zn

c m (mod n)

4: Envia o criptograma

para Bob

Decifragem: para recuperar o texto claro


1:

(e, n)

m,

Bob procede:

m c (mod n)

3.3.2 Esquema de Assinatura Digital


O esquema de criptograa de chave pblica tambm permite atribuir uma assinatura
digital a uma mensagem eletrnica. Essa assinatura equiparvel a uma verso eletrnica
de uma assinatura de punho em um documento de papel, exceto quanto s premissas de
conana.
A assinatura digital prov uma autenticao irretratvel de origem e integridade de
contedo. Pode ser facilmente vericada e caso alterado qualquer
sua validade.

26

bit

da mensagem, perde

a ferramenta perfeita para assinar contratos de negcios eletronicamente, comrcio


eletrnico e qualquer outra comunicao que necessite ser autenticada [10], tendo satisfeitas as premissas de conana.
No Brasil, as assinaturas digitais reguladas pelo ICP-Brasil tm valor jurdico.

partir da Medida Provisria 2.200-2 de 24 de outubro de 2001 foi criada a Infraestrutura


de Chaves Pblicas Brasileira (ICP-Brasil), uma cadeia hierrquica que viabilizaria a
emisso de certicados digitais. Deste modo, as transaes online entre os vrios rgos
pblicos e seus fornecedores tm valor legal.

Este recurso foi logo expandido tambm

para a iniciativa privada. A ICP-Brasil mantida e auditada pelo Instituto Nacional de


Tecnologia da Informao (ITI).
Para Bob enviar a Alice uma mensagem

assinada, ele deve calcular a assinatura

utilizando sua sua chave privada, no contexto do esquema de assinatura, que chamaremos
de funo

SB

de Bob.

s = SB (m) = md

(mod

n)

(s, m). Caso ambas as partes queiram obter sigilo da mensagem


cifrar (s, m) utilizando a chave pblica EA de Alice.

Bob envia a Alice o par


e assinatura, basta Bob

Para Alice vericar a autenticidade da assinatura de Bob basta aplicar a funo de


vericao de Bob

VB

utilizando a chave pblica de Bob.

m = VB (s) = se

(mod

n)

VB (s) e m recebido, h garantia matemtica de


que apenas a chave privada correspondente a chave pblica usada em VB e sob a custdia
Ao observar igualdade do resultado de

de Bob, foi quem assinou a mensagem.

Algorithm 5 Assinatura de uma mensagem m utilizando RSA


m como
s md (mod n)
Envia o par (s, m)

1: Representa
2:
3:

inteiro

Zn

Algorithm 6 Vericao de uma assinatura s utilizando RSA


(s, m)
v se (mod n)
if m = v then return true

1: Recebe o par
2:
3:
4:

else return false

Demonstrao da exatido da decifragem


1. Para

qP

e por propriedades da funo totient

(n) = (p) (q)


(n) = (p 1)(q 1)
Como

e coprimo com (n), ele tem um inverso multiplicativo d no anel de inteiros


(n) Z(n) .

modulo

27

ed1
Quer dizer que
inteiro

ed

dividido por

(n)

(mod

(n))

deixa resto

1.

Existe, ento, um quociente

tal que:

ed = 1 + k (n).

(3.6)

Pelo terorema de Fermat, sabemos que:

mp1 1

k (q 1)

Elevando os dois lados da congruncia a


lados por

p)

(mod

e depois multiplicados ambos

obtemos:

m mk(p1)(q1) m

(mod

p)

(mod

p)

m1+k(n) m

(mod

p)

1+k(p1)(q1)

(3.7)

Substituindo 3.6 em 3.7, temos:

med m

(mod

p).

Pela mesma justicativa, podemos chegar no resultado mdulo

mde m
Como

(mod

q).

so primos distintos, a congruncia vale para

med m
Lembrando que

c = (me ),

(mod

q:

p q:

n).

por m, temos:

cd (me )d m

(mod

n)

[29].

3.3.3 Funes de Resumo e Preenchimento


Em um cenrio real, o uso do RSA deve se atentar a diversos problemas no abordados
no RSA livro texto 3.1.
Por motivos de segurana e tambm desempenho, as mensagens ou documentos digitais
no so assinados diretamente. Caso o documento seja muito grande, haver alto custo
computacional para gerar uma assinatura de mesmo tamanho. Tambm podemos notar
que tendo a posse de duas assinaturas distintas de Bob, pode-se forjar uma terceira
assinatura a qual Bob no teria como retrat-la.

28

m1

Imagine que Bob assinou as mensagens

m2 ,

s1 = md1

(mod

n)

s2 = md2

(mod

n)

logo temos

s1

Fazendo o produto das mensagens, criamos uma nova mensagem

s2

tal que:

m3 :

m3 = m1 m2
m3 ,

A assinatura de

que desejamos obter sem o consentimento de Bob, seria:

s3 = md3

(mod

s3 = (m1 m2 )d
s3 = md1 md2

n)
(mod

(mod

Assim, podemos facilmente fazer a forja de

s3

n)

n)

atravs do produto de

s1

s2 :

s3 = s1 s2
s3 = md1 md2

(mod

n)

Para obter resistncia a esses ataques, no se utiliza o texto em claro para ser assinado,
mas sim o seu

hash, artefato de tamanho xo resultante da funo de resumo.

Esta funo

de resumo criptogrco no invertvel, consequentemente o nico mtodo para encontrar


uma mensagem

hash

a partir do seu

hash h(m)

o da busca exaustiva (caso a funo de

tenha resistncia a pr-imagem).

Outro fato no abordado no RSA livro texto o caso das mensagens cifradas terem
tamanho menor do que as chaves do RSA. Esta vulnerabilidade abre a oportunidade para
vrios tipos de ataques [32] utilizando ideia semelhante ao da forja de assinatura citada.
O preenchimento (padding ) no opcional, uma primitiva criptogrca crtica. Devese realizar o

padding

padro descrito por

com bits aleatrios nas mensagens a serem cifradas, seguindo o

Public-Key Cryptography Standards

(PKCS#1). Padro que j foi

demonstrado inseguro [32] em sua verso 1.5 e hoje, sendo complementado pelo uso do

Optimal Asymmetric Encryption Padding

(OAEP), uma maneira mais segura de realizar

o preenchimento que tambm faz uso de funes de resumo.

29

Captulo 4
Teste de Primalidade
4.1 Importncia dos Nmeros Primos
A ecincia na gerao de chaves e parmetros para criptograa de chave pblica
pr-requisito crucial para estes sistemas. Citando como exemplo, a necessidade de um

p para denir um corpo Zp que satisfaa as propriedades no protocolo Diee tambm a necessidade de se gerar primos p e q para operaes mdulo

nmero primo
Hellman [12]

n = pq

no algoritmo RSA, principal protocolo que teve enfoque neste documento. Neste

caso, os primos devem ter tamanho grande (metade do tamanho de

n),

bits

desejado para

aleatrios, de forma que um adversrio no obtenha vantagem com a probabilidade

de escolha da chave e que a tentativa de fatorar

seja intratvel.

A busca por nmeros primos grandes responsvel por mais da metade do tempo de
gerao de chaves do RSA. Tal fato corrobora a estratgia de otimizao adotada.
Dese-ja que estes nmeros primos atenda a alguma propriedades adicionais a m de
tornar o sistema no passvel a ataques especializados:
1. Resistente contra o algoritmo de fatorao por curvas elpticas: a diferena entre

no deve ser pequena.

pq

pequeno implica

p q,

fatorao eciente seria a busca de divisores mpares prximos de


2. O uso de

strong primes

mais custosa.

(primos fortes) para os fatores

p
n.

assim

n.

Uma

torna a fatorao de

Primos fortes tm denies distintas no campo da Criptograa

e da Teoria dos Nmeros. Em Criptograa, um primo

dito forte se satisfaz as

seguintes propriedades:

p1

deve ter fator primo grande

p1 1
p+1

p1 .

deve ter fator primo grande

de ter fator primo grande

p2 .

p3 .

Dado o Teorema dos Nmeros Primos, em um espao de tamanho n, a probabilidade


P (n) de um nmero aleatrio ser primo P (n) = ln1n . Para criptograa, so usados
apenas primos grandes, p > 2, portanto calcula-se apenas para n mpares, o que aumenta
a probabilidade para

P (n) =
30

2
ln

4.2 Frmula para Primos


Uma funo ou polinmio gerador de primo uma funo
naturais

f (n)

denida para todos os

1 que tenha apenas primos em sua imagem.

H muito tempo, matemticos buscam uma funo ou frmula fechada que gere nmeros nmeros primos, sem excees. Euler, em 1772, foi o primeiro a notar que o polinmio
P (n) = n2 n + 41 produzia somente nmeros primos como sada.

P (1) = 41,

P (2) = 43,

P (3) = 47,

P (4) = 53,

Entretanto, o polinmio funcionava apenas para

1681 = 41 41,

P (5) = 61,

1 n < 41,

P (6) = 71,

para

...

n = 41, P (41) =

ela falha. Este foi um dos primeiros esforos realizados na rea e serve

apenas como curiosidade.


Goldbach, em correspondncias trocadas com Euler por volta de 1750, desenvolveu
uma prova de que no existe polinmio com coecientes inteiros que resulte em primos
para qualquer entrada inteira [33]. Tambm, nenhuma construo que seja eciente para
gerar primos conhecida at o momento.

4.2.1 Funo de Mills


Em 1947 foi demonstrada a primeira funo geradora de primos por W. H. Mills [31],
quem provou existir um nmero real

tal que, se

ento

M (n)

a funo geradora de Mills,

M (n) = bA3 c
resulta um nmero primo para qualquer inteiro
chamados de primos de Mills e

n.

Os primos resultados de

M (n)

so

chamada de constante de Mills.

A = 1, 3063778838630806904686144926 . . .

[20].

Um obstculo evidente, que inviabiliza a utilizao desta funo, o fato de seu


crescimento ser exponencial, rapidamente os primos se tornam to grandes que passa a
ser intratvel para os computadores.

n = 1,
n = 2,
n = 3,
n = 4,
n = 5,

M (n) = 2
M (n) = 11
M (n) = 1361
M (n) = 2521008887
M (n) = 16022236204009818131831320183

.
.
.

.
.
.

Outra diculdade a de que quanto maior o valor de

n,

maior deve ser a preciso de

A.

E at ento no h meio diferente de estender a preciso da constante seno pelo prprio


1/3n
valor do n-simo primo de Mills Pn , A = Pn
, o que torna um argumento recursivo.
Pouco se sabe a respeito da constante de Mills, se racional ou irracional [16] e se
h outro meio de comput-la. Tambm existem outras funes desse tipo na literatura,
contudo, devido os motivos citados, essas funes no tm aplicaes prticas, mas exibem
um problema ainda em aberto.

31

4.3 Testes de Primalidade


Como j foi dito, a fatorao de nmeros grandes um problema intratvel para os
computadores de hoje em dia. Mas e se apenas precisarmos saber se um nmero primo
ou composto, independente de quais so os seus fatores? Em 1801, Gauss parecia j
ter percebido que a fatorao e o teste de primalidade so dois problemas distintos, como
pode ser visto na seguinte passagem [1]:
O problema de distinguir nmeros primos de nmeros compostos e de solucionar o ltimo em seus fatores primos conhecido por ser uma das questes
mais importantes e teis da aritmtica. Ele tem aproximado a indstria e a
sabedoria dos gemetras antigos e modernos de tal maneira que seria intil
discutir o problema por muito tempo. . .

Alm disso, a dignidade da prpria

Cincia parece exigir que todos os recursos possveis sejam explorados para a
soluo de um problema to elegante e to celebrado.
Pode-se mencionar que Shor [45] demonstrou que o problema da fatorao se torna
polinomial em computadores qunticos, computadores cujo clculo pode percorrer por
todos os estados possveis ao mesmo tempo.
Como abordado na seo 3.1, um problema de deciso uma questo formal cuja

sim ou no. O teste


sim quando o nmero

resposta seja ou

de primalidade um problema de deciso no

qual a reposta

analisado primo e

no

caso seja composto.

No nos preocuparemos com a fatorao de nmeros, mas apenas armar quanto a sua
primalidade.
Dizer que um nmero primo implica, evidentemente, negar sua compositividade e
vice-versa:

primo

primo

composto
composto

Logo, tambm podemos utilizar um teste de compositividade para provar a primalidade, ou no primalidade, de um nmero.
Trataremos a respeito de dois tipos de teste:

Teste Determinstico: so testes que asseguram certeza matemtica para todas as


respostas.

Teste Probabilsticos: so testes que contm probabilidade de erro, de incerteza.


Escolhe-se um candidato aleatrio e aplica-se a ele critrios que possam refutar ou
conrmar certa propriedade.

A cada rodada do teste, o candidato adquire maior

probabilidade para uma resposta.


Como exemplo, imagine um jogo em que h dois copos opacos e uma bola vermelha
sob um deles.

A cada rodada do jogo os copos so embaralhados e voc deve

escolher um em que acredita conter a bola vermelha. O autor em nenhum momento


mostra a existncia da bola vermelha. A probabilidade P (b) de voc acertar o copo
P (b) = 12 . Digamos que aps 30 rodadas, voc no acertou o

que possui a bola seria

32

copo com a bola nenhuma vez, ento a probabilidade de obter 30 fracassos sucessivos
30
no jogo seria 2
0.0000001%, aproximadamente uma em um bilho.
Tendo este resultado, podemos armar com alta probabilidade que o jogo desonesto, mas nunca h certeza.

80
Os padres de criptograa exigem uma probabilidade de erro  de no mximo 2
ou
100
2
para gerar nmeros primos [21], ou seja, mais provvel uma pessoa ganhar 3 vezes
seguidas na Mega-Sena, o maior prmio da loteria federal, do que um nmero composto
ser dado como primo provvel. Pode aparentar uma margem de segurana excessiva, mas
aplicao de segurana devem ser excessivas.
Algoritmos probabilsticos podem ser classicados em dois tipos:

Algoritmos de Monte Carlo: podem produzir resultado incorreto.

Algoritmos Las Vegas: podem causar falha ao tentar produzir um resultado.

Para problemas de deciso, algoritmos de Monte Carlo so usualmente classicados


como:

Monte Carlo com vis positivo: sempre correto quando retorna

sim.

Monte Carlo com vis negativo: sempre correto quanto retorna

no.

4.3.1 Crivo de Eratstenes


O crivo de Eratstenes um algoritmo determinstico de teste de primalidade.
No incio da histria desta disciplina, Eratstenes desenvolveu um crivo elementar para
listar nmeros primos [15]. Para ilustrar este mtodo, consideremos o problema de listar
todos os primos menores que 50.
Primeiro, iremos ordenar todos os inteiros de 1 a 50 em uma grade.
1

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

10

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

Inicialmente, eliminamos o 1, seguimos para o 2 e retiramos da grade todos os mltiplos


de 2. Agora selecionamos o prximo nmero que ainda permanece, o 3, e retiramos da
grade todos os mltiplos de 3.
mltiplos.

Selecionamos o prximo, 5, e retiramos todos os seus

Repita o processo at que no haja mltiplos menores que 50.

nmeros restantes sero todos primos.

11






13


31
41

23


43

 5 
  
  
  
  

33

7
17


37
47








19
29










Ao nal os

Note que a partir da retirada dos mltiplos de 7, todos os primos at 50 j esto


denidos.
Pelo crivo de Erasttenes podemos concluir o seguinte resultado:
Se

nN

no possui nenhum divisor

rN

tal que

r<

n,

ento

nP

Esta abordagem, analisada no contexto criptogrco, pode ser considerada ingnua,


pois o problema de eliminar todos os mltiplos da grade pode ser comparado como to
difcil quanto o problema da fatorao.

4.3.2 Teste de Fermat


O teorema de Fermat 3.2.6 garante que se um nmero
que

1 a p 1,

primo e

um inteiro tal

ento

ap1 1

(mod

p).

Logo, denir um candidato a primo n e encontrar um a que no satisfaa o teorema


an1 6 1(mod p), suciente para provar a compositividade de n, ento n

de Fermat,

no primo. Por outro lado, se


que

validar a congruncia de Fermat, agrega-se indcio de

pode ser primo.

Algorithm 7 Teste de primalidade de Fermat


Input: Inteiro mpar n 3 e o parmetro de segurana t 1.
Output: Ou primo ou composto.
1: for i 1 to t do
2:
3:
4:
5:
6:
7:
8:

a inteiro aleatrio
r an1 mod n
if r 6= 1 then

com

2an2

return composto
end if
end for
return primo
O parmetro

o nmero de rodadas a serem executadas.

maior a probabilidade de

Quanto mais rodadas,

ser primo.

Pseudoprimos
Um nmero composto que passa em um teste de primalidade chamado de pseudoprimo. Existem nmeros compostos com propriedades peculiares que passam na congruncia do teorema para toda base. Neste caso, esses pseudoprimos so especialmente
chamados de nmeros de Carmichael.

561 = 3 11 17, verica-se que para todo a Z561 ,


561) verdadeiro. O terceiro nmero de Carmichael 1729, tambm
taxicab number, um nmero com uma histria curiosa.

O primeiro nmero de Carmichael

a560 1

(mod

chamado de

34

Assim como os primos, os nmeros de Carmichael foram provados innitos, como


tambm que so innitos os nmeros de Carmichael formados pelo produto de 3 primos
21
distintos [40]. Pinch [35] computou 20138200 nmeros de Carmichael entre 1 e 10 , o que
14
d aproximadamente 2 10
as chances de encontr-los. Mesmo aparentando ter uma
baixa probabilidade de se encontrar um nmero de Carmichal, ela muito maior do que
a probabilidade de erro desejvel e tal fato inviabiliza o teste.
O teste de Fermat no usado verdadeiramente como teste de primalidade devido a
ocorrncia dos nmeros de Carmichael, no entanto, um timo exemplo didtico para
a compreenso de como funcionam os testes de primalidade probabilsticos e tambm
mostra que possvel criar testes mais sosticados, ecientes e com tempo de execuo
polinomial.

4.3.3 Teste de Solovay-Strassen


O teste de Solovay-Strassen [47] um algoritmo de Mont Carlo com vis positivo para
1
a compositividade de n e probabilidade de erro  = . Teve um papel importante, pois foi
2
o primeiro teste a ser popularizado, mostrando a real viabilidade da criptograa de chave
pblica, em particular o RSA, porm no mais utilizado devido a criao de testes mais
ecientes.
Baseia-se no critrio de Euler e smbolos de Jacobi e Legendre 3.2.8.

mpar

Pa

n1
2

a
n

(mod n) a Zn

tal que mdc(a, n)

n1
2

= 1.

6 ( na )(mod n), a uma testemunha que prova que n composto.

n1
a
Caso contrrio, mdc(a, n) = 1 e a 2 ( )(mod n), n se comporta como primo, pois
n
satisfaz o critrio de Euler para a base a. Contudo, seja n um mpar composto, ento
(n)
existem no mximo
bases a, com 1 a n 1, que satisfazem o critrio de Euler,
2
mesmo com n composto [29].
Caso

( na ) = 0 ou a

Algorithm 8 Teste de primalidade de Solovay-Strassn


Input: Inteiro mpar n 3 e o parmetro de segurana t 1.
Output: Ou primo ou composto.
1: for i 1 to t do
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:

x ( na )
if x = 0 then

return composto
end ifn1

ya 2
if x 6= y

n
n then

mod

mod

return composto
end if
end for
return primo

35

4.3.4 Teste de Miller-Rabin


Miller [30], assumindo a Hiptese Estendida de Riemann (HER) como verdadeira,
mostrou que a primalidade pode ser testada em tempo polinomial, isto , o problema
de deciso a respeito da primalidade de um nmero estar no conjunto de problemas P
requer que seja possvel encontrar um certicador de primalidade em tempo polinomial.
Para isso, a demostrao de Miller assumia a Hiptese Estendida de Riemann, um dos
extraordinrios problemas da Matemtica ainda em aberto.

A Hiptese de Riemann

um dos problemas do milnio e sua soluo vale uma recompensa no valor de um milho
de dlares, que trata a respeito das razes da funo zeta de Riemann e tambm tem
profunda ligao com a densidade dos nmeros primos.
Rabin [37] aleatorizou a abordagem de Miller, conseguindo, deste modo, eliminar a
dependncia da HER e criar o teste probabilstico de Miller-Rabin, um dos testes mais
ecientes da atualidade [11].
O teste de Miller-Rabin um algoritmo de Monte Carlo com vis positivo para com = 14 e o teste probabilstico mais utilizado na prtica.
Sabemos que as razes quadradas de 1 mod p com p P, s podem ser 1 e 1.
p1
Analisando o PTF, a
1(mod p) com p P, ao extrair sucessivas razes quadradas
p1
de a
, devemos obter 1 ou 1.
k
Seja n um primo mpar, n 1 par, logo pode ser escrito na forma n 1 = 2 m em
positividade com erro

que a potncia
Seja

1 e m deve ser mpar.


mdc(a, n) = 1, ento

no mnimo

inteiro tal que

am 1(mod n)
ou

a2 m 1(mod n),

para algum

r, 0 r k 1

Consequentemente
r

am 6 1(modn) e se a2 m 6 1(mod n) r zk ,
nha de que n composto.

Se

Caso contrrio, se
a base

uma

ento

am 1(modn) ou a2 m 1(mod n),


testemunha da primalidade de n.

uma forte testemu-

para algum

Assim, podemos formalizar o algoritmo de teste de primalidade 9.

36

r zk ,

ento

Algorithm 9 Teste de primalidade de Miller-Rabin


Input: Inteiro mpar n 3 e o parmetro de segurana t 1.
Output: Ou primo ou composto.
n 1 na forma 2k m {com k mximo e m
for i 1 to t do
a inteiro aleatrio tal que 1 a n 1
b am mod n
if b = 1 then

1: Escreve
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:

mpar}

return primo
end if
for i 1 to k 1 do
if b = 1 then
return primo
else
b b2

mod

end if
end for
return composto
end for

4.3.5 Teste de Adleman-Huang


Adleman e Huang [2], em 1992, apresentaram uma variao de um teste de primalidade
por curva elptica.

Esse teste o oposto dos que foram abordados at ento, um

algoritmo de Monte Carlo com vis positivo para primalidade, ou seja, para um nmero
composto, o teste sempre vai dar como sada composto e para uma entrada primo, o teste
vai dar na maioria das rodadas primo. Deste modo, se o sada
certeza primo e se a sada

primo, o nmero com

composto, o nmero provavelmente composto.

Uma abordagem a se questionar seria a de intercalar um teste de vis positivo para


compositividade com um teste de vis positivo para primalidade, assim o primeiro resultado no enviesado dado como sada sempre correta. Infelizmente, aps um nmero xo
de rodadas, h chances de nenhum dos dois casos acontecer para todas as rodadas [1].

4.3.6 Teste AKS


Em Agosto de 2002, o indiano N. Agrawal e seus slunos N. Kayal e N. Saxena apresentaram o algoritmo AKS, publicado no artigo  PRIME

is in P 

[3], nome que faz referncia

ao conjunto de problemas polinomiais. Foi a primeira prova de que existe um algoritmo


determinstico com tempo de execuo polinomial para o teste de primos, sem restries
ou premissas, demonstrando enm que o problema da primalidade est em P. Este trabalho foi to expressivo que teve reconhecimento da mdia internacional e tambm os
autores foram prestigiados com os prmios

Gdel

Fulkerson

em 2006.

A motivao inicial para este teste pode ser observada em uma propriedade do tringulo de Pascal.

37

n=0
1
n=1
1 1
n=2
1 2 1
n=3
1 3 3 1
n=4
1 4 6 4 1
n=5
1 5 10 10 5 1
n=6
1 6 15 20 15 6 1
n = 7 1 7 21 35 35 21 7 1
n = 8 1 8 28 56 70 56 28 8 1
.
.
.
Cada linha

.
.
.

contm os coecientes da expanso do binmio

(x + y)n ,

que pode ser

obtido pela combinao

 
n
n!
,
=
k!(n k)!
k
para

n, k N

k n,

ou pela relao de recorrncia

  
 

n
n1
n1
=
+
.
k
k1
k
Um interessante fato pode ser notado nas linhas primas do tringulo, todos os coecientes
diferentes de

so mltiplos de

quando

primo. A partir do pequeno teorema de

Fermat, chaga-se seguinte expresso para polinmios: seja

n>2

a Zn ,

ento

primo se e somente se

(x + a)n = xn + a

(mod

Como todos os coecientes da expanso de (x


n
n
os elementos das colunas 0 e n, x e a . Logo, se
qualquer

n).

+ a)n so divisveis por n, resta apenas


n primo, ento nk 0 (mod n) para

0 < k < n.

Ainda assim, esta expresso resultada de Fermat tambm sofre com o problema dos
pseudo-primos, nmeros de Carmichael. Um outro problema o alto custo computacional
n
para calcular (x + a) , que tem complexidade O(n), o que inviabilizaria o teste.
Algumas modicaes foram realizadas para contornar esses obstculos e reduzir sua
complexidade. Para um valor pequeno

r,

escolhido adequadamente, ento para todo

r
(x + a)n xn + a
A quantidade de valores de

(mod

xr 1, n).

que devem ser testados, assim como o valor de

so

limitados por um polinmio em log n, deste modo resultando em um teste de primalidade


que determinstico e com tempo de execuo polinomial.

38

Algorithm 10 Teste de primalidade AKS


Input: Inteiro n > 1
Output: Ou primo ou composto.
b
b
1: if n = a then
// Se n uma potncia perfeita. a, b N : n = a
2:
return composto
3: end if
r tal que Or (n) > log2 n
if 1 < mdc(a, n) < n para algum a r then

4: Encontre o menor
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:

return composto.
end if
if n r then
return primo
end if
p
for a 1 to b (r) log nc do
if (x + a)n 6= xn + a (mod xr 1, n) then
return composto
end if
end for
return primo

Nesta primeira verso apresentada pelos autores, foi provado que o algoritmo tem um
O(log12 n). Logo aps a publicao deste trabalho [3], vrios

limite superior assinttico

matemticos revisaram o artigo em busca de torn-lo mais eciente, o que foi bastante
positivo, pois logo nos meses seguintes havia a proposta de diferentes verses para o teste
e com limites mais baixos.
A ltima verso do teste AKS proposta por Lenstra e Pomerance [26] conseguiu alO(log6 n). o limite terico mais baixo para o teste que

canar uma complexidade de

no depende de conjecturas ou possua excees.


Apesar dos progressos realizados sob o algoritmo AKS, seu tempo de execuo ainda
signicativamente mais lento do que os testes probabilsticos, portanto ainda no
utilizado nas principais solues para criptograa.

39

Captulo 5
Teste de Frobenius Quadrtico
Simplicado
O teste escolhido para o desenvolvimento deste trabalho foi o Teste de Frobenius
Quadrtico Simplicado [43] (TFQS), baseado no Teste de Frobenius Quadrtico proposto
por Grantham [18]. Nesta verso simplicada, o tempo de execuo foi reduzido de trs
rodadas do testes de Miller-Rabin para duas e a probabilidade de erro, para o pior caso,
12t
de 2
, sendo t o nmero de rodadas.
A publicao de Grantham estimulou vrias outras pesquisas e novas verses para o
teste. O TFQS, a princpio, aparenta ser um teste muito promissor, pois, apesar de ter
um tempo de execuo maior, tem uma probabilidade de erro extremamente baixa, o que
reduz bastante a quantidade de rodadas necessrias, t, para obter exigncias de segurana
e o torna um teste convel. Tambm, ainda no se tem conhecimento de trabalhos de
implementao ou anlise de desempenho deste teste em comparao aos utilizados na
indstria, o que refora a motivao de examin-lo.
O TFQS um algoritmo de Monte Carlo com vis positivo para compositividade, usa
polinmios quadrticos e o automorsmo de Frobenius.
m
Seja q = p
a potncia de um primo p e o corpo nito
Galois. O

automorsmo de Frobenius q

Fq = G(q), G

a extenso de

o mapeamento na bijeo

:F F
z 7 z q
z F.
um n natural

para todo
Para

mpar e

R(n, c)

uma unidade mdulo

denota o anel polinomial

n,

Zn [x]/(f (x) = x2 c),

R(n, c) o grupo multiplicativo em R(n, c). Sendo f (x) um polinmio mnico quadrtico
em Zn , se n primo e f (x) irredutvel em Zn , ento este anel equivalente ao corpo
2
nito G(n ). Felizmente, esses polinmios so facilmente encontrados: para n primo,
um polinmio quadrtico em Zn irredutvel se e somente se seu discriminante, ,
2
um
no-quadrtico mdulo n, ou seja, para o polinmio mnico x bx c,

 2 resduo
b +4c
= 1.
n
e

cclico de ordem n 1, ento qualquer z R(n, c) deve ter uma ordem


2
dividindo n 1. Tambm possui um automorsmo natural, chamado conjugado em

G(n2 )

40

n
2
que deve ser equivalente ao automorsmo de Frobenius z z em G(n ) para n
2
1
2
primo. Alm disso, sendo n primo, n 1 divisvel por 24
e tambm G(n ) tem um

R(n, c),

grupo cclico de razes 24 de unidade, gerado por uma raiz primitiva.


Todas

q -simas

razes de unidade

q.
polinmio z = ax + b,

z,

se existir, satisfazem

q (z) = 0

para o

q -simo

polinmio ciclotmico
Para um

dene-se o seguinte homomorsmo multiplicativo em

R(n, c):

: R(n, c) R(n, c),


N () : R(n, c) Zn ,
Tambm ser utilizada a notao

(a/n)

z = b ax
N (z) = z z = b2 ca2

(conjugado);
(norma).

para o smbolo de Jacobi, tratado na seo 3.2.8.

O Algoritmo 11 um crivo inicial equivalente a uma rodada do teste de Miller-Rabin


com uma base pequena. Retorna ou uma raiz oitava primitiva de unidade em uma extenso quadrtica conveniente de

Zn

ou uma prova de que

composto.

Algorithm 11 Teste de Miller-Rabin com base dois ou no-resduo pequeno


Input: Inteiro mpar n.
Output: Ou composto ou um inteiro c tal que (c/n) = 1 e  R(n, c) com 4 = 1
(i.e.
1:

8 () = 0).

if n = 3 (mod 4) then
n3

2 4 (mod n)
if 22 6= 1 (mod n) then return
else return c 1,  + x

2:
3:
4:
5:
6:

composto

end if
if n = 5 (mod 8) then
n1

2 4 (mod n)
if 2 6= 1 (mod n) then return
x
else return c 2,  1+
2

7:
8:
9:
10:
11:
12:
13:
14:

end if
if n = 1 (mod 8) then
if n um quadrado perfeito then
return composto
else

15:
16:
17:
18:
19:
20:

composto

c valor aleatrio pequeno tal que (c/n) = 1


n1
c 8 (mod n)
if 4 6= 1 (mod n) then return composto
else return c, 

end if
end if

Na verdade, o Algoritmo MR2 realiza uma rodada de Miller-Rabin com base 2 caso
6= 1 (mod 8) e com base c caso contrrio. A relao 4 = 1 (mod R(n, c)) evidente

caso

n = 1 (mod 8) e facilmente vericvel pelas representaes padres (1 1)/ 2

das quatro razes oitavas primitivas de unidade nos outros casos [43].

1 prova trivial pelo Teorema Chins do Resto

41

Como foi citado, o conjugado tambm um automorsmo em

R(n, c).

O comporta-

mento de Frobenius sob o conjugado similar ao comportamento do grupo de decomposio como um todo.
Suponha o grupo G. Dois elementos a e b so ditos conjugados se existe um elemento
g G tal que gag 1 = b. Isso mostra que o conjugado uma relao de equivalncia e toda
conjugao um automorsmo. Logo, a no vericao do automorsmo de Frobenius
(z n 6= z) um certicador da compositividade de n.
O Algoritmo 12 representa uma rodada do teste de Frobenius quadrtico simplicado.

Algorithm 12 Rodada do TFQS


Input: Inteiro mpar n, inteiro pequeno c
com

Ou

1: Escolha

3:
4:
5:
6:
7:
8:

(c, n) = 1

e o polinmio

 R(n, c)

 = 1.

Output:
2:

tal que

primo ou composto
aleatrio

R(n, c)

if z n 6= z then
return composto
endn2if1
if z 8 6 {, 3 } then
return composto
end if
return primo

com

(N (z)/n) = 1

5.1 Implementao
O planejamento da implementao foi realizado sobre a biblioteca criptogrca Relic [5].

Para uma implementao completa do teste, necessrio uma ferramenta que

fornea aritmtica multi-preciso, suporte manipulao de nmeros inteiros muito grandes que extrapolariam a preciso de qualquer tipo primitivo de variveis.
Em resoluo com a Relic, a implementao foi executada utilizando a linguagem C
padro C99.

Deste modo, o desenvolvimento do projeto foi iniciado seguindo as eta-

pas de Estudo, Implementao, Teste, Anlise de desempenho, Otimizao e Resultados


apresentadas na gura 5.1.

42

Figura 5.1: Fluxograma das etapas do desenvolvimento do projeto.

Antes da implementao do teste em si, foi necessrio elaborar funes especcas de


utilidade comum e de operaes em anel polinomial que no eram cobertas pela biblioteca.
As principais delas sero discutidas nos tpicos a seguir.

5.1.1 Relic
A Relic uma moderna biblioteca criptogrca com nfase em ecincia e exibilidade.
Alm de possuir vrias opes de protocolos criptogrcos, oferece suporte para construir

toolkits

criptogrcos prprios, adaptveis a diferentes nveis de segurana e tambm a

escolha de algoritmos. um projeto em andamento que prima pela fcil portabilidade e


independncia de arquitetura.
O elemento bsico da biblioteca o inteiro multi-preciso
pelo tipo

bn_t.

BigNumber,

Listing 5.1: Tipo inteiro multi-preciso.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

/
Represents a multiple precision integer.

The eld dp points to a vector of digits. These digits are organized


in littleendian format, that is, the least signicant digits are
stored in the rst positions of the vector.
/

typedef struct {
/ The number of digits allocated to this multiple precision integer. /
int alloc;
/ The number of digits actually used. /
int used;
/ The sign of this multiple precision integer. /
int sign;
/ The sequence of contiguous digits that forms this integer. /
dig_t dp;
} bn_st;
/
43

representado

20
21
22

Pointer to a multiple precision integer structure.


/

typedef bn_st bn_t

Para a implementao da aritmtica no anel


por um vetor de

BigNumbers bn_t*,

R(n, c), os polinmios sero representados

no qual o ndice representa a ordem, e o valor, o

coeciente.

5.1.2 Quadrado Perfeito


A raiz quadrada de um inteiro

a com n bits

deve estar contida no intervalo

( 2b

n1
c
2

possvel, de forma semelhante a uma busca binria, encontrar a raiz inteira de


custo de

O(log2 n)

, 2b 2 c ).

com o

multiplicaes.

Tendo a raiz inteira

de

a,

basta vericar se

c2 = a

para determinar se

quadrado

perfeito.
Listing 5.2: Funes de quadrado perfeito e raiz.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

/
Tests if a multiple precision integer is a perfect square.

@param[in] a the multiple precision integer to test.


@return 1 if the argument is a perfect square, 0 otherwise.
/

int bn_is_perfect_sqr(bn_t a);

/
Computes the integer oor square root of a multiple precision integer

@param[out] c the result.


@param[in] a the multiple precision integer to square root.
/

void bn_sqt(bn_t c, bn_t a);

5.1.3 Aritmtica Bsica


Adio e subtrao de polinmios de mesmo grau feita de maneira natural, respei-

n.
m e n,

tando a ordem de cada coeciente e a reduo mdulo


A multiplicao de dois polinmios de graus

resulta em um polinmio de

grau m + n. Como a aritmtica do teste realizada no grupo multiplicativo R(c, n) ,


2
mdulo Zn e o polinmio quadrtico x c, pode-se chegar a uma frmula fechada para
a multiplicao e reduo.
Sejam

a = a1 x + a0

b = b1 x + b0

polinmios de grau

1,

ento

a b = (a1 x + a0 )(b1 x + b0 )
a b = a1 b1 x2 + (a1 b0 + a0 b1 )x + a0 b0

44

a1 b1 x2 + (a1 b0 + a0 b1 )x + a0 b0
a1 b1 x2
+ a1 b 1 c

x2 c
a 1 b1

(5.1)

(a1 b0 + a0 b1 )x + a0 b0 + a1 b1 c
O custo de processamento desses algoritmos limitado pelo nmero de multiplicaes,
quadrados e redues entre nmeros grandes, portanto iremos desconsiderar o custo das
somas e subtraes, que em geral so muito inferiores. Deste modo, uma multiplicao
de dois polinmios custa quatro multiplicaes e uma reduo de coecientes em Zn .

Para o quadrado de um polinmio em R(n, c) , basta usar o mesmo resultado de 5.1


com

a = b,

que resulta em

a2 = 2a1 a0 x + a20 + a21 c


com o custo de uma multiplicao e dois quadrados. As multiplicaes por potncias de
2 so feitas de forma hbil apenas com operaes de

shift.

Listing 5.3: Funes de aritmtica bsica.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37

/
Adds two multiple precision polynoms in a polynomial ring. c = a + b.

@param[out] c the result.


@param[in] a the rst multiple precision polynom to add.
@param[in] b the second multiple precision polynom to add.
@param[in] n the modulus of coecients.
/
bn_pol_add(
c,
a,
b,
n);

void

bn_t

bn_t

bn_t

bn_t

/
Subtracts two multiple precision polynoms in a polynomial ring. c = a b.

@param[out] c
@param[in] a
@param[in] b
@param[in] n
/

the result.
the rst multiple precision polynom to add.
the second multiple precision polynom to add.
the modulus of coecients.

void bn_pol_sub(bn_t c, bn_t a, bn_t b, bn_t n);


/
Multiplies two multiple precision polynoms in a polynomial ring.

@param[out] c
@param[in] a
@param[in] b
@param[in] m
@param[in] n
/

the result.
the rst multiple precision polynom to multiply.
the second multiple precision polynom to multiply.
the polynomial modulus.
the modulus of coecients.

void bn_pol_mul_basic(bn_t c, bn_t a, bn_t b, bn_t m, bn_t n);


/
Computes the square of a multiple precision polynom in a polynomial ring.

@param[out] c the result.


@param[in] a the multiple precision polynom to square.
@param[in] m the polynomial modulus.
45

38
39
40

@param[in] n
/

the modulus of coecients.

void bn_pol_sqr_basic(bn_t c, bn_t a, bn_t m, bn_t n);

5.1.4 Exponenciao Modular


A maneira mais ingnua, at mesmo para nmeros de preciso simples, de calcular
c = ak mod n consiste em realizar k 1 multiplicaes. Em aplicaes criptogrcas, a
512
1024
grandeza de k normalmente excede 2
ou 2
. Computar tais multiplicaes tomaria
mais tempo do que a vida do Universo, o que torna inecaz tal abordagem.
Podemos descrever a exponenciao na seguinte forma recursiva:

 k1 2
ak = a a 2

 2

a k2

se

k=0

se

k1

(mod

2)

se

k0

(mod

2)

Utilizando essa ideia, podemos entender as sucessivas divises por

right

nos

bits

como um

shift

do expoente. Assim, o Algoritmo 13 faz um percorrimento da esquerda para

a direita no expoente e realiza quadrados ou multiplicaes.

Algorithm 13 Exponenciao modular binria esquerda para direita


Input: Polinmios a, f . Inteiros e, n.
Output: c = ae mod (n, f ).
1:
2:
3:
4:
5:
6:
7:
8:

c1
for i |e| 1 downto 0 do
c c2 mod (n, f )
if ei = 1 then
c a c mod (n, f )

end if
end for
return c

Neste caso, a exponenciao modular realizada com

O(log2 n) quadrados e o(log2 n)

multiplicaes.
Listing 5.4: Funo de exponenciao modular esquerda para direita.
1
2
3
4
5
6
7
8
9
10

/
Exponentiates a multiple precision polynom modulo a polynomial modulus
using the binary method.

@param[out] c the result.


@param[in] a the polynomial basis.
@param[in] b the exponent.
@param[in] m the polynomial modulus.
@param[in] n the modulus of coecients.
/
46

11

void bn_pol_mxp_ltr(bn_t c, bn_t a, bn_t b, bn_t m, bn_t n);

5.1.5 Probabilidade de Erro


O nmero de rodadas do teste assegura um limite inferior de probabilidade de erro de
100
2
, seguindo recomendao [21]. Esta implementao adota os valores da Tabela 5.1
como referncia.

Tabela 5.1: Probabilidade de erro para o TFQS (bits

k vs.

nmero de rodadas t). Retirada

de [43].

k \t

300

48

100

124

143

160

400

57

118

146

169

189

500

65

134

166

192

214

600

72

148

184

212

237

1000

96

197

243

281

314

5.2 Otimizao
5.2.1 Crivo para Quadrados Perfeitos
a um inteiro par e b um inteiro mpar, ento eles tero a forma a = 2n e b = 2m+1,
n, m N. Assim,

Seja
para

a2 = (2n)2 = 4n2
b2 = (2m + 1)2 = 4m2 + 4m + 1 = 4 (m + m2 ) +1 = 4k + 1
| {z }

Disto, tira-se que todo quadrado perfeito par mltiplo de


mpar deixa resto

mod

e, por transitividade,

mod

4,

todo quadrado perfeito

8.

Analisando o digito menos signicativo, e o seu quadrado, dos mltiplos de 4 e dos


mpares que deixam resto

4, chega-se a concluso que os quadrados


0, 1, 4, 5, 6 e 9 como digito menos signicativo.

na diviso por

perfeitos s podem ter os algarismos

A partir dessa ideia, pode-se criar um crivo inicial que retorna


candidato a quadrado perfeito que termine em

2, 3, 7

ou

falso para qualquer

8.

5.2.2 Multiplicao de Karatsuba


Anatolii Alexeevitch Karatsuba, quando jovem aluno de graduao, props um eciente algoritmo para multiplicao [23] de dois nmeros grandes que contradizia uma
conjectura lanada por seu professor, A. Kolmogorov, a respeito de um limite inferior
para essa multiplicao. A mesma ideia de Karatsuba pode ser aplicada na multiplicao
de polinmios.

47



a b = (a1 + a0 )(b1 + b0 ) a1 b1 a0 b0 x + a0 b0 + a1 b1 c
Expandindo essa expresso de Karatsuba, pode-se notar que retorna ao mesmo resultado da equao 5.1.

Assim, reutilizando os produtos j computados, o custo da

multiplicao de dois polinmios cai para trs multiplicaes e uma reduo.


Listing 5.5: Funo multiplicao de Karatsuba.
1
2
3
4
5
6
7
8
9
10
11

/
Multiplies two multiple precision polynoms using Karatsuba multiplication
in a polynomial ring.

@param[out] c the result.


@param[in] a the rst multiple precision polynom to multiply.
@param[in] b the second multiple precision polynom to multiply.
@param[in] m the polynomial modulus.
@param[in] n the modulus of coecients.
/
bn_pol_mul_karat(
c,
a,
b,
m,
n);

void

bn_t

bn_t

bn_t

bn_t

bn_t

5.2.3 Frmula do Quadrado Complexo


Tambm se tem uma expresso utilizada no quadrado de nmero complexos,

(a + bi),

que pode ser usada no quadrado de polinmios quadrticos.

a2 = 2a0 a1 x + (a0 + a1 )(a0 + a1 c) a0 a1 a0 a1 c


O custo reduzido para apenas duas multiplicaes:

(a0 + a1 )(a0 + a1 c)

a0 a1 .

Listing 5.6: Funo de quadrado utilizando forma do quadrado complexo.


1
2
3
4
5
6
7
8
9
10

/
Computes de squareof a multiple precision polynoms using complex square
form in a polynomial ring.

@param[out] c the result.


@param[in] a the multiple precision polynom to square.
@param[in] m the polynomial modulus.
@param[in] n the modulus of coecients.
/
bn_pol_sqr_complex(
c,
a,
m,

void

bn_t

bn_t

bn_t

bn_t n);

5.2.4 Janela Deslizante


O mtodo janela deslizante para exponenciao modular baseado em uma generalizao do Algoritmo 13 que possibilita o processamento de mais de um

bit

do expoente

por iterao atravs do pr-clculo de exponenciaes em uma janela. A janela deslizante


consegue reduzir o pr-clculo e a quantidade de multiplicaes [29].

w chamado de tamanho
e = (et et1 . . . e1 e0 )2 com et = 1, logo t = |e|.

Para o Algoritmo 14,


binria

48

da janela e

w 1. e

tem forma

Algorithm 14 Exponenciao modular janela deslizante


Input: Polinmios a, f . Inteiros e, n, w.
Output: c = ae mod (n, f ).
1: Pr-clculo:

a1 a, a2 a2
for i 1 to (2w1 1) do a2i+1 a2i1 a2
c 1, i t
while i 0 do
if ei = 0 then
c c2 , i i 1

2:
3:
4:
5:
6:
7:

else

8:

Encontre a maior sequncia de bits ei ei1


il+1
c c2
a(ei ei1 . . . el )2 , i l 1

9:
10:

. . . el

tal que

el = 1

(i l + 1) w

end if
end while
return c

11:
12:
13:

Listing 5.7: Funo de exponenciao modular janela deslizante.


1
2
3
4
5
6
7
8
9
10
11

/
Exponentiates a multiple precision polynom modulo a polynomial modulus
using the sliding window method.

@param[out] c the result.


@param[in] a the polynomial basis.
@param[in] b the exponent.
@param[in] m the polynomial modulus.
@param[in] n the modulus of coecients.
/
bn_pol_mxp_slide(
c,
a,

void

bn_t

bn_t

bn_t b, bn_t m, bn_t n);

5.2.5 Reduo de Montgomery


Durante a exponenciao modular, so realizadas sucessivas multiplicaes e quadrados. As repetidas redues em

Zn

nessas operaes um fator limitante do desempenho

da funo.
A diviso em multi-preciso, como tambm em preciso simples, tem alto custo computacional. Uma soluo proposta por Montgomery trocar as divises por multiplicaes.
|n|
Seja r = a b (mod n). Para n mpar, escolhe-se V = 2 . O mdc(V, n) = 1, portanto

tem inverso mdulo

n.

Ao invs de utilizar os operandos

a e b, usaremos os resduos a
e b.

chamada de forma de Montgomery:

a
= aV

(mod

b = bV

n),

49

(mod

n).

Esta transformao

Assim, podemos multiplicar

b mantendo

a forma de Montgomery:

r = a
b V 1 (mod n)
= aV bV V 1 (mod n)
= a b V (mod n)

Deste modo, podemos ento calcular

em termos de

r = r V 1

(mod

r:

n).

Deste modo, trocou-se uma diviso por quatro multiplicaes.


Tambm h um detalhe importante: para ser realizada a reduo de Montgomery
V 1 , ou seja, calcular uma inverso em Zn , fato que deve ser

necessrio o pr-clculo de

considerado na anlise do desempenho.


A otimizao alcanada quando necessrio uma repetio conhecida de operaes
que utilizam essa reduo. Neste caso, a transformao na forma de Montgomery pode
ser antecipada e a volta, atrasada para depois das repeties, aumentando o desempenho
nas redues.
Listing 5.8: Funo multiplicao e quadrado com reduo de Montgomery.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24

/
Multiplies two multiple precision polynoms using Karatsuba multiplication
in a polynomial ring using Montgomery reduction.

@param[out] c
@param[in] a
@param[in] b
@param[in] m
@param[in] n
@param[in] u
/

the result.
the rst multiple precision polynom to multiply.
the second multiple precision polynom to multiply.
the polynomial modulus.
the modulus of coecients.
the reciprocal of the modulus.

void bn_pol_mul_karat_u(bn_t c, bn_t a, bn_t b, bn_t m, bn_t n, bn_t u);


/
Computes de square of a multiple precision polynoms using complex square
form in a polynomial ring using Montgomery reduction.

@param[out] c
@param[in] a
@param[in] m
@param[in] n
@param[in] u
/

the result.
the multiple precision polynom to square.
the polynomial modulus.
the modulus of coecients.
the reciprocal of the modulus.

void bn_pol_sqr_complex_u(bn_t c, bn_t a, bn_t m, bn_t n, bn_t u);

50

5.2.6 Mudana Algbrica


Multiplicao por c pequeno
Analisando o algoritmo 11 (MR2), v-se que o inteiro retornado

c varia em apenas trs

casos:
1.

c = 1 n 1

2.

c=2

3.

c=

valor aleatrio pequeno tal que

(c/n) = 1

As multiplicaes de inteiros multi-preciso por


casos.
mdulo

podem ser simplicadas para todos os

No primeiro caso, podemos trocar uma multiplicao de

por apenas uma subtrao de

n1

e uma reduo

n.

No segundo caso, trocamos uma multiplicao e uma reduo por um

shift left

e uma

subtrao.
Para o terceiro caso, podemos trocar a busca aleatria por uma busca incremental com
no mximo 3 clculos de Jacobi [43], assim mantendo o valor de

restritamente pequeno

de modo que possamos trocar uma multiplicao e uma reduo por uma multiplicao
por dgito simples e

O(1)

subtraes.

Listing 5.9: Funo multiplicao por fator pequeno.


1
2
3
4
5
6
7
8
9
10
11

/
Multiplies a multiple precision integer for a small digit using best method
for each digit.

@param[out] c the result.


@param[in] a the multiple precision integer to multiply.
@param[in] b the digit to multiply.
@param[in] n the modulus.
@return 1 if the result was reduced modulo n, 0 otherwise
/

int bn_pol_mul_swt(bn_t c, bn_t a, bn_t b, bn_t n);


Reuso de uma exponenciao modular

possvel reduzir a quantidade de exponenciaes modulares necessrias nos seguintes


passos do algoritmo TFQS [43]:
1.

zn.

2.

z (n

2 1)/8

t = z b(n1)/8c = z (n1)/8 ,  Z e 0  < 8. Computando t previamente e


n
denindo , podemos calcular z com mais O(1) multiplicaes e quadrados. A partir de
2
t, tambm podemos obter o valor de z (n 1)/8 como segue:
Tome

2 1)/8

z (n

= z (n+1+)(n1)/8 z (+2)/8 = N (t) t z (+2)/8 .

Assim, de duas exponenciaes modulares em anel polinomial possvel reduzir para


apenas uma exponenciao e

O(1)

multiplicaes e quadrados.

51

5.2.7 Reduo Preguiosa


Em uma multiplicao de dois inteiros com
pelo menos

2k1 bits

e no mximo

2k bits.

k bits

cada, espera-se um resultado com

Portanto, na multiplicao de polinmios, alm

de ser necessria a reduo dos coecientes em

ao nal da operao, tambm deve-se

Zn

garantir que sucessivas multiplicaes no excedam a preciso mxima da biblioteca.


Entre as trs multiplicaes na implementao de Karatsuba necessria uma reduo
modular extra para que no seja excedida a preciso da biblioteca, no caso dos operandos
terem preciso mxima.
A tcnica da reduo preguiosa consiste em atrasar esta reduo intermediria para
o nal da operao:
1. Elimina-se a reduo intermediria e dene um fator de reduo

r = n 2|n| .

2. Quando necessria uma soma ou subtrao de um produto com a preciso acumulada, realiza-se uma soma ou subtrao de

como reduo.

O custo nal da multiplicao de Karatsuba em

I(n, c) de trs multiplicaes e duas

redues.
Na operao de quadrado no h como usar a tcnica da reduo preguiosa, pois o
cenrio ja timo, duas multiplicaes e duas redues modulares.

5.3 Testes
A cada passo da implementao, alterao ou otimizao no cdigo, importante
efetuar testes que garantam a corretude dos componentes para que se obtenha uma coleta
de dados consistente.
O artefato de testes foi desenvolvido em um ambiente fornecido pela prpria biblioteca
Relic. Foram construdas operaes que vericam diversas assertivas, as principais esto
descritas na Tabela 5.2.

52

Tabela 5.2: Teste de assertivas em componentes.


Denir dgito com sinal est correto.
Util

Raiz quadrada est consistente.


Quadrado perfeito est correto.
Comparao entre polinmios est correta.
Polinmio zero e teste zero esto corretos.
Cpia de polinmio est correta.
Adio de polinmios comutativa.
Adio de polinmios associativa.
Adio de polinmios tem identidade.
Adio de polinmios tem inverso.

R(n, c) comutativa.
Multiplicao em R(n, c) associativa.
Multiplicao em R(n, c) distributiva.
Multiplicao em R(n, c) tem identidade.
Multiplicao em R(n, c) tem propriedade
Quadrado em R(n, c) est correto.
Multiplicao em

Polinmio

zero.

Exponenciao modular est correta.


Negao e exponenciao modular esto corretas.
Expoente zero est correto.
Reduo de Montgomery na multiplicao est correta.
Reduo de Montgomery no quadrado est correta.
Exponenciao modular com Montgomery est correta.
MR2 e TFQS

Teste para compositividade est correto.


Teste para primalidade est correto.

O ambiente de testes do projeto tem a seguinte congurao:

Computador

Tabela 5.3: Ambiente de testes.


Asus Q550L. Intel Core i7-4500U. 8GB DDR3.

OS / kernel

Ubuntu 13.10 x86_64 / 3.11.0-15-generic

Compilador

gcc 4.8.1

Relic

relic-0.3.5

GMP

2:5.1.2+dfsg amd64.

Multiprecision arithmetic library

O uso da biblioteca GMP otimiza consideravelmente as funes da Relic.

5.4 Resultados
5.4.1 Consumo de Tempo
Ao nal das etapas de implementao e teste, chegou-se a um cdigo inicial e funcional
TFQS verso 1. Para maior compreenso do consumo de tempo do teste, foi dividido em

53

quatro partes principais:


1. Teste MR2.
2. Encontrar

3. Calcular

zn

4. Calcular

aleatrio tal que

(N (z), n) = 1

(Jacobi).

(Cmp 1).

n2 1
8

(Cmp 2).

Com esta diviso e dado um primo provvel entrada do teste, foi possvel analisar o
consumo de tempo de cada parte individualmente, apresentado na Figura 5.2. A partir
desta informao, foi criada uma estratgia de otimizao com enfoque nas partes de
maior volume.

Figura 5.2: Consumo de tempo (%) vs.

Tamanho de

(em potncia de 2) do TFQS

verso 1.

A etapa de otimizao culminou no TFQS verso 5, que tem seu consumo de tempo
apresentado na Figura 5.3.

54

Figura 5.3: Consumo de tempo (%) vs.

Tamanho de

(em potncia de 2) do TFQS

verso 5.

Pode-se notar que na Figura 5.3, ltima verso, a economia da segunda exponenciao
modular (Cmp 2) reduziu o seu tempo para um valor desprezvel. Tambm visvel que
a nica exponenciao modular restante continua custosa, seu clculo responsvel por
mais da metade do tempo de execuo do teste. As outras etapas do teste aparentaram
pouca ou nenhuma mudana.

Figura 5.4: Grco do desempenho entre TFQS verso 1 e verso 5.

Do TFQS verso 1 para a verso 5, houve um


verso se mostrou

2, 5

speedup

de 60%. Em mdia, a ltima

vezes mais rpida. Sem dvida, Todas as tcnicas de otimizao

foram importantes para este ganho, mas a que foi responsvel pelo maior volume foi a

55

economia de uma exponenciao modular (Cmp 2), que notvel na comparao entre
os Grcos 5.2 e 5.3.
Tambm foi implementada uma verso chamada TFQS Subs, na qual a busca por
um polinmio aleatrio, linha 1 do algoritmo 12, s necessria na primeira rodada do
teste. A verso alternativa no mostrou signicativa melhora no desempenho e tambm a
partir de primos com 1000

bits,

executada apenas uma rodada do TFQS, o que tornou

a verso TFQS Subs irrelevante quando necessrio alto nvel de segurana para chaves
criptogrcas.

5.4.2 Teste de Primalidade


Aps a implementao otimizada do TFQS, chegou-se comparao com o teste de
Miller-Rabin, algoritmo padro da Relic. Nesta anlise, foram necessrios alguns ajustes
para igualar o

setup

dos algoritmos. Inicialmente, as rodadas do teste de Miller-Rabin


80
estavam conguradas para uma probabilidade de erro de 2
, sendo necessrio um ajuste
100
no nmero de rodadas para se equiparar ao erro do TQFS, 2
.
A Tabela 5.4 apresenta alguns dos novos valores mais relevantes para o nmero de
rodadas ajustado para o Miller-Rabin. Estes valores foram gerados atravs da ferramenta
mrtab

Tabela 5.4: Rodadas do Miller-Rabin ajustada para erro de

t
k

2100 .

10

3883

1761

1159

868

698

586

507

448

403

367

A coleta de dados dos testes de primalidade em si, foram divididas em dois cenrios:
1. Cenrio primo. Apenas primos provveis j testados so entregues aos algoritmos.
2. Cenrio composto. Apenas inteiros compostos so entregues aos testes. Este cenrio
tem o intuito de analisar o tempo de prova de compositividade para os testes.
A Figura 5.5 apresenta o desempenho dos testes com entrada de apenas primos provveis. Para facilitar a visualizao e comparao entre os grcos, foi divido o tempo
de cada teste pelo tamanho em

bits

do inteiro testado. Deste modo h maior separao

entre as curvas.
Nota-se que o TFQS mais veloz para inteiro de at 256

bits

e a partir de 512

bits,

Miller-Rabin passa a ser mais eciente.

2 Gerador de tabelas de limite de iterao para Miller-Rabin.

56

https://code.google.com/p/mrtab/

Figura 5.5: Grco Rabin vs. TFQS para entrada primo.

No houve signicativa diferena entre o desempenho dos testes para compositividade


apresentado na Figura 5.6.

Figura 5.6: Grco Rabin vs. TFQS para entrada composto.

5.4.3 Gerador de Primos


A comparao de desempenho nal entre o TFQS e o teste de Miller-Rabin foi efetuada
sobre a utilidade real do teste de primalidade nas bibliotecas criptogrcas, funo de gerar
primos, descrita no Algoritmo 15.

57

Algorithm 15 Gerador de primos


Input: Tamanho a em bits.
Output: Primo provvel n com tamanho t bits.
1: while true do
2:
3:
4:
5:
6:

n nmero aleatroi com t bits.


if n no for divisvel por primos triviais then
if Teste_de_primalidade(n) = primo then return n

end if
end while

A linha 3 do algoritmo verica se o inteiro

divisvel por primos pequenos, os 400

ou 500 primeiros primos. Esta tcnica uma otimizao para provar a compositividade
de nmeros que tenham fatores pequenos.
Com o objetivo de obter uma anlise completa e equilibrada, as comparaes foram
novamente divididas em 2 cenrios:
1. Cenrio justo. A semente do gerador pseudoaleatrio foi xada de modo que os testes
recebam exatamente a mesma sequncia de inteiros para vericao de primalidade.
2. Cenrio aleatrio.

No h xao da semente do gerador, cada teste recebe um

inteiro aleatrio para vericao.


Deve-se ressaltar que os resultados apresentados so o da mdia de tempo de gerao
para 100 primos de cada tamanho.

Figura 5.7: Gerador de primo com semente xa. Rabin vs. TFQS.

Novamente, o TFQS supera o Miller-Rabin para a gerao de primos de at 256


com ambos analisando a mesma sequncia de inteiros.

58

bits

Figura 5.8: Gerador de primo com semente aleatria. Rabin vs. TFQS.

A Figura 5.8 reete o mesmo resultado anterior.

Embora com entradas aleatrias,

devido a Lei dos Grandes Nmeros, as mdias das repeties convergem para o cenrio
justo.
Em uma viso panormica, o TFQS pode ser delimitado pelo custo de uma exponenciao modular em anel de polinmio por rodada, como evidenciado na Imagem 5.3. De
maneira semelhante, o teste de Miller-Rabin pode ser delimitado por uma exponenciao
modular simples por rodada.
Os dados de desempenho das duas funes apresentado na Tabela 5.5. Assim, nota-se
que a exponenciao modular em

R(n, c)

em mdia 3 vezes mais lenta que a exponenci-

ao modular simples. Este fato, juntamente com o nmero de rodadas para cada teste,
apoiam os resultados obtidos na anlise dos grcos de desempenho.

Tabela 5.5: Comparao entre as operaes de exponenciao modular simples e em anel


polinomial.

Bits

Tempo (nanosegundos)

bn_mxp

bn_pol_mxp

bn_pol_mxp

32

15848

51871

3,27

64

29142

93074

3,19

128

60060

188831

3,14

256

138390

415677

3,00

512

414568

1206350

2,90

1024

1617537

4169730

2,57

59

bn_mxp

Captulo 6
Concluso
Neste trabalho foi apresentado mtodos de aritmtica em anel de polinmio e tambm
tcnicas de otimizao que culminaram na produo de um artefato ecaz. Foi apresentado um teste de primalidade ainda novo que obteve resultado satisfatrio para inteiros
de at 256

bits.

No seu cenrio timo, o TFQS se mostrou, em mdia, 30% mais veloz

que o teste de Miller-Rabin.


Conclui-se que o TFQS possui iteraes mais longas, no entanto, executa menos rodadas devido sua baixa probabilidade de erro. O teste de Miller-Rabin possui iteraes
mais rpidas, devido aritmtica mais simples, mas executa maior nmero de rodadas.
medida que a preciso do inteiro testado aumenta, essa vantagem do TFQS diminui,
tornando nula quando o nmero de rodadas do Miller-Rabin iguala ao custo de uma exponenciao modular em anel de polinmio em relao ao custo de uma exponenciao
modular simples.
Esta concluso sustentada pela concordncia obtida entre os dados tericos do artigo
de Seysen [43], a tese sobre a relao da exponenciao modular e tambm pela ampla
anlise de desempenho entre os testes que mostram, como fator comum, a vantagem do
TFQS sobre o Miller-Rabin para inteiros de at 256

bits.

A partir da, as rodadas do

TFQS so irredutveis e o teste de Miller-Rabin com iteraes mais simples apresenta


maior ecincia.
O escopo principal do trabalho foi atingido em parte, houve a implementao de um
teste mais eciente, mas com restrio de magnitude. O problema de gerar chaves com
alto nvel de segurana em dispositivos com poder computacional limitado em tempo hbil
ainda persiste.
Como trabalhos futuros, prope-se o estudo de outros testes presentes na indstria
como o teste de Lucas, Baillie-PSW [6] e Miller-Rabin combinado ao teste de LucasSelfridge [36] que baseado no teste Baillie-PWS e aperfeioado por Selfridge.
Por m, todo cdigo produzido nesta obra, est disponvel no repositrio online
um arquivo

com

bash que gerencia a congurao, compilao e execuo de testes, benchmarks,

produo de grco de desempenho, entre outros.

1 https://code.google.com/p/bruno-tg2/
60

Referncias
[1] S. Aaronson. The Prime Facts: From Euclid to AKS.

com/writings/prime.pdf,

2003. 32, 37

[2] L. M. Adleman and M. A. Huang.

Finite Fields.

http://www.scottaaronson.

Primality Testing and Abelian Varieties Over

Lecture Notes in Mathematics. Springer, 1992. 37

[3] M. Agrawal, N. Kayal, and N. Saxena. PRIMES is in P.

Annals of Mathematics,

160(2):781793, 2004. 37, 39


[4] D. F. Aranha.

https://docs.google.com/

Cronologia Tcnica da Criptograa.

file/d/0BwyUaEvgJMOnSFBvQmFUN1Y3OEk/edit,

2013. 1, 6

[5] D. F. Aranha and C. P. L. Gouva. RELIC is an Ecient Library for Cryptography.

http://code.google.com/p/relic-toolkit/.
[6] R. Baillie and S. Wagsta.

42

Lucas pseudoprimes.

Mathematics of Computation,

35(152):13911417, 1980. 60
[7] F. L. Bauer.

Decrypted secrets. Methodsand Maxims of Cryptology.

Springer-Verlag,

Berlin, 1999. 1, 2, 11
[8] D. M. Burton.

Elementary Number Theory.

Allyn and Bacon Inc., Boston, 1980. 17,

22
[9] The OpenSSL Core and Development Team. Openssl: Documents, genrsa(1), julho
2013.

http://www.openssl.org/docs/apps/genrsa.html.

[10] T. H. Cormen, C. E. Leiserson, R. L. Rivest, and C. Stein.

25

Introduction to Algorithms.

The MIT Press, New York, 2001. 16, 23, 25, 27


[11] M. Dietzfelbinger.

Primality Testing in Polynomial Time. Lecture Notes in Computer

Science. Springer, 2004. 36


[12] W. Die and M. E. Hellman. New directions in cryptography.

on Information Theory,

IEEE Transactions

22(6):644654, 1976. 2, 23, 30

[13] Euclid, T. L. Heath (Translator), and D. Densmore (Editor).

Euclid's Elements,

volume 1. Green Lion Press, 2002. 18

Proceedings of
the 7th International Colloquium on Automata, Languages and Programming, pages

[14] S. Even and Y. Yacobi.

Cryptography and NP-completeness.

195207. Springer-Verlag, 1980. 11

61

In

[15] G. Everest and T. Ward.


[16] S. R. Finch.

An Introduction to Number Theory.

Mathematical Constants.

Springer, 2005. 17, 33

Cambridge University Press, Cambridge, 2003.

31
[17] O. Goldreich.

Foundations of Cryptography: Basic Techniques. Cambridge University

Press, 2001. vi, 11


[18] J. Grantham.

A probable prime test with high condence.

J. Number Theory,

72(1):3247, 1998. 40
[19] J. L. Hein.

Discrete Structures, Logic, and Computability.

Jones Bartlett Publishers,

Massachusetts, 2009. vi, 16


[20] OEIS Foundation Inc. The on-line encyclopedia of integer sequences, janeiro 2014.

http://oeis.org/A051021.

31

[21] ISO/IEC 18032. Information technology - Security techniques - Prime number generation, 2005. 33, 47

The Codebreakers: The Story of Secret Writing.

[22] D. Kahn.

Macmillan Publishing

Co., New York, 1967. 1


[23] A. Karatsuba and Y. Ofman. Multiplication of many-digital numbers by automatic
computers.

Physics-Doklady,

7:595596, 1963. 47

[24] A. Kerckhos. La cryptographie militaire.

Journal des Sciences Militaires, 9(1):538,

1883. 4
[25] D. E. Knuth.

Bitwise tricks techniques. The Art of Computer Programming,

vo-

lume 4. AddisonWesley Professional, 2009. 26

Proceedings of the 7th International Colloquium on Automata, Languages and Programming. Springer-Verlag,

[26] H. W. Lenstra. Primality testing with gaussian periods. In


2002. 39

[27] R. R. Maier. Teoria dos nmeros. Universidade de Braslia - IE, 2005. 19, 20
[28] T. Matsumoto and H. Imai. On the key predistribution system: A practical solution

Advances in Cryptology  CRYPTO, volume


Lecture Notes in Computer Science, pages 185193. Springer, 1987. 8

to the key distribution problem. In


of

[29] A. J. Menezes, P. C. van Oorschot, and S. A. Vanstone.

tography.

Handbook of Applied Cryp-

CRC Press, 1996. vi, 2, 3, 7, 8, 9, 10, 12, 28, 35, 48

[30] G. L. Miller. Riemann's hypothesis and tests for primality.

Systems Sciences,

Journal of Computer and

13(3):300317, 1976. 36

[31] W. H. Mills. A prime-representing function.

Society,

293

53(6):604, 1947. 31

62

Bulletin of the American Mathematical

[32] D. Naccache.

Padding Attacks on RSA.

Information Security Technical Report,

4(4):2833, 1999. 29
[33] W. Narkiewicz.

and Littlewood.
[34] S. J. Piestrak.

Lett,

The Development of Prime Number Theory : From Euclid to Hardy


Springer-Verlag, Berlin, 2000. 31
Efcient hamming weight comparators of binary vectors.

43(11):611612, 2007. 26

[35] R. G. E. Pinch. The Carmichael Numbers up to

1021

, 2007. 35

[36] C. Pomerance, J. L. Selfridge, and S. Wagsta. The pseudoprimes to

matics of Computation,

25 109 . Mathe-

35(151):10031026, 1980. 60

[37] M. O. Rabin. Probabilistic algorithm for testing primality.

ory,

Electron.

Journal of Number The-

12(1):128138, 1980. 36

[38] P. A. D. Rezende. Como Controlar o Vigilantismo Global?

br/docentes/pedro/trabs/operamundi.html,
[39] P. A. D. Rezende.

Janeiro 2014. 4

O que aprendemos com Edward Snowden?

unb.br/docentes/pedro/trabs/aprendercsnowden.html,
[40] P. Ribenboim.

http://www.cic.unb.

The Little Book of Bigger Primes.

http://www.cic.

Janeiro 2014. 4

Spring-Verlag, New York, 2004.

18, 35
[41] R. L. Rivest, A. Shamir, and L. Adleman. A method for obtaining digital signatures
and public-key cryptosystems.
[42] B. Schneier.

Communications ACM,

Applied Cryptography.

21(2):120126, 1978. 23, 25

John Wiley & Sons, New York, 1996. 2, 7, 11,

18
[43] M. Seysen. A simplied quadratic frobenius primality test, 2005. vii, 40, 41, 47, 51,
60
[44] C. E. Shannon. Communication theory of secrecy systems.

Journal,

Bell System Technical

28(4):656715, 1949. 2

[45] P. W. Shor. Algorithms for quantum computation: discrete logarithms and factoring.
In

Proceedings of the 35th Annual Symposium on Foundations of Computer Science,

pages 124134. IEEE Computer Society Press, 1994. 32


[46] S. Singh.

The Code Book: How to Make It, Break It, Hack It, Crack It.

Delacorte

Press, 2003. 1, 4, 11
[47] R. Solovay and V. Strassen. A fast monte-carlo test for primality.

Computing,

SIAM Journal on

6(1):8485, 1978. 35

[48] D. R. Stinson.

Cryptography: Theory and Practice. Chapman and Hall/CRC, Florida,

2006. 6, 10, 21

63

[49] H. C. A. van Tilborg (Editor).

Encyclopedia of Cryptography and Security.

Springer,

New York, 2005. 2


[50] xkcd.

Webcomic of romance, sarcasm, math, and language, Julho 2013.

//xkcd.com/247/.

vi, 24

64

http:

Você também pode gostar