116
Universidade Estadual de Londrina Centro de Tecnologia e Urbanismo Departamento de Engenharia El´ etrica ecio Luiz Gazzoni Filho Demonstra¸ oes Distribu´ ıdas de Car´ ater Primo em Larga Escala Londrina 2004

Demonstra¸c˜oes Distribu´ıdas de Car´ater Primo em Larga ... fileUniversidade Estadual de Londrina Centro de Tecnologia e Urbanismo Departamento de Engenharia El´etrica D´ecio

  • Upload
    lamhanh

  • View
    243

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Demonstra¸c˜oes Distribu´ıdas de Car´ater Primo em Larga ... fileUniversidade Estadual de Londrina Centro de Tecnologia e Urbanismo Departamento de Engenharia El´etrica D´ecio

Universidade Estadual de Londrina

Centro de Tecnologia e Urbanismo

Departamento de Engenharia Eletrica

Decio Luiz Gazzoni Filho

Demonstracoes Distribuıdas de

Carater Primo em Larga Escala

Londrina

2004

Page 2: Demonstra¸c˜oes Distribu´ıdas de Car´ater Primo em Larga ... fileUniversidade Estadual de Londrina Centro de Tecnologia e Urbanismo Departamento de Engenharia El´etrica D´ecio

Decio Luiz Gazzoni Filho

Demonstracoes Distribuıdas de Carater

Primo em Larga Escala

Monografia apresentada ao curso de Enge-nharia Eletrica da Universidade Estadual deLondrina, como parte dos requisitos obri-gatorios a obtencao do tıtulo de EngenheiroEletricista com enfase em Eletronica.

Orientador:

Prof. Dr. Taufik Abrao

Universidade Estadual de LondrinaCentro de Tecnologia e Urbanismo

Departamento de Engenharia Eletrica

Londrina

2004

Page 3: Demonstra¸c˜oes Distribu´ıdas de Car´ater Primo em Larga ... fileUniversidade Estadual de Londrina Centro de Tecnologia e Urbanismo Departamento de Engenharia El´etrica D´ecio

Trabalho de Conclusao de Curso sob o tıtulo “Demonstracoes Distribuıdas de Carater

Primo em Larga Escala”, defendida por Decio Luiz Gazzoni Filho e aprovada em 6 de

dezembro de 2004, em Londrina, Parana, pela banca examinada constituıda por:

Prof. Dr. Taufik AbraoDepartamento de Engenharia EletricaUniversidade Estadual de Londrina

Prof. Dr. Marcelo C. TosinDepartamento de Engenharia EletricaUniversidade Estadual de Londrina

Prof. Dr. Ulysses SodreDepartamento de Matematica

Universidade Estadual de Londrina

Page 4: Demonstra¸c˜oes Distribu´ıdas de Car´ater Primo em Larga ... fileUniversidade Estadual de Londrina Centro de Tecnologia e Urbanismo Departamento de Engenharia El´etrica D´ecio

Dedicatoria

Aos meus pais, pelo apoio, ofereco as curvas elıpticas y2 = x3 +13054261938312812691x+

963383165173305403 e y2 = x3+735926429366195334x+3969032983146139007 e seus res-

pectivos twists quadraticos, que possuem multiplicacao complexa por√−10000129528 e

√−20029259608 e ordens de grupo p + 1± 5476899334 e p + 1± 8134258586, respectiva-

mente, onde p = 264 − 232 + 1.

Page 5: Demonstra¸c˜oes Distribu´ıdas de Car´ater Primo em Larga ... fileUniversidade Estadual de Londrina Centro de Tecnologia e Urbanismo Departamento de Engenharia El´etrica D´ecio

Agradecimentos

Seja p = 264 − 232 + 1. Todas as curvas elıpticas nesta pagina sao consideradas sobre

Z/pZ.

Aos professores Alfred J. Menezes e Darrel Hankerson, por suas palestras no WCAP’03,

ofereco a curva elıptica y2 = x3 + 8790001982112083917x + 8349894620916661678 e seu

twist quadratico, que possuem multiplicacao complexa por√−1000147768 e ordens de

grupo p + 1± 5376889346.

A Henri Cohen, por seu livro “A Course in Computational Algebraic Number Theory”

e o software PARI/GP, ofereco a curva elıptica y2 = x3 + 10924466306691629096x +

3175821044523403166 e seu twist quadratico, que possuem multiplicacao complexa por√−2001806020 e ordens de grupo p + 1± 1530275008.

A Richard Crandall e Carl Pomerance, pela obra-prima “Prime Numbers: A Computa-

tional Perspective”, fonte de incontaveis horas de estudo, diversao e inspiracao, ofereco

a curva elıptica y2 = x3 + 11517119120719506208x + 13728644060085970144 e seu twist

quadratico, que possuem multiplicacao complexa por√−3006633688 e ordens de grupo

p + 1± 4299605922.

A Donald E. Knuth, por compartilhar seu imenso conhecimento de matematica e ciencia

da computacao atraves da magnıfica obra “The Art Of Computer Programming”, e por

seu sistema TEX de editoracao, ofereco a curva elıptica y2 = x3+10137799566473223720x+

4563733166242538527 e seu twist quadratico, que possuem multiplicacao complexa por√−4004850712 e ordens de grupo p + 1± 7985664922.

Aos ex-colegas da distributed.net, em especial Jeff ‘Bovine’ Lawson, Michael Feiri e Didier

Levet, ofereco a curva elıptica y2 = x3 +8299992258113520866x+17162086221645221008

e seu twist quadratico, que possuem multiplicacao complexa por√−5022511288 e ordens

de grupo p + 1± 4727927074.

A Olivier Atkin e Francois Morain, pelo seminal trabalho “Elliptic Curves and Primality

Proving”, ofereco a curva elıptica y2 = x3+12761264237209647336x+1180621101119968192

e seu twist quadratico, que possuem multiplicacao complexa por√−6005976568 e ordens

de grupo p + 1± 2409633978.

Ao professor Paulo Barreto, pelas vıvidas discussoes sobre o assunto, ofereco a curva

elıptica y2 = x3 +9797964907012185754x+17653939341500267007 e seu twist quadratico,

Page 6: Demonstra¸c˜oes Distribu´ıdas de Car´ater Primo em Larga ... fileUniversidade Estadual de Londrina Centro de Tecnologia e Urbanismo Departamento de Engenharia El´etrica D´ecio

ii

que possuem multiplicacao complexa por√−7005075940 e ordens de grupo p + 1 ±

912834688.

Aos meus amigos, particularmente Marco Casaroli, Eder Ignatowicz, Leonardo Pinheiro,

Rodrigo Fanucchi e Fernando Ciriaco, assim como outros tantos cujo espaco deste trabalho

e curto demais para conter, ofereco a curva elıptica y2 = x3 + 7384699780321468803x +

3973314206836214173 e seu twist quadratico, que possuem multiplicacao complexa por√−8011737892 e ordens de grupo p + 1± 6252669216.

Ao professor Taufik Abrao, pelas incontaveis horas de orientacao e estimulantes disci-

plinas ministradas no curso, ofereco a curva elıptica y2 = x3 + 4101448666275287283 +

14115872962552252516 e seu twist quadratico, que possuem multiplicacao complexa por√−9003700612 e ordens de grupo p + 1± 3505275976.

A Isis Duarte, pela amizade, ofereco a curva elıptica y2 = x3 + 2610280995158029297x +

5003345793225103561 e seu twist quadratico, que possuem multiplicacao complexa por√−50051763448 e ordens de grupo p + 1± 8523556574.

Page 7: Demonstra¸c˜oes Distribu´ıdas de Car´ater Primo em Larga ... fileUniversidade Estadual de Londrina Centro de Tecnologia e Urbanismo Departamento de Engenharia El´etrica D´ecio

Prefacio

Este Trabalho de Conclusao de Curso foi elaborado, durante a 5a serie do curso de

Engenharia Eletrica, para satisfazer os requisitos obrigatorios a obtencao do tıtulo de

Engenheiro Eletricista com enfase em Eletronica.

A proposta inicial do trabalho era o desenvolvimento de um software que contem-

plasse todas as etapas necessarias para a realizacao de demonstracoes de carater primo

em sistemas distribuıdos de larga escala (por exemplo, computadores conectados atraves

da Internet). Infelizmente, nao foi possıvel atingir a meta proposta, apesar que grande

parte do codigo cientıfico necessario ao funcionamento rudimentar do sistema foi escrito.

Embora o software necessite de otimizacao, a princıpio e possıvel obter demonstracoes de

carater primo atraves do mesmo, e considera-se que pelo menos parte da meta foi atingida.

O plano inicial para esta monografia e que fosse mais abrangente, cobrindo topicos

como fatoracao de inteiros, aritmetica eficiente de polinomios, sistemas de coordenadas

eficientes para aritmetica elıptica e outros, necessarios a compreensao das tecnicas de oti-

mizacao empregadas no codigo do software. Infelizmente, as normas para elaboracao do

Trabalho de Conclusao de Curso especificam um limite de 40 paginas para os elementos

textuais do trabalho, e este limite comecou a ser observado a partir da posse da nova

coordenacao de Trabalho de Conclusao de Curso em 2004. Apesar de concessoes por

parte da coordenacao, que permitiu a escrita de ate 100 paginas no total (incluindo os

elementos pre- e pos-textuais do trabalho), esse limite se mostrou insuficiente para a es-

crita do trabalho conforme originalmente planejado. Alem dos topicos ja citados no inıcio

do paragrafo, alguns pequenos detalhes tiveram de ser removidos para garantir que o tra-

balho permanecesse dentro do limite: por exemplo, referencias para as demonstracoes dos

teoremas, representando uma economia de 5 paginas, e alguns algoritmos nao considera-

dos absolutamente essenciais para o entendimento do trabalho, mesmo sendo considerados

importantes.

Vale mencionar que a mesma coordenacao do Trabalho de Conclusao de Curso inicial-

mente ofereceu oposicao a escolha do topico deste trabalho, novamente citando uma regra

que estabelece as linhas de pesquisa permitidas. A escrita do trabalho foi possıvel somente

pela persistencia do professor Taufik Abrao, orientador deste trabalho, em lutar pelo meu

direito de tentar contribuir para o conhecimento neste campo, ao inves de escolher um

topico que nao seja de meu interesse e escrever um trabalho medıocre e redundante, um

Page 8: Demonstra¸c˜oes Distribu´ıdas de Car´ater Primo em Larga ... fileUniversidade Estadual de Londrina Centro de Tecnologia e Urbanismo Departamento de Engenharia El´etrica D´ecio

ii

fenomeno que claramente ocorre com outros alunos do curso. Vale dizer que a publicacao

de um artigo no XXI Simposio Brasileiro de Telecomunicacoes demonstra que o traba-

lho possui contribuicoes e que encaixa-se numa das linhas de pesquisa (telecomunicacoes)

permitidas para o Trabalho de Conclusao de Curso.

Fica registrada nossa discordancia com estas regras arbitrarias impostas pela coor-

denacao do Trabalho de Conclusao de Curso, cujo unico objetivo parece ser o de aleijar

trabalhos como o nosso e garantir a manutencao do status quo de mediocridade do De-

partamento de Engenharia Eletrica.

Page 9: Demonstra¸c˜oes Distribu´ıdas de Car´ater Primo em Larga ... fileUniversidade Estadual de Londrina Centro de Tecnologia e Urbanismo Departamento de Engenharia El´etrica D´ecio

i

Resumo

O trabalho estuda a viabilidade da computacao de demonstracoes de carater primo emsistemas distribuıdos de larga escala, e descreve uma implementacao parcial do sistemaproposto. Optou-se pelo algoritmo ECPP devido a Atkin e Morain, com otimizacoesdevidas a Shallit, Morain e outros. Entre as contribuicoes do trabalho, estao a propostade uma arquitetura de rede adequada a implementacoes distribuıdas do algoritmo emquestao, alem de melhorias em uma etapa-chave do algoritmo. Resultados obtidos coma implementacao das melhorias sugeridas estabeleceram novos recordes na geracao decurvas elıpticas com multiplicacao complexa.

Page 10: Demonstra¸c˜oes Distribu´ıdas de Car´ater Primo em Larga ... fileUniversidade Estadual de Londrina Centro de Tecnologia e Urbanismo Departamento de Engenharia El´etrica D´ecio

ii

Abstract

This work analyzes the feasibility of computing primality proofs in large-scale dis-tributed systems, and describes a partial implementation of the proposed system. TheECPP algorithm due to Atkin and Morain, with optimizations due to Shallit, Morainand others, was chosen for the system. Among the contributions of this work, we men-tion a network architecture better suited to distributed implementation of ECPP, andimprovements to a key step of the algorithm. Results obtained with an implementationof the proposed improvements have set new records in the generation of elliptic curveswith complex multiplication.

Page 11: Demonstra¸c˜oes Distribu´ıdas de Car´ater Primo em Larga ... fileUniversidade Estadual de Londrina Centro de Tecnologia e Urbanismo Departamento de Engenharia El´etrica D´ecio

iii

Sumario

Lista de Sımbolos e Abreviaturas p. xii

1 Introducao p. 1

1.1 Divisao do trabalho . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 2

2 Algebra Abstrata e Teoria dos Numeros p. 4

2.1 Teoria de grupos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 4

2.1.1 Definicao e propriedades basicas . . . . . . . . . . . . . . . . . . p. 5

2.1.2 Aplicacoes entre grupos . . . . . . . . . . . . . . . . . . . . . . p. 6

2.1.3 Subgrupos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 7

2.1.4 Grupos e subgrupos cıclicos . . . . . . . . . . . . . . . . . . . . p. 8

2.2 Introducao aos corpos . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 9

2.2.1 Implementacao da aritmetica de corpos finitos . . . . . . . . . . p. 10

2.3 Teoria dos numeros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 11

2.3.1 Divisibilidade . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 11

2.3.2 Numeros primos . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 14

2.3.3 Congruencias e aritmetica modular . . . . . . . . . . . . . . . . p. 15

2.3.4 Polinomios com coeficientes em Z/nZ . . . . . . . . . . . . . . . p. 19

2.3.5 A funcao φ de Euler . . . . . . . . . . . . . . . . . . . . . . . . p. 19

2.3.6 O grupo multiplicativo (Z/nZ)∗ . . . . . . . . . . . . . . . . . . p. 20

2.3.7 Resıduos quadraticos e raızes quadradas modulares . . . . . . . p. 21

3 Curvas Elıpticas p. 26

Page 12: Demonstra¸c˜oes Distribu´ıdas de Car´ater Primo em Larga ... fileUniversidade Estadual de Londrina Centro de Tecnologia e Urbanismo Departamento de Engenharia El´etrica D´ecio

iv

3.1 Aspectos geometricos . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 26

3.2 O grupo de pontos de uma curva elıptica . . . . . . . . . . . . . . . . . p. 28

3.3 Algoritmos para aritmetica elıptica . . . . . . . . . . . . . . . . . . . . p. 31

3.3.1 Coordenadas afins . . . . . . . . . . . . . . . . . . . . . . . . . p. 32

3.3.2 Coordenadas projetivas . . . . . . . . . . . . . . . . . . . . . . . p. 33

4 O Algoritmo ECPP p. 37

4.1 Testes de carater pseudoprimo . . . . . . . . . . . . . . . . . . . . . . . p. 37

4.1.1 O teste de Fermat e o teste forte . . . . . . . . . . . . . . . . . p. 38

4.1.2 O teste de Frobenius . . . . . . . . . . . . . . . . . . . . . . . . p. 41

4.2 Testes de carater primo eficientes . . . . . . . . . . . . . . . . . . . . . p. 45

4.2.1 O teste n− 1 e variantes . . . . . . . . . . . . . . . . . . . . . . p. 45

4.2.2 O teste ECPP . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 46

4.2.3 Os testes APR-CL e AKS . . . . . . . . . . . . . . . . . . . . . p. 47

4.3 O algoritmo ECPP de Goldwasser e Kilian . . . . . . . . . . . . . . . . p. 48

4.4 Curvas elıpticas com multiplicacao complexa . . . . . . . . . . . . . . . p. 51

4.5 O algoritmo ECPP de Atkin e Morain . . . . . . . . . . . . . . . . . . p. 57

4.6 A variante fastECPP do algoritmo ECPP . . . . . . . . . . . . . . . . . p. 57

5 Sistemas Distribuıdos p. 59

5.1 Distribuindo o algoritmo ECPP . . . . . . . . . . . . . . . . . . . . . . p. 59

5.2 Algoritmos para distribuicao de dados . . . . . . . . . . . . . . . . . . p. 62

5.3 Computacao em ambientes nao-confiaveis . . . . . . . . . . . . . . . . . p. 63

6 Projeto e Implementacao do Sistema p. 67

6.1 Licenciamento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 67

6.2 Projeto do sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 68

6.3 Implementacao do sistema . . . . . . . . . . . . . . . . . . . . . . . . . p. 70

Page 13: Demonstra¸c˜oes Distribu´ıdas de Car´ater Primo em Larga ... fileUniversidade Estadual de Londrina Centro de Tecnologia e Urbanismo Departamento de Engenharia El´etrica D´ecio

v

6.3.1 Aritmetica de inteiros e de ponto flutuante . . . . . . . . . . . . p. 71

6.3.2 Algoritmos para teoria dos numeros . . . . . . . . . . . . . . . . p. 71

6.3.3 Aritmetica de polinomios . . . . . . . . . . . . . . . . . . . . . . p. 73

6.3.3.1 Coeficientes complexos em ponto flutuante . . . . . . . p. 73

6.3.3.2 Coeficientes modulares . . . . . . . . . . . . . . . . . . p. 74

6.3.4 Construcao dos polinomios de classe . . . . . . . . . . . . . . . p. 75

6.3.4.1 Funcoes transcendentais . . . . . . . . . . . . . . . . . p. 77

6.3.5 Aritmetica elıptica . . . . . . . . . . . . . . . . . . . . . . . . . p. 78

7 Resultados p. 79

8 Conclusao p. 82

Anexo A -- Artigo Publicado no XXI Simposio Brasileiro de Telecomu-

nicacoes p. 84

Referencias p. 90

Indice Remissivo p. 93

Page 14: Demonstra¸c˜oes Distribu´ıdas de Car´ater Primo em Larga ... fileUniversidade Estadual de Londrina Centro de Tecnologia e Urbanismo Departamento de Engenharia El´etrica D´ecio

vi

Lista de Definicoes

1.0.1 Numeros primos e compostos . . . . . . . . . . . . . . . . . . . p. 1

2.1.1 Definicao de grupo . . . . . . . . . . . . . . . . . . . . . . . . . p. 5

2.1.2 Ordem de elementos de um grupo . . . . . . . . . . . . . . . . . p. 6

2.1.3 Ordem de um grupo . . . . . . . . . . . . . . . . . . . . . . . . p. 6

2.1.4 Homomorfismo . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 7

2.1.5 Isomorfismo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 7

2.1.6 Definicao de subgrupo . . . . . . . . . . . . . . . . . . . . . . . p. 7

2.1.7 Definicao de grupo cıclico . . . . . . . . . . . . . . . . . . . . . p. 8

2.2.1 Definicao de corpo . . . . . . . . . . . . . . . . . . . . . . . . . p. 9

2.2.2 Caracterıstica de um corpo . . . . . . . . . . . . . . . . . . . . . p. 10

2.3.1 Definicao de divisibilidade . . . . . . . . . . . . . . . . . . . . . p. 11

2.3.2 Divisor comum e maximo divisor comum . . . . . . . . . . . . . p. 12

2.3.3 Inteiros coprimos ou relativamente primos . . . . . . . . . . . . p. 13

2.3.4 Funcao π(x) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 14

2.3.5 Definicao de congruencia . . . . . . . . . . . . . . . . . . . . . . p. 15

2.3.6 Inverso de uma classe de congruencia . . . . . . . . . . . . . . . p. 17

2.3.7 Funcao φ de Euler . . . . . . . . . . . . . . . . . . . . . . . . . p. 19

2.3.8 Resıduo quadratico . . . . . . . . . . . . . . . . . . . . . . . . . p. 21

2.3.9 Sımbolo de Legendre . . . . . . . . . . . . . . . . . . . . . . . . p. 22

2.3.10 Sımbolo de Jacobi . . . . . . . . . . . . . . . . . . . . . . . . . . p. 22

3.1.1 Curva elıptica . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 28

4.1.1 Teste de carater pseudoprimo de Frobenius . . . . . . . . . . . . p. 41

Page 15: Demonstra¸c˜oes Distribu´ıdas de Car´ater Primo em Larga ... fileUniversidade Estadual de Londrina Centro de Tecnologia e Urbanismo Departamento de Engenharia El´etrica D´ecio

vii

4.4.1 Discriminante fundamental . . . . . . . . . . . . . . . . . . . . . p. 52

4.4.2 Matriz simetrica reduzida . . . . . . . . . . . . . . . . . . . . . p. 53

4.4.3 Grupo de classe . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 53

Page 16: Demonstra¸c˜oes Distribu´ıdas de Car´ater Primo em Larga ... fileUniversidade Estadual de Londrina Centro de Tecnologia e Urbanismo Departamento de Engenharia El´etrica D´ecio

viii

Lista de Teoremas, Corolarios e

Lemas

1.0.1 Teorema Fundamental da Aritmetica . . . . . . . . . . . . . . . p. 1

2.1.1 Propriedades de grupos . . . . . . . . . . . . . . . . . . . . . . . p. 5

2.1.2 Lei de cancelamento para grupos . . . . . . . . . . . . . . . . . p. 6

2.1.3 Criterio para isomorfismos . . . . . . . . . . . . . . . . . . . . . p. 7

2.1.4 Propriedades de grupos cıclicos . . . . . . . . . . . . . . . . . . p. 8

2.1.5 Isomorfismos de grupos cıclicos . . . . . . . . . . . . . . . . . . p. 8

2.1.6 Propriedades de grupos cıclicos . . . . . . . . . . . . . . . . . . p. 9

2.1.7 Estrutura de subgrupos de um grupo cıclico . . . . . . . . . . . p. 9

2.2.1 Resultados basicos sobre corpos finitos . . . . . . . . . . . . . . p. 10

2.2.2 Teste para raiz primitiva em F∗pk . . . . . . . . . . . . . . . . . . p. 10

2.2.3 Criterio de irredutibilidade de polinomios . . . . . . . . . . . . . p. 11

2.3.1 Algoritmo de divisao . . . . . . . . . . . . . . . . . . . . . . . . p. 11

2.3.2 Propriedades de divisibilidade . . . . . . . . . . . . . . . . . . . p. 12

2.3.3 Lema de Euclides . . . . . . . . . . . . . . . . . . . . . . . . . . p. 12

2.3.4 Solucoes de equacoes diofantinas lineares. . . . . . . . . . . . . . p. 13

2.3.5 Infinitude dos primos . . . . . . . . . . . . . . . . . . . . . . . . p. 14

2.3.6 Teorema dos Numeros Primos . . . . . . . . . . . . . . . . . . . p. 14

2.3.7 Limite superior de fatores primos de um inteiro composto . . . . p. 14

2.3.8 Relacao entre congruencia e divisibilidade . . . . . . . . . . . . p. 15

2.3.9 Axiomas de relacoes de equivalencia para congruencias . . . . . p. 15

Page 17: Demonstra¸c˜oes Distribu´ıdas de Car´ater Primo em Larga ... fileUniversidade Estadual de Londrina Centro de Tecnologia e Urbanismo Departamento de Engenharia El´etrica D´ecio

ix

2.3.10 Validade da definicao da aritmetica de congruencias . . . . . . . p. 16

2.3.11 Solucoes da congruencia bx ≡ a (mod n) com mdc(b, n) = 1 . . p. 17

2.3.12 Congruencias modulo fatores primos de um inteiro . . . . . . . . p. 18

2.3.13 Teorema Chines do Resto . . . . . . . . . . . . . . . . . . . . . p. 18

2.3.14 Congruencias entre polinomios em Z/nZ . . . . . . . . . . . . . p. 19

2.3.15 Numero de raızes de polinomios sobre Z/nZ . . . . . . . . . . . p. 19

2.3.16 Calculo de φ(n) para n = pe . . . . . . . . . . . . . . . . . . . . p. 19

2.3.17 φ(n) e multiplicativa . . . . . . . . . . . . . . . . . . . . . . . . p. 19

2.3.18 Calculo de φ(n) para n composto . . . . . . . . . . . . . . . . . p. 19

2.3.19 Teorema de Fermat-Euler . . . . . . . . . . . . . . . . . . . . . p. 20

2.3.20 Pequeno Teorema de Fermat . . . . . . . . . . . . . . . . . . . . p. 20

2.3.21 Versao do Teorema de Fermat-Euler sem restricoes sobre mdc(a, n) p. 20

2.3.22 Definicao, comutatividade e ordem de (Z/nZ)∗ . . . . . . . . . . p. 20

2.3.23 Condicao para que (Z/nZ)∗ seja cıclico . . . . . . . . . . . . . . p. 20

2.3.24 Teste para raiz primitiva em (Z/nZ)∗ . . . . . . . . . . . . . . . p. 21

2.3.25 Numero de raızes primitivas de (Z/nZ)∗ . . . . . . . . . . . . . p. 21

2.3.26 Numero de raızes quadradas modulares de Qn ⊆ (Z/nZ)∗ . . . . p. 21

2.3.27 Qn e subgrupo de (Z/nZ)∗ . . . . . . . . . . . . . . . . . . . . . p. 21

2.3.28 Descricao de Qn quando (Z/nZ)∗ e cıclico . . . . . . . . . . . . p. 21

2.3.29 Criterio de Euler para resıduos quadraticos . . . . . . . . . . . . p. 22

2.3.30 Propriedades dos sımbolos de Legendre e Jacobi . . . . . . . . . p. 22

2.3.31 Lei de reciprocidade quadratica . . . . . . . . . . . . . . . . . . p. 23

3.2.1 Grupo de pontos de uma curva elıptica . . . . . . . . . . . . . . p. 29

3.2.2 Estrutura algebrica de E(Fpk) . . . . . . . . . . . . . . . . . . . p. 30

3.2.3 Desigualdade de Hasse para |E(Fpk)| . . . . . . . . . . . . . . . p. 31

4.1.1 Distribuicao dos numeros de Carmichael . . . . . . . . . . . . . p. 39

Page 18: Demonstra¸c˜oes Distribu´ıdas de Car´ater Primo em Larga ... fileUniversidade Estadual de Londrina Centro de Tecnologia e Urbanismo Departamento de Engenharia El´etrica D´ecio

x

4.1.2 Criterio forte de carater pseudoprimo . . . . . . . . . . . . . . . p. 39

4.1.3 Distribuicao de pseudoprimos fortes . . . . . . . . . . . . . . . . p. 40

4.1.4 Teste de carater pseudoprimo de Lucas . . . . . . . . . . . . . . p. 41

4.1.5 Implementacao do teste de Frobenius usando sequencias de Lucas p. 42

4.1.6 Identidades para implementacao do teste de Frobenius . . . . . p. 43

4.2.1 Teorema de Lucas para demonstracao de carater primo . . . . . p. 45

4.2.2 Teorema de Pocklington sobre fatorizacoes parciais no teste n− 1 p. 45

4.3.1 Teorema de Goldwasser-Kilian . . . . . . . . . . . . . . . . . . . p. 48

4.3.2 Escolha de m no Teorema de Goldwasser-Kilian . . . . . . . . . p. 49

Page 19: Demonstra¸c˜oes Distribu´ıdas de Car´ater Primo em Larga ... fileUniversidade Estadual de Londrina Centro de Tecnologia e Urbanismo Departamento de Engenharia El´etrica D´ecio

xi

Lista de Algoritmos

2.3.1 Algoritmo de Euclides para calculo do MDC . . . . . . . . . . . p. 12

2.3.2 Algoritmo estendido de Euclides . . . . . . . . . . . . . . . . . . p. 13

2.3.3 Crivo de Eratostenes . . . . . . . . . . . . . . . . . . . . . . . . p. 14

2.3.4 Exponenciacao esquerda-direita . . . . . . . . . . . . . . . . . . p. 16

2.3.5 Sımbolo de Jacobi usando reciprocidade quadratica . . . . . . . p. 23

2.3.6 Raızes quadradas modulares . . . . . . . . . . . . . . . . . . . . p. 24

3.3.1 Determinacao de um ponto sobre uma curva elıptica . . . . . . p. 31

3.3.2 Aritmetica elıptica em coordenadas afins . . . . . . . . . . . . . p. 32

3.3.3 Aritmetica elıptica em coordenadas projetivas . . . . . . . . . . p. 34

4.1.1 Teste de carater pseudoprimo de Fermat . . . . . . . . . . . . . p. 38

4.3.1 ECPP de Goldwasser-Kilian . . . . . . . . . . . . . . . . . . . . p. 49

4.4.1 Determinacao do grupo de classe H(D) . . . . . . . . . . . . . . p. 53

4.4.2 Algoritmo de Cornacchia . . . . . . . . . . . . . . . . . . . . . . p. 55

Page 20: Demonstra¸c˜oes Distribu´ıdas de Car´ater Primo em Larga ... fileUniversidade Estadual de Londrina Centro de Tecnologia e Urbanismo Departamento de Engenharia El´etrica D´ecio

xii

Lista de Sımbolos e Abreviaturas

AKS Agrawal-Kayal-Saxena (teste de carater primo)

APR-CL Adleman-Pomerance-Rumely Cohen-Lenstra (teste de carater primo)

BSD Berkeley Software Distribution (licenca)

ECDH Elliptic Curve Diffie-Hellman (criptossistema)

ECDSA Elliptic Curve Digital Signature Algorithm

ECM Elliptic Curve Method (algoritmo de fatoracao)

ECPP Elliptic Curve Primality Proving

FFT Fast Fourier Transform (algoritmo)

IEEE Institute of Electrical and Electronics Engineers

GMP GNU Multi-Precision Library

GPL GNU General Public License

RSA Rivest-Shamir-Adleman (criptossistema)

mdc Maximo divisor comum

bxc Piso de x (maior inteiro ≤ x)

dxe Teto de x (menor inteiro ≥ x)

a ≡ b (mod n) a e congruente a b modulo n

G ∼= H G e isomorfo a H

a Classe de congruencia de a

(ap) Sımbolo de Jacobi ou Legendre de a modulo p

[x, y, z] Classe de equivalencia de solucoes projetivas de uma curva elıptica

D Discriminante (teoria de multiplicacao complexa)

n Inteiro

p Primo

pe Potencia de primo

O Ponto no infinito de uma curva elıptica

O(x) Da ordem de x (notacao assintotica)

φ(n) Funcao de Euler

π(x) Funcao de contagem de primos (numero de primos ≤ x)

Page 21: Demonstra¸c˜oes Distribu´ıdas de Car´ater Primo em Larga ... fileUniversidade Estadual de Londrina Centro de Tecnologia e Urbanismo Departamento de Engenharia El´etrica D´ecio

xiii

(Z/nZ)∗ Grupo multiplicativo dos inteiros modulo n

Z/nZ Grupo aditivo ou corpo/anel dos inteiros modulo n

F Corpo

Fpk Corpo de pk elementos

F∗pk Grupo multiplicativo do corpo de pk elementos

F(ω) Extensao de F por ω

Qn Conjunto dos resıduos quadraticos modulo n

E(F) Curva elıptica sobre FH(D) Grupo de classe do discriminante D

h(D) Numero de classe do discriminante D

a | b a divide b

|x| Ordem de um elemento x de um grupo

|G| Ordem de um grupo G

Page 22: Demonstra¸c˜oes Distribu´ıdas de Car´ater Primo em Larga ... fileUniversidade Estadual de Londrina Centro de Tecnologia e Urbanismo Departamento de Engenharia El´etrica D´ecio

1

1 Introducao

O problema de distinguir numeros primos de compostos, e de separarnumeros compostos em seus fatores primos, e um dos mais importantese mais uteis problemas de toda a aritmetica . . . A dignidade da cienciaparece exigir que qualquer contribuicao a solucao de um problema taoelegante e celebrado seja ferrenhamente cultivada.

C. F. Gauss, Disquisitiones Arithmeticae (1801), in (1)

Definicao 1.0.1. Um numero primo e um inteiro p > 1 que possui exatamente dois

divisores, 1 e p. Um inteiro positivo que nao seja primo e dito composto, a excecao do

inteiro 1, que e considerado simplesmente uma unidade.

A importancia dos numeros primos para a matematica (e por extensao, para a enge-

nharia e a computacao) pode ser quantificada por um simples teorema:

Teorema 1.0.1 (Teorema Fundamental da Aritmetica). Para cada numero natural

n existe uma fatoracao unica

n = pa11 pa2

2 · · · pakk ,

onde os expoentes ai sao inteiros positivos e p1 < p2 < · · · < pk sao numeros primos.

Crandall e Pomerance (2) reafirmam a importancia dos primos ao interpretarem o

Teorema Fundamental da Aritmetica da seguinte maneira: ‘os primos sao os blocos de

construcao multiplicativos dos numeros naturais’.

Sob o ponto de vista matematico, ambos os problemas citados por Gauss no comeco

do capıtulo ja estao resolvidos desde a Grecia antiga, atraves do procedimento conhe-

cido como Crivo de Eratostenes (2, 3). A teoria da computacao considera o problema

das demonstracoes de carater primo essencialmente resolvido, por conta do algoritmo de

Agrawal, Kayal e Saxena (4), que no jargao da teoria, e dito de complexidade polino-

mial. Para a fatoracao de inteiros, sao conhecidos apenas algoritmos com complexidade

exponencial ou subexponencial, que sao considerados ineficientes – inclusive, esta suposta

Page 23: Demonstra¸c˜oes Distribu´ıdas de Car´ater Primo em Larga ... fileUniversidade Estadual de Londrina Centro de Tecnologia e Urbanismo Departamento de Engenharia El´etrica D´ecio

2

ineficiencia e a premissa de seguranca de diversos sistemas criptograficos (2, 5), em par-

ticular o sistema RSA.

Na pratica, os algoritmos conhecidos para demonstracao de carater primo deixam a

desejar. Como exemplo, considerando um tempo fixo para cada uma das tarefas a seguir,

e possıvel multiplicar inteiros de bilhoes de dıgitos, verificar o carater pseudoprimo1 de

um inteiro de centenas de milhares de dıgitos, e demonstrar o carater primo de um inteiro

de apenas alguns milhares de dıgitos.

E possıvel argumentar que desvantagens algorıtmicas podem ser compensadas por

avancos de hardware. Embora o orcamento de hardware disponıvel para microprocessa-

dores siga um crescimento exponencial (a chamada Lei de Moore) (6), o crescimento do

poder computacional e limitado por fatores fısicos, economicos e tecnicos, e nao e tao acen-

tuado a ponto de menosprezar os avancos algorıtmicos. A interconexao de computadores,

atraves de barramentos dedicados ou conexoes de rede, surgiu como uma solucao para

as limitacoes inerentes aos sistemas monoprocessados (7). Mais recentemente, diversos

grupos demonstraram ser possıvel aproveitar os recursos computacionais desperdicados

pelos milhoes de computadores conectados a Internet, a rede mundial de computadores,

para realizar computacoes de magnitudes ate entao inimaginaveis (8–10). A proposta

deste trabalho e a construcao de uma rede semelhante, voltada para a demonstracao de

carater primo de inteiros de forma geral.

1.1 Divisao do trabalho

Este capıtulo introdutorio explicou, em termos bastante gerais, a proposta do traba-

lho, incluindo os conceitos basicos necessarios ao entendimento desta proposta.

O Capıtulo 2 expoe alguns resultados da teoria de grupos, teoria de corpos e teoria dos

numeros, necessarios aos desenvolvimentos posteriores. Embora o material seja bastante

elementar, foi incluıdo no trabalho com o objetivo de torna-lo auto-contido.

O Capıtulo 3 e uma introducao as curvas elıpticas, do ponto de vista da teoria com-

putacional dos numeros. Em particular, conceitos topologicos e analıticos relacionados as

curvas elıpticas nao sao abordados.

O Capıtulo 4 introduz o algoritmo ECPP, comparando-o com outros algoritmos para

certificacao de carater primo e pseudoprimo, e justificando sua escolha para uso no traba-

1A definicao de carater pseudoprimo sera dada no Capıtulo 4.

Page 24: Demonstra¸c˜oes Distribu´ıdas de Car´ater Primo em Larga ... fileUniversidade Estadual de Londrina Centro de Tecnologia e Urbanismo Departamento de Engenharia El´etrica D´ecio

3

lho. E feita tambem uma revisao da principal melhoria ao algoritmo descrita na literatura,

a variante fastECPP.

O Capıtulo 5 discute as modificacoes ao ECPP para torna-lo um algoritmo distribuıdo,

o uso de estruturas hierarquicas de rede para distribuicao de dados de maneira eficiente

em sistemas distribuıdos, e os desafios de realizar computacoes validas em uma rede de

computadores cuja confiabilidade nao pode ser garantida.

O Capıtulo 6 discute a implementacao do sistema. Inicialmente justifica-se a decisao

de tornar o sistema um software livre sob licenca GPL, e o impacto desta decisao sobre

a infraestrutura utilizada, em particular as bibliotecas empregadas na construcao do sis-

tema. A seguir, sao descritas as metas de projeto do sistema, e o restante do capıtulo

e dedicado a descricao da implementacao, no estagio em que se encontrava quando da

publicacao deste trabalho.

O Capıtulo 7 relata alguns resultados obtidos ate o momento da escrita do trabalho,

que estabeleceram novos recordes em uma das etapas mais complexas do algoritmo ECPP.

O Capıtulo 8 conclui o trabalho e indica direcoes futuras de pesquisa.

O anexo A e uma reproducao do artigo ‘Demonstracoes Distribuıdas de Carater

Primo’, publicado pelo autor e seu orientador, Prof. Dr. Taufik Abrao, no XXI Simposio

Brasileiro de Telecomunicacoes, realizado em Belem – PA no perıodo de 6 a 9 de setembro

de 2004.

Page 25: Demonstra¸c˜oes Distribu´ıdas de Car´ater Primo em Larga ... fileUniversidade Estadual de Londrina Centro de Tecnologia e Urbanismo Departamento de Engenharia El´etrica D´ecio

4

2 Algebra Abstrata e Teoria dosNumeros

Esta dissertacao trata do algoritmo ECPP, que envolve conceitos de curvas elıpticas.

A teoria destas curvas, pelo menos no contexto da teoria computacional dos numeros,

exige familiaridade com certos conceitos da algebra abstrata, em particular grupos e cor-

pos. Estes assuntos compreendem a primeira e segunda parte deste capıtulo. A terceira

parte trata da teoria dos numeros, que e fundamental tanto para o problema abordado

por este trabalho (demonstracoes de carater primo), quanto na implementacao dos al-

goritmos utilizados. Os assuntos sao abordados superficialmente, omitindo resultados

desnecessarios ao desenvolvimento do trabalho.

A primeira secao trata da teoria de grupos. Partem-se de definicoes e proprieda-

des basicas, para entao introduzir mapeamentos entre grupos, seguido pela nocao de

subgrupo, concluindo com a importante classe de grupos e subgrupos cıclicos. A segunda

secao aborda resultados simples sobre corpos finitos, e a implementacao de sua aritmetica.

A ultima secao do capıtulo e uma compilacao de resultados da teoria dos numeros. O pri-

meiro assunto tratado e a divisibilidade. Em seguida, ha alguns resultados sobre numeros

primos e sua distribuicao entre os inteiros. O proximo topico e um tratamento breve de

aritmetica modular e congruencias. A seguir, sao expostos alguns resultados simples sobre

a aritmetica de polinomios com coeficientes modulares. A funcao φ de Euler e introdu-

zida, e alguns teoremas relacionados a esta funcao sao fornecidos. E feito um estudo do

grupo multiplicativo dos inteiros modulo n, e conclui-se o capıtulo com os conceitos de

residuosidade quadratica e raızes quadradas modulares.

2.1 Teoria de grupos

Os resultados da teoria de grupos sao extremamente importantes para a aborda-

gem das curvas elıpticas no contexto da teoria dos numeros. Ademais, interpretacoes

Page 26: Demonstra¸c˜oes Distribu´ıdas de Car´ater Primo em Larga ... fileUniversidade Estadual de Londrina Centro de Tecnologia e Urbanismo Departamento de Engenharia El´etrica D´ecio

5

de resultados da teoria dos numeros (como o Pequeno Teorema de Fermat 2.3.20 e sua

generalizacao, o Teorema de Fermat-Euler 2.3.19) em termos da teoria de grupos, e um

caminho produtivo para a criacao de algoritmos mais eficientes; em certos algoritmos, e

possıvel substituir o grupo multiplicativo (Z/pZ)∗ por outros grupos mais vantajosos, dos

quais o grupo de pontos de uma curva elıptica esta mais em voga atualmente.

Muitos resultados acerca de grupos infinitos serao omitidos, mesmo havendo analogia

direta com os resultados para grupos finitos, por serem irrelevantes ao trabalho.

2.1.1 Definicao e propriedades basicas

A definicao de um grupo e simples (11):

Definicao 2.1.1. Um grupo e um conjunto G e uma operacao binaria × : G → G, que

satisfazem os seguintes axiomas:

1. Fechamento: para todo a, b ∈ G, ab ∈ G;

2. Associatividade: (ab)c = a(bc) para todo a, b, c ∈ G;

3. Existencia de identidade: existe um elemento 1 ∈ G, dito a identidade de G, tal

que para todo a ∈ G vale que a1 = 1a = a;

4. Existencia de inversos: para cada a ∈ G, existe um elemento a−1 ∈ G, dito o

inverso de a, tal que aa−1 = a−1a = 1.

Adicionalmente, o grupo pode satisfazer o seguinte axioma:

5. Comutatividade: ab = ba para todo a, b ∈ G.

Nesse caso, o grupo e dito abeliano.

Na definicao, foi empregada uma notacao multiplicativa para o grupo. Tambem e

possıvel utilizar uma notacao aditiva, em que a operacao × e substituıda por +, a iden-

tidade 1 por 0 e os inversos a−1 pelos opostos −a. De fato, e possıvel empregar qualquer

notacao desejada, principalmente se corresponder a notacao tradicional para aquele grupo.

Algumas propriedades dos grupos podem ser obtidas diretamente da definicao acima:

Teorema 2.1.1. Se G e um grupo com operacao ×, entao

1. a identidade de G e unica;

Page 27: Demonstra¸c˜oes Distribu´ıdas de Car´ater Primo em Larga ... fileUniversidade Estadual de Londrina Centro de Tecnologia e Urbanismo Departamento de Engenharia El´etrica D´ecio

6

2. para todo a ∈ G, o elemento inverso a−1 e unico;

3. (a−1)−1 = a para todo a ∈ G;

4. (ab)−1 = (b−1)(a−1);

5. dados a1, a2, . . . , an ∈ G, o valor de a1a2 · · · an e independente da forma como sao

colocados parenteses na expressao (a chamada lei de associatividade generalizada).

Devido a lei de associatividade generalizada, o valor do produto xx · · ·x︸ ︷︷ ︸n vezes

nao depende

da ordem de avaliacao, e sera denotado simplesmente por xn. De forma semelhante,

x−1x−1 · · ·x−1︸ ︷︷ ︸n vezes

e escrito como x−n, e x0 = 1.

O seguinte teorema estabelece a existencia de cancelamento em grupos:

Teorema 2.1.2. Seja G um grupo com a, b ∈ G. As equacoes ax = b e ya = b apresentam

solucoes unicas x, y ∈ G. Em particular, as leis de cancelamento pela esquerda e pela

direita sao validas em G, ou seja,

1. se au = av, entao u = v;

2. se ub = vb, entao u = v.

O seguinte conceito e importantıssimo no estudo da teoria de grupos.

Definicao 2.1.2. Seja G um grupo e x ∈ G. Define-se a ordem de x como o menor inteiro

positivo tal que xn = 1, e denota-se este inteiro por |x|, e diz-se que x possui ordem n. Se

nenhuma potencia positiva de x corresponde a identidade, define-se a ordem de x como

infinito.

E possıvel falar tambem na ordem do grupo como um todo.

Definicao 2.1.3. Seja G um grupo. A ordem do grupo e a cardinalidade do conjunto

associado ao grupo, e e denotada por |G|.

2.1.2 Aplicacoes entre grupos

As aplicacoes entre grupos possuem uma notacao propria.

Page 28: Demonstra¸c˜oes Distribu´ıdas de Car´ater Primo em Larga ... fileUniversidade Estadual de Londrina Centro de Tecnologia e Urbanismo Departamento de Engenharia El´etrica D´ecio

7

Definicao 2.1.4. Sejam G e H dois grupos. Uma aplicacao ϕ : G → H tal que

ϕ(xy) = ϕ(x)ϕ(y), para todo x, y ∈ G

e dita um homomorfismo.

Observa-se que na equacao da Definicao 2.1.4, a operacao no lado esquerdo e realizada

em G, enquanto a operacao no lado direito e realizada em H. Intuitivamente falando, um

homomorfismo respeita as estruturas de grupo entre o domınio e o contradomınio.

Definicao 2.1.5. Uma aplicacao ϕ : G → H e dita um isomorfismo, e G e H sao ditos

isomorfos, se

1. ϕ e um homomorfismo;

2. ϕ e uma bijecao.

Se G e H sao isomorfos, escreve-se G ∼= H.

Um isomorfismo entre dois grupos e uma bijecao que preserva as operacoes de grupo.

Intuitivamente falando, G e H sao o mesmo grupo, exceto que a representacao dos ele-

mentos e da operacao de cada grupo pode ser diferente.

E possıvel demonstrar que dois grupos nao sao isomorfos se o seguinte criterio nao for

satisfeito (11):

Teorema 2.1.3. Um mapeamento ϕ : G → H e um isomorfismo se

1. |G| = |H|

2. G e abeliano se e somente se H e abeliano

3. para todo x ∈ G, |x| = |ϕ(x)|

2.1.3 Subgrupos

Alguns grupos possuem subconjuntos que, por si so, satisfazem os axiomas de grupo.

Tais subconjuntos sao ditos subgrupos do grupo original.

Definicao 2.1.6. Seja G um grupo. Um subconjunto H de G e um subgrupo de G se H

possuir pelo menos um elemento, e se dados dois elementos x, y ∈ H,

Page 29: Demonstra¸c˜oes Distribu´ıdas de Car´ater Primo em Larga ... fileUniversidade Estadual de Londrina Centro de Tecnologia e Urbanismo Departamento de Engenharia El´etrica D´ecio

8

1. xy ∈ H;

2. x−1 ∈ H.

Se H e um subgrupo de G, emprega-se a notacao H ≤ G, ou H < G caso H 6= G.

2.1.4 Grupos e subgrupos cıclicos

Uma classe muito importante de grupos sao os chamados grupos cıclicos.

Definicao 2.1.7. Um grupo G e cıclico se G pode ser gerado pelas potencias de um

unico elemento, ou seja, existe x ∈ G tal que G = {xn | n ∈ Z}. A notacao G = 〈x〉 e

empregada para indicar que G e gerado por x.

Em geral, um grupo cıclico possui mais de um gerador. Por exemplo, se x e um gerador

de G, entao x−1 tambem e (11). Usando propriedades de expoentes e a comutatividade

dos inteiros, e possıvel mostrar que grupos cıclicos devem ser abelianos.

O seguinte teorema fornece algumas propriedades importantes de grupos cıclicos.

Teorema 2.1.4. Seja G um grupo cıclico finito gerado por x. Sao validas as seguintes

propriedades:

1. |G| = |x|;

2. se |G| = n, entao xn = 1 e 1, x, x2, . . . , xn−1 sao elementos distintos de G.

Em grupos cıclicos finitos, e possıvel utilizar a relacao xn = 1, onde n = |G|, para

reduzir expoentes k ≥ n para a faixa 0 ≤ x < n por divisao Euclidiana, onde o divisor e a

ordem do grupo n. Este procedimento sugere que e possıvel utilizar as leis de expoentes e a

aritmetica do grupo aditivo Z/nZ para realizar aritmetica em G. Isto nao e coincidencia;

o teorema a seguir estabelece isomorfismos entre grupos cıclicos, dos quais Z/nZ sob

adicao e um exemplo.

Teorema 2.1.5. Dois grupos cıclicos quaisquer de mesma ordem sao isomorfos. Especi-

ficamente, se n ∈ Z+, e 〈x〉, 〈y〉 sao dois grupos cıclicos de ordem n, entao o mapeamento

ϕ : 〈x〉 →〈y〉

xk 7→yk

e bem definido e e um isomorfismo.

Page 30: Demonstra¸c˜oes Distribu´ıdas de Car´ater Primo em Larga ... fileUniversidade Estadual de Londrina Centro de Tecnologia e Urbanismo Departamento de Engenharia El´etrica D´ecio

9

O seguinte teorema estabelece propriedades adicionais de grupos cıclicos e seus gera-

dores.

Teorema 2.1.6. Seja G um grupo cıclico finito, x ∈ G e a 6= 0 um inteiro.

1. Se |x| = n, entao |xa| = n/ mdc(n, a);

2. Em particular, se a divide n, entao |xa| = n/a;

3. Se G = 〈x〉, entao G = 〈xa〉 se e somente se mdc(n, a) = 1, o que tambem implica

que o numero de geradores de G e φ(n), onde φ(n) e a funcao de Euler da Definicao

2.3.7.

E possıvel desvendar a estrutura completa dos subgrupos de um grupo cıclico atraves

do seguinte teorema.

Teorema 2.1.7. Seja G = 〈x〉 um grupo cıclico.

1. Todo subgrupo de G e cıclico. Mais especificamente, se K ≤ H, entao K = {1} ou

K = 〈xd〉, onde d e o menor inteiro positivo tal que xd ∈ K.

2. Se |G| = n, os divisores d de n estao em correspondencia bijetiva com os subgrupos

de G: para cada d | n existe um unico subgrupo de G de ordem d, gerado por xn/d.

2.2 Introducao aos corpos

Definicao 2.2.1. Um corpo F e um conjunto e duas operacoes binarias associadas,

+ : F → F e × : F → F (ditas adicao e multiplicacao), que satisfazem os seguintes

axiomas, onde a e b denotam dois elementos quaisquer do grupo em questao:

1. Comutatividade: a + b = b + a e ab = ba;

2. Associatividade: (a + b) + c = a + (b + c) e (ab)c = a(bc);

3. Distributividade: a(b + c) = ab + ac e (a + b)c = ac + bc;

4. Existencia de identidades, onde 0 denota a identidade aditiva e 1 a identidade

multiplicativa: a + 0 = 0 + a = a e a1 = 1a = a;

5. Existencia de inversos, onde −a indica o inverso sob adicao e a−1 o inverso sob

multiplicacao: a + (−a) = (−a) + a = 0 e aa−1 = a−1a = 1 se a 6= 0.

Page 31: Demonstra¸c˜oes Distribu´ıdas de Car´ater Primo em Larga ... fileUniversidade Estadual de Londrina Centro de Tecnologia e Urbanismo Departamento de Engenharia El´etrica D´ecio

10

Alguns sistemas numericos tradicionais sao corpos: o conjunto dos numeros racionais

Q, dos numeros reais R e dos numeros complexos C. Ja o conjunto dos numeros inteiros

Z nao forma um corpo, por nao atender ao item 5 da definicao.

Definicao 2.2.2. Seja um corpo F com identidade multiplicativa 1 e identidade aditiva

0. Se existe n tal que n · 1 = 0, e este e o menor valor que satisfaz esta propriedade,

entao o corpo e dito de caracterıstica n. Caso nao exista n que satisfaca a propriedade, a

caracterıstica do corpo e 0.

Corpos de caracterıstica n 6= 0 sao ditos corpos finitos, e sao os corpos mais interessan-

tes do ponto de vista computacional. Algumas propriedades dos corpos finitos, retiradas

de (2), sao dadas a seguir.

Teorema 2.2.1 (Resultados basicos sobre corpos finitos).

1. A caracterıstica de um corpo finito F, ch(F), e um numero primo;

2. Todos os corpos finitos possuem pk elementos, onde k e um inteiro positivo e p e a

caracterıstica do corpo;

3. Para um dado primo p e inteiro positivo k, existe exatamente um corpo com pk

elementos (a menos de isomorfismo1), que sera denotado por Fpk ;

4. O grupo multiplicativo F∗pk de elementos nao-nulos de Fpk e cıclico.

Pelo Teorema 2.1.6, o grupo F∗pk apresenta φ(pk − 1) geradores, que no contexto deste

grupo, tambem recebem o nome de raızes primitivas.

Raızes primitivas podem ser obtidas atraves do seguinte criterio (2):

Teorema 2.2.2 (Teste para raiz primitiva em F∗pk). Um elemento g de F∗

pk e uma

raiz primitiva se e somente se

gpk−1

q 6= 1

para todo primo q | pk − 1.

2.2.1 Implementacao da aritmetica de corpos finitos

A maneira classica de realizar aritmetica de corpos finitos e atraves de aritmetica

modular de inteiros e polinomios.

1Dois corpos sao ditos isomorfos quando ha uma bijecao entre eles, de modo que ambos possuem amesma estrutura algebrica.

Page 32: Demonstra¸c˜oes Distribu´ıdas de Car´ater Primo em Larga ... fileUniversidade Estadual de Londrina Centro de Tecnologia e Urbanismo Departamento de Engenharia El´etrica D´ecio

11

Inicialmente observa-se que um corpo de caracterıstica p e que possui p elementos e

isomorfo ao corpo dos inteiros modulo p, Z/pZ (2). Desse modo, a aritmetica de Fp pode

ser realizada atraves da aritmetica modulo p.

Ja corpos de caracterıstica p e que possuem pk elementos correspondem a extensoes

de Fp. Nesse caso, em uma transposicao direta da teoria (11), os elementos de Fpk sao

polinomios com coeficientes provindos de Fp, e a aritmetica desses polinomios e realizada

modulo um polinomio irredutıvel qualquer de grau k (2, 3). Polinomios irredutıveis podem

ser obtidos a partir do criterio a seguir.

Teorema 2.2.3 (Criterio de irredutibilidade de polinomios). Um polinomio f(x)

em Fp[x] de grau k e irredutıvel se e somente se mdc(f(x), xpj − x) = 1, para j =

1, 2, . . . , bk/2c.

Observa-se que a escolha do polinomio irredutıvel de grau k no paragrafo acima e

imaterial, visto que todos os corpos de pk elementos sao isomorficos entre si; a escolha do

polinomio afeta apenas a representacao dos elementos.

Em princıpio, a aritmetica modular, tanto de inteiros como de polinomios, pode ser

realizada atraves das operacoes inteiras e polinomiais comuns, seguidas de uma divisao

pelo modulo, em que o resto da divisao caracteriza o resultado da operacao modular (3).

Divisoes sao realizadas na forma de multiplicacao pelo inverso modular, que pode ser

computado pelo algoritmo estendido de Euclides (Algoritmo 2.3.2). Vale observar que

existem diversos algoritmos mais eficientes para estas tarefas, particularmente quando o

tamanho dos operandos e suficientemente grande (2).

2.3 Teoria dos numeros

2.3.1 Divisibilidade

O ponto de partida da teoria dos numeros e o chamado algoritmo de divisao, ou

divisao Euclidiana.

Teorema 2.3.1. Se a e b sao inteiros e b > 0, entao existem, e sao unicos, inteiros q e

r tais que

a = qb + r e 0 ≤ r < b.

Definicao 2.3.1. Se a e b sao inteiros quaisquer, e a = qb para algum inteiro q, entao

diz-se que b divide a, ou reciprocamente, que a e multiplo de b. Emprega-se a notacao

b | a para indicar que b divide a, e b - a para indicar que b nao divide a.

Page 33: Demonstra¸c˜oes Distribu´ıdas de Car´ater Primo em Larga ... fileUniversidade Estadual de Londrina Centro de Tecnologia e Urbanismo Departamento de Engenharia El´etrica D´ecio

12

Como consequencia da definicao, observa-se que qualquer inteiro divide 0 (uma vez

que 0 = 0b para qualquer valor de b), que 1 divide qualquer inteiro, e que todo inteiro

divide a si mesmo.

Alguns resultados sobre divisibilidade sao dados a seguir.

Teorema 2.3.2.

1. se a | b e b | c, entao a | c;

2. se a | b e c | d, entao ac | bd;

3. se m 6= 0, entao a | b se e somente se ma | mb;

4. se d | a e a 6= 0, entao |d| ≤ |a|;

5. se c divide a1, . . . , ak, entao c divide a1u1 + . . . + akuk para quaisquer inteiros

u1, . . . , uk.

6. a | b e b | a se e somente se a = ±b.

Definicao 2.3.2. Se d | a e d | b, diz-se que d e um divisor comum de a e b. Dentre os

divisores comuns de dois (ou mais) inteiros, ha um de maior valor; este e dito o maximo

divisor comum (MDC).

O calculo do MDC de dois inteiros pode ser feito, de maneira ingenua, pela listagem

dos divisores dos inteiros em questao, seguido da busca pelo maior elemento em comum

entre as duas listas. Infelizmente, este algoritmo e extremamente ineficiente, pois exige a

fatoracao de seus argumentos. Um algoritmo mais eficiente e conhecido desde a Grecia

antiga, o chamado algoritmo de Euclides, considerado o primeiro algoritmo da historia,

e possivelmente o mais importante algoritmo da teoria dos numeros. Seu princıpio de

funcionamento e baseado no lema a seguir.

Lema 2.3.3. Se a = qb + r, entao mdc(a, b) = mdc(b, r).

De posse desse lema, a obtencao do algoritmo e trivial.

Algoritmo 2.3.1 (Algoritmo de Euclides). Dados dois inteiros nao-negativos a e b,

o algoritmo calcula o maximo divisor comum dos dois.

1. [Laco de Euclides]

while (b 6= 0) {

Page 34: Demonstra¸c˜oes Distribu´ıdas de Car´ater Primo em Larga ... fileUniversidade Estadual de Londrina Centro de Tecnologia e Urbanismo Departamento de Engenharia El´etrica D´ecio

13

r = a mod b;

a = b;

b = r;

}return r;

O tempo de execucao deste algoritmo, se programado com cuidado, e O(log2 n

),

onde n = max(a, b) (1). Existem tambem variantes do algoritmo, cuja implementacao em

computadores binarios e mais eficiente (1).

Definicao 2.3.3. Dois inteiros a e b sao ditos coprimos (ou relativamente primos) se

mdc(a, b) = 1.

O teorema a seguir sera utilizado na secao sobre aritmetica modular.

Teorema 2.3.4. Sejam a, b, c inteiros, onde a, b nao sao simultaneamente nulos, e seja

d = mdc(a, b). Entao a equacao

ax + by = c

possui solucao inteira para x, y se e somente se d | c, e nesse caso existem infinitas

solucoes, dadas pelos pares

x = x0 +bn

d, y = y0 −

an

d,

onde x0, y0 e uma solucao particular qualquer e n ∈ Z.

Solucoes particulares desta equacao podem ser encontradas pelo chamado algoritmo

estendido de Euclides (1, 2).

Algoritmo 2.3.2 (Algoritmo estendido de Euclides). Dados inteiros a e b tais que

a ≥ b ≥ 0 e a > 0, o algoritmo retorna a tripla de inteiros (x, y, c) tais que ax + by = c =

mdc(a, b).

1. [Inicializacao]

(x,y,c,u,v,w) = (1,0,a,0,1,b);

2. [Laco de Euclides]

while (w > 0) {q = dc/we;

Page 35: Demonstra¸c˜oes Distribu´ıdas de Car´ater Primo em Larga ... fileUniversidade Estadual de Londrina Centro de Tecnologia e Urbanismo Departamento de Engenharia El´etrica D´ecio

14

(x, y, c, u, v, w) = (u, v, w, x− qu, y − qv, c− qw);

}return (x, y, c);

Assintoticamente, o tempo de execucao deste algoritmo e o mesmo do algoritmo de

Euclides para MDC.

2.3.2 Numeros primos

A definicao de numero primo e o importante resultado acerca dos mesmos, denominado

Teorema Fundamental da Aritmetica, ja foi abordado no Capıtulo 1. Esta secao preocupa-

se apenas com a distribuicao dos primos entre os inteiros, e com algoritmos rudimentares

para determinacao de carater primo e composto.

Teorema 2.3.5. Existem infinitos numeros primos.

Definicao 2.3.4. A funcao π(x) denota o numero de primos p ≤ x.

Teorema 2.3.6. Para x →∞,

π(x) ∼ x

log x

O seguinte criterio permite determinar o carater primo de inteiros pequenos.

Lema 2.3.7. Um inteiro n > 1 e composto se e somente se n e divisıvel por algum primo

p ≤√

n.

Em determinadas situacoes, e preciso compilar uma lista de primos entre 1 e n, para

algum valor de n. Embora seja possıvel aplicar o lema acima de maneira independente a

cada inteiro de 1 a n, existe um algoritmo para compilacao desta lista que e mais eficiente,

o Crivo de Eratostenes.

Algoritmo 2.3.3 (Crivo de Eratostenes). Dado um inteiro n > 1, este algoritmo

retorna um vetor binario p[2..n], tal que se k e composto, p[k] = 0, e se k e primo,

p[k] = 1.

1. [Inicializacao]

// Pelo Lema 2.3.7, os elementos de 1 a n nao

// possuem fatores primos maiores que d√

nel = d

√ne;

p[2..n] = 1;

i = 2;

Page 36: Demonstra¸c˜oes Distribu´ıdas de Car´ater Primo em Larga ... fileUniversidade Estadual de Londrina Centro de Tecnologia e Urbanismo Departamento de Engenharia El´etrica D´ecio

15

2. [Laco principal]

while (i ≤ l) {// Multiplos de i sao compostos por definicao

for (j = 2i; j < n; j = j + i)

p[j] = 0;

// Procura proximo primo no vetor

for (i + +; p[i] = 1; i + +)

;

}return p;

Pode-se mostrar (2) que o tempo de execucao desse algoritmo e O(n log log n); visto

de outra maneira, o custo amortizado do algoritmo para cada inteiro na faixa de 1 a n

e O(log log n). Ainda assim, esse custo e muito alto, exceto para pequenos valores de n

(ate 10 ou 11 dıgitos).

2.3.3 Congruencias e aritmetica modular

Definicao 2.3.5. Seja n um inteiro positivo, e a, b dois inteiros quaisquer. Diz-se que a e

congruente a b modulo n, e escreve-se a ≡ b (mod n), se a e b apresentam o mesmo resto

apos divisao por n.

Teorema 2.3.8. Para um dado n ≥ 1, temos que a ≡ b (mod n) se e somente se n |(a− b).

Lema 2.3.9. Para um dado n ≥ 1, temos que

1. a ≡ a (mod n) para todos os inteiros a;

2. se a ≡ b (mod n), entao b ≡ a (mod n);

3. se a ≡ b (mod n) e b ≡ c (mod n), entao a ≡ c (mod n).

Este lema estabelece que a congruencia e uma relacao de equivalencia, por satisfazer

os axiomas de reflexividade, simetria e transitividade. Assim, Z e particionado em classes

de equivalencia disjuntas, representadas pelas classes de congruencia

a = {b ∈ Z | a ≡ b (mod n)}.

Page 37: Demonstra¸c˜oes Distribu´ıdas de Car´ater Primo em Larga ... fileUniversidade Estadual de Londrina Centro de Tecnologia e Urbanismo Departamento de Engenharia El´etrica D´ecio

16

Cada classe corresponde aos possıveis restos r = 0, 1, . . . , n − 1 da divisao de um

inteiro por n, de modo que ha n classes de congruencia, mais especificamente

0 = {. . . ,−2n,−n, 0, n, 2n, . . .}.

1 = {. . . ,−2n + 1,−n + 1, 1, n + 1, 2n + 1, . . .},

. . .

n− 1 = {. . . ,−n− 1,−1, n− 1, 2n− 1, 3n− 1, . . .}.

O conjunto de classes de equivalencia modulo n e denotado por Z/nZ. E possıvel

definir uma aritmetica desse conjunto da seguinte forma:

a + b = a + b,

a− b = a− b,

ab = ab.

O lema a seguir afirma que essas operacoes sao bem-definidas.

Lema 2.3.10. Para um dado n ≥ 1, se a′ ≡ a (mod n) e b′ ≡ b (mod n), entao a′ + b′ ≡a + b (mod n), a′ − b′ ≡ a− b (mod n) e a′b′ ≡ ab (mod n).

O conjunto Z/nZ e as operacoes aritmeticas assim definidas formam um anel (quando

n nao e primo ou potencia de primo) ou um corpo.

Deve-se prestar atencao a definicao de exponenciacao. Aplicando a definicao de mul-

tiplicacao de classes de congruencia, obtem-se ak = ak. Deve-se observar que, em geral,

ak 6= ak; mas nem tudo esta perdido com relacao ao calculo eficiente de exponenciacoes.

Sera visto mais a frente que, de fato, e possıvel efetuar reducoes modulares neste expoente,

desde que se escolha o modulo correto pelo uso do Teorema 2.3.19.

Embora, a primeira vista, operacoes de exponenciacao ak (sejam exponenciacoes mo-

dulares ou nao) parecam exigir k−1 multiplicacoes, existem algoritmos que exigem apenas

O(log k) multiplicacoes. A literatura sobre estes algoritmos e rica (bons pontos de par-

tida sao (1, 5)), mas neste capıtulo mencionamos apenas um dos algoritmos mais simples,

conhecido como exponenciacao esquerda-direita. Decidiu-se abordar este algoritmo, ao

inves de sua versao simetrica direita-esquerda, por haver uma certa vantagem na situacao

em que a e um inteiro pequeno como 2 ou 3, em que e possıvel substituir a operacao de

multiplicacao por a por adicoes.

Page 38: Demonstra¸c˜oes Distribu´ıdas de Car´ater Primo em Larga ... fileUniversidade Estadual de Londrina Centro de Tecnologia e Urbanismo Departamento de Engenharia El´etrica D´ecio

17

Algoritmo 2.3.4 (Exponenciacao esquerda-direita). Esse algoritmo calcula ak, k >

0, onde k e fornecido ao algoritmo na forma de um vetor de 0 a D − 1 contendo sua

expansao binaria, com k[D − 1] = 1 o bit mais significativo.

1. [Inicializacao]

z = a;

2. [Laco sobre os bits de k, a partir do segundo mais significativo]

for (D − 2 ≥ j ≥ 0) {z = z2;

if (k[j] == 1)

z = za;

}return z;

Para o calculo de exponenciacoes modulares, o algoritmo sera mais eficiente se as

operacoes de multiplicacao forem seguidas por reducoes modulares, mantendo os valores

das variaveis estritamente menores que o modulo.

A divisao de classes de congruencia nao pode ser definida como a/b = a/b, visto

que a/b nao necessariamente assume valor inteiro. Ao inves disso, serao consideradas

as solucoes da equacao bx ≡ a (mod n). Pelo Teorema 2.3.8, isso equivale a dizer que

n | (bx− a), ou seja, bx− a = ny. Equacoes deste tipo ja foram estudadas pelo Teorema

2.3.4, e suas solucoes podem ser obtidas de maneira eficiente pelo Algoritmo 2.3.2. Um

corolario do Teorema 2.3.4, empregando os conceitos de congruencia, e util nesta situacao:

Corolario 2.3.11. Se mdc(b, n) = 1, entao as solucoes da congruencia bx ≡ a (mod n)

para x formam uma unica classe de congruencia modulo n.

Esse corolario indica as situacoes em que faz sentido definir o quociente de classes de

congruencia; especificamente, quando o divisor b e coprimo ao modulo n. Quando esta

condicao nao e verdadeira, e d | a, ha mais de uma solucao para a congruencia, enquanto

se d - a, a congruencia nao possui solucao. Em ambos os casos, nao e possivel definir um

quociente a/b.

Uma definicao de amplo uso, e relacionada aos quocientes de classe de congruencia, e

a inversao de classes de congruencia.

Definicao 2.3.6. O inverso a−1 de uma classe de congruencia a modulo n e a solucao x

da equacao ax = 1, ou na notacao da aritmetica modular, ax ≡ 1 (mod n).

Page 39: Demonstra¸c˜oes Distribu´ıdas de Car´ater Primo em Larga ... fileUniversidade Estadual de Londrina Centro de Tecnologia e Urbanismo Departamento de Engenharia El´etrica D´ecio

18

Apos este breve interludio ao topico de divisao de classes de congruencia, retornamos

ao estudo da aritmetica destas classes. O Lema 2.3.10 pode ser interpretado da seguinte

maneira: a aritmetica de classes de congruencia depende apenas das classes de congruencia

em questao, e nao do representante particular escolhido para aquela classe. Surge entao

a questao de como escolher os representantes mais adequados para maximizar a eficiencia

da implementacao da aritmetica modular. As duas possibilidades mais comuns sao o

conjunto de resıduos nao-negativos mınimos, dado por {0, 1, . . . , n − 1}, e o conjunto de

resıduos de menor valor absoluto, dado por {0,±1,±2, . . . ,±(n − 1)/2} para n ımpar e

{0,±1,±2, . . . ,±(n/2− 1), n/2} para n par (o ultimo elemento pode ser substituıdo por

−n/2 se desejado).

As definicoes e resultados obtidos ate agora sugerem a implementacao da aritmetica

modular atraves da aritmetica de inteiros e aplicacao do algoritmo de divisao. Existe um

sistema alternativo de aritmetica modular para o caso em que n e composto (1, 5). Para

introduzi-lo, e necessario o teorema a seguir.

Teorema 2.3.12. Seja n um inteiro com fatoracao em potencias de primos

n = pe11 · · · pek

k ,

onde p1, . . . , pk sao primos distintos. Dados inteiros a e b, temos que a ≡ b (mod n) se e

somente se a ≡ b (mod peii ) para i = 1, . . . , k.

Este resultado, em conjunto com o Lema 2.3.10, sugere a realizacao da aritmetica

modulo os diferentes fatores primos de n; esse procedimento pode ser vantajoso em al-

gumas situacoes. E necessario, no entanto, um metodo para obtencao da classe de con-

gruencia modulo n dadas as classes de congruencia modulo cada fator primo de n. O

seguinte teorema garante a existencia e unicidade da solucao para esse problema.

Teorema 2.3.13 (Teorema Chines do Resto). Sejam n1, . . . , nk inteiros positivos tais

que mdc(ni, nj) = 1 para i 6= j, e sejam a1, . . . , ak inteiros quaisquer. Entao a solucao

das congruencias simultaneas

x ≡ a1 (mod n1), . . . , x ≡ ak (mod nk)

forma uma unica classe de congruencia modulo n, onde n = n1 · · ·nk. Ademais, esta

solucao e dada por

x ≡k∑

i=1

aicidi (mod n)

Page 40: Demonstra¸c˜oes Distribu´ıdas de Car´ater Primo em Larga ... fileUniversidade Estadual de Londrina Centro de Tecnologia e Urbanismo Departamento de Engenharia El´etrica D´ecio

19

onde ci = n/ni e di ≡ c−1i (mod ni). Z/nZ

2.3.4 Polinomios com coeficientes em Z/nZ

A definicao de uma aritmetica de Z/nZ permite a construcao de polinomios com

coeficientes provindos desse corpo. O lema a seguir afirma que, de certa forma, tais

polinomios se comportam como esperado.

Lema 2.3.14. Seja f = f(x) um polinomio com coeficientes inteiros, e n ≥ 1. Se

a ≡ b (mod n), entao f(a) ≡ f(b) (mod n).

O numero de raızes de polinomios sobre Z/nZ e fornecido pelo teorema a seguir, devido

a Lagrange, e corresponde ao resultado familiar conhecido como Teorema Fundamental

da Algebra.

Teorema 2.3.15. Seja p um primo, e f(x) = adxd + . . . + a1x + a0 um polinomio com

coeficientes inteiros, com ai 6≡ 0 (mod p) para pelo menos um valor de i. Entao a con-

gruencia f(x) ≡ 0 (mod p) e satisfeita por nao mais que d classes de congruencia de

Z/nZ.

2.3.5 A funcao φ de Euler

Definicao 2.3.7. A funcao φ = φ(n) indica o numero de inteiros 1 ≤ a < n coprimos a

n.

Lema 2.3.16. Se n = pe com p primo e e natural, entao

φ(n) = pe − pe−1 = pe−1(p− 1) = n

(1− 1

p

).

Teorema 2.3.17. Se m e n sao coprimos, entao φ(mn) = φ(m)φ(n).

Juntando o Lema 2.3.16 e o Teorema 2.3.17, e possıvel calcular φ(n) para qualquer

valor inteiro de n.

Corolario 2.3.18. Se a fatoracao de n em potencias de primos e n = pe11 · · · pek

k , entao

φ(n) =k∏

i=1

(peii − pei−1

i ) =k∏

i=1

pei−1i (pi − 1) = n

k∏i=1

(1− 1

pi

).

Page 41: Demonstra¸c˜oes Distribu´ıdas de Car´ater Primo em Larga ... fileUniversidade Estadual de Londrina Centro de Tecnologia e Urbanismo Departamento de Engenharia El´etrica D´ecio

20

Este resultado pode ser escrito de forma mais concisa como

φ(n) = n∏p|n

(1− 1

p

).

O teorema a seguir e o resultado mais importante envolvendo a funcao de Euler.

Teorema 2.3.19 (Teorema de Fermat-Euler). Se mdc(a, n) = 1, entao

aφ(n) ≡ 1 (mod n).

Um corolario importante contempla o caso em que n e primo.

Teorema 2.3.20 (Pequeno Teorema de Fermat). Se p e primo e a 6≡ 0 (mod p),

entao

ap−1 ≡ 1 (mod p).

Se, no Teorema 2.3.19 a restricao mdc(a, n) = 1 nao puder ser garantida, entao e

necessario se contentar com o seguinte resultado.

Teorema 2.3.21. Para qualquer inteiro a, aφ(n)+1 ≡ a (mod n).

Esses resultados se tornam intuitivos quando interpretados sob a otica da teoria dos

grupos, considerando o grupo multiplicativo (Z/nZ)∗, como sera feito na secao seguinte.

2.3.6 O grupo multiplicativo (Z/nZ)∗

Nesta secao, sao dados alguns resultados a respeito do grupo mais importante no

estudo de teoria dos numeros, (Z/nZ)∗.

Teorema 2.3.22. Os inteiros 1 ≤ a < n tais que mdc(a, n) = 1, sob a operacao de

multiplicacao modular, formam o grupo (Z/nZ)∗. Este grupo e abeliano e de ordem φ(n).

A condicao para que (Z/nZ)∗ seja cıclico e dada pelo teorema a seguir.

Teorema 2.3.23. O grupo (Z/nZ)∗ e cıclico se e somente se n = 1, 2, 4, uma potencia

de um primo ımpar, ou duas vezes uma potencia de um primo ımpar.

Em particular, a existencia de raızes primitivas e condicionada ao fato de o grupo

ser cıclico. Alguns resultados sobre raızes primitivas ja foram dados na Secao 2.2, no

contexto do grupo multiplicativo de um corpo finito, mas deve-se observar que este nao

Page 42: Demonstra¸c˜oes Distribu´ıdas de Car´ater Primo em Larga ... fileUniversidade Estadual de Londrina Centro de Tecnologia e Urbanismo Departamento de Engenharia El´etrica D´ecio

21

e o mesmo objeto algebrico que o grupo (Z/nZ)∗; por exemplo, a cardinalidade dos dois

nao e a mesma: |Fpk | = pk − 1, enquanto |(Z/pkZ)∗| = φ(pk) = pk−1(p− 1) 6= pk − 1. Por

conta disso, os resultados dados naquela secao sao adaptados aqui para o grupo (Z/nZ)∗,

no caso em que este grupo e cıclico.

Teorema 2.3.24. Um elemento a ∈ (Z/nZ)∗ e uma raiz primitiva se e somente se

aφ(n)/q = 1 para cada primo q que divide φ(n).

Teorema 2.3.25. Se (Z/nZ)∗ possui raızes primitivas, entao estas raızes primitivas sao

em numero de φ(φ(n)).

2.3.7 Resıduos quadraticos e raızes quadradas modulares

Esta secao contempla as solucoes para congruencias quadraticas do tipo x2 ≡ a

(mod n), no contexto do grupo (Z/nZ)∗.

Definicao 2.3.8. Um elemento a ∈ (Z/nZ)∗ e dito um resıduo quadratico se a ≡ s2

(mod n) para algum s ∈ (Z/nZ)∗. O conjunto dos resıduos quadraticos modulo n sera

denotado por Qn.

O resultado a seguir determina o numero de raızes quadradas de elementos de Qn

(lembrando que os elementos de (Z/nZ)∗\Qn nao possuem raızes quadradas por definicao).

Teorema 2.3.26. Seja k o numero de primos distintos que dividem n, e seja a ∈ Qn.

Entao numero de elementos t ∈ (Z/nZ)∗ tais que t2 ≡ a (mod n) e dado por

N =

2k+1 se n ≡ 0 (mod 8),

2k−1 se n ≡ 2 (mod 4),

2k caso contrario.

Teorema 2.3.27. Qn e subgrupo de (Z/nZ)∗.

A determinacao de Qn e particularmente simples quando (Z/nZ)∗ e cıclico.

Teorema 2.3.28. Seja n > 2, e suponha a existencia de uma raiz primitiva g (mod n).

Entao Qn e um grupo cıclico de ordem φ(n)/2 gerado por g2.

As notacoes a seguir simplificam o trabalho de lidar com resıduos quadraticos.

Page 43: Demonstra¸c˜oes Distribu´ıdas de Car´ater Primo em Larga ... fileUniversidade Estadual de Londrina Centro de Tecnologia e Urbanismo Departamento de Engenharia El´etrica D´ecio

22

Definicao 2.3.9. Seja p ≥ 3 um primo. O sımbolo de Legendre de um inteiro a qualquer

e

(a

p

)=

0 se p | a,

1 se a ∈ Qp,

−1 se a ∈ (Z/nZ)∗ \Qp.

Definicao 2.3.10. Seja m um inteiro ımpar, e a um inteiro qualquer. O sımbolo de Jacobi

( am

) e definido em termos da fatoracao de m em potencias de primos,

m =∏

ptii ,

como ( a

m

)=∏(

a

pi

)t

i

.

Deve-se observar que, para m composto, o sımbolo de Jacobi ( am

) = 1 nao significa

que a congruencia x2 ≡ a (mod m) possui solucao, ao contrario do que se poderia esperar.

Para tanto, exige-se mais: o sımbolo de Legendre (ap) deve ser 0 ou 1 para cada um dos

fatores p de m. Porem, se ( am

) = −1, pode-se afirmar com certeza que a congruencia nao

possui solucao.

Sımbolos de Legendre podem ser calculados de maneira eficiente atraves do seguinte

resultado.

Teorema 2.3.29 (Criterio de Euler). Se p ≥ 3 e primo, entao para todos os inteiros

a, (a

p

)≡ a(p−1)/2 (mod p).

Algumas simplificacoes podem ser feitas em expressoes envolvendo sımbolos de Le-

gendre e Jacobi atraves dos resultados a seguir.

Teorema 2.3.30. Sejam m, n inteiros ımpares e a, b inteiros quaisquer. As seguintes

relacoes sao validas para os sımbolos de Legendre e Jacobi:(ab

m

)=( a

m

)( b

m

),

( a

mn

)=( a

m

)(a

n

).

As relacoes especiais a seguir sao de uso amplo:(−1

m

)= (−1)(m−1)/2,

Page 44: Demonstra¸c˜oes Distribu´ıdas de Car´ater Primo em Larga ... fileUniversidade Estadual de Londrina Centro de Tecnologia e Urbanismo Departamento de Engenharia El´etrica D´ecio

23

(2

m

)= (−1)(m2−1)/8.

O grande valor das relacoes especiais incluıdas no teorema e que seu calculo nao exige

exponenciacoes modulares (12). O valor de (−1)(m−1)/2 e 1 se (m − 1)/2 e par e -1 se

(m − 1)/2 e ımpar; as duas condicoes podem ser simplificadas para m ≡ 1 (mod 4) e

m ≡ 3 (mod 4), respectivamente, e o calculo do resto da divisao de um inteiro por uma

potencia de 2 pode ser realizado sem envolver uma divisao explıcita, atraves da operacao

logica AND: se a = 1, 3, m ≡ a (mod 4) ⇐⇒ (m & 3) == a (na notacao das lingua-

gens C/C++). O calculo de (−1)(m2−1)/8 e ligeiramente mais complicado; inicialmente

observa-se que esse valor depende apenas da classe de congruencia de m modulo 8, e

constroi-se uma tabela tab[8] = { 0, 1, 0, -1, 0, -1, 0, 1 }, obtendo-se a relacao

(−1)(m2−1)/8 = tab[m & 7].

O resultado a seguir esta para o calculo de sımbolos de Jacobi como o Lema de

Euclides 2.3.3 esta para o calculo de maximos divisores comuns, eliminando a necessidade

de fatorar o modulo m.

Teorema 2.3.31 (Lei de reciprocidade quadratica). Se m, n sao inteiros ımpares

coprimos, entao (m

n

)( n

m

)= (−1)(m−1)(n−1)/4.

O calculo de a = (−1)(m−1)(n−1)/4 tambem pode ser realizado sem exponenciacoes

modulares: if (m & n & 2) a = 1; else a = -1;.

O algoritmo a seguir mostra como e possıvel usar a lei de reciprocidade quadratica

para computacao eficiente do sımbolo de Jacobi.

Algoritmo 2.3.5. Dado um inteiro positivo ımpar m e um inteiro qualquer a, o algoritmo

retorna o sımbolo de Jacobi ( am

). O vetor tab e o vetor descrito acima para calculo eficiente

de (−1)(m2−1)/8.

1. [Lacos de reducao]

a = a (mod m);

t = 1;

while (a 6= 0) {while (a e par) {

a = a/2;

t = t · tab[a&7];

Page 45: Demonstra¸c˜oes Distribu´ıdas de Car´ater Primo em Larga ... fileUniversidade Estadual de Londrina Centro de Tecnologia e Urbanismo Departamento de Engenharia El´etrica D´ecio

24

}(a, m) = (m, a);

if (a & m & 2)

t = −t;

a = a (mod m);

}

2. [Conclusao]

if (m == 1)

return t;

else

return 0;

Pela similaridade com o Algoritmo de Euclides 2.3.1, e possıvel concluir que o tempo

de execucao do algoritmo e O(log2 m

), assumindo que a < m.

A discussao ate agora permite responder a questao da existencia de raızes quadradas

modulo primos, mas na pratica tambem e necessario calcula-las. O algoritmo a seguir,

devido a M. Cipolla, e simples de programar e razoavelmente eficiente.

Algoritmo 2.3.6. Dado um primo p e um inteiro a tal que (ap) = 1, este algoritmo

retorna uma solucao x de x2 ≡ a (mod p).

1. [Encontrar um certo resıduo nao-quadratico]

Encontrar um inteiro aleatorio t ∈ [0, p− 1] tal que ( t2−ap

) = −1;

2. [Encontrar uma raız quadrada em Fp2 = Fp(√

t2 − a)]

x = (t +√

t2 − a)(p+1)/2;

return x;

Seu tempo de execucao e O(log3 p

).

Embora o algoritmo retorne apenas uma raiz quadrada (de duas possıveis nesta si-

tuacao), a obtencao da outra e direta, uma vez que se x2 ≡ a (mod p), entao (−x)2 ≡ a

(mod p), e assim −x e a outra raiz quadrada de a modulo p.

Outro detalhe e que o algoritmo utiliza a aritmetica de Fp2 , de modo que um exemplo

do funcionamento desta aritmetica pode ser util. A aritmetica nesse corpo e semelhante a

aritmetica complexa; esta poderia ser interpretada como a aritmetica de Fp(√−1), quando

Page 46: Demonstra¸c˜oes Distribu´ıdas de Car´ater Primo em Larga ... fileUniversidade Estadual de Londrina Centro de Tecnologia e Urbanismo Departamento de Engenharia El´etrica D´ecio

25

isto fizer sentido (ou seja, quando (−1p

) = −1). No caso do algoritmo, faz-se ω =√

t2 − a,

de modo que ω2 = t2− a e um elemento do corpo-base Fp. Mais explicitamente, define-se

o corpo Fp2 como

Fp2 = Fp(ω) = {x + ωy : x, y ∈ Fp},

e a aritmetica pode ser confinada a esse conjunto pela substituicao ω = t2 − a, como se

segue:

(x + ωy) + (u + ωv) = (x + u) + ω(y + v),

(x + ωy)(u + ωv) = xu + ω(xv + yu) + ω2yv

= (xu + yv(t2 − a)) + ω(xv + yu).

Uma interpretacao em termos da aritmetica de polinomios e mais util quando o grau de

extensao do corpo e superior a 2. No caso do algoritmo, o polinomio e f(ω) = ω2−(t2−a),

e e possıvel verificar a equivalencia da aritmetica de x + ωy e a relacao ω2 = t2 − a, com

a aritmetica de polinomios modulo f(ω).

Resta a questao de como calcular raızes quadradas modulo n, um inteiro composto.

Nesse caso, e possıvel observar que se n = pe11 · · · pek

k , entao as congruencias simultaneas

x2 ≡ a (mod pe11 ), . . . , x2 ≡ a (mod pek

k ) implicam x2 ≡ a (mod n) pelo Teorema Chines

do Resto 2.3.13. Supondo que todos os expoentes ei na fatoracao de n sejam 1, a solucao de

cada uma das congruencias pode ser feita pelo Algoritmo 2.3.6, obtendo duas solucoes x e

−x em cada caso, e depois e possıvel aplicar um algoritmo de reconstrucao de congruencias

simultaneas (por exemplo, utilizando a relacao dada no Teorema 2.3.13) e obter as 2k

solucoes possıveis modulo n.

Page 47: Demonstra¸c˜oes Distribu´ıdas de Car´ater Primo em Larga ... fileUniversidade Estadual de Londrina Centro de Tecnologia e Urbanismo Departamento de Engenharia El´etrica D´ecio

26

3 Curvas Elıpticas

As curvas elıpticas vem se estabelecendo como ferramentas promissoras para a teo-

ria dos numeros e criptografia. Nas ultimas duas decadas, diversos algoritmos tem sido

propostos empregando a aritmetica de curvas elıpticas, geralmente apresentando diver-

sas vantagens sobre outros algoritmos conhecidos. Destacam-se o algoritmo ECPP para

demonstracoes de carater primo, o algoritmo ECM para fatoracao de inteiros, e criptos-

sistemas baseados em curvas elıpticas, como o ECDSA, ECDH e outros.

Este capıtulo consiste de uma introducao ao grupo de pontos de uma curva elıptica,

que representa o uso das curvas elıpticas no contexto da teoria computacional do numeros.

Inicialmente introduz-se as curvas elıpticas sob um ponto de vista geometrico. Em seguida,

discute-se o seu grupo de pontos e teoremas fundamentais a respeito do mesmo. Por fim,

alguns algoritmos simples para a aritmetica deste grupo sao expostos.

3.1 Aspectos geometricos

Uma curva elıptica e uma curva cubica sobre a qual exige-se a condicao extra de nao-

singularidade: as derivadas parciais da equacao da curva nao podem ser simultaneamente

nulas em nenhum ponto da curva. Se esta condicao for satisfeita, e ademais, a curva for

considerada sobre um corpo cuja caracterıstica nao seja 2 nem 3, e possıvel simplificar a

equacao geral de um polinomio de grau 3 para a forma

y2 = x3 + ax + b, (3.1)

a chamada parametrizacao de Weierstrass para uma curva elıptica (2). A curva satisfaz

a condicao de nao-singularidade se e somente se 4a3 +27b2 6= 0, onde este valor e o discri-

minante da curva (3.1). Esta parametrizacao nao e valida para corpos de caracterıstica

2 ou 3, devendo ser substituıda por uma parametrizacao mais complexa (com mais ter-

mos). Como o trabalho nao lida com a aritmetica de corpos com essas caracterısticas, as

Page 48: Demonstra¸c˜oes Distribu´ıdas de Car´ater Primo em Larga ... fileUniversidade Estadual de Londrina Centro de Tecnologia e Urbanismo Departamento de Engenharia El´etrica D´ecio

27

Figura 3.1: A curva elıptica afim y2 = x3 − 3x + 3.

parametrizacoes para estes casos nao serao consideradas.

Um grafico da curva elıptica y2 = x3 − 3x + 3 sobre os numeros reais e mostrada na

Figura 3.1.

Diz-se que uma curva elıptica em 2 variaveis, como considerada ate agora, esta na

sua forma afim. Uma forma equivalente, porem mais util em certas situacoes, e a forma

projetiva, onde a curva e dada em funcao de 3 variaveis. A parametrizacao de Weierstrass

para a curva nesta forma e dada por

y2z = x3 + axz2 + bz3. (3.2)

Certas solucoes projetivas da curva estao relacionadas entre si. Se (x, y, z) e uma solucao

de (3.2), entao e facil ver que (tx, ty, tz) tambem sera uma solucao, caso t 6= 0. Faz sentido

entao falar da classe de equivalencia de solucoes [x, y, z], que representa todas as solucoes

em que as coordenadas sao multiplicadas por um escalar nao-nulo.

As solucoes afins e projetivas tambem estao relacionadas entre si. Se (x, y) e uma

solucao afim de (3.1), entao [x, y, 1] e uma solucao projetiva de (3.2); e de forma recıproca,

se [x, y, z] e uma solucao projetiva de (3.2), entao (x/z, y/z) e uma solucao afim de (3.1).

A forma projetiva (3.2) tambem permite a definicao de uma solucao especial da curva,

o ponto O = [0, 1, 0], que e chamado ponto no infinito. Esta solucao sera crucial nas

definicoes da Secao 3.2.

Embora as parametrizacoes de Weierstrass, para o caso afim e projetivo, sejam am-

Page 49: Demonstra¸c˜oes Distribu´ıdas de Car´ater Primo em Larga ... fileUniversidade Estadual de Londrina Centro de Tecnologia e Urbanismo Departamento de Engenharia El´etrica D´ecio

28

plamente utilizadas na literatura da teoria de curvas elıpticas, as parametrizacoes a seguir

podem ser computacionalmente mais convenientes em certas situacoes. Na forma afim,

temos

y2 = x3 + Cx2 + Ax + B, (3.3)

e na forma projetiva,

y2z = x3 + Cx2z + Axz2 + Bz3. (3.4)

O discriminante da equacao nessa forma e 4A3 + 27B2 − 18ABC − A2C2 + 4BC3, e

como na parametrizacao de Weierstrass, deve ser diferente de zero para que a curva seja

nao-singular.

A definicao a seguir compila os resultados desta secao.

Definicao 3.1.1. Uma curva cubica nao-singular com coeficientes provindos de um corpo

F, e que possua pelo menos um ponto com coordenadas nao simultaneamente nulas em

F, e dita uma curva elıptica sobre F. Se a caracterıstica de F nao e 2 ou 3, a equacao

(3.1) define curvas elıpticas sobre F, contanto que 4a3 + 27b2 6= 0. Denota-se por E(F)

o conjunto de pontos com coordenadas em F que satisfazem a equacao da curva, mais o

ponto no infinito O. Temos entao

E(F) = {(x, y) ∈ F× F : y2 = x3 + ax + b} ∪ {O}.

3.2 O grupo de pontos de uma curva elıptica

Sejam dois pontos P1 = (x1, y1) e P2 = (x2, y2) de uma curva elıptica na forma afim,

dada pela equacao (3.1). E possıvel construir um terceiro ponto P3 = (x3, y3) da curva

em funcao desses dois pontos, atraves da seguinte regra: traca-se a reta que passa por P1

e P2, que intersecciona a curva em um terceiro ponto (exceto quando a reta e vertical).

Tomando-se a reflexao desse terceiro ponto em torno do eixo x, o que e possıvel uma

vez que a curva e simetrica em relacao a esse eixo, obtem-se o ponto P3. A justificativa

para essa reflexao aparentemente arbitraria e que de outra maneira, os tres pontos seriam

colineares por definicao, o que impossibilitaria a obtencao de novos pontos a partir de

combinacoes desses tres.

A Figura 3.2 ilustra o processo descrito.

Quando P1 = P2, essa construcao falha, uma vez que existem infinitas retas que

passam por um unico ponto. Neste caso, escolhe-se a reta tangente a curva no ponto, que

Page 50: Demonstra¸c˜oes Distribu´ıdas de Car´ater Primo em Larga ... fileUniversidade Estadual de Londrina Centro de Tecnologia e Urbanismo Departamento de Engenharia El´etrica D´ecio

29

Figura 3.2: Soma de pontos em uma curva elıptica.

pode ser obtida por derivacao implıcita da equacao da curva (3.1).

Outro caso especial e aquele em que a reta resultante da construcao e vertical; o

terceiro ponto de interseccao dessa reta com a curva e definido como o ponto no infinito

O.

A regra geometrica aqui descrita pode ser interpretada como uma operacao binaria

entre dois pontos da curva, que resulta em um terceiro ponto da curva. Combinando

todas as solucoes da equacao da curva, dadas na Definicao 3.1.1, com a operacao descrita,

e possıvel mostrar que e obtido um grupo abeliano, o grupo de pontos de uma curva

elıptica. Este grupo, assim como o conjunto de pontos da curva elıptica, e denotado por

E(F)

Pelo uso de geometria analıtica, e possıvel obter expressoes para as regras geometricas

consideradas. Observa-se que essas operacoes sao validas nao somente para R, onde

foi feita a deducao, mas tambem para outros corpos. O teorema a seguir fornece essas

expressoes e afirma que E(F), em conjunto com estas expressoes, forma um grupo abeliano

(2), cuja notacao empregada ao longo desse trabalho sera aditiva.

Teorema 3.2.1. Seja E(F) uma curva elıptica definida por (3.1), sobre um corpo cuja

caracterıstica e diferente de 2 e 3, e sejam dois pontos P1 = (x1, y1) e P2 = (x2, y2)

(nao necessariamente distintos). Por fim, seja a operacao comutativa + com operacao

inversa − definida pelas seguintes propriedades:

Page 51: Demonstra¸c˜oes Distribu´ıdas de Car´ater Primo em Larga ... fileUniversidade Estadual de Londrina Centro de Tecnologia e Urbanismo Departamento de Engenharia El´etrica D´ecio

30

1. P1 + P2 = (x1, y1) + (x2, y2) = (x3, y3) = P3, em que

x3 = m2 − x1 − x2,

−y3 = m(x3 − x1) + y1,

onde o coeficiente angular m e definido como

m =

y2 − y1

x2 − x1

se x2 6= x1,

3x21 + a

2y1

se x2 = x1;

2. −P1 = (x1,−y1).

Entao o grupo (E(F), +) e um grupo abeliano com identidade O.

A interpretacao geometrica da operacao se perde quando a curva e considerada sobre

um corpo finito Fp, como os inteiros modulo p. No entanto, as expressoes do Teorema 3.2.1

ainda sao validas nesta situacao, bastando substituir a aritmetica de R pela aritmetica de

Fp; em particular, as operacoes de divisao podem ser realizadas atraves de multiplicacao

pelo inverso do divisor.

A definicao de multiplicacao de pontos por inteiros, que corresponde a operacao de

exponenciacao em grupos multiplicativos, e direta:

nP = P + P + · · ·+ P︸ ︷︷ ︸n vezes

.

Define-se tambem 0P = O e (−n)P = −(nP ). Devido a similaridade com a exponen-

ciacao em grupos multiplicativos, os mesmos algoritmos podem ser empregados, embora

nao necessariamente os melhores algoritmos para exponenciacao em (Z/nZ)∗ sejam os

melhores para multiplicacao por inteiro em E(Fp), devido ao desempenho relativo das

operacoes de somar dois pontos distintos e de dobrar um ponto.

O seguinte teorema elucida a estrutura algebrica do grupo de pontos de uma curva

elıptica (2).

Teorema 3.2.2 (Cassels). O grupo E(Fpk) e cıclico ou isomorfico a um produto de dois

grupos cıclicos

E ∼= Z/d1Z× Z/d2Z,

em que d1 | d2 e d1 | pk − 1.

Page 52: Demonstra¸c˜oes Distribu´ıdas de Car´ater Primo em Larga ... fileUniversidade Estadual de Londrina Centro de Tecnologia e Urbanismo Departamento de Engenharia El´etrica D´ecio

31

Grupos cıclicos ja foram estudados no Capıtulo 2. A segunda possibilidade do teorema,

que o grupo seja um produto de dois outros grupos cıclicos, indica que a estrutura desse

grupo e similar a do grupo (Z/nZ)∗, em que n = pq e produto de dois primos (11).

A respeito de |E(Fpk)|, a ordem do grupo de pontos de uma curva elıptica sobre um

corpo finito, e conhecido o seguinte resultado (2).

Teorema 3.2.3 (Hasse). A ordem do grupo E(Fpk) satisfaz a desigualdade

pk + 1− 2√

pk < |E(Fpk)| < pk + 1 + 2√

pk.

Uma interpretacao muito util do teorema e que log |E(Fpk)| ≈ log(pk), ou seja, a

ordem do grupo de pontos de uma curva pode ser representada por essencialmente o

mesmo numero de bits que o numero de elementos do corpo sobre o qual ela e definida.

Esse dado e bastante util na analise de algoritmos envolvendo curvas elıpticas. No entanto,

isso nao significa que os dois valores estejam muito proximos, a ponto de permitir que

todos os valores possıveis da ordem do grupo sejam testados: isso levaria a um algoritmo

exponencial.

3.3 Algoritmos para aritmetica elıptica

Nesta secao, serao considerados algoritmos basicos para aritmetica elıptica, sem gran-

des preocupacoes quanto a eficiencia dos mesmos; algoritmos eficientes sao abordados por

exemplo em (2).

O primeiro algoritmo soluciona o problema de encontrar um ponto na curva.

Algoritmo 3.3.1. Seja uma curva elıptica E(Fp) com p > 3 um primo e equacao

y2 = x3 + ax + b. Este algoritmo retorna um ponto (x, y) de E.

1. [Laco]

Sorteie um valor aleatorio 0 ≤ x < p;

t = x3 + ax + b mod p;

if (( tp) == −1)

goto [Laco];

return (x,±√

t mod p); // Raiz quadrada modular.

O funcionamento do algoritmo deve ser claro: para que x0 seja uma coordenada x

valida da curva y2 = x3+ax+b, e preciso que x30+ax0+b seja um resıduo quadratico, para

Page 53: Demonstra¸c˜oes Distribu´ıdas de Car´ater Primo em Larga ... fileUniversidade Estadual de Londrina Centro de Tecnologia e Urbanismo Departamento de Engenharia El´etrica D´ecio

32

permitir a extracao da raiz quadrada desse valor. Quando um ponto (x, y) e encontrado,

sabe-se que, pela simetria da curva, (x,−y) tambem e um ponto valido, e por isso as duas

solucoes sao retornadas.

O numero de execucoes do laco no algoritmo deve ser pequeno: admitindo que x3 +

ax + b seja um valor aleatorio (dado que x e aleatorio), e como metade dos elementos

de (Z/pZ)∗ sao resıduos quadraticos, fica claro que em 50% dos casos um dado valor de

x3 + ax + b sera resıduo quadratico.

A seguir, e preciso realizar aritmetica com os pontos da curva elıptica. A escolha de

um sistema de coordenadas e crucial. Serao consideradas as duas opcoes ja discutidas

anteriormente, coordenadas afins e projetivas.

3.3.1 Coordenadas afins

Inicialmente e apresentado o algoritmo para aritmetica em coordenadas afins. Devido

a impossibilidade de representar o ponto no infinito O em coordenadas afins, ha duas

opcoes: e possıvel utilizar uma variavel booleana cujo valor indica se o ponto atual e O,

ou adicionar uma terceira coordenada z a representacao, como em coordenadas projetivas,

porem z so pode assumir os valores 0 (quando o ponto em questao e O) ou 1.

Algoritmo 3.3.2. Seja uma curva elıptica E(F), em que a caracterıstica do corpo Fe diferente de 2 e 3, e dada pela equacao afim y2 = x3 + ax + b. Pontos P da curva

sao representados como (x, y, z), onde z = 1 sempre, exceto quando P = O, o ponto

no infinito, e nesse caso P = (0, 1, 0) ou P = (0,−1, 0). A funcao a seguir computa a

operacao fundamental de adicao elıptica.

1. [Funcao de adicao elıptica]

soma(P1 = (x1, y1), P2 = (x2, y2))

{if (z1 == 0)

return P2; // P1 = O ⇒ O + P2 = P2

if (z2 == 0)

return P1; // P2 = O ⇒ P1 + O = P1

if (x1 == x2) // P1 = ±P2?

if (y1 + y2 == 0) // P1 = −P2

return (0, 1, 0);

else // P1 = P2

Page 54: Demonstra¸c˜oes Distribu´ıdas de Car´ater Primo em Larga ... fileUniversidade Estadual de Londrina Centro de Tecnologia e Urbanismo Departamento de Engenharia El´etrica D´ecio

33

m = (3x21 + a)(2y1)

−1;

else // P1 6= ±P2

m = (y2 − y1)(x2 − x1)−1;

x3 = m2 − x1 − x2;

return (x3, m(x1 − x3)− y1, 1);

}

E desejavel fornecer tambem as seguintes operacoes extras:

2. [Funcao de negacao elıptica]

neg(P ) { return (x,−y, z); }

3. [Funcao de adicao elıptica de um ponto a si mesmo]

dobro(P ) { return soma(P ,P ); }

4. [Funcao de subtracao elıptica]

sub(P1, P2) { return soma(P1,neg(P2)); }

Deve-se observar que as multiplicacoes por constantes pequenas, como 2 e 3, devem

ser efetuadas por meio de somas e nao multiplicacoes.

Os dois primeiros testes do algoritmo verificam se um dos pontos nao e o ponto no

infinito, e retornam o outro ponto em caso afirmativo (uma vez que O e a identidade do

grupo, e portanto P + O = P ). O terceiro teste verifica se as coordenadas x dos pontos

sao distintas ou nao (geralmente indicando se os pontos em si sao distintos ou nao), e

calcula o coeficiente angular m de acordo com cada caso. Observe que se P2 = −P1, entao

a coordenada x destes dois pontos e a mesma, embora os pontos sejam distintos; o teste

aninhado dentro do terceiro teste reconhece esta condicao e retorna O como resultado,

uma vez que P − P = O.

A contagem de operacoes de corpo realizadas a cada adicao elıptica e crucial para

decidir qual sistema de coordenadas a implementar. Ha uma certa desvantagem para

as coordenadas afins, gracas as operacoes de inversao modular envolvidas no calculo do

coeficiente angular m, que sao consideravelmente mais custosas que as operacoes basicas

de adicao, subtracao e multiplicacao modular.

3.3.2 Coordenadas projetivas

As coordenadas projetivas eliminam a necessidade de inversoes modulares, as custas

de um maior numero de operacoes basicas. Mesmo assim, o desempenho das coordenadas

Page 55: Demonstra¸c˜oes Distribu´ıdas de Car´ater Primo em Larga ... fileUniversidade Estadual de Londrina Centro de Tecnologia e Urbanismo Departamento de Engenharia El´etrica D´ecio

34

projetivas e melhor, em geral. As expressoes a seguir sao manipulacoes das expressoes para

aritmetica elıptica projetiva, em que o numero de operacoes de corpo (aritmetica modular)

e minimizado. Para a computacao de P3 = P1 + P2, em que P1 6= P2 e Pi = [xi, yi, zi],

temos

t1 = x2z1 − x1z2,

t2 = x2z1 + x1z2,

t3 = y2z1 − y1z2,

t4 = y2z1 + y1z2,

t5 = z1z2,

x3 = t1(t23t5 − t21t2

),

y3 =1

2

(t3(3t21t2 − t23t5

)− t31t4

),

z3 = t31t5.

A multiplicacao por 1/2 para o calculo de y3 deve ser realizada atraves de um des-

locamento dos bits do operando para a direita (quando o operando e par), ou soma do

operando a p seguida de deslocamento (quando o operando e ımpar), e nao multiplicacao

pelo inverso modular de 2.

Para a computacao de P ′ = 2P , em que P ′ = [x′, y′, z′] e P = [x, y, z], temos as

expressoes

t1 = 2xy,

t2 = 3x2 + az2,

t3 = 2yz,

x′ = t3(t22 − 2t1t2

),

y′ = t2(3t1t3 − t22

)− 2y2t23,

z′ = t33.

O algoritmo a seguir explicita o uso destas formulas, e evita mais algumas operacoes

pelo armazenamento de temporarios.

Algoritmo 3.3.3. Seja uma curva elıptica E(F), em que a caracterıstica do corpo F e

diferente de 2 e 3, e dada pela equacao projetiva y2z = x3 +axz2 +bz3. Pontos P da curva

sao representados como (x, y, z), onde [0, 1, 0] e [0,−1, 0] indicam o ponto no infinito O.

A funcao a seguir computa a operacao de adicao elıptica de um ponto a si mesmo.

Page 56: Demonstra¸c˜oes Distribu´ıdas de Car´ater Primo em Larga ... fileUniversidade Estadual de Londrina Centro de Tecnologia e Urbanismo Departamento de Engenharia El´etrica D´ecio

35

1. [Funcao de adicao elıptica de um ponto a si mesmo]

dobro(P = (x, y, z))

{if (y == 0 ou z == 0)

return [0, 1, 0] // P = O ⇒ 2P = O

t1 = 2xy;

t2 = 3x2 + az2;

t2q = t22;

t3 = 2yz;

t3q = t23;

t1t3 = t1 · t3;dt1t3 = t1t3 + t1t3;

t2qmdt1t3 = t2q− dt1t3;

x′ = t3 · t2qmdt1t3;

y′ = t2(dt1t3− t2qmdt1t3)− 2y2 · t2q;

z′ = t3q · t3;return [x′, y′, z′];

}

A funcao a seguir computa a operacao de adicao elıptica de pontos distintos.

2. [Funcao de adicao elıptica]

soma(P1 = (x1, y1, z1), P2 = (x2, y2, z2))

{if (z1 == 0)

return P2; // P1 = O ⇒ O + P2 = P2

if (z2 == 0)

return P1; // P2 = O ⇒ P1 + O = P1

x2z1 = x2 · z1;

x1z2 = x1 · z2;

t1 = x2z1− x1z2;

if (t1 == 0) // x1/z1 = x2/z2 ⇒ x1z2 − x2z1 = 0

{y2z1 = y2 · z1;

y1z2 = y1 · z2;

t3 = y2z1− y1z2;

if (t3 == 0) // y1/z1 = y2/z2 ⇒ y1z2 − y2z1 = 0

Page 57: Demonstra¸c˜oes Distribu´ıdas de Car´ater Primo em Larga ... fileUniversidade Estadual de Londrina Centro de Tecnologia e Urbanismo Departamento de Engenharia El´etrica D´ecio

36

return dobro(P1); // P1 = P2 ⇒ P3 = 2P1

else

return [0, 1, 0] ; // P1 = −P2 ⇒ P3 = P1 + P2 = O

}else

{y2z1 = y2z1;

y1z2 = y1z2;

t3 = y2z1 - y1z2;

t3q = t23;

}t1q = t21;

t1c = t1q · t1;t2 = x2z1 + x1z2;

t4 = y2z1 + y1z2;

t5 = z1z2;

t1qt2 = t1q · t2;t3qt5 = t3q · t5;x3 = α(t3qt5− t1qt2);

y3 = 12(t3(3t1qt2− t3qt5)− t1qt4);

z3 = t1q · t5;return [x3, y3, z3];

}

E desejavel fornecer tambem as seguintes operacoes extras:

3. [Funcao de negacao elıptica]

neg(P ) { return [x,−y, z]; }

4. [Funcao de subtracao elıptica]

sub(P1, P2) { return add(P1,neg(P2)); }

Levando em conta os comentarios no corpo do codigo e as observacoes sobre o algo-

ritmo anterior, a operacao deste algoritmo deve ser clara.

Page 58: Demonstra¸c˜oes Distribu´ıdas de Car´ater Primo em Larga ... fileUniversidade Estadual de Londrina Centro de Tecnologia e Urbanismo Departamento de Engenharia El´etrica D´ecio

37

4 O Algoritmo ECPP

Neste capıtulo, serao estudados os algoritmos existentes relacionados ao problema

de demonstracao de carater primo de inteiros. Dentre estes, sera argumentado que o

algoritmo ECPP e o mais apropriado para uma implementacao distribuıda. Apesar disso,

uma classe de algoritmos, os testes de carater pseudoprimo, sao de grande importancia

como subrotinas do ECPP, e serao expostos em maiores detalhes.

Inicia-se o capıtulo com uma discussao dos principais testes de carater pseudoprimo,

continuando com uma comparacao entre os algoritmos mais importantes para demons-

tracao de carater primo. Em seguida, discute-se em mais detalhes a versao de Goldwasser

e Kilian do algoritmo ECPP (13), que foi a primeira versao deste algoritmo a ser introdu-

zida. O proximo topico e a teoria de multiplicacao complexa, que proporciona um metodo

para evitar o passo mais ineficiente do algoritmo de Goldwasser e Kilian, a determinacao

da ordem do grupo de pontos de uma curva elıptica. A secao seguinte mostra como Atkin

e Morain empregaram a teoria de multiplicacao complexa para forjar uma nova versao

do ECPP (14), muito mais eficiente que a versao de Goldwasser e Kilian. Finalmente,

conclui-se o capıtulo com uma exposicao da principal melhoria ao teste original de Atkin

e Morain, o chamado fastECPP de J. Shallit.

4.1 Testes de carater pseudoprimo

Certas aplicacoes de numeros primos podem tolerar o uso de numeros cujo carater

primo nao esteja demonstrado e certificado, bastando que algum metodo afirme que o

numero e primo com alta probabilidade (embora seja possıvel que um composto seja

declarado primo). Por exemplo, e possıvel que a aplicacao em questao retorne resultados

claramente errados e facilmente detectaveis quando um numero composto e empregado.

Outra situacao e quando os numeros primos exigidos sao de tamanho tao grande que e

inviavel obter uma demonstracao de carater primo dos mesmos.

Page 59: Demonstra¸c˜oes Distribu´ıdas de Car´ater Primo em Larga ... fileUniversidade Estadual de Londrina Centro de Tecnologia e Urbanismo Departamento de Engenharia El´etrica D´ecio

38

Nestas situacoes, uma classe de algoritmos pode mostrar-se muito util, os testes de

carater pseudoprimo. Estes testes sao caracterizados por reconhecer (corretamente) todos

os primos, mas incorretamente reconhecer alguns compostos como primos. Isso significa

que um teste que declara um inteiro como composto pode ser usado como prova do carater

composto deste inteiro, mas caso o teste declare que o inteiro e primo, sabe-se apenas que

ha uma probabilidade 1 − ε deste inteiro ser primo, e ε do inteiro ser composto, com

0 < ε < 1. A eficiencia de um teste de carater primo e medida nao apenas pelo seu tempo

de execucao, mas pela probabilidade ε de um inteiro composto ser declarado primo: quanto

menor o valor de ε, mais util e o teste.

No contexto dos testes de carater pseudoprimo, um inteiro que apresente a propriedade

de ser composto, porem declarado primo por um dado teste, e dito um pseudoprimo com

relacao aquele teste. Um inteiro declarado primo pelo teste e dito um primo provavel.

Dentre os testes mais conhecidos na literatura, foram escolhidos dois para serem im-

plementados em nosso sistema, o chamado teste forte e o teste de Frobenius, este ultimo

devido a J. Grantham. Para cada um dos casos, argumenta-se o motivo de sua escolha

para implementacao.

4.1.1 O teste de Fermat e o teste forte

O primeiro teste de carater pseudoprimo inventado utiliza a recıproca do Pequeno

Teorema de Fermat 2.3.20: se an−1 ≡ 1 (mod n) para algum a 6≡ ±1 (mod n) entao n e

primo com alta probabilidade. O algoritmo e explicitado a seguir.

Algoritmo 4.1.1. E fornecido ao algoritmo um inteiro n > 3 e um inteiro a, 2 ≤ a ≤ n−2,

e o algoritmo retorna uma das duas afirmacoes ‘n e primo provavel de Fermat para a base

a’ ou ‘n e composto’.

1. [Exponenciacao modular]

b = an−1 mod n;

2. [Retornar decisao]

if (b == 1)

return ‘n e primo provavel de Fermat para a base a’;

else

return ‘n e composto’;

Page 60: Demonstra¸c˜oes Distribu´ıdas de Car´ater Primo em Larga ... fileUniversidade Estadual de Londrina Centro de Tecnologia e Urbanismo Departamento de Engenharia El´etrica D´ecio

39

O tempo de execucao desse teste e O(log nM(n)), onde M(n) e o tempo de execucao

de uma multiplicacao de inteiros modulo n. Assumindo o uso de algoritmos eficientes,

pode-se adotar M(n) = O(log n log log n), de modo que o tempo de execucao do teste e

O(log2 n log log n) = O((log n)2+ε).

Quanto aos pseudoprimos de Fermat para uma dada base a, sabe-se que sao raros em

relacao aos primos, no sentido que o numero de pseudoprimos inferiores a x e o(π(x)),

mas tambem que ha uma quantidade infinita dos mesmos (2).

Poderia-se esperar entao que, aplicando o teste de Fermat para uma quantidade sufi-

ciente de diferentes bases a, seria possıvel certificar o carater primo de um inteiro. Infe-

lizmente, existem inteiros que sao pseudoprimos a todas as bases a, os chamados numeros

de Carmichael. A respeito destes numeros, conhece-se o seguinte teorema de Alford,

Granville e Pomerance.

Teorema 4.1.1 (Alford, Granville, Pomerance). Existem infinitos numeros de Car-

michael. Em particular, para valores suficientemente grandes de x, a quantidade C(x) de

numeros de Carmichael inferiores a x satisfaz a desigualdade C(x) > x2/7.

De certa forma, a existencia dos numeros de Carmichael e decepcionante: seria de-

sejavel que todos os compostos fossem reconhecidos como tais pelo teste de Fermat, para

pelo menos alguma base a. Felizmente, uma pequena modificacao do teste de Fermat

garante essa propriedade. O chamado teste forte e baseado no teorema a seguir (2).

Teorema 4.1.2. Suponha que n > 2 e primo e n − 1 = 2st, onde t e ımpar. Se a nao

e divisıvel por n, entao at ≡ 1 (mod n) ou a2it ≡ −1 (mod n) para algum valor de i no

intervalo [0, s− 1].

Um algoritmo que emprega este criterio para teste de carater pseudoprimo e dado a

seguir.

Algoritmo 4.1.2. Seja n > 3 um inteiro ımpar, representado como n = 1 + 2st com t

ımpar. Tambem e fornecido ao algoritmo um inteiro a, 1 < a < n− 1. E retornada uma

das duas afirmacoes ‘n e um primo provavel forte para a base a’ ou ‘n e composto’.

1. [Parte ımpar de n− 1]

b = at mod n;

if (b == 1 ou b == n− 1)

return ‘n e um primo provavel forte para a base a’;

Page 61: Demonstra¸c˜oes Distribu´ıdas de Car´ater Primo em Larga ... fileUniversidade Estadual de Londrina Centro de Tecnologia e Urbanismo Departamento de Engenharia El´etrica D´ecio

40

2. [Potencias de 2 de n− 1]

for (0 < j < s) {b = b2 mod n;

if (b == n− 1)

return ‘n e um primo provavel forte para a base a’;

}return ‘n e composto’;

Observa-se que um primo provavel forte para a base a e um primo provavel de Fermat

para a base a, mas a recıproca nao necessariamente e verdadeira. Isso significa que o teste

de carater pseudoprimo forte potencialmente reconhece mais compostos que o teste de

Fermat. Aliado a sua contagem de operacoes virtualmente igual a do teste de Fermat

(assintoticamente, seus tempos de execucao sao iguais), e seguro dizer que o teste forte e

preferıvel ao teste de Fermat.

Quanto a distribuicao dos pseudoprimos fortes, conhece-se o seguinte resultado (2).

Teorema 4.1.3. Seja S(n) o conjunto de bases para as quais n e um pseudoprimo forte.

Se n > 9 e um inteiro composto ımpar, temos que |S(n)| ≤ φ(n)/4.

E possıvel interpretar este teorema da seguinte maneira: escolhendo uma base a ao

acaso para o teste, ha uma probabilidade inferior a 1/4 que n seja pseudoprimo forte para a

base a. Pela escolha de b bases diferentes, e assumindo independencia de eventos, espera-

se que a probabilidade de n ser pseudoprimo a todas essas bases e (1/4)b, podendo-se

tornar essa probabilidade tao pequena quanto desejavel. Essa interpretacao e meramente

heurıstica, e escolher b de modo que (1/4)b < 1/n nao equivale a uma demonstracao do

carater primo de n.

Na implementacao de nosso sistema, o carater pseudoprimo de um inteiro e testado

apenas em relacao a base 2. Esta base foi escolhida por permitir simplificacoes nos algo-

ritmos de exponenciacao que exigem multiplicacoes pela base, como o Algoritmo 2.3.4: a

multiplicacao pode ser substituıda por uma simples adicao. Esta aplicacao do algoritmo

permite eliminar a grande maioria dos compostos, mas quando um inteiro e declarado

primo provavel, ele e submetido a um teste mais rigoroso, o teste de Frobenius descrito a

seguir.

Page 62: Demonstra¸c˜oes Distribu´ıdas de Car´ater Primo em Larga ... fileUniversidade Estadual de Londrina Centro de Tecnologia e Urbanismo Departamento de Engenharia El´etrica D´ecio

41

4.1.2 O teste de Frobenius

Este teste foi proposto por J. Grantham (15), mas antes de descrever o teste, e preciso

abordar alguns conceitos necessarios ao teste que nao foram descritos anteriormente. Em

particular, o teste de Frobenius e uma extensao do teste de Lucas descrito a seguir, e

como tal, e preciso estudar a teoria por tras deste teste.

A sequencia de Fibonacci cujo conjunto imagem e dado por (1, 1, 2, 3, 5, 8, 13,

. . . ) satisfaz a recorrencia uj = uj−1 + uj−2. Usando conceitos de matematica discreta, e

possıvel demonstrar que a sequencia de Fibonacci possui polinomio de recorrencia x2 −x− 1. Um caso mais geral das sequencias de Fibonacci sao as sequencias de Lucas, cujo

polinomio de recorrencia e f(x) = x2 − ax + b, desde que ∆ = a2 − 4b nao seja um

quadrado perfeito. Define-se

Uj = Uj(a, b) =xj − (a− x)j

x− (a− x)(mod f(x)), (4.1)

Vj = Vj(a, b) = xj + (a− x)j (mod f(x)), (4.2)

onde a operacao de modulo indica o resto da divisao por f(x), onde os coeficientes dos

polinomios sao inteiros. As sequencias (Uj) e (Vj) satisfazem as recorrencias

Uj = aUj−1 − bUj−2,

Vj = aVj−1 − bVj−2,

cujo polinomio de recorrencia, em ambos os casos, e x2−ax+b. Da definicao das sequencias

e possıvel obter os valores iniciais U0 = 0, U1 = 1, V0 = 2, V1 = a.

O teste de Lucas e definido a seguir (2).

Teorema 4.1.4. Sejam a, b, ∆ definidos como acima, e sejam as sequencias (Uj) e (Vj)

definidas conforme (4.1). Se p e primo e mdc(p, 2b∆) = 1, entao

Up−(∆p ) ≡ 0 (mod p).

Define-se tambem o teste de Frobenius (2).

Definicao 4.1.1. Sejam a, b inteiros tais que ∆ = a2−4b nao seja um quadrado perfeito.

Diz-se que um inteiro composto n coprimo a 2b∆ e um pseudoprimo de Frobenius com

Page 63: Demonstra¸c˜oes Distribu´ıdas de Car´ater Primo em Larga ... fileUniversidade Estadual de Londrina Centro de Tecnologia e Urbanismo Departamento de Engenharia El´etrica D´ecio

42

relacao a f(x) = x2 − ax + b se

xn ≡

a− x (mod (f(x), n)) se (∆n) = −1,

x (mod (f(x), n)) se (∆n) = 1.

Pode-se implementar o teste de Frobenius atraves de sequencias de Lucas, como afirma

o teorema a seguir.

Teorema 4.1.5. Sejam a, b inteiros tais que ∆ = a2 − 4b nao seja um quadrado perfeito,

e n um inteiro composto coprimo a 2b∆. Entao n e um pseudoprimo de Frobenius com

relacao a f(x) = x2 − ax + b se e somente se

Un−(∆n ) ≡ 0 (mod n) e Vn−(∆

n ) ≡

2b se (∆n) = −1,

2 se (∆n) = 1.

Para implementar esse teste de maneira eficiente, primeiramente e preciso considerar

como implementar os calculos de sequencias de Lucas de maneira eficiente. Sejam as

sequencias (Uj) e (Vj) definidas em (4.1). O elemento Um da sequencia pode ser definido

em termos dos elementos Vm e Vm+1 pela identidade

Um = ∆−1(2Vm+1 − aVm).

Isso significa que nao e preciso calcular as duas sequencias; basta calcular a sequencia

(Vj). Duas identidades importantes relacionadas a esta sequencia sao

V2j = V 2j − 2,

V2j+1 = VjVj+1 − a,

desde que b = 1. Quando apenas o valor de (Vj) modulo n e desejado, e possıvel generalizar

estas identidades para o caso b 6= 1 (2). Define-se A = a2b−1 − 2 (mod n). Entao

V2j(A, 1) ≡ V 2j − 2 (mod n),

V2j+1(A, 1) ≡ VjVj+1 − A (mod n),

e e possıvel recuperar V2m(a, b) a partir de Vm(A, 1) pela identidade

V2m(a, b) ≡ bmVm(A, 1) (mod n).

Page 64: Demonstra¸c˜oes Distribu´ıdas de Car´ater Primo em Larga ... fileUniversidade Estadual de Londrina Centro de Tecnologia e Urbanismo Departamento de Engenharia El´etrica D´ecio

43

Dados os valores de Vj, Vj+1 (mod n), e possıvel empregar estas identidades para calcular

um dos pares V2j, V2j+1 (mod n) ou V2j+1, V2j+2 (mod n). Partindo de V0, V1 (mod n)

e fazendo as escolhas apropriadas ao longo do caminho, e possıvel atingir qualquer par

Vm, Vm+1 (mod n) usando uma construcao semelhante a um algoritmo de exponenciacao,

que nesse caso e conhecido como uma cadeia binaria de Lucas.

Algoritmo 4.1.3. Seja um inteiro m cuja representacao binaria e fornecida atraves de

um vetor m[0 . . . B − 1], em que m[B − 1] e o bit mais significativo. O algoritmo a seguir

calcula os elementos Vm, Vm+1 (mod n) da sequencia de Lucas (Vj), cujo polinomio de

recorrencia e x2 − ax + b e A e definido como a2b−1 (mod n), utilizando uma cadeia

binaria de Lucas.

1. [Inicializacao]

(u, v) = (V0, V1);

2. [Laco]

for (B > j ≥ 0)

if (m[j] == 1)

(u, v) = (uv − A, v2 − 2) mod n;

else

(u, v) = (u2 − 2, uv − A) mod n;

return (u, v);

O resultado a seguir completa o arsenal necessario para implementacao do teste de

Frobenius (2).

Teorema 4.1.6. Suponha que a, b, ∆, A sao definidos de acordo com o texto acima, e

que n e um inteiro composto coprimo a 2ab∆. Entao n e um pseudoprimo de Lucas em

relacao a x2 − ax + b se e somente se

AV 12(n−(∆

n )) ≡ 2V 12(n−(∆

n ))+1 (mod n).

Ademais, n e um pseudoprimo de Frobenius em relacao a x2 − ax + b se e somente se a

relacao acima se verifica, assim como

b(n−1)/2V 12(n−(∆

n )) ≡ 2 (mod n).

O algoritmo para o teste de Frobenius pode ser exposto agora (2).

Page 65: Demonstra¸c˜oes Distribu´ıdas de Car´ater Primo em Larga ... fileUniversidade Estadual de Londrina Centro de Tecnologia e Urbanismo Departamento de Engenharia El´etrica D´ecio

44

Algoritmo 4.1.4. Sao fornecidos ao algoritmo inteiros n, a, b, tais que ∆ = a2− 4b nao e

um quadrado perfeito, e n > 1 e coprimo a 2ab∆. O algoritmo retorna ‘n e primo provavel

de Frobenius em relacao a x2− ax + b’ se n e primo ou um pseudoprimo de Frobenius em

relacao a x2 − ax + b. Caso contrario, o algoritmo retorna ‘n e composto’.

1. [Parametros auxiliares]

A = a2b−1 − 2 mod n;

m = (n− (∆n))/2;

2. [Cadeia de Lucas]

Calcular Vm, Vm+1 (mod n) utilizando o Algoritmo 4.1.3, utilizando (V0, V1) =

(2, A) como valores iniciais;

3. [Teste de Lucas]

if (AVm 6≡ 2Vm+1 (mod n))

return ‘n e composto’;

4. [Teste de Frobenius]

B = b(n−1)/2 mod n;

if (BVm ≡ 2 (mod n))

return ‘n e primo provavel de Frobenius em relacao a x2 − ax− b’;

else

return ‘n e composto’;

Pode-se mostrar que o tempo de execucao do algoritmo nao ultrapassa tres vezes

o tempo de execucao do teste de carater pseudoprimo forte. A respeito da eficiencia

do teste, conhece-se o seguinte resultado (2) para a versao forte do mesmo, que nao foi

implementada em nosso sistema:

Teorema 4.1.7. Seja n um inteiro composto que nao e quadrado perfeito e nem e divisıvel

por primos p < 50000. Entao n e um pseudoprimo forte de Frobenius com relacao a no

maximo 1/7710 dos polinomios x2 − ax + b, onde 1 ≤ a, b ≤ n, (a2−4bn

) = −1 e ( bn) = 1.

Planeja-se implementar a versao forte do teste como parte dos procedimentos de

otimizacao de nosso sistema.

Page 66: Demonstra¸c˜oes Distribu´ıdas de Car´ater Primo em Larga ... fileUniversidade Estadual de Londrina Centro de Tecnologia e Urbanismo Departamento de Engenharia El´etrica D´ecio

45

4.2 Testes de carater primo eficientes

Nesta secao, serao considerados testes que determinam inequivocamente o carater

primo de um inteiro, sem haver probabilidade alguma de que um composto seja declarado

primo ou vice-versa. Infelizmente, como sera visto, isso tem um custo: estes algoritmos

sao bem menos eficientes que os testes de carater pseudoprimo da secao anterior.

4.2.1 O teste n − 1 e variantes

O primeiro teste de carater primo a ser descoberto foi o chamado teste n−1. Embora

este teste nao seja exatamente eficiente, sua simplicidade, e a aplicacao de ideias seme-

lhantes no ECPP, justifica a discussao do mesmo neste trabalho. O teste e baseado no

seguinte teorema de E. Lucas.

Teorema 4.2.1. Se a, n sao inteiros com n > 1, e

an−1 ≡ 1 (mod n),

mas para todos os primos q | n− 1,

a(n−1)/q 6≡ 1 (mod n),

entao n e primo.

Infelizmente, o teste exige a fatoracao de n − 1, que em geral e um problema difıcil

(2). Nesse sentido, seria desejavel utilizar apenas fatoracoes parciais de um inteiro no

teste n − 1, por exemplo n − 1 = FR onde a fatoracao completa de F e conhecida e R

e composto sem fatores conhecidos. De fato, isso e possıvel, e o primeiro resultado nesse

sentido foi o teorema a seguir, devido a Pocklington.

Teorema 4.2.2 (Pocklington). Seja F uma fatoracao parcial de n− 1 como discutido

acima, e um inteiro, a, tal que

an−1 ≡ 1 (mod n),

e para cada primo q | F ,

mdc(a(n−1)/q − 1, n

)= 1.

Entao todos os fatores primos de n sao congruentes a 1 modulo F . Em particular, se

Page 67: Demonstra¸c˜oes Distribu´ıdas de Car´ater Primo em Larga ... fileUniversidade Estadual de Londrina Centro de Tecnologia e Urbanismo Departamento de Engenharia El´etrica D´ecio

46

F ≥√

n, entao n e primo.

Outros teoremas nesse sentido sao o de Brillhart, Lehmer e Selfridge, e o de Konyagin

e Pomerance (2). Pelo uso destes teoremas, e possıvel demonstrar o carater primo de n

conhecendo-se uma fatoracao parcial de n−1 como acima, desde que F ≥ n3/10. Em outras

palavras, quando se busca uma demonstracao de carater primo de um inteiro de, digamos,

10 mil dıgitos, basta obter 3 mil dıgitos de fatores deste inteiro. Apesar disto, o teste

ainda e pouco eficiente, exceto para inteiros de forma especial, que possuam fatoracoes

algebricas conhecidas.

Uma grande vantagem do teste n − 1 e que e possıvel construir um certificado do

carater primo de um inteiro, tal que o tempo requerido para verificar a validade do certi-

ficado e muito menor que o tempo usado para gera-lo. A existencia de certificados para

um determinado teste e uma propriedade muito desejavel, uma vez que um indıviduo nao

precisa acreditar na correcao de uma determinada implementacao do teste, ou no correto

funcionamento dos computadores que realizaram os calculos; ele pode verificar indepen-

dente e eficientemente a validade daquela demonstracao, pela verificacao do certificado

em questao.

Deve-se observar que o teste n− 1 se baseia nas propriedades do grupo (Z/nZ)∗, cuja

ordem e n− 1 caso n seja de fato primo. E possıvel utilizar propriedades semelhantes de

outros grupos para obter testes que dependem da fatoracao de n+1, n2 +n+1, n2−n+1,

n2 + 1 e outros (12). Na realidade, o unico teste de valor pratico e o teste n + 1, ja que os

demais envolvem inteiros com o dobro de dıgitos de n, e espera-se que a fatoracao desses

numeros seja bem mais difıcil que a fatoracao de inteiros com o mesmo numero de dıgitos

de n.

4.2.2 O teste ECPP

E possıvel considerar uma versao do teste n−1 em que o grupo (Z/nZ)∗ e substituıdo

pelo grupo de pontos de uma curva elıptica modulo n. Alguns obstaculos devem ser

ultrapassados para tornar este teste valido e eficiente, o que sera o objetivo de estudo do

restante do capıtulo. Neste ponto, so serao fornecidas algumas informacoes de alto nıvel

a respeito do teste, para justificar sua escolha em relacao aos demais testes.

Em primeiro lugar, pode-se mostrar que o tempo de execucao do algoritmo, com

melhorias apropriadas, e O ((log n)4+ε) para demonstrar o carater primo de um inteiro

n (16), que e o melhor resultado assintotico conhecido para esta classe de problemas.

Page 68: Demonstra¸c˜oes Distribu´ıdas de Car´ater Primo em Larga ... fileUniversidade Estadual de Londrina Centro de Tecnologia e Urbanismo Departamento de Engenharia El´etrica D´ecio

47

Ademais, esse teste e extremamente pratico; por exemplo, o teste AKS com as melhorias

conhecidas atinge o mesmo desempenho assintotico, porem nao e pratico para inteiros que

seriam considerados faceis para o ECPP.

Outra vantagem e que o ECPP gera certificados de facil verificacao: o tempo de

execucao de um algoritmo para verificar os certificados e apenas O((log n)3+ε). Em termos

praticos, (17) relata que a demonstracao de carater primo de um inteiro de 10 mil dıgitos

levou cerca de 1000 dias de processamento, mas apenas 85 horas para verificacao do

certificado.

Por fim, o teste e facilmente paralelizavel; duas investigacoes deste fato sao (17, 18).

Ainda e uma questao em aberto se o teste adapta-se a um ambiente de computacao

distribuıda de larga escala, e e o objetivo deste trabalho argumentar que isso e possıvel.

4.2.3 Os testes APR-CL e AKS

Sao conhecidos dois outros testes eficientes de carater primo: o teste de Adleman,

Pomerance e Rumely, com melhorias de Cohen e Lenstra (portanto, APR-CL) e o teste

AKS. Infelizmente, nao e possıvel detalhar a teoria por tras dos dois testes, e esta discussao

estara restrita a caracterısticas de alto nıvel dos testes.

O tempo de execucao do teste APR-CL para demonstrar o carater primo de um inteiro

n e O((log n)C log log log n

)(12). Embora, a rigor, isto nao seja tempo polinomial, o valor

de log log log n varia muito lentamente: por exemplo, conforme n varia de um inteiro de

10 mil dıgitos para um inteiro de 100 mil dıgitos, o valor de log log log n varia menos de

10%. O teste tambem e pratico, competindo com o ECPP para inteiros na faixa de 1000

dıgitos.

No entanto, e importante observar que o APR-CL nao gera certificados de carater

primo, o que diminui o interesse nesse algoritmo, principalmente levando-se em conta que

o algoritmo ECPP gera certificados e possui desempenho semelhante.

Por ultimo, o autor nao esta familiarizado com qualquer trabalho que discuta a pa-

ralelizacao do APR-CL, e nem conhece o funcionamento do teste de modo a sugerir uma

tecnica de paralelizacao para o mesmo, enquanto a paralelizacao do ECPP ja foi discutida

amplamente na literatura, como mencionado na secao anterior.

O ultimo teste que sera considerado e o teste AKS, que foi proposto recentemente

por Agrawal, Kayal e Saxena (4). Inicialmente apresentando tempo de execucao de

Page 69: Demonstra¸c˜oes Distribu´ıdas de Car´ater Primo em Larga ... fileUniversidade Estadual de Londrina Centro de Tecnologia e Urbanismo Departamento de Engenharia El´etrica D´ecio

48

O ((log n)10,5+ε), melhorias por diversos pesquisadores diminuıram a complexidade do al-

goritmo ate atingir O ((log n)4+ε). Porem, no momento da escrita deste trabalho, o teste

permanece como uma mera curiosidade teorica, nao existindo qualquer implementacao

competitiva com o ECPP ou o APR-CL.

4.3 O algoritmo ECPP de Goldwasser e Kilian

Nesta secao, sera estudado o algoritmo ECPP devido a Goldwasser e Kilian, que

embora nao seja pratico, e o precursor direto do algoritmo pratico de Atkin e Morain.

O principal resultado necessario ao funcionamento do algoritmo e o seguinte teorema,

devido a Goldwasser e Kilian (13), e analogo ao Teorema de Pocklington 4.2.2 para o

teste n− 1.

Teorema 4.3.1. Seja n 6= 1 um inteiro coprimo a 6 e E uma curva elıptica modulo n, e

assuma que existam um inteiro m e um ponto P ∈ E(Z/nZ) que satisfazem as condicoes

a seguir.

1. Existe um primo q | m tal que

q >(

4√

n + 1)2

.

2. mP = O.

3. (m/q)P 6= O.

Entao n e primo.

Antes mesmo de discutir o teorema, e preciso esclarecer o significado de uma curva

elıptica sobre Z/nZ, quando n nao e primo. Primeiramente, no jargao da algebra abstrata,

Z/nZ nao e um corpo, e sim um anel. Um anel possui os chamados divisores de zero,

elementos tais que xy = 0 com x, y 6= 0 elementos do anel. A excecao deste detalhe, a

aritmetica dos aneis e semelhante a aritmetica dos corpos. Isso significa que e possıvel

efetuar aritmetica elıptica como se Z/nZ fosse um corpo; caso alguma operacao no anel

se mostre impossıvel, como por exemplo uma inversao modular durante o calculo do

coeficiente angular (supondo que estejam sendo empregadas coordenadas afins), e possıvel

nao apenas afirmar que n e composto, como exibir um fator explıcito de n. De fato, esta

e a ideia por tras do algoritmo ECM de fatoracao (2).

Page 70: Demonstra¸c˜oes Distribu´ıdas de Car´ater Primo em Larga ... fileUniversidade Estadual de Londrina Centro de Tecnologia e Urbanismo Departamento de Engenharia El´etrica D´ecio

49

Retornando ao teorema, observa-se que a unica escolha nao trivial e o valor de m, e

para tanto, pode ser utilizado o seguinte resultado.

Teorema 4.3.2. Seja n 6= 2, 3 um primo, E uma curva elıptica modulo n e m =

|E(Z/nZ)|. Se m possui um fator primo q tal que

q >(

4√

n + 1)2

,

entao existe um ponto P ∈ E(Z/nZ) tal que mP = O mas (m/q)P 6= O.

De certa forma, esta escolha e intuitiva, uma vez que os valores de m tais que mP = O

sao a ordem do grupo e seus multiplos inteiros, e nao ha motivo para escolher um multiplo

ao inves da propria ordem.

Resta agora a questao de calcular a ordem do grupo. Para isto, aplica-se o chamado al-

goritmo de Schoof (19), cujo tempo de execucao e O(log8 n

). De posse de m = |E(Z/nZ)|

para alguma curva aleatoria E, sao empregado algoritmos de fatoracao para tentar obter

uma fatoracao parcial de m que satisfaca as condicoes do Teorema 4.3.1. Em particular,

e preciso que m possua um fator primo ‘gigante’ q. Observa-se que nao e possıvel certi-

ficar que esse fator q e de fato primo sem dispender um esforco enorme; por enquanto,

e suficiente verificar que q e um primo provavel. Caso nao seja possıvel encontrar esta

fatoracao, todo o processo e repetido escolhendo-se outra curva ao acaso.

Ao obter uma fatoracao de m de acordo com as condicoes do Teorema 4.3.1, verifica-se

entao a validade dos itens 2 e 3 daquele teorema, pela escolha de um ponto P ao acaso.

Se n for de fato primo, a probabilidade de um ponto aleatorio P nao poder ser usado

para verificar as condicoes do teorema e desprezıvel, e mesmo assim basta escolher outro

ponto aleatorio caso isto ocorra.

Resta agora demonstrar que o primo provavel q na fatoracao de m e de fato primo, e

para isso, aplica-se o algoritmo recursivamente. Como cada aplicacao do algoritmo remove

pelo menos um fator 2 (correspondente a 1 bit) do inteiro cujo carater primo esta sendo

verificado, segue que o numero de execucoes recursivas do algoritmo e O (log n).

O algoritmo completo e exposto a seguir.

Algoritmo 4.3.1. Seja n > 1 um inteiro positivo coprimo a 6. Este algoritmo tentara

demonstrar que n e primo. Se n nao for primo, e possıvel que o algoritmo detecte esta

condicao ou que permaneca executando indefinidamente. A funcao e chamada como

ecpp(n) e emprega uma rotina auxiliar ecpp principal(n).

Page 71: Demonstra¸c˜oes Distribu´ıdas de Car´ater Primo em Larga ... fileUniversidade Estadual de Londrina Centro de Tecnologia e Urbanismo Departamento de Engenharia El´etrica D´ecio

50

ecpp(n)

{

1. [Inicializacao]

i = 0;

n0 = n;

2. [Laco]

while (1) {res = ecpp principal(ni);

if (res == ‘ni e primo se ni+1 e primo’) {i = i + 1;

continue; // aplica o algoritmo recursivamente

}else if (res == ‘ni e primo’)

return n e primo;

else if (res == ‘ni e composto’)

if (i == 0) // Sera ni o proprio n?

return ‘n e composto’;

else { // volta atras na cadeia de certificacao

i = i− 1;

continue;

}}

}

ecpp principal(ni)

{

1. [Condicao de termino]

Se ni for suficientemente pequeno, verificar seu carater primo usando trial di-

vision, e retornar uma das duas assercoes ‘ni e primo’ ou ‘ni e composto’;

2. [Buscar curva apropriada]

Escolher 0 < a, b < ni aleatoriamente, verificando que 4a3 + 27b2 6= 0;

Calcular m = |E(Z/niZ)| usando o algoritmo de Schoof;

Tentar obter uma fatoracao m = tq, onde q e um primo provavel que satisfaz a

Page 72: Demonstra¸c˜oes Distribu´ıdas de Car´ater Primo em Larga ... fileUniversidade Estadual de Londrina Centro de Tecnologia e Urbanismo Departamento de Engenharia El´etrica D´ecio

51

condicao 1 do Teorema 4.3.1, e caso isso nao seja possıvel, retornar ao inıcio deste

passo;

3. [Verificacao das condicoes do Teorema 4.3.1]

Gerar um ponto P da curva usando o Algoritmo 3.3.1;

Calcular P1 = mP e P2 = (m/q)P , sendo que se uma das computacoes falha-

rem, retornar ‘ni e composto’;

if (P1 6= O)

return ‘ni e composto’;

else if (P2 == O)

goto [Verificacao das condicoes do Teorema 4.3.1];

else {ni+1 = q;

return ‘ni e primo se ni+1 e primo’;

}

}

Pode ser mostrado que o tempo de execucao deste algoritmo e O(log12 n

), ou seja,

tempo polinomial. No entanto, o algoritmo nao e pratico; para tanto, e preciso utilizar as

modificacoes de Atkin e Morain discutidas a frente.

O certificado de carater primo gerado pelo algoritmo e formado pela sequencia de

primos n0 = n, n1, . . ., e tambem os parametros envolvidos na demonstracao de carater

primo de cada ni intermediario: a curva elıptica E, o ponto P e a ordem do grupo

m = E(Z/niZ). No interesse de comprimir os certificados, e possıvel eliminar os pontos

P para cada ni, uma vez que e possıvel gerar novos pontos durante a verificacao do certifi-

cado sem afetar significativamente o tempo de execucao deste processo. Para compressao

maxima dos certificados, e possıvel fornecer somente os parametros da curva e as ordens

de grupo, exigindo do verificador a fatoracao das ordens. Mesmo assim, a complexidade

da verificacao e significativamente inferior a da certificacao.

4.4 Curvas elıpticas com multiplicacao complexa

Nesta secao, sera abordada uma tecnica que permite a obtencao das ordem de grupo

de uma classe de curvas elıpticas, e a posterior construcao de uma curva desta classe

Page 73: Demonstra¸c˜oes Distribu´ıdas de Car´ater Primo em Larga ... fileUniversidade Estadual de Londrina Centro de Tecnologia e Urbanismo Departamento de Engenharia El´etrica D´ecio

52

caso desejado – no caso do ECPP, caso seja possıvel fatorar uma das ordens de grupo em

tempo habil, obtendo uma fatoracao que satisfaca as condicoes do Teorema 4.3.1.

Seja uma curva elıptica E definida sobre os numeros complexos C. Consideraremos

agora os endomorfismos de E, que sao homomorfismos do grupo de pontos de E para si

mesmo e dados por funcoes racionais. O conjunto destes endomorfismos, associado a uma

operacao de adicao (relacionada a adicao elıptica) e a operacao de composicao, forma um

anel, que sera denotado End(E). Esclarecendo as operacoes do anel: se φ, σ ∈ End(E),

entao φ + σ e o endomorfismo que envia um ponto P para φ(P ) + σ(P ), onde esta ultima

operacao de adicao e adicao elıptica comum. Ja φ ◦ σ e a operacao que envia P para

φ(σ(P )).

Um conjunto de endomorfismos de E e fornecido pela multiplicacao de pontos da curva

por inteiros. Seja φ(P ) = nP e σ(P ) = mP . Entao φ(P )+σ(P ) = nP +mP = (n+m)P ,

e φ(P ) ◦ σ(P ) = φ(σ(P )) = n(mP ) = (nm)P . Claramente, estes sao endomorfismos

validos, de modo que End(E) possui uma copia isomorfica dos inteiros Z. Pode-se provar

que, em geral, esses sao os unicos endomorfismos de E, ou seja, End(E) ∼= Z. Porem,

para uma certa classe de curvas, End(E) e ligeiramente maior que Z, sendo isomorfico

a uma ordem em um corpo quadratico imaginario de numeros1. Neste caso, diz-se que

a curva E tem multiplicacao complexa, ou que e uma curva CM (CM e a abreviacao de

complex multiplication, o termo em ingles para estas curvas).

A teoria de multiplicacao complexa e bastante vasta, e esta alem do escopo deste

trabalho. Desse modo, a exposicao estara concentrada somente nos resultados da teoria,

e como estes podem ser empregados para forjar um teste de carater primo mais eficiente.

A primeira definicao relacionada a teoria e a de discriminante fundamental de um

corpo quadratico imaginario (2). Esta e a definicao corrente na literatura para trabalhos

teoricos, mas uma definicao alternativa, a de discriminante reduzido, e mais popular em

trabalhos focados no aspecto computacional (20).

Definicao 4.4.1. Um inteiro negativo D e um discriminante fundamental se a parte

ımpar de D nao possui fatores primos repetidos, e |D| ≡ 3, 4, 7, 8, 11, 15 (mod 16).

A relacao entre um discriminante fundamental D e um discriminante reduzido D′ e a

seguinte (21).

1Formalmente, uma ordem e um subanel de ındice finito do anel de inteiros algebricos do corpo. Infeliz-mente, estas definicoes estao alem do escopo do trabalho, mas nao sao necessarias para o desenvolvimentoque se segue.

Page 74: Demonstra¸c˜oes Distribu´ıdas de Car´ater Primo em Larga ... fileUniversidade Estadual de Londrina Centro de Tecnologia e Urbanismo Departamento de Engenharia El´etrica D´ecio

53

• Se |D′| ≡ 1, 2 (mod 4), entao |D| = 4|D′|, caso contrario, |D| = |D′|;

• Se |D| ≡ 0 (mod 4), entao |D′| = |D|/4, caso contrario, |D′| = |D|.

Por convencao, sera admitido que os discriminantes reduzidos sao positivos. O restante

desta secao lidara com discriminantes reduzidos, de modo que, exceto quando indicado,

qualquer mencao a um discriminante D sera a forma reduzida.

Pode-se verificar, pelas classes de congruencia permitidas para um discriminante fun-

damental, que as duas definicoes sao funcionalmente equivalentes; nenhuma delas con-

templa uma classe maior de discriminantes que a outra. Deve-se tomar cuidado para

nao confundir as duas definicoes durante a implementacao das rotinas de multiplicacao

complexa.

A cada discriminante esta associado um grupo de classe H(D). Antes de definir este

grupo, e necessaria a seguinte definicao (20).

Definicao 4.4.2. Uma matriz simetrica reduzida possui a forma

S =

[A B

B C

],

onde os inteiros A, B, C satisfazem as seguintes condicoes:

1. mdc(A, 2B, C) = 1;

2. |2B| ≤ A ≤ C;

3. Se A = |2B| ou A = C, entao B ≤ 0.

Por razoes de economia de espaco, a matriz S sera abreviada como [A, B, C].

Definicao 4.4.3. Seja D = AC − B2 o determinante da matriz S da Definicao 4.4.2.

O grupo de classe H(D) corresponde ao conjunto de matrizes simetricas reduzidas de

determinante D. O numero de classe h(D) e a cardinalidade do conjunto H(D).

A determinacao do grupo de classe de um determinado discriminante pode ser feita

pelo seguinte algoritmo.

Algoritmo 4.4.1. Dado um discriminante reduzido D, o algoritmo determina o grupo

de classe H(D).

Page 75: Demonstra¸c˜oes Distribu´ıdas de Car´ater Primo em Larga ... fileUniversidade Estadual de Londrina Centro de Tecnologia e Urbanismo Departamento de Engenharia El´etrica D´ecio

54

1. [Inicializacao]

s = d√

D/3e;H(D) = ∅;

2. [Laco]

for (0 ≤ B ≤ s) {Listar os divisores positivos A1, . . . , Ar de D + B2 tais que 2B ≤ A ≤

√D + B2;

for (1 ≤ i ≤ r) {C = (D + B2)/Ai;

if (mdc(Ai, 2B, C) == 1) {H(D) ∪ [Ai, B, C];

if (0 < 2B < Ai < C)

H(D) ∪ [Ai,−B, C];

}}

}

Uma vez que os discriminantes envolvidos sao relativamente pequenos (nao mais que

10 dıgitos), nao e preciso usar algoritmos sofisticados de fatoracao para encontrar os

divisores pedidos; o metodo de trial divison e rapido o suficiente para os propositos do

algoritmo.

De posse do grupo de classe de um discriminante, e possıvel construir o polinomio re-

duzido de classe wD(x), um polinomio de coeficientes inteiros e grau h(D). Esse polinomio

sera aplicado a seguir na construcao de curvas elıpticas com multiplicacao complexa.

Antes de descrever a construcao desse polinomio, sao necessarias algumas definicoes.

Seja

F (z) = 1 +∞∑

j=1

(−1)j(zj(3j−1)/2 + zj(3j+1)/2

)= 1−

(z + z2

)+(z5 + z7

)−(z12 + z15

)+ . . .

Define-se tambem

θ = exp

(−√

D + jB

).

Page 76: Demonstra¸c˜oes Distribu´ıdas de Car´ater Primo em Larga ... fileUniversidade Estadual de Londrina Centro de Tecnologia e Urbanismo Departamento de Engenharia El´etrica D´ecio

55

onde j =√−1, e as funcoes

f0(A, B, C) = θ−1/24F (−θ)/F (θ2),

f1(A, B, C) = θ−1/24F (θ)/F (θ2),

f2(A, B, C) =√

2θ1/12F (θ4)/F (θ2).

E possıvel agora definir o invariante de classe W (A, B, C) (20), cujo calculo envolve a

verificacao de diversas condicoes especiais, e nao e reproduzido aqui por falta de espaco.

Se [A1, B1, C1], . . . , [Ah, Bh, Ch] (onde h = h(D)) sao as matrizes simetricas reduzidas

de determinante D, entao o polinomio reduzido de classe para D e

wD(x) =h∏

j=1

(x−W (Aj, Bj, Cj)).

As raızes modulares deste polinomio permitem a construcao de curvas elıpticas com

ordem de grupo pre-determinada. Se a curva e considerada sobre o corpo Z/pZ, essa

ordem e dada por p + 1± U , onde U provem da solucao da equacao

4p = U2 + DV 2, (4.3)

nas variaveis U, V , com D > 3 dado, desde que a equacao tenha solucao. Diz-se que E tem

multiplicacao complexa por√−D. Para o caso D = 3, ha 6 ordens de grupo possıveis,

mais especificamente p + 1 ± U e p + 1 ± (U ± 3V )/2. No caso D = 1, ha 4 ordens de

grupo possıveis, p + 1± U e p + 1± 2U .

A primeira questao a ser levantada e como resolver a equacao (4.3). O algoritmo

de Cornacchia (2), dado a seguir, pode ser utilizado para resolver a equacao de forma

eficiente.

Algoritmo 4.4.2. Dado um primo p e um discriminante D tal que 0 < D < 4p e D ≡ 0, 3

(mod 4), este algoritmo determina U, V tal que 4p = U2+DV 2, ou afirma que uma solucao

nao existe.

1. [Teste de solvabilidade]

if ((Dp) 6= 1)

return ‘Nao existe solucao’;

2. [Raiz quadrada modular]

x0 =√−D (mod p);

Page 77: Demonstra¸c˜oes Distribu´ıdas de Car´ater Primo em Larga ... fileUniversidade Estadual de Londrina Centro de Tecnologia e Urbanismo Departamento de Engenharia El´etrica D´ecio

56

if (x0 6≡ D (mod 2))

x0 = p− x0;

3. [Inicializacao da cadeia de Euclides]

(a, b) = (2p, x0);

c = b2√pc;

4. [Cadeia de Euclides]

while (b > c)

(a, b) = (b, a mod b);

5. [Conclusao]

t = 4p− b2;

if (t 6≡ 0 (mod D))

return ‘Nao existe solucao’;

if (t/D nao e quadrado perfeito)

return ‘Nao existe solucao’;

return (b,√

t/D);

Caso a ordem do grupo apresente as propriedades desejaveis para a aplicacao em

questao, efetua-se a construcao da curva. O primeiro passo e a geracao do polinomio

reduzido de classe, e sua reducao modulo p (que e a caracterıstica do corpo-base da

curva). Apos isso, e preciso determinar uma raiz modulo p do polinomio, podendo-se

aplicar por exemplo o metodo de Cantor-Zassenhaus (1, 2, 12). De posse da raiz do

polinomio, emprega-se um algoritmo descrito em (20) para construir uma curva E com

uma das ordens de grupo indicadas. A curva que apresenta a outra ordem de grupo

possıvel e dita o twist quadratico de E, e sua relacao com E e bastante simples (20):

basta determinar um resıduo nao-quadratico g de p, e multiplicar os coeficientes a e b da

equacao na forma (3.1) por g2 e g3, respectivamente.

Resta determinar qual das duas ordens corresponde a qual curva. Felizmente, isso e

simples, uma vez que qualquer ponto sobre uma curva elıptica, quando multiplicado pela

ordem do grupo correspondente, resulta no ponto no infinito O, enquanto a multiplicacao

por outro valor escolhido aleatoriamente resulta em um ponto qualquer diferente de O.

Uma observacao: formalmente, e possıvel que a ordem do grupo de uma das curvas coin-

cida com a ordem do ponto gerado para outra curva, levando a uma conclusao erronea

a respeito das associacoes entre curvas e ordens de grupo, mas esse evento tem proba-

bilidade desprezıvel. Se mesmo assim houver interesse em eliminar esta possibilidade, e

Page 78: Demonstra¸c˜oes Distribu´ıdas de Car´ater Primo em Larga ... fileUniversidade Estadual de Londrina Centro de Tecnologia e Urbanismo Departamento de Engenharia El´etrica D´ecio

57

possıvel procurar uma ‘testemunha’ para o fato que um dado valor nao corresponde a

ordem do grupo considerado, pela aplicacao da contrapositiva da afirmacao do comeco do

paragrafo.

4.5 O algoritmo ECPP de Atkin e Morain

Em (14), Atkin e Morain sugeriram alterar o algoritmo ECPP de Goldwasser e Kilian,

substituindo a geracao de curvas aleatorias e determinacao da ordem do grupo pelo algo-

ritmo de Schoof, pelo uso de curvas elıpticas com multiplicacao complexa. Essa alteracao

e bastante vantajosa, uma vez que o tempo de execucao do algoritmo para demonstrar o

carater primo de um inteiro p cai para O ((log p)5+ε), e o teste mostra-se bastante pratico.

Devido a semelhanca com o algoritmo de Goldwasser e Kilian, e por razoes de espaco,

o algoritmo de Atkin e Morain nao sera explicitado aqui.

E possıvel realizar tambem uma modificacao no formato dos certificados para o al-

goritmo de Goldwasser e Kilian: ao inves de fornecer os coeficientes da curva, e possıvel

fornecer apenas o discriminante, exigindo a reconstrucao do polinomio durante a veri-

ficacao, o que e viavel quando o esforco exigido para construir o polinomio nao e muito

grande. Em casos extremos, e possıvel construir certificados com alto grau de compressao

fornecendo somente o discriminante, e exigindo do verificador a determinacao da ordem

do grupo pelo algoritmo de Cornacchia, a fatoracao desta ordem e a construcao da curva.

Mesmo assim, a verificacao e mais eficiente que a certificacao, uma vez que o grande gar-

galo do algoritmo e encontrar discriminantes que produzam solucao para a equacao (4.3)

e que sejam completamente fatoraveis, satisfazendo as condicoes do Teorema 4.3.1.

4.6 A variante fastECPP do algoritmo ECPP

Concluımos o capıtulo com uma melhoria que pode ser feita ao esquema basico de

Atkin e Morain, e que reduz sua complexidade de O ((log n)5+ε) para O ((log n)4+ε).

Verifica-se que, durante a execucao do algoritmo de Atkin e Morain, a maior parte do

tempo e dispendida na execucao do algoritmo de Cornacchia. Este algoritmo envolve a

extracao da raiz quadrada modular do discriminante sob consideracao.

Retornando a teoria de multiplicacao complexa, e possıvel especificar a fatoracao em

primos de um discriminante fundamental valido (14). O algoritmo fastECPP considera

Page 79: Demonstra¸c˜oes Distribu´ıdas de Car´ater Primo em Larga ... fileUniversidade Estadual de Londrina Centro de Tecnologia e Urbanismo Departamento de Engenharia El´etrica D´ecio

58

uma pequena base de primos pi e tenta construir todas as combinacoes de fatores possıveis

a partir dessa base. Precomputando os valores de√

pi (mod p), e possıvel construir um

discriminante pelo produto dos pi’s e sua raiz quadrada pelo produto dos√

pi’s corres-

pondentes. Desta forma, a excecao das precomputacoes, o custo das raızes quadradas e

efetivamente eliminado do algoritmo de Cornacchia. A contrapartida e que nem todos

os discriminantes possıveis serao considerados, apenas aqueles cuja fatoracao em primos

possa ser expressa atraves dos pi’s escolhidos.

Observa-se que nem todos os primos podem ser adicionados a base de fatores em

questao: somente aqueles tais que(

p∗in

)= 1, onde p∗i =

(−1n

)pi e n e o numero cujo

carater primo esta sendo verificado. Pode-se observar que alguns primos da base de

fatores possuirao sinal negativo; isto limita as combinacoes possıveis entre eles, uma vez

que o produto final deve ser obrigatoriamente negativo.

Ha outra vantagem em utilizar este metodo, relacionada a fatoracao modulo n do

polinomio de classe. Conforme n cresce, este e o passo que domina o tempo de execucao

do algoritmo, devido ao alto grau dos polinomios envolvidos: sabe-se que na media, h(D)

comporta-se como 0, 46√|D| (12), tornando a fatoracao do polinomio inviavel se p e muito

grande, mesmo para valores moderados de D. Felizmente, Atkin e Morain descrevem uma

tecnica de fatoracao algebrica do polinomio de classe, denominada fatoracao sobre o corpo

de genero, permitindo obter fatores de grau h(D)/2k, onde k e o numero de fatores primos

do discriminante D. A obtencao de discriminantes de alto valor no algoritmo fastECPP

esta geralmente associado a um maior numero de fatores primos do discriminante, o que

por sua vez leva a fatoracoes algebricas de grau menor, constituindo uma especie de

realimentacao negativa no sistema.

Page 80: Demonstra¸c˜oes Distribu´ıdas de Car´ater Primo em Larga ... fileUniversidade Estadual de Londrina Centro de Tecnologia e Urbanismo Departamento de Engenharia El´etrica D´ecio

59

5 Sistemas Distribuıdos

O capıtulo introdutorio deste trabalho ja apresentou argumentos para o uso de com-

putacao distribuıda na solucao de problemas computacionais de grande magnitude. As-

sim, este capıtulo estara confinado a discussao dos obstaculos que surgem na imple-

mentacao de uma versao distribuıda de um algoritmo.

Sistemas distribuıdos de larga escala geralmente apresentam altas latencias e baixa

vazao de comunicacoes, com relacao a interconexoes dedicadas e mesmo redes locais co-

mercialmente disponıveis como a Ethernet. A Secao 5.1 discute a distribuicao do algoritmo

ECPP, e argumenta que ele se adapta a um sistema sujeito as restricoes discutidas. A

Secao 5.2 mostra como aumentar a eficiencia da propagacao de informacoes num sistema

distribuıdo, e propoe uma arquitetura de rede adaptada ao ECPP e que leva essas ideias

em conta. Por fim, a Secao 5.3 discute os desafios de realizar computacoes validas quando

os nos da rede podem nao ser confiaveis, contemplando desde falhas de hardware ate

ataques maliciosos ao sistema.

5.1 Distribuindo o algoritmo ECPP

Relembramos aqui os passos principais da variante fastECPP do algoritmo ECPP,

lembrando que o algoritmo comeca com n0 = n e termina quando ni e pequeno o suficiente

para ter seu carater primo demonstrado por outros metodos. Omitiu-se as condicoes de

falha do algoritmo e a forma como devem ser tratadas, pois sao irrelevantes a discussao

desta secao.

1. Precomputacoes:

(a) Gerar uma lista de primos que podem ser fatores de discriminantes fundamen-

tais, conforme discutido na Secao 4.6;

(b) Precomputar raızes quadradas modulares dos elementos na base de fatores;

Page 81: Demonstra¸c˜oes Distribu´ıdas de Car´ater Primo em Larga ... fileUniversidade Estadual de Londrina Centro de Tecnologia e Urbanismo Departamento de Engenharia El´etrica D´ecio

60

2. Encontrar um discriminante valido D:

(a) Construir discriminantes possıveis Dj a partir de multiplicacoes dos elementos

da base de fatores;

(b) Usando o algoritmo de Cornacchia, encontrar os valores de Dj tais que 4ni =

U2 + DjV2 possui solucao;

(c) Dentre as solucoes da equacao acima, encontrar uma ordem de grupo de uma

curva elıptica com multiplicacao complexa por√−Dj, que possa ser fatorada

conforme as condicoes do Teorema 4.3.1;

3. Construir uma curva elıptica com multiplicacao complexa por√−D, onde D e o

discriminante encontrado no item 2(c);

4. Verificar as condicoes do Teorema 4.3.1 para esta curva e a fatoracao encontrada no

item 2(c);

5. Executar o algoritmo para ni+1, o cofator primo da ordem de grupo da curva em

questao.

As precomputacoes do passo 1 sao comuns a todos os clientes da rede. A secao seguinte

discute como evitar que estas precomputacoes sejam repetidas em todos os clientes, e ao

mesmo tempo evitar uma carga muito grande de comunicacao com o servidor.

O algoritmo permanecera no passo 2 durante a maior parte de sua execucao, e e

justamente este passo que apresenta possibilidades de paralelizacao. Observa-se que cada

processador poderia receber um Dj, para executar o passo 2(b) e possivelmente o passo

2(c) de maneira independente dos demais.

Para minimizar os requisitos de comunicacao, nao e interessante fornecer apenas um

Dj a cada processador por vez, e sim um conjunto de Dj’s. Tambem nao seria interessante

que o servidor central gerasse esse conjunto de Dj’s, para minimizar a carga computacional

sobre o mesmo. Nossa implementacao conciliou os dois requisitos da seguinte maneira:

representa-se um subconjunto de elementos da base de fatores por uma string de bits, onde

os valores 0 ou 1 de cada bit indicam a presenca ou ausencia de um primo da base de fatores

nesse subconjunto. Esta string de bits pode ser interpretada como um numero binario,

possibilitando a especificacao bastante compacta de intervalos de busca. Por exemplo, o

intervalo 001-111 indica que o cliente deve considerar os subconjuntos representados por

001, 010, 011, 100, 101, 110 e 111. Esses correspondem aos discriminantes D001 = p1,

D010 = p2, D011 = p1p2, . . . , D111 = p1p2p3.

Page 82: Demonstra¸c˜oes Distribu´ıdas de Car´ater Primo em Larga ... fileUniversidade Estadual de Londrina Centro de Tecnologia e Urbanismo Departamento de Engenharia El´etrica D´ecio

61

E difıcil prever a quantidade de computacao delegada a cada cliente atraves desse

esquema. Em princıpio, poderia-se realizar uma analise levando em conta que a proba-

bilidade de um dado D satisfazer a equacao do passo 2(b) e 1/(2h(D)), onde h(D) e o

numero de classe do discriminante D (14). Existem tambem estimativas para os valores

de h(D), dado D (12). Mas ainda e preciso conhecer a distribuicao dos valores de D

nos intervalos de subconjuntos discutidos acima para poder aplicar estas estimativas, e

o autor desconhece algum metodo que possa simplificar a analise deste problema. Desta

forma, heurısticas terao de ser desenvolvidas para distribuir uma quantidade razoavel-

mente padronizada de computacao para cada cliente.

Quanto aos passos 3 e 4, nao e viavel distribuir as computacoes envolvidas nos mesmos,

e nem e necessario. Estes passos falharao apenas com probabilidade desprezıvel (tao baixa

quanto a probabilidade de falha de um teste de carater pseudoprimo), de forma que estas

computacoes sao delegadas a um unico cliente da rede, enquanto os demais ja comecam

a trabalhar na certificacao do proximo primo da cadeia, o cofator da ordem do grupo em

questao. Caso ocorra uma falha nos passos 3 e 4, todos os clientes da rede devem retornar

a certificacao do primo anterior da cadeia, mas como dito, a probabilidade de ocorrencia

deste evento e desprezıvel.

O passo 5 do algoritmo, que exige a migracao de todos os clientes da rede para uma

nova tarefa, tambem levanta questoes relacionadas a minimizacao da carga de comu-

nicacao do servidor central. Novamente, a tecnica de distribuicao de comunicacoes da

secao seguinte e util nesta situacao.

Deve-se observar tambem que, somente porque ha uma nova tarefa disponıvel, nao

significa que clientes trabalhando na tarefa antiga estejam desperdicando tempo de pro-

cessamento. Suponha por exemplo que a rede estivesse trabalhando na certificacao de ni,

um primo provavel de k bits, e que um dos clientes tenha encontrado uma curva cuja

ordem do grupo possua fatores pequenos, digamos 10 bits ao total, e um cofator ni+1 de

k − 10 bits. Enquanto o servidor migra os clientes para a certificacao de ni+1, um cliente

trabalhando na tarefa antiga encontra um curva cuja ordem do grupo possua fatores to-

talizando 20 bits, com um cofator de k− 20 bits. E vantajoso nessa situacao interromper

a certificacao de ni+1 e substitui-lo pelo novo cofator encontrado. Uma estrategia que

guarda semelhancas com a descrita, em que cofatores muito proximos do ni original sao

simplesmente descartados, foi utilizada com sucesso para reduzir o tempo de computacao

do ECPP distribuıdo (17).

Page 83: Demonstra¸c˜oes Distribu´ıdas de Car´ater Primo em Larga ... fileUniversidade Estadual de Londrina Centro de Tecnologia e Urbanismo Departamento de Engenharia El´etrica D´ecio

62

5.2 Algoritmos para distribuicao de dados

A motivacao para esta secao e o seguinte problema: dada uma certa informacao,

presente em um no de um sistema distribuıdo, como transmitir esta informacao para todos

os nos do sistema da forma mais eficiente possıvel? No contexto do algoritmo ECPP, esta

informacao poderia ser, por exemplo, um comando para migrar para a proxima tarefa de

certificacao, ou as precomputacoes necessarias para execucao do algoritmo. Na literatura,

esta operacao e conhecida como broadcast (7).

Vamos considerar o primeiro exemplo. Neste caso, o servidor central, que coordena

todas as tarefas da rede, recebeu de um cliente a informacao de que e possıvel proceder a

uma nova etapa de certificacao. Apos verificar a veracidade dessa informacao, o servidor

precisa notificar todos os clientes da rede que devem migrar para uma nova tarefa.

O servidor poderia conectar em cada um dos clientes e transferir esta informacao,

porem isto exigiria c conexoes (onde c e o numero de clientes na rede) por parte do

servidor, implicando em um alto custo de comunicacao para o mesmo. A quantidade de

tempo necessaria para realizar todas as conexoes tambem seria relativamente grande.

Permitindo aos clientes conectarem-se entre si, e possıvel distribuir a carga de conexoes

de maneira aproximadamente uniforme entre todos os elementos da rede. Primeiramente

numera-se cada elemento da rede de maneira aleatoria, exceto que ao servidor e atribuıdo

o numero 0. Num primeiro instante, o no 0 (o servidor) envia os dados aos no 1. Num

segundo instante, o no 0 envia os dados ao no 2, e o no 1 envia os dados ao no 3.

Prosseguindo desta forma, apos dlog2 ce passos, todos os nos da rede terao recebido os

dados, e a quantidade maxima de conexoes realizadas por no tambem e dlog2 ce. O

processo e ilustrado graficamente na Figura 5.1.

Figura 5.1: Propagacao eficiente de dados.

Pode nao ser desejavel envolver todos os usuarios na retransmissao das informacoes,

por exemplo por motivos de seguranca. Outra razao e que dois usuarios que estejam

Page 84: Demonstra¸c˜oes Distribu´ıdas de Car´ater Primo em Larga ... fileUniversidade Estadual de Londrina Centro de Tecnologia e Urbanismo Departamento de Engenharia El´etrica D´ecio

63

por tras de firewalls nao conseguirao conectar-se entre si. Uma organizacao semelhante

seria uma estrutura hierarquica de nos, conforme ilustrada na Figura 5.2. Estes nos

poderiam ser nos privilegiados, executando um software diferente (e possivelmente nem

mesmo contribuindo para as tarefas com tempo de processamento), ou simplesmente nos

comuns, em que o administrador da maquina configurou a rede de maneira a permitir

conexoes. Em ambos os casos, estes nos serao conhecidos como proxies.

Figura 5.2: Estrutura hierarquica de rede.

Alem de reduzir os requerimentos de comunicacao no servidor central e o tempo

necessario a propagacao de informacoes pela rede inteira, as estruturas hierarquicas de

rede apresentam outra vantagem: e possıvel realizar verificacoes distribuıdas de validade

de resultados, uma medida descrita na secao seguinte para deteccao de usuarios maliciosos

ou com hardware defeituoso. No entanto, utilizar maquinas nao-confiaveis para verificar a

confiabilidade de resultados nao prove garantias de validade, de modo que alguns nos na

hierarquia devem ser nos cuja confiabilidade possa ser garantida de alguma forma. Mesmo

assim, verificacoes em nıveis mais baixos da hierarquia permitem a eliminacao de alguns

(senao todos) os resultados incorretos, diminuindo a carga sobre os nıveis superiores.

5.3 Computacao em ambientes nao-confiaveis

Como garantir que uma computacao realizada em um computador desconhecido esteja

correta, ou mesmo que ela tenha sido realizada de fato? Este e um dos grandes problemas

enfrentados pelas redes de computacao distribuıda atuais.

Primeiramente, e preciso questionar as razoes que levam participantes da rede a reali-

zar computacoes incorretas. Alguns casos estao relacionados a falhas de hardware, devidas

a componentes de baixa qualidade, susperaquecimento, ou a pratica conhecida como over-

Page 85: Demonstra¸c˜oes Distribu´ıdas de Car´ater Primo em Larga ... fileUniversidade Estadual de Londrina Centro de Tecnologia e Urbanismo Departamento de Engenharia El´etrica D´ecio

64

clocking, que e a operacao de alguns subsistemas do computador fora de sua espeficacao.

Outra possibilidade sao indivıduos com intencoes maliciosas, dispostos a demonstrar a

vulnerabilidade dos sistemas distribuıdos a ataques. Uma ultima e importante possibi-

lidade esta relacionada as ‘estatısticas’ do projeto, que coletam dados como os usuarios

e times de usuarios que mais contribuıram para o projeto; alguns indivıduos, sem poder

computacional para avancar nesta lista, empregam meios ilıcitos para manipula-la.

A vulnerabilidade de um sistema distribuıdo a computacoes incorretas depende, em

ultima instancia, da vulnerabilidade do algoritmo implementado no sistema (o ECPP no

caso deste trabalho) para resolver o problema proposto. Felizmente, o ECPP possibi-

lita diversas verificacoes intermediarias da validade da computacao, todas de baixo ou

medio custo, que serao estudadas agora. Serao feitas referencias aos passos do algoritmo

fastECPP na ordem descrita na Secao 5.1.

Primeiramente, seja uma potencial fatoracao da ordem do grupo de uma curva elıptica,

realizada durante o passo 2 do algoritmo. A verificacao da validade deste resultado poderia

proceder da seguinte maneira:

1. Primeiramente, verifica-se se o discriminante em questao e valido. E razoavel exigir

que, ao inves de transmitir o discriminante em si, o cliente transmita os fatores

do discriminante, utilizando a representacao binaria de subconjuntos da base de

fatores discutida na Secao 5.1. Atraves deste artifıcio, a verificacao da validade do

discriminante e dispensada.

2. Verifica-se entao que a ordem do grupo e valida. Exceto para os casos D = −3,−4,

a ordem e dada por ni+1±U , onde ni e conhecido, e U satisfaz a relacao 4ni = U2+

DV 2, sendo que D tambem e conhecido. Pode-se exigir a transmissao de V junto

com o resultado, simplificando consideravelmente a verificacao, mas aumentando os

requerimentos de comunicacao; ou pode-se verificar que (4ni−U2)/D e um inteiro e

quadrado perfeito. Nem e preciso calcular uma raiz quadrada do valor para verificar

que o mesmo e um quadrado perfeito; pode-se utilizar os metodos descritos em (12),

que testam se o inteiro em questao e um resıduo quadratico modulo primos pequenos,

o que sempre ocorre quando o mesmo e um quadrado perfeito.

3. Por fim, determina-se se a fatoracao relatada da ordem de grupo e valida. E desejavel

que os fatores encontrados sejam transmitidos junto com o resultado; geralmente

o tamanho dos mesmos sera de algumas dezenas (ou no maximo poucas centenas)

de bits. Dividindo a ordem do grupo pelos fatores, o resultado deve ser um inteiro,

Page 86: Demonstra¸c˜oes Distribu´ıdas de Car´ater Primo em Larga ... fileUniversidade Estadual de Londrina Centro de Tecnologia e Urbanismo Departamento de Engenharia El´etrica D´ecio

65

o que e de facil verificacao, mas tambem um primo provavel; a verificacao desta

ultima propriedade exige uma quantidade razoavel de computacao.

O ultimo passo, que envolve um teste de carater pseudoprimo, parece indicar que a

verificacao de validade nao possui tao baixo custo quanto desejavel. No entanto, e preciso

colocar este fato em perspectiva: a obtencao de valores que satisfacam as verificacoes

anteriores e uma tarefa relativamente custosa, bem mais custosa que o teste de carater

pseudoprimo. Isto sugere a seguinte estrategia: ao realizar o teste de carater pseudoprimo

sobre o cofator do resultado em questao, caso o teste afirme que o cofator e composto,

o proxy nao descartara os parametros em questao (como discriminante, ordem de grupo,

fatores, etc.) apos a verificacao, como poderia se esperar. Ao inves disso, estes parametros

sao armazenados (e possivelmente enviados a outros proxies) para que tentativas poste-

riores de verificacao usando este resultado sejam detectadas imediatamente, evitando o

desperdıcio de computacao. Assim, um adversario malicioso precisa executar uma quan-

tidade muito grande de computacao em troca de um pequeno desperdıcio nos proxies,

tornando tais ataques futeis.

Deve-se verificar tambem a validade dos resultados obtidos no item 3 e 4 do algoritmo

fastECPP. Felizmente, isto tambem e facil, uma vez que e a mesma tarefa que deve ser

realizada para verificar a validade de um certificado do ECPP. Poderia-se argumentar que

o custo de O ((log ni)2+ε), onde ni e o primo atual da cadeia de certificados, nao e tao

baixo assim. Porem, deve-se lembrar que a construcao de curvas e um evento que ocorre

com baixıssima frequencia; ha no total O(log n) destes eventos durante a certificacao de

um inteiro n.

Assumindo que resultados incorretos sejam devidos somente a hardware defeituoso, o

custo computacional das verificacoes e desprezıvel. No entanto, caso a rede seja alvo de

um ataque malicioso bem planejado, os protocolos de rede do sistema deverao levar este

fato em conta para evitar desperdıcios e ate uma possıvel exaustao de recursos.

Uma possibilidade e o esquema de (22) e seus sucessores; quando o cliente conectar a

um proxy para retornar resultados, sera exigido do cliente a realizacao de uma computacao

de alguns segundos, especıfica para aquela conexao. Isto limita a taxa de conexoes de

adversarios, enquanto usuarios honestos, que conectam pouco frequentemente, nao sao

afetados.

Ao mesmo tempo, pode-se empregar um sistema seguro de identificacao de usuarios,

baseado em assinaturas digitais. Deste modo, e possıvel associar resultados ao usuario

Page 87: Demonstra¸c˜oes Distribu´ıdas de Car´ater Primo em Larga ... fileUniversidade Estadual de Londrina Centro de Tecnologia e Urbanismo Departamento de Engenharia El´etrica D´ecio

66

que produziu os mesmos, e rejeitar resultados de usuarios suspeitos. Poderia-se empre-

gar o esquema de (23) ou as versoes melhoradas de (24, 25), que permitem verificacao

extremamente rapida de assinaturas.

Por outro lado, devido aos problemas de hardware defeituoso ja mencionados, nao

se deve assumir que um resultado incorreto e sinal de ataque a rede: o usuario deve ser

informado do fato e posto em quarentena ate que corrija o suposto problema de hardware.

Page 88: Demonstra¸c˜oes Distribu´ıdas de Car´ater Primo em Larga ... fileUniversidade Estadual de Londrina Centro de Tecnologia e Urbanismo Departamento de Engenharia El´etrica D´ecio

67

6 Projeto e Implementacao doSistema

A pior inimiga da seguranca e a complexidade . . . Nao existe substitutopara a simplicidade.

Bruce Scheneier

Otimizacao prematura e a raiz de todos os males.

Donald E. Knuth

Nesta secao, sao descritos os passos tomados para implementar o sistema descrito

ate agora. Inicialmente e resolvida a questao do licenciamento do projeto, e argumenta-

se a decisao de distribuir o software sob a licenca de software livre GPL. Em seguida,

sao descritos os princıpios que nortearam o projeto do sistema, para entao descrever em

detalhes o estagio atual da implementacao, incluindo a organizacao do codigo-fonte e

detalhes como estruturas de dados e algoritmos utilizados.

6.1 Licenciamento

Assim como qualquer outro software no mercado, e preciso decidir sob quais termos

de licenciamento o software sera distribuıdo.

A primeira e mais importante decisao neste sentido e se o software sera gratuito

ou pago. Nao foi difıcil decidir pela distribuicao gratuita, visto que o projeto depende

da doacao de recursos computacionais de voluntarios, e nao seria possıvel exigir destes

mesmos voluntarios que pagassem pelo direito de doar recursos ao projeto.

Em seguida, foi preciso decidir se o codigo-fonte do projeto seria distribuıdo aberta-

mente (open source) ou mantido em sigilo. A decisao pela distribuicao aberta foi natural:

visto que o software esta sendo distribuıdo gratuitamente, nao ha razao para esconder

seu codigo-fonte, mas ha diversas razoes para distribuı-lo. Pode-se citar a transparencia

Page 89: Demonstra¸c˜oes Distribu´ıdas de Car´ater Primo em Larga ... fileUniversidade Estadual de Londrina Centro de Tecnologia e Urbanismo Departamento de Engenharia El´etrica D´ecio

68

do projeto perante os seus usuarios – que, deve-se lembrar mais uma vez, sao os unicos

responsaveis pelo eventual sucesso do projeto – e a facilidade de atrair outros desenvol-

vedores para o projeto, que nao precisam de uma afiliacao formal ao mesmo para enviar

melhorias, identificar brechas de seguranca, etc. Espera-se tambem que o codigo seja util

a outros projetos, da mesma forma como codigo de outros projetos foi reutilizado neste

sistema.

Tomada a decisao que o software seria distribuıdo gratuitamente e sob uma licenca

open source, resta decidir qual das licencas disponıveis sera empregada. Dentre as mais

notorias licencas desta classe, encontram-se a licenca BSD e a licenca GNU GPL. Ha

uma grande diferenca na filosofia das duas licencas, e em particular a licenca GPL exige

que modificacoes a um software com esta licenca sejam distribuıdas sob a mesma licenca.

O objetivo desta medida e evitar a apropriacao de codigo de um projeto, sem nenhuma

contrapartida ao autor deste codigo. Existem argumentos contra e a favor desta filosofia, e

a opiniao pessoal do autor e que se alguem teve acesso ao tremendo corpo de conhecimento

formado pelos softwares livres, e tomou emprestado destes softwares para construir seu

proprio, e obrigacao deste indivıduo contribuir de volta para a comunidade que viabilizou

seu projeto; caso o indıviduo considere isto um preco muito alto a pagar, ele tem a opcao

de escrever seu proprio projeto sem nenhuma contribuicao de terceiros.

Outro detalhe a favor da escolha da licenca GPL e a existencia de softwares dis-

tribuıdos atraves desta licenca, e que possuem codigos que podem ser reutilizados no

projeto. Um exemplo e o GMP-ECM, uma implementacao bastante eficiente de algorit-

mos de fatoracao como Pollard p − 1 e ECM. A quantidade de esforco necessaria para

produzir outra implementacao de mesma eficiencia, caso nao fosse feita a opcao pela

licenca GPL, seria gigantesca.

6.2 Projeto do sistema

O projeto do sistema foi norteado por diversas metas, listadas a seguir em ordem

aproximada de importancia.

1. correcao;

2. eficiencia;

3. escalabilidade;

Page 90: Demonstra¸c˜oes Distribu´ıdas de Car´ater Primo em Larga ... fileUniversidade Estadual de Londrina Centro de Tecnologia e Urbanismo Departamento de Engenharia El´etrica D´ecio

69

4. seguranca;

5. facilidade de uso;

6. facilidade de manutencao:

(a) clareza;

(b) simplicidade;

(c) documentacao.

O restante desta secao esclarece o significado destas metas.

Correcao e a propriedade do sistema de realizar todas as operacoes corretamente.

Embora pareca uma propriedade tao obvia que nao deveria nem ser listada, infelizmente

muitos softwares atuais tem colocado a correcao em segundo plano. Pela propria natureza

de nosso sistema, fica claro que o funcionamento correto deve estar acima de todas as

demais metas.

A eficiencia tambem e uma das propriedades mais importantes do sistema; um sis-

tema ineficiente negaria todos os ganhos proporcionados pela distribuicao do algoritmo.

A principal ferramenta para garantir a eficiencia do sistema e a implementacao de me-

lhorias descritas na literatura, desde operacoes de baixo nıvel como aritmetica de inteiros

ate otimizacoes de alto nıvel como a fatoracao sobre o corpo de genero. Quando possıvel,

e reutilizado codigo de outras fontes que seja reconhecidamente eficiente para uma deter-

minada tarefa, por exemplo atraves do uso da biblioteca GMP para aritmetica de intei-

ros e ponto flutuante, e o programa GMP-ECM para fatoracao de inteiros. Quando as

melhorias algorıtmicas forem esgotadas, serao explorados outros meios de aumento de de-

sempenho, como o uso de multithreading para execucao paralela em SMPs e programacao

em linguagem assembly.

Escalabilidade e a propriedade do sistema de operar eficientemente na presenca de

grandes quantidades de clientes. Esta propriedade esta particularmente relacionada ao

projeto do protocolo de rede do sistema, e foi a principal motivacao para a proposta de

uma estrutura hierarquica de rede. A logica de verificacao de resultados, discutida na

Secao 5.3, tambem foi projetada com a escabilidade em mente; caso contrario, o sistema

seria vulneravel a ataques de exaustao de recursos.

A seguranca tambem e uma propriedade desejavel do sistema. Parte desta seguranca

esta relacionada a prevencao de erros de programacao, que podem levar a vulnerabilidades

Page 91: Demonstra¸c˜oes Distribu´ıdas de Car´ater Primo em Larga ... fileUniversidade Estadual de Londrina Centro de Tecnologia e Urbanismo Departamento de Engenharia El´etrica D´ecio

70

que poem em risco os usuarios do software. Outro aspecto e o uso de protocolos crip-

tograficos para autenticacao dos usuarios com o objetivo de prevenir ataques ao sistema,

como a exaustao de recursos ja mencionada, e atribuicao incorreta de resultados, entre

outros.

Facilidade de uso e uma propriedade que torna o sistema atrativo para os usuarios.

As ferramentas para garantir esta propriedade sao o projeto de interfaces de usuario

seguindo recomendacoes de especialistas, e a prevencao da delegacao de decisoes desne-

cessarias e confusas para o usuario. O website do projeto tambem deve apresentar esta

propriedade, por corresponder ao primeiro contato que o usuario tera com o projeto, alem

de ser um recurso valioso para a operacao do sistema: facilidades como relatorios de

bugs, verificacao de estatısticas, gerenciamento de listas de discussao, etc. serao realiza-

dos atraves do website, e devem levar a conta a experiencia do usuario tanto quanto a

funcionalidade.

Por fim, a facilidade de manutencao esta relacionada a diversos fatores ja citados;

por exemplo, a simplicidade esta relacionada a seguranca e correcao do sistema, pois

facilita a analise do mesmo com vistas a estes objetivos. Por outro lado, a simplicidade

geralmente e concorrente da eficiencia, devido a todas as melhorias que necessitam ser

implementadas para obtencao de maxima eficiencia do sistema. Neste caso, as ferramen-

tas para lidar com a complexidade sao a clareza e a documentacao, uma vez que nao

ha nada mais nocivo ao sistema que tentar modificar o codigo sem compreender comple-

tamente a operacao do trecho que esta sendo modificado. Os princıpios citados tambem

sao desejaveis para atrair outros desenvolvedores para o projeto, que se sentirao mais

motivados se puderem compreender facilmente a operacao do codigo.

Uma decisao muito importante e que afeta o projeto como um todo e a escolha da

linguagem de programacao e da metodologia de projeto. Foram escolhidas, respectiva-

mente, a linguagem C++ e a metodologia de projeto orientado a objeto, por poderem

ajudar a gerenciar a complexidade do sistema quando corretamente aplicadas (26).

6.3 Implementacao do sistema

Nesta secao, e descrito o codigo do programa, que foi fornecido num CD-ROM em

anexo ao trabalho. Exceto quando indicado, os arquivos descritos encontram-se no di-

retorio src/algorithms do disco.

Page 92: Demonstra¸c˜oes Distribu´ıdas de Car´ater Primo em Larga ... fileUniversidade Estadual de Londrina Centro de Tecnologia e Urbanismo Departamento de Engenharia El´etrica D´ecio

71

6.3.1 Aritmetica de inteiros e de ponto flutuante

As operacoes mais basicas de todo o sistema sao a aritmetica de inteiros e de ponto

flutuante. Todas as demais operacoes dependem destas de uma maneira ou outra, e os

atributos da aritmetica usada (como eficiencia e clareza de codigo) influenciarao signifi-

cativamente nos atributos do sistema como um todo.

Decidiu-se pelo emprego da biblioteca GNU MP (27) para esta funcao. As principais

razoes para esta decisao foram a reconhecida eficiencia desta biblioteca (embora ainda

deixe a desejar em alguns aspectos), e a interface da biblioteca para C++: sua imple-

mentacao e baseada na tecnica de gabaritos de expressoes (28), que utiliza o mecanismo de

sobrecarga de operadores de C++ para maxima clareza do codigo, ao mesmo tempo que

elimina tradicionais ineficiencias causadas por este mecanismo, como criacao desnecessaria

de temporarios.

6.3.2 Algoritmos para teoria dos numeros

A biblioteca GMP ja implementa diversos algoritmos para teoria dos numeros, como

pode ser constatado em sua documentacao: o algoritmo de Euclides para maximo divisor

comum, a versao estendida do algoritmo de Euclides para inversao modular, sımbolos

de Jacobi e Legendre e testes de carater pseudoprimo. No entanto, a implementacao do

ECPP exige outros algoritmos nao contemplados nesta lista, como raiz quadrada modular,

o algoritmo de Cornacchia e fatoracao de inteiros.

O primeiro detalhe e que os testes de carater pseudoprimo foram reimplementados. As

definicoes estao no arquivo prptests.h e a implementacao no arquivo prptests.cpp. O

teste de Frobenius, descrito na Secao 4.1, foi implementado devido a ausencia do mesmo na

biblioteca. A funcao para isso chama-se frobprp. Ja o teste forte de carater pseudoprimo,

embora esteja presente no GMP, foi reimplementado para utilizar exclusivamente a base 2

e o Algoritmo 2.3.4, com a melhoria descrita na Secao 2.3.3, que permite a substituicao de

algumas multiplicacoes por adicoes no algoritmo. A funcao que implementa este algoritmo

chama-se sprp. Ha tambem um wrapper para as duas funcoes, chamado ispseudoprime,

que testa o carater pseudoprimo de um inteiro aplicando inicialmente o teste forte, e caso

o inteiro seja declarado primo provavel por este teste, aplica-se o teste de Frobenius.

O calculo de raızes quadradas modulares e feito pela funcao modsqrt, definida no

arquivo modsqrt.h e implementada no arquivo modsqrt.cpp. Inicialmente o algoritmo

implementado havia sido o de Cipolla (Algoritmo 2.3.6), mas devido ao baixo desempenho

Page 93: Demonstra¸c˜oes Distribu´ıdas de Car´ater Primo em Larga ... fileUniversidade Estadual de Londrina Centro de Tecnologia e Urbanismo Departamento de Engenharia El´etrica D´ecio

72

do mesmo, foi implementado o algoritmo de Tonelli (2).

O algoritmo de Cornacchia foi definido no arquivo cornacchia.h e implementado

no arquivo cornacchia.cpp. O nome da funcao e simplesmente cornacchia. A imple-

mentacao segue a exposicao de (2), exceto por desconsiderar algumas verificacoes de erro,

e por tomar como um dos argumentos a raiz quadrada de D modulo p. A razao para isto

e que, como descrito na Secao 4.6, a variante fastECPP do algoritmo ECPP permite a

construcao de raızes quadradas modulares a partir de precomputacoes. Desta forma, ao

inves de calcular a raiz quadrada por uma chamada a modsqrt, o valor da raiz quadrada ja

e passada a funcao, e o metodo de calculo da mesma fica a criterio da funcao chamadora.

Para fatoracao de inteiros, foram implementados os algoritmos de trial division e Pol-

lard rho, e reutilizado o codigo do programa GMP-ECM para o algoritmo Pollard p− 1,

com possibilidade de reutilizar tambem o codigo do algoritmo ECM no futuro, caso haja

necessidade. A definicao das funcoes e feita no arquivo intfact.h e a implementacao no

arquivo intfact.cpp, a excecao do codigo do GMP-ECM, que se encontra no diretorio

src/gmpecm da distribuicao. A implementacao destes algoritmos apresenta uma particu-

laridade: nao se buscam os fatores primos dos inteiros a serem fatorados, de modo que

qualquer divisor encontrado e adicionado a lista de fatores, sem tentar separa-lo em seus

fatores primos.

O algoritmo de trial division, implementado pela funcao trialdiv, emprega um tru-

que bastante conhecido para aumentar seu desempenho: ao inves de tomar o resto da

divisao de um inteiro por todos os primos ate um certo limite, precomputam-se produtos

de primos e potencias de primos no vetor P td, buscando que cada elemento do vetor pos-

sua aproximadamente o dobro do tamanho dos inteiros a serem fatorados pelo software.

E calculado o MDC entre o inteiro sendo fatorado e os elementos deste vetor, e quaisquer

divisores comuns encontrados nesse procedimento sao adicionados a lista de fatores do

inteiro. O calculo deste MDC envolve a divisao de dois inteiros gigantescos como passo

inicial, e neste ponto os algoritmos de divisao rapida implementados pela biblioteca GMP

aumentam a eficiencia com relacao ao algoritmo tradicional para trial division.

E preciso gerar uma lista de todos os primos ate um dado limite para a aplicacao do

algoritmo de trial division, e operacoes para manipular esta lista; isto e feito pelas funcoes

definidas no arquivo sieve.h e implementadas no arquivo sieve.cpp. O algoritmo uti-

lizado foi o Crivo de Eratostenes, Algoritmo 2.3.3, com a adicao de uma roda (em ingles,

wheel) para aumento de eficiencia. Buscando a economia de memoria, os primos sao lis-

tados numa estrutura de dados de 8 bits, que armazena somente a diferenca de um primo

Page 94: Demonstra¸c˜oes Distribu´ıdas de Car´ater Primo em Larga ... fileUniversidade Estadual de Londrina Centro de Tecnologia e Urbanismo Departamento de Engenharia El´etrica D´ecio

73

em relacao ao seu antecessor dividida por 2 (uma vez que todos os primos, a excecao de

2, sao ımpares, a diferenca de dois primos e um numero par). Esta forma de armazena-

mento exige leitura sequencial da lista de primos, porem isto nao e uma limitacao para

os algoritmos que utilizam essa lista.

A implementacao do algoritmo Pollard rho, na funcao rho definida em intfact.h e

implementada em intfact.cpp, segue a exposicao de (12). E empregado o polinomio

x2 + 1 exclusivamente, e o metodo de busca de ciclos de Brent. Uma vez que os fatores

sao acumulados durante toda a execucao do algoritmo, e calculado somente um MDC ao

final do algoritmo, ao inves dos calculos frequentes sugeridos em (12).

Por fim, a funcao intfact implementa algumas heurısticas para tentar obter o maior

desempenho possıvel combinando os algoritmos de fatoracao descritos. Infelizmente, estas

heurısticas ainda nao estao satisfatorias; uma comparacao rudimentar foi realizada com

o software PRIMO de Marcel Martin (29), denunciando a atual inferioridade de nossa

implementacao.

6.3.3 Aritmetica de polinomios

Infelizmente, a biblioteca GMP nao oferece aritmetica de polinomios, que teve de

ser implementada pelo autor, por ser necessaria para a construcao de curvas elıpticas

com multiplicacao complexa. Dois conjuntos de rotinas foram implementados, uma para

polinomios com coeficientes complexos (representados em ponto flutuante), e outro para

polinomios com coeficientes provindos de Z/nZ.

6.3.3.1 Coeficientes complexos em ponto flutuante

Polinomios com coeficientes complexos sao empregados na construcao do polinomio

de classe (Secao 4.4). A classe que implementa as rotinas de aritmetica e manipulacao de

polinomios e definida e parcialmente implementada no arquivo complexpoly.h, enquanto

o restante da implementacao e feita no arquivo complexpoly.cpp.

Quanto as operacoes de adicao e subtracao, sao empregados os algoritmos tradicio-

nais, uma vez que nao existem opcoes mais eficientes. Ja a multiplicacao de polinomios

emprega tecnicas de multiplicacao rapida, uma vez que o grau dos polinomios envolvidos,

assim como a precisao de seus coeficientes, pode atingir valores bastante altos. Foram im-

plementados tres algoritmos com este fim: o algoritmo classico, o algoritmo de Karatsuba

e a convolucao por FFTs (1, 2). A decisao por cada um dos algoritmos e feita com base

Page 95: Demonstra¸c˜oes Distribu´ıdas de Car´ater Primo em Larga ... fileUniversidade Estadual de Londrina Centro de Tecnologia e Urbanismo Departamento de Engenharia El´etrica D´ecio

74

no grau do polinomio sendo multiplicado; os limiares foram determinados atraves de ex-

perimentacao. Verificou-se um problema de cancelamento com o algoritmo de Karatsuba,

que leva a perda de precisao; desta forma, os limiares de Karatsuba foram ajustados de

forma a empregar outros algoritmos mesmo havendo uma pequena perda de desempenho

– somente quando a vantagem do algortimo de Karatsuba e muito grande que o mesmo e

empregado.

Foi implementado um FFT split-radix, nas variantes decimation-in-time (DiT) e

decimation-in-frequency (DiF) (30). A razao para isso e que, ao realizar um FFT DiF,

seguido de convolucao no domınio da frequencia e FFT inverso DiT, nao e necessario

realizar as operacoes de bit reversal do FFT. A implementacao seguiu o estilo da biblio-

teca FXT de Jorg Arndt (31). Deve-se observar que o uso de FFTs para esta tarefa foi

aparentemente negligenciado na literatura, mas levou a grandes ganhos de desempenho

em nossa implementacao.

Quanto a operacao de corpo, isto e, a multiplicacao de numeros complexos, foi empre-

gada uma identidade que permite a multiplicacao de dois numeros complexos atraves de

somente 3 multiplicacoes reais, ao inves das 4 esperadas (1, 32). A aplicacao desta identi-

dade tambem e controlada por um limiar sobre a precisao dos valores em questao, uma vez

que para valores muito pequenos, esta identidade e menos eficiente que a multiplicacao

tradicional.

6.3.3.2 Coeficientes modulares

Polinomios com coeficientes modulares sao empregados para obtencao de uma raiz

modular do polinomio de classe (Secao 4.4). A definicao e implementacao parcial da

classe e feita no arquivo modpoly.h, enquanto o restante da implementacao e feita no

arquivo modpoly.cpp.

Naturalmente, o algoritmo principal e o de fatoracao de polinomios. Por simplicidade,

foi implementado o algoritmo de Cantor-Zassenhaus (1, 2, 12). Outra possibilidade mais

eficiente e o algoritmo de Berlekamp (1), porem a quantidade de espaco exigida por este

algoritmo torna-o inviavel para a fatoracao de polinomios de alto grau. Uma possibili-

dade a ser estudada e o algoritmo de Kaltofen e Shoup (33), embora tambem existam

preocupacoes a respeito do espaco utilizado pelo algoritmo.

O algoritmo de Cantor-Zassenhaus consiste em exponenciacoes modulares (que por

sua vez empregam operacoes de multiplicacao e modulo) e MDCs. Este algoritmo e

Page 96: Demonstra¸c˜oes Distribu´ıdas de Car´ater Primo em Larga ... fileUniversidade Estadual de Londrina Centro de Tecnologia e Urbanismo Departamento de Engenharia El´etrica D´ecio

75

implementado pela funcao polfact. Descrevemos agora os algoritmos utilizados para

garantir maxima eficiencia da rotina de fatoracao de polinomios.

Embora existam diversos algoritmos de multiplicacao especıficos para polinomios,

incluindo variantes do algoritmo de Karatsuba para multiplicacao de inteiros, e uma

tecnica empregando FFTs (33), decidiu-se pelo uso de binary segmentation (2), que nada

mais e que uma maneira de dispor os coeficientes de um polinomio em inteiros, de modo

que a multiplicacao de dois polinomios representados desta maneira nao provocara carries

(vai-uns) entre diferentes coeficientes do polinomio. Desta forma, e possıvel utilizar uma

rotina eficiente de multiplicacao de inteiros para emular uma multiplicacao de polinomios.

Este e o algoritmo implementado no operador de multiplicacao da classe.

A operacao de modulo foi implementada usando um algoritmo de reciprocidade analogo

aos metodos de Newton para inversao de valores em ponto flutuante (2). Deve-se observar

que este algoritmo exige uma precomputacao um pouco custosa para cada modulo a ser

empregado, de modo que nao e vantajoso quando o modulo e alterado frequentemente.

No entanto, para operacoes de exponenciacao modular, em que operacoes utilizando o

mesmo modulo sao repetidas multiplas vezes, o algoritmo e particularmente eficiente. A

implementacao foi realizada no operador de modulo da classe, utilizando as subrotinas

reciprocal, ind e rev.

Quanto as cadeias de exponenciacao, foi implementado o Algoritmo 2.3.4, embora

haja planos para implementacao de cadeias mais sofisticadas, como as descritas em (1, 5).

A funcao powmod implementa este algoritmo.

Tambem em nome da simplicidade, o algoritmo de MDC implementado na funcao gcd

foi o algoritmo de Euclides, onde a divisao de polinomios e realizada atraves de divisao

Euclidiana na funcao euclidrem, uma vez que o metodo de Newton nao seria vantajoso

nesse caso. E desejavel implementar futuramente o algoritmo de maximo divisor comum

recursivo, descrito em (2, 34).

6.3.4 Construcao dos polinomios de classe

Os procedimentos para construcao dos polinomios de classe sao definidos no arquivo

weber.h, que utiliza subrotinas definidas em weber-aux.h, enquanto as implementacoes

encontram-se em weber.cpp e weber-aux.cpp.

A funcao classgroup determina o grupo de classe de um dado determinante, utili-

zando a funcao divisors como subrotina para listar divisores de um inteiro. Esta funcao,

Page 97: Demonstra¸c˜oes Distribu´ıdas de Car´ater Primo em Larga ... fileUniversidade Estadual de Londrina Centro de Tecnologia e Urbanismo Departamento de Engenharia El´etrica D´ecio

76

por sua vez, utiliza a funcao primefactors para determinacao dos fatores primos de um

inteiro atraves de trial division. Embora a eficiencia deste metodo possa ser questionada,

os inteiros a serem fatorados sao relativamente pequenos, e a preocupacao com a eficiencia

e infundada.

As funcoes F, f e C implementam as funcoes correspondentes descritas em (20). Pre-

computacoes sao realizadas quando possıvel, em particular para raızes quadradas e cubicas

de 2 na precisao desejada.

O arquivo weber.cpp emprega as funcoes auxiliares descritas para calculo do po-

linomio de classe. A funcao weber polynomial calcula o polinomio para uma dada

precisao de calculo. Esta e uma subrotina da funcao weber poly mod p, que contem

heurısticas para determinar a precisao necessaria para o calculo do polinomio de classe,

podendo repetir a computacao caso a precisao mostre-se insuficiente, e reduz o polinomio

modulo um primo p. A funcao build cm curve realiza todo o processo de construcao de

uma curva elıptica com multiplicacao complexa: primeiramente o calculo do polinomio

de classe reduzido modulo p, depois a obtencao de uma raiz deste polinomio modulo p, e

por fim a construcao da curva a partir desta raiz, conforme descrito em (20).

Neste ponto, e preciso comentar a respeito das heurısticas de precisao para o calculo

dos polinomios de classe. Existem estimativas de precisao obtidas analiticamente para o

calculo de polinomios de Hilbert (que tambem sao polinomios de classe, porem exigem

precisao superior aos polinomios de Weber empregados no trabalho). Estas estimativas

podem ser adaptadas para os polinomios de Weber, porem mostraram-se insatisfatorias

na pratica. Nesse sentido, foi desenvolvida uma heurıstica que tem se mostrado valida

nas computacoes realizadas neste trabalho.

Parte-se do princıpio que o polinomio de classe e um polinomio com coeficientes in-

teiros. Seja ai o maior coeficiente deste polinomio. Obrigatoriamente, e necessario um

mınimo de log2 ai bits para representar este inteiro. Para estimar o valor de log2 ai, inicial-

mente realiza-se a computacao do polinomio de classe em baixa precisao, por exemplo 128

bits. Este calculo e relativamente rapido (poucos minutos) e fornece uma boa estimativa

da precisao final necessaria. No entanto, devido as diversas computacoes intermediarias,

erros de arredondamento e problemas de estabilidade numerica dos algoritmos utilizados,

e preciso adicionar uma margem de seguranca ao valor calculado. No estagio atual de im-

plementacao, este valor e uma funcao do numero de classe e do discriminante em questao,

embora nao tenha sido realizado nenhum estudo a respeito das reais variaveis envolvi-

das. Uma linha de estudo neste sentido e a geracao de diversos polinomios de classe,

Page 98: Demonstra¸c˜oes Distribu´ıdas de Car´ater Primo em Larga ... fileUniversidade Estadual de Londrina Centro de Tecnologia e Urbanismo Departamento de Engenharia El´etrica D´ecio

77

calculando a precisao mınima necessaria para a tarefa, e tentando utilizar metodos de

analise estatıstica e regressao para determinar heurısticas com uma certa fundamentacao

experimental.

6.3.4.1 Funcoes transcendentais

O calculo do polinomio de classe exige o uso da funcao exponencial e do valor de π.

Como os argumentos da funcao exponencial sao numeros complexos, decidiu-se pelo uso

da formula de Euler ejθ = cos θ+j sen θ para o calculo da parte imaginaria da exponencial.

Desta forma, e preciso implementar as funcoes exponencial, seno e cosseno, alem de um

metodo para calcular π. Estas funcoes sao definidas no arquivo transcendental.h e

implementadas no arquivo transcendental.cpp.

O calculo de π e feito atraves do celebrado algoritmo de Brent-Salamin, que usa o

conceito de media aritmetica-geometrica e certas relacoes envolvendo integrais elıpticas

(35, 36). A funcao em questao e chamada pi. A implementacao deste algoritmo e bastante

simples e sua convergencia e quadratica com relacao ao numero de dıgitos, indicando que

serao necessarias apenas algumas iteracoes para o calculo de π para praticamente qualquer

precisao pratica. Ademais, cada iteracao consiste essencialmente de uma operacao de

elevar ao quadrado e uma raiz quadrada, utilizando a formulacao de (37).

Ja as funcoes transcendentais sao calculadas atraves do metodo de (38). Este metodo

envolve um escalonamento do argumento das funcoes que acelera a convergencia, seguido

da aplicacao de identidades para escalonar o resultado final. O trabalho citado menciona

diversas tecnicas a serem aplicadas para garantir a manutencao da precisao maxima, como

a inclusao de uma palavra de guarda no calculo e identidades alternativas ao metodo

inicial proposto, que nao sofrem de problemas de cancelamento. Todas estas melhorias

foram implementadas para garantir a maxima eficiencia no calculo destas funcoes, uma

vez que sao chamadas repetidamente durante o calculo dos polinomios de classe. O

calculo de exponenciais reais e feito atraves da funcao exp, enquanto o calculo de senos e

cossenos e feito atraves das funcoes sin e cos. Ambas utilizam a funcao auxiliar cosm1,

que calcula cos x − 1 empregando as melhorias descritas. O calculo da funcao cosseno

a partir de cosm1 e direto, enquanto o calculo da funcao seno emprega a identidade

fundamental sen2 x + cos2 x = 1, novamente com modificacoes para prevenir o fenomeno

de cancelamento.

Page 99: Demonstra¸c˜oes Distribu´ıdas de Car´ater Primo em Larga ... fileUniversidade Estadual de Londrina Centro de Tecnologia e Urbanismo Departamento de Engenharia El´etrica D´ecio

78

6.3.5 Aritmetica elıptica

O ultimo detalhe importante da implementacao e o sistema de coordenadas empregado

para aritmetica elıptica. E definida uma estrutura de dados para curvas elıpticas e pontos

sobre as mesmas, alem de operacoes sobre pontos, no arquivo elliptic.h, enquanto a

implementacao destas operacoes e realizada no arquivo elliptic.cpp.

Nao sao utilizadas as coordenadas afins e projetivas discutidas na Secao 3.3, mas

sim as chamadas coordenadas de Montgomery, propostas em (34). Este e um sistema

de coordenadas projetivas com uma mudanca crucial: os valores da coordenada y de

pontos da curva nunca sao calculados. Embora isso possa parecer absurdo, existem muitas

situacoes em que as coordenadas y sao dispensaveis. Aqui, a aplicacao da aritmetica

elıptica e na verificacao das condicoes do Teorema 4.3.1, em que basta decidir se um

ponto corresponde ao ponto no infinito O ou nao, e para esta operacao basta verificar se

as coordenadas x, z sao nulas ou nao.

Atraves do descarte das coordenadas y, e possıvel eliminar diversas adicoes e multi-

plicacoes da aritmetica em coordenadas projetivas, porem ha um detalhe importante: as

formulas para a adicao de dois pontos P1 e P2 exigem, alem das coordenadas dos pontos

em si, as coordenadas do ponto P1 − P2. Embora isto pareca limitar a utilidade das co-

ordenadas de Montgomery, e possıvel forjar um algoritmo de multiplicacao de pontos por

inteiros empregando as cadeias de Lucas discutidas na Secao 4.1.2. Recorda-se daquela

secao que a cada iteracao da cadeia, as coordenadas de kP, (k + 1)P sao conhecidas, e

e possıvel calcular as coordenadas de 2kP, (2k + 1)P ou (2k + 1)P, (2k + 2)P , onde k e

um inteiro e P e um ponto sobre uma curva. Observa-se que a diferenca entre os dois

elementos dos pares de coordenadas citadas e sempre P , que obviamente e conhecido.

No entanto, as cadeias de Lucas apresentam uma desvantagem: o calculo de nP exigira

invariavelmente 2dlog2 ne+ 1 operacoes elıpticas, enquanto uma cadeia de exponenciacao

comum exigira bem menos – mesmo o simples Algoritmo 2.3.4 exigira cerca de 1, 5dlog2 neoperacoes, supondo que n e um inteiro com uma distribuicao aproximadamente igual de

bits 1 e 0 em sua representacao binaria. Algoritmos mais sofisticados exibirao uma quan-

tidade ate menor de operacoes. No entanto, (2) defende as coordenadas de Montgomery

em funcao da grande economia de operacoes modulares para cada operacao elıptica indi-

vidual. Seria interessante implementar a aritmetica em outros sistemas de coordenadas

para efeito de comparacao, porem isto nao foi feito neste trabalho.

Page 100: Demonstra¸c˜oes Distribu´ıdas de Car´ater Primo em Larga ... fileUniversidade Estadual de Londrina Centro de Tecnologia e Urbanismo Departamento de Engenharia El´etrica D´ecio

79

7 Resultados

Dentre as subrotinas do algoritmo ECPP, o maior esforco foi dispendido na imple-

mentacao da construcao de curvas com multiplicacao complexa. Assim, os resultados

deste trabalho consistirao exclusivamente de computacoes de curvas com multiplicacao

complexa por√−D, para valores bastante grandes de D.

As computacoes consistiram nas curvas citadas na dedicatoria e agradecimentos do

trabalho. Alguns dados a respeito destas computacoes sao fornecidos na Tabela 7.1, em

que todos os discriminantes sao dados na forma fundamental, ao inves da forma reduzida

empregada no restante do trabalho.

D h(D) h(D) precisao usando precisao usandoesperado heurıstica inical nova heurıstica

-1000147768 4128 14597 12832-2001806020 5904 20651 19104-3006633688 7248 25309 22656-4004850712 9536 29209 28864 29120-5022511288 9968 32711 30816-6005976568 9616 35770 31040 31296-7005075940 12504 38631 39648 40480-8011737892 12192 41313 39104 40000-9003700612 12760 43796 41408 42368-10000129528 16336 46156 50944 51968-20029259608 19676 65322 66880-50051763448 26272 103261 93792

Tabela 7.1: Dados das computacoes realizadas neste trabalho.

Deve-se observar que os numeros de classe dos discriminantes escolhidos estao muito

abaixo da media, dada pela formula 0, 461559√|D| (12). Isto foi proposital; o numero

de classe afeta diretamente o tempo de execucao do algoritmo (lembrando que o grau do

polinomio de classe a ser construıdo e igual ao numero de classe). Alem disso, a precisao

necessaria para os calculos tambem e funcao do numero de classe.

Page 101: Demonstra¸c˜oes Distribu´ıdas de Car´ater Primo em Larga ... fileUniversidade Estadual de Londrina Centro de Tecnologia e Urbanismo Departamento de Engenharia El´etrica D´ecio

80

Para realizar estes calculos, criamos uma versao modificada do software que busca por

discriminantes com numero de classe abaixo de um certo limite, e comunica ao usuario os

discriminantes encontrados e seu numero de classe. Para cada um destes discriminantes,

foi executada a primeira passada do algoritmo de calculo do polinomio de classe (em-

pregando baixa precisao), para estimativa da precisao real necessaria. Os discriminantes

mais favoraveis encontrados nessa etapa sao os listados na Tabela 7.1. A quantidade de

processamento empregada nessa etapa foi cerca de 1,5 dia, em um computador Pentium

4 2,6 GHz com 1 GB de memoria RAM.

As curvas foram calculadas neste Pentium 4 2,6 GHz e em um Athlon XP 1,83 GHz

com 1 GB de RAM, gentilmente cedido por Heron Franklin, exceto pela ultima linha da

tabela. Esta computacao exigiu uma quantidade maior de memoria RAM e utilizou um

computador Athlon MP 1,66 GHz com 4 GB de RAM, pertencente a um dos laboratorios

do Departamento de Engenharia Eletrica. Os dez menores discriminantes foram calcu-

lados em menos de 2 dias de processamento nos dois computadores citados no inıcio do

paragrafo, sendo que ao mesmo tempo o programa de busca de discriminantes com baixo

numero de classe era executado no computador Pentium 4, de modo que o tempo real de

processamento e ainda menor. O discriminante -20029259608 exigiu pouco mais de 1 dia

de processamento no Athlon XP 1,83 GHz, enquanto o discriminante -50051763448 exigiu

mais de 2 dias de processamento no Athlon MP 1,66 GHz.

Deve-se observar que, durante as computacoes iniciais, foi descoberto que a heurıstica

para estimativa de precisao dos calculos estava subestimando a precisao real necessaria.

Os discriminantes -4004850712 e -6005976568 nao puderam ser calculados com a esti-

mativa inicial de precisao, mas a heurıstica de reestimativa de precisao em face deste

problema, que adiciona um multiplo do numero de falhas devidas a baixa precisao ate

entao, permitiu o calculo ainda na segunda tentativa. Atribuımos este problema ao con-

junto de dados utilizado para desenvolvimento da heurıstica inicial, que era composto de

discriminantes com numeros de classe mais proximos da media. Ademais, essa heurıstica

dependia somente da precisao estimada pelos calculos em baixa precisao e do numero de

classe. No entanto, observa-se na Tabela 7.1 que discriminantes com numero de classe

aproximadamente igual ainda apresentam divergencias na precisao necessaria, indicando

uma dependencia da precisao com o valor do discriminante em si. Este fato foi levado em

conta na formulacao da nova heurıstica, que tambem depende do valor do discriminante.

Atraves dela, os polinomios de classe restantes foram calculados na primeira tentativa

sem erros de baixa precisao.

Page 102: Demonstra¸c˜oes Distribu´ıdas de Car´ater Primo em Larga ... fileUniversidade Estadual de Londrina Centro de Tecnologia e Urbanismo Departamento de Engenharia El´etrica D´ecio

81

E possıvel perceber que todos os discriminantes calculados sao divisıveis por 4, e ne-

nhum e divisıvel por 3. De fato, estes discriminantes apresentam propriedades desejaveis.

A divisibilidade por 3 leva a requerimentos muito maiores de precisao, em torno de 3 vezes

maiores. Ja a divisibilidade por 4 leva a caracterısticas mais proximas de discriminantes

menores, facilitando as computacoes: os numeros de classe sao visivelmente menores, e a

precisao exigida para as computacoes tambem e ligeiramente menor, que discriminantes

na mesma faixa nao divisıveis por 4.

Acreditamos que estes discriminantes representam novos recordes de computacao: o

maior discriminante anteriormente calculado (julho/2004), ate onde sabemos, e -8581560955

(39). Ate dezembro de 2004, nossas computacoes permanecem recordes.

Page 103: Demonstra¸c˜oes Distribu´ıdas de Car´ater Primo em Larga ... fileUniversidade Estadual de Londrina Centro de Tecnologia e Urbanismo Departamento de Engenharia El´etrica D´ecio

82

8 Conclusao

Argumentou-se neste trabalho (particularmente nas Secoes 5.1 e 5.2) que e possıvel

realizar demonstracoes de carater primo em sistemas distribuıdos de larga escala. In-

felizmente, o objetivo original do trabalho, que era fornecer uma prova concreta disso,

atraves de um software que realizasse esta tarefa e fosse mais eficiente que as alternativas

monoprocessadas existentes, nao pode ser atingido por questoes de tempo.

Apesar disso, a implementacao parcial do sistema mostrou-se competitiva, pelo menos

na area em que foi dedicado mais esforco, a construcao de curvas elıpticas com multi-

plicacao complexa. Os resultados relatados nos Agradecimentos do trabalho, e discutidos

na Secao 7, incluem uma curva elıptica com multiplicacao complexa por um discriminante

que e (ate o conhecimento do autor) o maior ja empregado neste tipo de calculo.

Embora esse resultado pareca impressionante, ele tambem enfatiza uma das princi-

pais deficiencias da implementacao nesse ponto: conforme sao empregados discriminantes

progressivamente maiores nos calculos, a ineficiencia das rotinas de aritmetica modular de

polinomios fica mais clara, assim como as limitacoes do algoritmo de Cantor-Zassenhaus

implementado para a fatoracao desses polinomios. Mas otimizacao nenhuma nessas areas

permitira atingir resultados realmente espetaculares; para tanto, e preciso implementar

uma tecnica como a fatoracao sobre o corpo de genero, ou uma das tecnicas de solubi-

lidade por radicais introduzidas por Francois Morain, que levam em conta a estrutura

especial dos grupos de Galois dos polinomios de classe (40, Cap. 3.1) (41).

Outra deficiencia esta relacionado ao uso dos invariantes IEEE P1363 (20). Para

discriminantes divisıveis por 3, esses invariantes exigem uma precisao cerca de 3 vezes

maior que a media para discriminantes do mesmo tamanho. Outros invariantes foram

propostos na literatura, como γ2 (14), e devem ser implementados futuramente.

Tambem esta claro que as rotinas de aritmetica modular empregadas poderiam ser

melhoradas. Em (17), e utilizada a biblioteca FFTW para substituir as rotinas de mul-

tiplicacao da biblioteca GMP, obtendo-se um grande ganho de desempenho. Por outro

Page 104: Demonstra¸c˜oes Distribu´ıdas de Car´ater Primo em Larga ... fileUniversidade Estadual de Londrina Centro de Tecnologia e Urbanismo Departamento de Engenharia El´etrica D´ecio

83

lado, o website do GMP (27) afirma que a versao 5.0 da biblioteca esta planejada para

novembro de 2005, incluindo diversos algoritmos de complexidade reduzida e uma rotina

de FFT mais eficiente para multiplicacao de inteiros. Desta forma, a melhor estrategia e

nao otimizar a aritmetica modular neste momento, mas sim completar a implementacao

do sistema e otimizar outras areas que necessitam de melhorias com maior urgencia, como

as descritas no paragrafo acima. Neste ponto, em que a nova versao do GMP ja deve estar

disponıvel, pode-se avaliar se ainda e vantajoso substituir suas rotinas de multiplicacao

por uma implementacao baseada na biblioteca FFTW.

Outra grande area de estudo e a selecao de parametros para os algoritmos de fatoracao

de inteiros. Experimentos preliminares indicam que os parametros atuais estao longe de

serem competitivos com outras implementacoes do ECPP. Neste sentido, o autor vislum-

brou uma nova forma de analise do algoritmo ECPP, que pode contribuir com esta selecao

de parametros, mas isto sera objetivo de um trabalho futuro. Deve-se estudar tambem

a precisao necessaria para calculo dos polinomios de classe: mesmo na geracao de alguns

resultados para este trabalho, foram observadas deficiencias na heurıstica utilizada ate

entao para estimativa de precisao. Nesse sentido, talvez uma abordagem experimental

para a determinacao do comportamento desse parametro seja valida, uma vez que as

abordagens teoricas se mostraram insatisfatorias.

Page 105: Demonstra¸c˜oes Distribu´ıdas de Car´ater Primo em Larga ... fileUniversidade Estadual de Londrina Centro de Tecnologia e Urbanismo Departamento de Engenharia El´etrica D´ecio

84

ANEXO A -- Artigo Publicado no XXI

Simposio Brasileiro de

Telecomunicacoes

Page 106: Demonstra¸c˜oes Distribu´ıdas de Car´ater Primo em Larga ... fileUniversidade Estadual de Londrina Centro de Tecnologia e Urbanismo Departamento de Engenharia El´etrica D´ecio

XXI SIMPOSIO BRASILEIRO DE TELECOMUNICACOES-SBT2004, 06-09 DE SETEMBRO DE 2004, BELEM, PA

Demonstracoes Distribuıdas de Carater Primo deLarga Escala

Decio Luiz Gazzoni Filho e Taufik Abrao

Resumo— Descrevemos uma implementacao distribuıda doalgoritmo ECPP devido a Atkin e Morain, para demonstracao decarater primo de inteiros de forma geral. Sugerimos uma novaarquitetura de rede para implementacoes distribuıdas, e umanova tecnica para estimativa de precisao de um dos calculosintermediarios do algoritmo. Por fim, relatamos um resultadopreliminar obtido com a atual implementacao.

Palavras-Chave— Numero primos, curvas elıpticas,demonstracoes de carater primo, computacao distribuıda

Abstract— We describe a distributed implementation of Atkinand Morain’s ECPP algorithm for primality proving of integerswithout special form. We suggest a new network architecture fordistributed implementations, and a new technique for estimatingthe precision of one of the intermediate computations of ECPP.Finally, we relate a preliminary result obtained with the currentimplementation.

Keywords— Prime numbers, elliptic curves, primality proofs,distributed computing

I. I NTRODUCAO

O grupo de pontos de uma curva elıptica tem se mostradouma importante ferramenta na criptografia e teoria dosnumeros computacional. Criptossistemas empregando o prob-lema do logaritmo discreto sobre este grupo tem se mostradoimbatıveis em certas aplicacoes, como smart cards [1]. Afatoracao de inteiros atraves do metodo ECM de Lenstraeo metodo mais eficiente conhecido [2] (exceto para modulosRSA [3]), e as demonstracoes de carater primo de inteiros deforma geral, atraves do algoritmo ECPP de Atkin e Morain,atingiram patamares de desempenho ineditos: ja foram obtidoscertificados de carater primo para inteiros de ate 7760 dıgitosem uniprocessadores [4] e 15071 dıgitos para implementacoesdistribuıdas [5].

Os numeros primos sao uma ferramenta basica deconstrucao de sistemas criptograficos.E possıvel argumentarque as demonstracoes de carater primo sao superfluas, emfuncao da existencia de algoritmos que indicam o caraterprimo de um numero com alta probabilidade, os chamadostestes de carater pseudoprimo (ver [6] para uma visao geraldo assunto). No entanto, para certas aplicacoes onde exige-seo maximo possıvel de seguranca, pode ser desejavel obter umcertificado de carater primo, que os testes de carater pseudo-primo nao podem fornecer. E embora os numeros primos deinteresse criptografico estejam ao alcance de implementacoesmonoprocessadas no momento, o desenvolvimento de novoscriptossistemas, ou de algoritmos que simplifiquem a quebra

Universidade Estadual de Londrina, Departamento de Engenharia Eletrica,Caixa Postal 6001, 86051-990 - Londrina - PR. Emails: [email protected],[email protected]

dos criptossistemas atuais, pode requerer o uso de primosmaiores. Uma implementacao distribuıda permite, por exem-plo, que uma empresa certifique o carater primo de um inteiroutilizando apenas recursos ociosos dos computadores de suarede.

A proposta deste trabalhoe uma implementacao distribuıdaem larga escala do algoritmo ECPP (a implementacao de[5] restringe-se aclusters) na tentativa de estabelecer novosrecordes.

Na secao II, sao introduzidos os conceitos necessarios paracompreensao do funcionamento do algoritmo ECPP, queedescrito na secao III. Na secao IV, e discutida a estrategiapara paralelizacao do algoritmo e os compromissos necessariospara implementacoes em larga escala. Na secao V, e discutidaa implementacao do algoritmo e outras subrotinas necessariaspara sua operacao (fatoracao de inteiros, testes de carater pseu-doprimo etc.). Na secao VI, relatamos resultados preliminaresobtidos com a atual implementacao.

II. CURVAS EL IPTICAS

A equacao geral de um polinomio de grau 3, com coefi-cientes provindos de um corpoF e igualada a zero,e

ax3 + bx2y + cxy2 + dy3 + ex2+

+ fxy + gy2 + hx + iy + j = 0, (1)

com a, b, c, d 6= 0. Os pares ordenados(x, y) ∈ F × F quesatisfazem (1) sao ditas as solucoes afim da equacao. Taissolucoes sao estritamente relacionadasas solucoesprojetivasda curva, que satisfazem

ax3 + bx2y + cxy2 + dy3 + ex2z+

+ fxyz + gy2z + hxz2 + iyz2 + jz3 = 0. (2)

Se estas curvas foremsuaves, ou seja, nenhuma solucao daequacao apresentar as tres derivadas parciais simultaneamentenulas, entao a curvae dita umacurva elıptica. Impondo acondicao adicional que a caracterıstica do corpoF deve serdiferente de 2 e 3,e sabido que toda equacao da forma (2)pode ser transformada por uma mudanca de variaveis numaequacao da forma

y2z = x3 + axz2 + bz3, a, b ∈ F, (3)

cuja forma afimy2 = x3 + ax + b (4)

e conhecida comoparametrizacao de Weierstrass. Uma curvanesta formae suave se e somente se4a3 + 27b2 6= 0.

Independentemente de se estar empregando a forma afimou projetiva da curva, sera usada a notacao O para denotar

Page 107: Demonstra¸c˜oes Distribu´ıdas de Car´ater Primo em Larga ... fileUniversidade Estadual de Londrina Centro de Tecnologia e Urbanismo Departamento de Engenharia El´etrica D´ecio

XXI SIMPOSIO BRASILEIRO DE TELECOMUNICACOES-SBT2004, 06-09 DE SETEMBRO DE 2004, BELEM, PA

o ponto no infinito que ocorre na forma projetiva da curva.Temos entao:

Definicao 2.1: Uma curva cubica suave da forma (2), comcoeficientes pertencentes a um corpoF e pelo menos umasolucao com coordenadas emF nao simultaneamente nulas,edita uma curva elıptica sobreF . Se a caracterıstica deF naofor 2 ou 3, a equacao (3) tambem define uma curva elıpticasobreF , contanto que4a3 + 27b2 6= 0. Denota-se porE(F )o conjunto de pontos com coordenadas emF que satisfazema equacao, adicionado do ponto no infinitoO. Ou seja,

E(F ) = {(x, y) ∈ F × F : y2 = x3 + ax + b} ∪ {O}.

A. O Grupo de Pontos de uma Curva Elıptica

O interesse criptografico nas curvas elıpticas surge dadefinicao de uma certa operacao sobre os pontos do conjuntoE(F ) dado pela Definicao 2.1, dando origem a um grupoabeliano. Parte-se de uma interpretacao geometrica para aoperacao do grupo quandoF = R, a partir da qual seraodeduzidas expressoes validas em qualquer corpo, ainda quea interpretacao geometrica perca o sentido. A operacao dogrupo sobre dois pontos distintose feita tracando uma reta quecontenha ambos os pontos, obtendo uma terceira intersecaodesta reta com a curva. Este pontoe entao refletido atraves doeixo x. Quando os pontos sao os mesmos, a reta empregadaea tangentea curva nesse ponto. A notacao padrao na literaturapara a operacao deste grupoe aditiva. Apos um pouco degeometria analıtica e algebra, obtem-se:

Definicao 2.2: SejaE(F ) uma curva elıptica definida pelaequacao (3) sobre um corpoF de caracterıstica diferente de2 e 3, e P1 = (x1, y1), P2 = (x2, y2) dois pontos naonecessariamente distintos sobre esta curva. Denotando porO oponto no infinito, define-se uma operacao comutativa+, comoperacao inversa−, como segue:

1. −P1 = (x1,−y1);2. P1 + P2 = (x3, y3), com

x3 = m2 − x1 − x2

y3 = m(x1 − x3)− y1,

onde ainclinacao m e definida por

m =

{y2−y1x2−x1

, sex1 6= x2

3x21+a

2y1, sex1 = x2.

E uma consequencia surpreendente que a operacao assimdefinida, em conjunto comE(F ), forme um grupo. Ademais,e conhecido um profundo teorema a respeito da ordem dessegrupo:

Teorema 2.3 (Hasse):A ordem#E(Fpk) do grupo de pon-tos de uma curva elıptica satisfaz a desigualdade

|#E − (pk + 1)| ≤ 2√

pk

Essencialmente, o teorema de Hasse afirma que a ordem dogrupo e proxima da caracterıstica do corpo-base.

B. Curvas Elıpticas com Multiplicacao Complexa

Seja −D um discriminante fundamental, i.e.D ≡3, 4, 7, 8, 11, 15 (mod 16) e D nao possui fatores primos

ımpares repetidos, e sejap um primo. Caso existamu, v ∈ Ztal que4p = u2 + Dv2 (o algoritmo de Cornacchia[7], [6]pode ser empregado para obter estes valores), entao existemcurvas elıpticas tais que

#E =

p + 1± u, p + 1± (u± 3v)/2 seD = 3,

p + 1± u, p + 1± 2v seD = 4,

p + 1± u seD > 4.

(5)

A teoria fornece entao metodos eficientes para a construcaode curvas com as ordens de grupo indicadas.

III. O A LGORITMO ECPPDE ATKIN -MORAIN

O seguinte teorema, fruto do trabalho de Goldwasser eKilian [8] numa primeira versao (teorica) do ECPP,e crucialpara o algoritmo:

Teorema 3.1:Sejan > 1 um inteiro relativamente primo a6 eE(Fn) uma curva elıptica modulon. Sejamm um inteiroe P ∈ E(Fn) um ponto da curva satisfazendo as seguintescondicoes:

1. Existe um fator primoq de m tal que

q >(

4√

n + 1)2

.

2. mP = O.3. (m/q)P 6= O.

Entao n e primo.Cason nao seja primo, a curva elıptica E(Fn) nao forma

um grupo, e nao sera possıvel satisfazer as condicoes doteorema.

A estrategia do algoritmo ECPPe construir diversas curvaselıpticas, ate obter uma ordem de grupom = #E(Fn) queseja fatoravel na pratica e que possua um fator pseudoprimop0 satisfazendo as condicoes do Teorema 3.1. Pela aplicacaodo teorema, obtem-se um certificado do tipo “sep0 e primo,entao n e primo”. Aplica-se o procedimento recursivamentesobrep0 para obter um certificado do tipo “sep1 e primo,entao p0 e primo”. Dessa maneira, constroi-se uma cadeia decertificados. . . → p2 → p1 → p0 → n, ate atingir pk ’scujo tamanho permita uma demonstracao de carater primo pormetodos mais simples, como o crivo de Eratostenes.

Na versao atual do ECPP, a construcao das curvas elıpticasemprega o metodo de multiplicacao complexa exposto acima[9]. O metodo envolve a aplicacao do algoritmo de Cornacchiapara obtencao da ordem do grupo, que sem modificacoes erelativamente custoso, por envolver uma raiz quadrada mod-ular. Uma ideia atribuıda a J. Shallite a construcao de umabase de fatores e raızes quadradas modulares precomputadas,combinando-se os elementos dessa base para a construcaode discriminantes, e removendo o custo das raızes quadradasda aplicacao do algoritmo de Cornacchia. Incidentalmente,discriminantes compostos de diversos fatores primos sao de-sejaveis na construcao da curva elıptica implıcita no Teorema3.1, por motivos descritos na secao V-B.

Um resumo do algoritmoe dado abaixo, para referenciafutura. A entradae o pseudoprimo atual na cadeia de certi-ficados, digamospi, e a saıda e o proximo pseudoprimo nacadeia,pi+1.

Page 108: Demonstra¸c˜oes Distribu´ıdas de Car´ater Primo em Larga ... fileUniversidade Estadual de Londrina Centro de Tecnologia e Urbanismo Departamento de Engenharia El´etrica D´ecio

XXI SIMPOSIO BRASILEIRO DE TELECOMUNICACOES-SBT2004, 06-09 DE SETEMBRO DE 2004, BELEM, PA

1. Construa a base de fatores dos discriminantes,Q ={q∗1 , q∗2 , . . . , q∗r} para umr qualquer, e precompute asraızes quadradas modulo pi da base de fatores,S ={√

q∗1 ,√

q∗2 , . . . ,√

q∗r}.2. Construa discriminantes−Dj como produtos de sub-

conjuntos deQ, tentando representa-los na forma4qi =u2 + Djv

2.3. Para os discriminantes que possuem uma representacao

nessa forma, tente fatorar as possıveis ordens de grupo(5), buscando um inteiro da formax = mqi+1, onde ocofatorqi+1 e um pseudoprimo que satisfaz as condicoesdo Teorema 3.1.

4. Construa uma curva elıptica com a ordem de grupoobtida no item anterior, e verifique as condicoes doTeorema 3.1 para essa curva e um ponto escolhido aoacaso.

5. Se as condicoes do teorema forem satisfeitas, o algo-ritmo termina com resultadoqi+1.

Se o algoritmo esgotar os discriminantes possıveis, existemtres saıdas: repetir as computacoes sobre os discriminantesexistentes (aplicando um esforco maior na busca de fatoresgrandes das ordens de grupo), estender a base de fatores, ouvoltar atras na cadeia de certificados.

IV. PARALELIZAC AO DO ECPP

Em teoria, o ECPP pode ser paralelizado sem esforco.Epossıvel distribuir os subconjuntos do item 2 do algoritmoentre diversos computadores e, a rigor, nao e necessarioesperar a confirmacao das condicoes do Teorema 3.1 para oprocedimento do algoritmo, uma vez que uma falha naquelepasso do algoritmoe rara e implicaria no termino da tentativade demonstracao do carater primo do numero em questao.

Porem, surgem certas dificuldades de ordem pratica parauma implementacao de larga escala com servidor central, emparticular a repeticao das precomputacoes do item 1 em cadacliente, e o desperdıcio de computacoes durante a transicao deum pseudoprimo para outro na cadeia deqi’s, uma vez quetodos os computadores da rede precisam ser avisados quandoda ocorrencia dessa transicao. Tambeme desejavel evitar umasobrecarga do servidor central para nao limitar a escalabilidadeda rede. Assim, propoe-se o uso de uma arquitetura de redede multiplos nıveis, com um servidor central no topo,proxiesnos nıveis do meio e os clientes em baixo. As vantagens saomultiplas:

1. o onus da transferencia de dadose reduzido nos nıveissuperiores deproxies, uma vez que os mesmos soprecisam se comunicar com outrosproxiese nao direta-mente com os clientes;

2. relacionado a isso, torna-se viavel propagar um aviso detransicao na cadeia de certificacao, ao inves de esperarnova comunicacao provinda dos clientes;

3. o servidor central so precisa ficar exposto ao primeironıvel de proxies da rede (supostamente instalacoesconfiaveis), aumentando a seguranca do sistema.

4. as precomputacoes do passo 1 podem ser efetuadas nosproxies e transmitidas para os clientes;

5. e viavel realizar verificacoes parciais dos resultadoscomputados pelos clientes, na busca de maquinas comdefeito ou tentativas de trapaca.

Ate onde os autores tem conhecimento, essa arquitetura derede nao foi proposta na literatura especializada uma vez quenao ha trabalhos estudando implementacoes de larga escalacomo essa.

V. I MPLEMENTACAO

O programa encontra-se em fase de implementacao. Umavez que o programa sera distribuıdo sob a licenca GNU GPL,e possıvel reutilizar codigo de outros projetos distribuıdos sobesta licenca. Istoe vantajoso, uma vez quee possıvel encontrarcodigo de altıssima qualidade, como por exemplo o programaGMP-ECM [2], do qual foi empregado o codigo de fatoracaode inteiros usando o algoritmop− 1, e a biblioteca TrolltechQt [10], empregada para desenvolvimento da interface deusuario do programa. Outros projetos de software livre usadosna implementacao do programa incluem a biblioteca GNUCommon C++ e o banco de dados PostgreSQL.

Expomos a seguir os algoritmos empregados na confeccaodo programa.

A. Fatorando a ordem de grupo

Para a tarefa de fatoracao das potenciais ordens de grupo,os principais algoritmos disponıveis sao trial division, Pollardrho [11], Pollard p-1 [12] e ECM [13]. A implementacao detrial division gera o produto de diversos primos pequenos ecalcula o MDC do inteiro sendo fatorado com este produto.A implementacao de Pollard rho utiliza a tecnica de buscade ciclos de Brent [14]. Como mencionado, foi empregada aimplementacao do programa GMP-ECM do algoritmo Pollardp-1. O algoritmo ECM, embora implementado no programaGMP-ECM, nao e utilizado ainda.

A selecao de parametros e a divisao de tempo entreesses algoritmose crucial para maximizar a eficiencia doprocedimento da fatoracao das ordens de grupo. Como aimplementacao ainda nao esta completa, nao foram realizadosexperimentos nesse sentido ainda.

B. Gerando curvas elıpticas com multiplicacao complexa

Para verificar as condicoes do teorema 3.1,e preciso con-struir uma curva elıptica sobreFqi

com a ordem de grupoindicada, empregando a teoria de multiplicacao complexa. Oprocedimentoe o seguinte:

• construir opolinomio de classe, um polinomio com co-eficientes inteiros cujas raızes geram o corpo quadraticoimaginario Q(

√−D);

• Reduzir os coeficientes do polinomio modulo qi;• Encontrar uma raiz desse polinomio emFqi

;• Calcular os coeficientes da curva a partir dessa raiz.

Para o passo 1, o procedimento tradicionale a construcaodo chamado polinomio de Hilbert. No entanto, os coefi-cientes deste polinomio tendem a ser muito grandes, exigindocomputacao em alta precisao, o que leva a um desperdıciode tempo e espaco (memoria). Na pratica sao empregados

Page 109: Demonstra¸c˜oes Distribu´ıdas de Car´ater Primo em Larga ... fileUniversidade Estadual de Londrina Centro de Tecnologia e Urbanismo Departamento de Engenharia El´etrica D´ecio

XXI SIMPOSIO BRASILEIRO DE TELECOMUNICACOES-SBT2004, 06-09 DE SETEMBRO DE 2004, BELEM, PA

outros polinomios, como os polinomios de Weber e outros,baseados em diferentesinvariantes de classe. Nesse sentido,um conjunto de invariantes foi padronizado pelo IEEE nodocumento p1363, na qual baseamos nossa implementacao.

Resumidamente, o processo envolve a geracao das raızescomplexas do polinomio, a partir dos invariantes de classeaplicados a cada elemento do grupo de classe do discriminanteassociado, e a posterior reconstrucao desse polinomio a partirde suas raızes. Os calculos sao realizados em ponto flutuantede precisao multipla, levantando duas grandes questoes:

• qual e a precisao mınima requerida para o processo?• quais os melhores algoritmos nessa faixa de precisao?

Quantoa primeira questao, embora existam estimativas naliteratura, elas nao sao de valor pratico. A tecnica empregadaem nossa implementacao, que ate onde sabemose inedita,envolve o calculo do polinomio em baixa precisao, que podeser feito rapidamente, para obter uma estimativa da magnitudedos coeficientes do mesmo. Essa estimativa, somada a umamargem de seguranca (cujo valorotimo ainda esta sendoestudado, mas parece ser da ordem de

√h, o numero de classe

do discriminante em questao),e entao utilizada para o computofinal do polinomio.

A segunda questao e abordada a seguir.1) Aritmetica de polinomios com coeficientes complexos:A

aritmetica dos coeficientese realizada pela propria bibliotecaGMP, restando apenas a questao da aritmetica de polinomios.As unicas operacoes necessarias para a reconstrucao dopolinomio a partir de suas raızes sao a multiplicacao, somae subtracao (as duasultimas como rotinas auxiliares para arotina de multiplicacao). As algoritmos de soma e subtracaosao os algoritmos classicos, enquanto que para multiplicacao,sao empregados tres algortimos diferentes: classico, Karatsubae convolucoes por FFT.

O algoritmo classico multiplicaa(x) =∑m

i=0 aixi por

b(x) =∑n

j=0 bjxj , resultando num polinomio c(x) =

a(x)b(x)∑m+n

k=0 ckxk atraves da avaliacao da expressao

ck =k∑

i=0

aibk−i. (6)

No entanto, o tempo de execucao desse algoritmoe propor-cional amn, sendo deixado para tras pelo algoritmo de Karat-suba mesmo para pequenos valores dem e n. O algoritmo deKaratsubae baseado na observacao quee possıvel particionarum polinomio em duas partes, digamosaL(x) =

∑bm/2ci=0 aix

i

e aH(x) =∑dm/2e

j=0 aj+bm/2c+1xj , e de maneira semelhante

para bL(x) e bH(x). Seja n = bm/2c + 1. O polinomioresultantec(x) e calculado pela expressao

c = aHbHx2n + aLbL + (7)

+ ((aH + aL)(bH + bL)− aLbL − aHbH)xn.

Esta expressao envolve apenas tres multiplicacoes depolinomios, e nao as quatro esperadas, e pode ser aplicadarecursivamente. O tempo de execucao e entao da ordem demax(m,n)log2 3 ≈ max(m,n)1,58. Durante a implementacao,foi observado que o terceiro termo do lado direito da equacao7 gera o problema de cancelamento em ponto flutuante, o que

leva a perda de precisao. Assim, pode ser desejavel ajustar olimiar de transicao em favor do algoritmo classico (a despeitode seu tempo de execucao maior), para evitar esse problema.

Existe tambem um algoritmo com tempo de execucao pro-porcional amax(m,n) log max(m,n), baseado na observacaode que convolucoes no domınio da frequencia podem serefetudas de maneira bastante eficiente (multiplicacao ponto-a-ponto dos elementos dos vetores sendo convoluıdos), e que aconversao entre o domınio do tempo e o domınio da frequenciatambem pode ser efetuado de maneira eficiente atraves doalgoritmo FFT. Nossa implementacao utiliza um FFT split-radix, uma das variantes mais eficientes, com planos paraimplementacao de um FFT four-step no futuro, para permitirexecucao paralela em sistemas SMP.

Mencionamos de passagem que a literatura nao mencionanenhuma implementacao que utiliza FFTs para multiplicacaode polinomios, embora nossa implementacao tenha mostradoum ganho bastante significativo por conta disso. Naturalmente,os ganhos do FFT so vem a ser realizados para discriminantesmaiores, de modo que outros implementadores podem estarsatisfeitos com o desempenho do algoritmo de Karatsuba se afaixa de discriminantes for limitada.

2) Aritmetica de polinomios com coeficientes deFp: Opasso 3 do algoritmo de construcao de curvas acima exigea obtencao de uma raiz de um polinomio com coeficientesprovindos de um corpo finitoFp. O algoritmo empregadoeo de Cantor e Zassenhaus, que busca uma raiz de graud dopolinomio W (x) atraves do calculo de

mdc(W,T (pd−1)/2 − 1),

ondeT e um polinomio tomado aleatoriamente deFp[x],e a exponenciacao indicadae realizada modulo W . Assim,e necessario implementar rotinas de aritmetica de polinomiospara a aplicacao do algoritmo de Cantor e Zassenhaus, em par-ticular algoritmos de soma e subtracao, multiplicacao, reducaomodular e mdc. Destes, apenas a escolha dos algoritmos desoma e subtracao e trivial, uma vez que o desempenho dosalgoritmos classicose satisfatorio. A escolha do algoritmode mdc tambem e imediata, empregando-se o algoritmo deEuclides.

Para o algoritmo de multiplicacao, foi empregado ummetodo conhecido porsegmentacao binaria [6]. Neste metodo,sao construıdo inteiros a partir dos coeficientes dos polinomiosa serem multiplicados, e a multiplicacao dos doise feitausando uma rotina de multiplicacao de inteiros, reconstruindoo polinomio produto a partir do resultado desta operacao.A vantageme que e possıvel utilizar a mesma rotina paramultiplicacao de inteiros e multiplicacao de polinomios (nessecaso, a rotina do GMP), concentrando todos os esforcos deotimizacao nessa rotina.

Resta entao a rotina de exponenciacao, que emprega reducaomodular como subrotina. Inicialmente foi implementado umalgoritmo de exponenciacao esquerda-direita [6], [7], emboraum algoritmo mais eficiente deva ser implementado no futuro.Para reducao modular,e empregada uma tecnica remanescentedos metodos de Newton para divisao, descrita em [6, Alg.9.6.4].

Page 110: Demonstra¸c˜oes Distribu´ıdas de Car´ater Primo em Larga ... fileUniversidade Estadual de Londrina Centro de Tecnologia e Urbanismo Departamento de Engenharia El´etrica D´ecio

XXI SIMPOSIO BRASILEIRO DE TELECOMUNICACOES-SBT2004, 06-09 DE SETEMBRO DE 2004, BELEM, PA

C. Projetos em andamento

Algumas melhoras cruciais para a eficiencia do programaestao em fase de planejamento ou implementacao. Sao elas:

• determinacao da precisao mınima necessaria para ocomputo dos polinomios de Weber;

• implementacao de invariantes de classe alternativos, paraobtencao de polinomios de menor grau;

• fatoracao sobre o corpo de genero, que reduz o grau dopolinomio de Weber gerado [9];

• multiplicacao mais eficiente de inteiros gigantescos ([15]relata uma melhora significativa pela substituicao da roti-nas de multiplicacao da biblioteca GMP por multiplicacaousando FFTs da biblioteca FFTW);

• ajustes nos parametros das rotinas de fatoracao de in-teiros.

VI. RESULTADOS PRELIMINARES

Ate este momento, os esforcos dispendidos naimplementacao foram concentrados na geracao dos polinomiosde classe, a mais custosa subrotina envolvida na verificacaodas condicoes do teorema 3.1. Para verificacao da correcaoda implementacao, foram geradas diversas curvas elıpticascom multiplicacao complexa, e foi verificado que suas ordensde grupo coincidissem com os valores esperados atravesdo sistema PARI/GP, que inclui facilidades para aritmeticaelıptica. Destes, o resultado mais interessante foi a geracaode uma curva elıptica com multiplicacao complexa por√−5000500423. Os autores tem conhecimento de apenas

um esforco semelhante [16], porem com discriminante maisbaixo (-1000004099). A caracterıstica do corpo basee801819385093403524905014779542892948310645897957,a ordem do grupoe 801819385093403524905014367592-618830819049962784 e a equacao da curvae y2 = x3 +711559983408124438501193588840331868725406278023x−638081151684080295558784651392045096297528964752.A computacao toda foi realizada em 27h25m em umcomputador Intel Pentium 4 2.6 GHz com 1 GB de memoria,rodando o sistema operacional Linux.

Alguns dados a respeito desta computacao: o numero declasse do discriminante em questao e 29098, o mesmo graudo polinomio obtido. Inicialmente o polinomio foi calculadocom precisao de 128 bits, levando menos de um minuto paratanto. Com base nesse calculo, a precisao estimada para acomputacao real foi 42208 bits. A obtencao das raızes dopolinomio nao foi cronometrada, mas levou em torno de 20horas. A construcao do polinomio a partir de suas raızes levou6h10m. O tempo de reducao modular dos coeficientes dopolinomio e insignificante, assim como o tempo de construcaoda curva dado uma raiz desse polinomio, sobrando um tempode aproximadamente 1 hora para a extracao dessa raiz peloalgoritmo de Cantor-Zassenhaus.

REFERENCIAS

[1] Alfred J. Menezes. Elliptic curve cryptosystems.ftp://ftp.rsa.com/pub/cryptobytes/crypto1n2.pdf , 1995.

[2] Paul Zimmermann. The ECMNET project.http://www.loria.fr/˜zimmerma/records/ecmnet.html .

[3] Stefania Cavallar, Bruce Dodson, Arjen K. Lenstra, Walter M. Lioen,Peter L. Montgomery, Brian A. Murphy, and Herman J. J. te Riele et al.Factorization of a 512-bit RSA modulus. Technical Report MAS-R0007,Centrum voor Wiskunde en Informatica, February 2000.

[4] Mike Oakes. ECPP proof of 7760-digit Euler-irregularprime. Comunicacao a lista de discussao NMBRTHRY,http://listserv.nodak.edu/scripts/wa.exe?A2=ind0407&L=nmbrthry&F=&S=&P=%2292 .

[5] Francois Morain. A new large primality proof usingfastECPP. Comunicacao a lista de discussao NMBRTHRY,http://listserv.nodak.edu/scripts/wa.exe?A2=ind0407&L=nmbrthry&F=&S=&P=%2165 .

[6] Richard Crandall and Carl Pomerance.Prime Numbers: A Computa-tional Perspective. Springer-Verlag, New York, 2000.

[7] Henri Cohen. A Course in Computational Algebraic Number Theory,volume 138 of Graduate Texts in Mathematics. Springer, Berlin,Heidelberg, New York, third edition, 1996.

[8] S. Goldwasser and J. Kilian. Almost all primes can be quickly certified.In Proceedings of the 18th Annual ACM Symposium on the Theory ofComputing, pages 316–329, 1986.

[9] A. O. L. Atkin and Francois Morain. Elliptic curves and primalityproving. Mathematics of Computation, 61(203):29–68, 1993.

[10] Trolltech. Qt application framework.http://www.trolltech.com.

[11] John M. Pollard. A Monte Carlo method for factorization.NordiskTidskr. Informationsbehandling (BIT), 15:331–334, 1975.

[12] John M. Pollard. Theorems on factorization and primality testing. InProceedings of the Cambridge Philosophical Society, volume 76, pages521–528, 1974.

[13] Hendrik W Lenstra Jr. Factoring integers with elliptic curves.Annalsof Mathematics, 2:649–673, 1987.

[14] Richard P. Brent. An improved Monte Carlo factorization algorithm.Nordisk Tidskr. Informationsbehandling (BIT), 20:176–184, 1980.

[15] Jens Franke, T. Kleinjung, Francois Morain, and T. Wirth.Proving the primality of very large numbers with fastECPP.ftp://lix.polytechnique.fr/pub/submissions/morain/Preprints/large.ps.gz% , 2004. Manuscript.

[16] Reynald Lercier. Elliptic curves with complex multiplication.Comunicacao a lista de discussao NMBRTHRY, http://listserv.nodak.edu/scripts/wa.exe?A2=ind0401&L=nmbrthry&F=&S=&P=%1098 .

Page 111: Demonstra¸c˜oes Distribu´ıdas de Car´ater Primo em Larga ... fileUniversidade Estadual de Londrina Centro de Tecnologia e Urbanismo Departamento de Engenharia El´etrica D´ecio

90

Referencias

1 KNUTH, D. E. The Art of Computer Programming: Seminumerical Algorithms.Terceira edicao. [S.l.]: Addison-Wesley, 1997.

2 CRANDALL, R.; POMERANCE, C. Prime Numbers: A Computational Perspective.New York: Springer-Verlag, 2000.

3 JONES, G. A.; JONES, J. M. Elementary Number Theory. New York: Springer-Verlag,1998. (Springer Undergraduate Mathematics Series).

4 AGRAWAL, M.; KAYAL, N.; SAXENA, N. PRIMES is in P. 2002. http://www.cse.iitk.ac.in/news/primality_v3.pdf.

5 MENEZES, A. J.; OORSCHOT, P. C. van; VANSTONE, S. A. Handbook of AppliedCryptography. [S.l.]: CRC Press, 1997.

6 HENNESSY, J. L.; PATTERSON, D. A. Arquitetura de Computadores: umaAbordagem Quantitativa. Rio de Janeiro: Editora Campus, 2003.

7 PACHECO, P. S. Parallel Programming with MPI. San Francisco: Morgan Kaufmann,1997.

8 DISTRIBUTED.NET. http://www.distributed.net.

9 SETI@HOME. http://setiathome.ssl.berkeley.edu.

10 GREAT Internet Mersenne Prime Search. http://www.mersenne.org.

11 DUMMIT, D. S.; FOOTE, R. M. Abstract Algebra. Segunda edicao. New York: JohnWiley and Sons, 1999.

12 COHEN, H. A Course in Computational Algebraic Number Theory. Terceira edicao.Berlin, Heidelberg, New York: Springer, 1996. (Graduate Texts in Mathematics, v. 138).

13 GOLDWASSER, S.; KILIAN, J. Almost all primes can be quickly certified. In:Proceedings of the 18th Annual ACM Symposium on the Theory of Computing. [S.l.:s.n.], 1986. p. 316–329.

14 ATKIN, A. O. L.; MORAIN, F. Elliptic curves and primality proving. Mathematicsof Computation, v. 61, p. 29–68, 1993.

15 GRANTHAM, J. A probable prime test with high confidence. Journal of NumberTheory, v. 72, p. 32–47, 1998.

16 MORAIN, F. Implementing the asymptotically fast version ofthe elliptic curve primality proving algorithm. 2004. Disponıvel em:<http://www.lix.polytechnique.fr/Labo/Francois.Morain/Articles/fastecpp040825.pdf>.

Page 112: Demonstra¸c˜oes Distribu´ıdas de Car´ater Primo em Larga ... fileUniversidade Estadual de Londrina Centro de Tecnologia e Urbanismo Departamento de Engenharia El´etrica D´ecio

91

17 FRANKE, J. et al. Proving the primality of very large numbers with fastECPP. In:Algorithmic Number Theory – Proceedings of ANTS 2004. [S.l.: s.n.], 2004. p. 194–207.

18 MORAIN, F. Distributed primality proving and the primality of (23539 + 1)/3. In:DAMGARD, I. (Ed.). Advances in Cryptology – Proceedings of EUROCRYPT ’90. NewYork: Springer-Verlag, 1991. (Lecture Notes in Computer Science, v. 473), p. 110–123.

19 SCHOOF, R. Elliptic curves over finite fields and the computation of square rootsmodulo p. Mathematics of Computation, v. 44, p. 483–494, 1985.

20 INSTITUTE OF ELECTRICAL AND ELECTRONICS ENGINEERS. StandardSpecifications for Public Key Cryptography. Rascunho versao 13. [S.l.], 1999.

21 MARTIN, M. Comunicacao privada. 2004.

22 DWORK, C.; NAOR, M. Pricing via processing or combatting junk mail. In:Advances in Cryptology – Proceedings of CRYPTO ’92. New York: Springer-Verlag,1993. (Lecture Notes in Computer Science, v. 740), p. 137–147.

23 WILLIAMS, H. C. A modification of the RSA public-key encryption procedure.IEEE Transactions on Information Theory, v. 26, p. 726–729, 1980.

24 BERNSTEIN, D. J. A secure public-key signature system with extremely fastverification. 1997. Disponıvel em: <http://cr.yp.to/papers/sigs.pdf>.

25 BERNSTEIN, D. J. Proving tight security for standard Rabin-Williams signatures.2003. Disponıvel em: <http://cr.yp.to/sigs/rwtight-20030926.pdf>.

26 STROUSTRUP, B. A Linguagem de Programacao C++. Terceira edicao. PortoAlegre: Bookman, 2000.

27 GNU Multiple Precision Arithmetic Library. http://www.swox.com/gmp.

28 VELDHUIZEN, T. Expression templates. C++ Report, v. 7, n. 5, p. 26–31, Junho1995.

29 MARTIN, M. PRIMO. http://www.ellipsa.net.

30 LOAN, C. V. Computational Frameworks for the Fast Fourier Transform. [S.l.]:SIAM, 1992. (Frontiers in Applied Mathematics).

31 ARNDT, J. The FXT library: Fast transforms and low level algorithms.http://www.jjj.de/fxt/fxtpage.html.

32 PRESS, W. et al. Numerical Recipes in C. [S.l.]: Cambridge University Press, 1996.

33 SHOUP, V. A new polynomial factorization algorithm and its implementation.Journal of Symbolic Computation, v. 20, p. 363–397, 1995.

34 MONTGOMERY, P. L. An FFT Extension of the Elliptic Curve Method ofFactorization. Tese (Doutorado) — University of California, Los Angeles, 1992.

35 BRENT, R. P. Fast multiple-precision evaluation of elementary functions. Journalof the ACM, v. 23, p. 242–251, 1976.

Page 113: Demonstra¸c˜oes Distribu´ıdas de Car´ater Primo em Larga ... fileUniversidade Estadual de Londrina Centro de Tecnologia e Urbanismo Departamento de Engenharia El´etrica D´ecio

92

36 SALAMIN, E. Computation of π using arithmetic-geometric mean. Mathematics ofComputation, v. 30, p. 565–570, 1976.

37 GOURDON, X. Archimedes’ constant π. http://numbers.computation.free.fr/Constants/Pi/pi.html.

38 BRENT, R. P. The complexity of multiple-precision arithmetic. In: ANDERSSEN,R. S.; BRENT, R. P. (Ed.). The Complexity of Computational Problem Solving. Brisbane:University of Queensland Press, 1976. p. 126–165.

39 MORAIN, F. Comunicacao a lista de discussao NMBRTHRY. http://listserv.nodak.edu/scripts/wa.exe?A2=ind0407&L=nmbrthry&F=&S=&P=21%65.

40 MORAIN, F. Courbes elliptiques et tests de primalite. Tese (Doutorado) —Universite de Lyon I, 1990.

41 HANROT, G.; MORAIN, F. Solvability by radicals from an algorithmic point ofview. In: Proceedings of ISSAC 2001. [S.l.]: ACM, 2001. p. 175–182.

Page 114: Demonstra¸c˜oes Distribu´ıdas de Car´ater Primo em Larga ... fileUniversidade Estadual de Londrina Centro de Tecnologia e Urbanismo Departamento de Engenharia El´etrica D´ecio

93

Indice Remissivo

(Z/nZ)∗

comutatividade, 20condicao para ser cıclico, 20definicao, 20ordem, 20

Qn

como subgrupo de (Z/nZ)∗, 21descricao quando (Z/nZ)∗ e cıclico,

21Z/nZ

definicao, 16π(x), 14

AKS, 47algoritmo de divisao, 11algoritmo de Euclides, 12APR-CL, 47aritmetica modular, 11

implementacao, 18

cadeia binaria de Lucas, 43certificados de carater primo, 46compostos, veja numeros compostoscongruencia

aritmeticadivisao, 17exponenciacao, veja exponenciacao

modularinversao, veja inversao modularusando o Teorema Chines do Resto,

18validade, 16

como relacao de equivalencia, 15definicao, 15

coprimos, 13corpo

caracterıstica, 10definicao, 9extensao de, 11finito

caracterıstica, 10definicao, 10grupo multiplicativo de, 10implementacao, 10isomorfismo, 10, 11

Crivo de Eratostenes, 1curva elıptica

aritmeticacontagem de operacoes, 33coordenadas afins, 32coordenadas projetivas, 33

definicao, 28determinacao de um ponto sobre, 31discriminante, 26forma afim, 27forma projetiva, 27

classe de equivalencia de solucoes,27

grupo de pontosdefinicao, 29estrutura algebrica, 30expressoes para operacao de grupo,

29limites para a ordem do grupo, 31

lei de grupo, 28parametrizacao de Weierstrass, 26ponto no infinito, 27relacao entre solucoes afins e projeti-

vas, 27sobre um anel, 48

divisao euclidiana, veja algoritmo de di-visao

divisibilidadedefinicao, 11propriedades, 12

divisor comum, 12

ECDH, 26ECDSA, 26

Page 115: Demonstra¸c˜oes Distribu´ıdas de Car´ater Primo em Larga ... fileUniversidade Estadual de Londrina Centro de Tecnologia e Urbanismo Departamento de Engenharia El´etrica D´ecio

94

ECM, 26ECPP, 26endomorfismo, 52exponenciacao modular

algoritmo, 16definicao, 16

funcao φ de Eulerdefinicao, 19propriedades, 19valor quando o argumento e com-

posto, 19valor quando o argumento e potencia

de primo, 19

grupoabeliano, 5cıclico

definicao, 8isomorfismo a Z/nZ, 8propriedades, 8, 9

definicao, 5homomorfismo, 7isomorfismo, 7

criterio, 7lei de cancelamento, 6notacao, 5ordem

de um elemento, 6do grupo, 6

potencias de elementos, 6propriedades, 5

grupo de classe, 53

inversao modular, 17

Lei de Moore, 2lema de Euclides, 12

maximo divisor comum, 12matriz simetrica reduzida, 53multiplicacao complexa

discriminante fundamental, 52relacao entre discriminantes funda-

mentais e reduzidos, 52

numero de classe, 53numeros compostos

definicao, 1

maior fator primo de, 14numeros de Carmichael, 39numeros primos

definicao, 1distribuicao dos, 14infinitude dos, 14

nao-singularidade, 26

Pequeno Teorema de Fermat, 20polinomio

criterio de irredutibilidade, 11polinomio reduzido de classe, 54polinomios sobre Z/nZ

numero de raızes, 19primos, veja numeros primospseudoprimo

de Fermat, 39definicao, 37forte, 40forte de Frobenius, 44

raızes quadradas modularescalculo, 24modulo composto, 25numero de, 21

raiz primitiva(Z/nZ)∗, 20

numero de raızes primitivas em, 21teste para, 21

F∗pk , 10numero de raızes primitivas em, 10teste para, 10

reciprocidade quadratica, 23relativamente primos, 13resıduos quadraticos

definicao, 21o conjunto Qn de, veja Qn

sımbolo de Jacobicalculo, 23definicao, 22propriedades, 22

sımbolo de Legendrecalculo, 22definicao, 21propriedades, 22

sequencia de Fibonacci, 41sequencia de Lucas, 41

Page 116: Demonstra¸c˜oes Distribu´ıdas de Car´ater Primo em Larga ... fileUniversidade Estadual de Londrina Centro de Tecnologia e Urbanismo Departamento de Engenharia El´etrica D´ecio

95

subgrupo, 7estrutura de subgrupos de um grupo

cıclico, 9

Teorema Chines do Resto, 18Teorema de Fermat-Euler, 20

versao sem restricoes sobre mdc(a, n),20

teorema de Goldwasser-Kilian, 48

teorema de Pocklington, 45Teorema dos Numeros Primos, 14Teorema Fundamental da Algebra, 19Teorema Fundamental da Aritmetica, 1teste de carater pseudoprimo, 37

de Fermat, 38de Frobenius, 41de Lucas, 41forte, 39