• Nenhum resultado encontrado

Caráter Primo em Larga Escala

N/A
N/A
Protected

Academic year: 2021

Share "Caráter Primo em Larga Escala"

Copied!
116
0
0

Texto

(1)

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

(2)

Demonstra¸

oes Distribu´

ıdas de Car´

ater

Primo em Larga Escala

Monografia apresentada ao curso de Enge-nharia El´etrica da Universidade Estadual de Londrina, como parte dos requisitos obri-gat´orios `a obten¸c˜ao do t´ıtulo de Engenheiro Eletricista com ˆenfase em Eletrˆonica.

Orientador:

Prof. Dr. Taufik Abr˜

ao

Universidade Estadual de Londrina Centro de Tecnologia e Urbanismo Departamento de Engenharia El´etrica

(3)

dezembro de 2004, em Londrina, Paran´a, pela banca examinada constitu´ıda por:

Prof. Dr. Taufik Abr˜ao

Departamento de Engenharia El´etrica Universidade Estadual de Londrina

Prof. Dr. Marcelo C. Tosin Departamento de Engenharia El´etrica

Universidade Estadual de Londrina

(4)

Aos meus pais, pelo apoio, ofere¸co as curvas el´ıpticas y2 = x3+ 13054261938312812691x + 963383165173305403 e y2 = x3+735926429366195334x+3969032983146139007 e seus res-pectivos twists quadr´aticos, que possuem multiplica¸c˜ao complexa por√−10000129528 e √

(5)

Seja p = 264 − 232+ 1. Todas as curvas el´ıpticas nesta p´agina s˜ao consideradas sobre

Z/pZ.

Aos professores Alfred J. Menezes e Darrel Hankerson, por suas palestras no WCAP’03, ofere¸co a curva el´ıptica y2 = x3 + 8790001982112083917x + 8349894620916661678 e seu

twist quadr´atico, que possuem multiplica¸c˜ao 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, ofere¸co a curva el´ıptica y2 = x3 + 10924466306691629096x + 3175821044523403166 e seu twist quadr´atico, que possuem multiplica¸c˜ao 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 incont´aveis horas de estudo, divers˜ao e inspira¸c˜ao, ofere¸co a curva el´ıptica y2 = x3 + 11517119120719506208x + 13728644060085970144 e seu twist quadr´atico, que possuem multiplica¸c˜ao complexa por √−3006633688 e ordens de grupo p + 1 ± 4299605922.

A Donald E. Knuth, por compartilhar seu imenso conhecimento de matem´atica e ciˆencia da computa¸c˜ao atrav´es da magn´ıfica obra “The Art Of Computer Programming”, e por seu sistema TEX de editora¸c˜ao, ofere¸co a curva el´ıptica y2 = x3+10137799566473223720x+

4563733166242538527 e seu twist quadr´atico, que possuem multiplica¸c˜ao 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, ofere¸co a curva el´ıptica y2 = x3+ 8299992258113520866x + 17162086221645221008

e seu twist quadr´atico, que possuem multiplica¸c˜ao complexa por√−5022511288 e ordens de grupo p + 1 ± 4727927074.

A Olivier Atkin e Fran¸cois Morain, pelo seminal trabalho “Elliptic Curves and Primality Proving”, ofere¸co a curva el´ıptica y2 = x3+12761264237209647336x+1180621101119968192 e seu twist quadr´atico, que possuem multiplica¸c˜ao complexa por√−6005976568 e ordens de grupo p + 1 ± 2409633978.

(6)

que possuem multiplica¸c˜ao 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 espa¸co deste trabalho ´e curto demais para conter, ofere¸co a curva el´ıptica y2 = x3+ 7384699780321468803x +

3973314206836214173 e seu twist quadr´atico, que possuem multiplica¸c˜ao complexa por √

−8011737892 e ordens de grupo p + 1 ± 6252669216.

Ao professor Taufik Abr˜ao, pelas incont´aveis horas de orienta¸c˜ao e estimulantes disci-plinas ministradas no curso, ofere¸co a curva el´ıptica y2 = x3+ 4101448666275287283 + 14115872962552252516 e seu twist quadr´atico, que possuem multiplica¸c˜ao complexa por √

−9003700612 e ordens de grupo p + 1 ± 3505275976.

A ´Isis Duarte, pela amizade, ofere¸co a curva el´ıptica y2 = x3+ 2610280995158029297x +

5003345793225103561 e seu twist quadr´atico, que possuem multiplica¸c˜ao complexa por √

(7)

Este Trabalho de Conclus˜ao de Curso foi elaborado, durante a 5a s´erie do curso de Engenharia El´etrica, para satisfazer os requisitos obrigat´orios `a obten¸c˜ao do t´ıtulo de Engenheiro Eletricista com ˆenfase em Eletrˆonica.

A proposta inicial do trabalho era o desenvolvimento de um software que contem-plasse todas as etapas necess´arias para a realiza¸c˜ao de demonstra¸c˜oes de car´ater primo em sistemas distribu´ıdos de larga escala (por exemplo, computadores conectados atrav´es da Internet). Infelizmente, n˜ao foi poss´ıvel atingir a meta proposta, apesar que grande parte do c´odigo cient´ıfico necess´ario ao funcionamento rudimentar do sistema foi escrito. Embora o software necessite de otimiza¸c˜ao, a princ´ıpio ´e poss´ıvel obter demonstra¸c˜oes de car´ater primo atrav´es 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 t´opicos como fatora¸c˜ao de inteiros, aritm´etica eficiente de polinˆomios, sistemas de coordenadas eficientes para aritm´etica el´ıptica e outros, necess´arios `a compreens˜ao das t´ecnicas de oti-miza¸c˜ao empregadas no c´odigo do software. Infelizmente, as normas para elabora¸c˜ao do Trabalho de Conclus˜ao de Curso especificam um limite de 40 p´aginas para os elementos textuais do trabalho, e este limite come¸cou a ser observado a partir da posse da nova coordena¸c˜ao de Trabalho de Conclus˜ao de Curso em 2004. Apesar de concess˜oes por parte da coordena¸c˜ao, que permitiu a escrita de at´e 100 p´aginas no total (incluindo os elementos pr´e- e p´os-textuais do trabalho), esse limite se mostrou insuficiente para a es-crita do trabalho conforme originalmente planejado. Al´em dos t´opicos j´a citados no in´ıcio do par´agrafo, alguns pequenos detalhes tiveram de ser removidos para garantir que o tra-balho permanecesse dentro do limite: por exemplo, referˆencias para as demonstra¸c˜oes dos teoremas, representando uma economia de 5 p´aginas, e alguns algoritmos n˜ao considera-dos absolutamente essenciais para o entendimento do trabalho, mesmo sendo consideraconsidera-dos importantes.

(8)

fenˆomeno que claramente ocorre com outros alunos do curso. Vale dizer que a publica¸c˜ao de um artigo no XXI Simp´osio Brasileiro de Telecomunica¸c˜oes demonstra que o traba-lho possui contribui¸c˜oes e que encaixa-se numa das linhas de pesquisa (telecomunica¸c˜oes) permitidas para o Trabalho de Conclus˜ao de Curso.

(9)

Resumo

(10)

Abstract

(11)

Sum´

ario

Lista de S´ımbolos e Abreviaturas p. xii

1 Introdu¸c˜ao p. 1

1.1 Divis˜ao do trabalho . . . p. 2

2 Algebra Abstrata e Teoria dos N´´ umeros p. 4

2.1 Teoria de grupos . . . p. 4 2.1.1 Defini¸c˜ao e propriedades b´asicas . . . p. 5 2.1.2 Aplica¸c˜oes entre grupos . . . p. 6 2.1.3 Subgrupos . . . p. 7 2.1.4 Grupos e subgrupos c´ıclicos . . . p. 8 2.2 Introdu¸c˜ao aos corpos . . . p. 9 2.2.1 Implementa¸c˜ao da aritm´etica de corpos finitos . . . p. 10 2.3 Teoria dos n´umeros . . . p. 11 2.3.1 Divisibilidade . . . p. 11 2.3.2 N´umeros primos . . . p. 14 2.3.3 Congruˆencias e aritm´etica modular . . . p. 15 2.3.4 Polinˆomios com coeficientes em Z/nZ . . . . p. 19 2.3.5 A fun¸c˜ao φ de Euler . . . p. 19 2.3.6 O grupo multiplicativo (Z/nZ)∗ . . . p. 20 2.3.7 Res´ıduos quadr´aticos e ra´ızes quadradas modulares . . . p. 21

(12)

3.1 Aspectos geom´etricos . . . p. 26 3.2 O grupo de pontos de uma curva el´ıptica . . . p. 28 3.3 Algoritmos para aritm´etica 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 car´ater 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 car´ater 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 multiplica¸c˜ao 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 distribui¸c˜ao de dados . . . p. 62 5.3 Computa¸c˜ao em ambientes n˜ao-confi´aveis . . . p. 63

6 Projeto e Implementa¸c˜ao do Sistema p. 67

(13)

6.3.1 Aritm´etica de inteiros e de ponto flutuante . . . p. 71 6.3.2 Algoritmos para teoria dos n´umeros . . . p. 71 6.3.3 Aritm´etica de polinˆomios . . . p. 73 6.3.3.1 Coeficientes complexos em ponto flutuante . . . p. 73 6.3.3.2 Coeficientes modulares . . . p. 74 6.3.4 Constru¸c˜ao dos polinˆomios de classe . . . p. 75 6.3.4.1 Fun¸c˜oes transcendentais . . . p. 77 6.3.5 Aritm´etica el´ıptica . . . p. 78

7 Resultados p. 79

8 Conclus˜ao p. 82

Anexo A -- Artigo Publicado no XXI Simp´osio Brasileiro de

Telecomu-nica¸c˜oes p. 84

Referˆencias p. 90

(14)

Lista de Defini¸

oes

(15)
(16)

Lista de Teoremas, Corol´

arios e

Lemas

1.0.1 Teorema Fundamental da Aritm´etica . . . p. 1 2.1.1 Propriedades de grupos . . . p. 5 2.1.2 Lei de cancelamento para grupos . . . p. 6 2.1.3 Crit´erio 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 b´asicos sobre corpos finitos . . . p. 10 2.2.2 Teste para raiz primitiva em Fpk . . . p. 10

(17)

2.3.10 Validade da defini¸c˜ao da aritm´etica de congruˆencias . . . p. 16 2.3.11 Solu¸c˜oes da congruˆencia bx ≡ a (mod n) com mdc(b, n) = 1 . . p. 17 2.3.12 Congruˆencias m´odulo fatores primos de um inteiro . . . p. 18 2.3.13 Teorema Chinˆes do Resto . . . p. 18 2.3.14 Congruˆencias entre polinˆomios em Z/nZ . . . . p. 19 2.3.15 N´umero de ra´ızes de polinˆomios sobre Z/nZ . . . . p. 19 2.3.16 C´alculo de φ(n) para n = pe . . . p. 19

2.3.17 φ(n) ´e multiplicativa . . . p. 19 2.3.18 C´alculo 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 Vers˜ao do Teorema de Fermat-Euler sem restri¸c˜oes sobre mdc(a, n) p. 20 2.3.22 Defini¸c˜ao, comutatividade e ordem de (Z/nZ)∗ . . . p. 20 2.3.23 Condi¸c˜ao para que (Z/nZ)∗ seja c´ıclico . . . p. 20 2.3.24 Teste para raiz primitiva em (Z/nZ)∗ . . . p. 21 2.3.25 N´umero de ra´ızes primitivas de (Z/nZ)∗ . . . p. 21 2.3.26 N´umero 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 Descri¸c˜ao de Qn quando (Z/nZ)∗ ´e c´ıclico . . . p. 21

2.3.29 Crit´erio de Euler para res´ıduos quadr´aticos . . . p. 22 2.3.30 Propriedades dos s´ımbolos de Legendre e Jacobi . . . p. 22 2.3.31 Lei de reciprocidade quadr´atica . . . p. 23 3.2.1 Grupo de pontos de uma curva el´ıptica . . . p. 29 3.2.2 Estrutura alg´ebrica de E(Fpk) . . . p. 30

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

(18)
(19)

Lista de Algoritmos

(20)

Lista de S´

ımbolos e Abreviaturas

AKS Agrawal-Kayal-Saxena (teste de car´ater primo)

APR-CL Adleman-Pomerance-Rumely Cohen-Lenstra (teste de car´ater primo) BSD Berkeley Software Distribution (licen¸ca)

ECDH Elliptic Curve Diffie-Hellman (criptossistema) ECDSA Elliptic Curve Digital Signature Algorithm ECM Elliptic Curve Method (algoritmo de fatora¸c˜ao)

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 M´aximo 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 m´odulo n

G ∼= H G ´e isomorfo a H

a Classe de congruˆencia de a

(ap) S´ımbolo de Jacobi ou Legendre de a m´odulo p

[x, y, z] Classe de equivalˆencia de solu¸c˜oes projetivas de uma curva el´ıptica D Discriminante (teoria de multiplica¸c˜ao complexa)

n Inteiro

p Primo

pe Potˆencia de primo

O Ponto no infinito de uma curva el´ıptica

O(x) Da ordem de x (nota¸c˜ao assint´otica)

φ(n) Fun¸c˜ao de Euler

(21)

(Z/nZ)∗ Grupo multiplicativo dos inteiros m´odulo n

Z/nZ Grupo aditivo ou corpo/anel dos inteiros m´odulo n

F Corpo

Fpk Corpo de pk elementos

F∗pk Grupo multiplicativo do corpo de pk elementos

F(ω) Extens˜ao de F por ω

Qn Conjunto dos res´ıduos quadr´aticos m´odulo n

E(F) Curva el´ıptica sobre F

H(D) Grupo de classe do discriminante D h(D) N´umero de classe do discriminante D a | b a divide b

|x| Ordem de um elemento x de um grupo

(22)

1

Introdu¸

ao

O problema de distinguir n´umeros primos de compostos, e de separar n´umeros compostos em seus fatores primos, ´e um dos mais importantes e mais ´uteis problemas de toda a aritm´etica . . . A dignidade da ciˆencia parece exigir que qualquer contribui¸c˜ao `a solu¸c˜ao de um problema t˜ao elegante e celebrado seja ferrenhamente cultivada.

C. F. Gauss, Disquisitiones Arithmeticae (1801), in (1) Defini¸c˜ao 1.0.1. Um n´umero primo ´e um inteiro p > 1 que possui exatamente dois divisores, 1 e p. Um inteiro positivo que n˜ao seja primo ´e dito composto, `a exce¸c˜ao do inteiro 1, que ´e considerado simplesmente uma unidade.

A importˆancia dos n´umeros primos para a matem´atica (e por extens˜ao, para a enge-nharia e a computa¸c˜ao) pode ser quantificada por um simples teorema:

Teorema 1.0.1 (Teorema Fundamental da Aritm´etica). Para cada n´umero natural n existe uma fatora¸c˜ao ´unica

n = pa1 1 p a2 2 · · · p ak k ,

onde os expoentes ai s˜ao inteiros positivos e p1 < p2 < · · · < pk s˜ao n´umeros primos.

Crandall e Pomerance (2) reafirmam a importˆancia dos primos ao interpretarem o Teorema Fundamental da Aritm´etica da seguinte maneira: ‘os primos s˜ao os blocos de constru¸c˜ao multiplicativos dos n´umeros naturais’.

(23)

ineficiˆencia ´e a premissa de seguran¸ca de diversos sistemas criptogr´aficos (2, 5), em par-ticular o sistema RSA.

Na pr´atica, os algoritmos conhecidos para demonstra¸c˜ao de car´ater primo deixam a desejar. Como exemplo, considerando um tempo fixo para cada uma das tarefas a seguir, ´e poss´ıvel multiplicar inteiros de bilh˜oes de d´ıgitos, verificar o car´ater pseudoprimo1 de

um inteiro de centenas de milhares de d´ıgitos, e demonstrar o car´ater primo de um inteiro de apenas alguns milhares de d´ıgitos.

´

E poss´ıvel argumentar que desvantagens algor´ıtmicas podem ser compensadas por avan¸cos de hardware. Embora o or¸camento 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, econˆomicos e t´ecnicos, e n˜ao ´e t˜ao acen-tuado a ponto de menosprezar os avan¸cos algor´ıtmicos. A interconex˜ao de computadores, atrav´es de barramentos dedicados ou conex˜oes de rede, surgiu como uma solu¸c˜ao para as limita¸c˜oes inerentes aos sistemas monoprocessados (7). Mais recentemente, diversos grupos demonstraram ser poss´ıvel aproveitar os recursos computacionais desperdi¸cados pelos milh˜oes de computadores conectados `a Internet, a rede mundial de computadores, para realizar computa¸c˜oes de magnitudes at´e ent˜ao inimagin´aveis (8–10). A proposta deste trabalho ´e a constru¸c˜ao de uma rede semelhante, voltada para a demonstra¸c˜ao de car´ater primo de inteiros de forma geral.

1.1

Divis˜

ao do trabalho

Este cap´ıtulo introdut´orio explicou, em termos bastante gerais, a proposta do traba-lho, incluindo os conceitos b´asicos necess´arios ao entendimento desta proposta.

O Cap´ıtulo 2 exp˜oe alguns resultados da teoria de grupos, teoria de corpos e teoria dos n´umeros, necess´arios aos desenvolvimentos posteriores. Embora o material seja bastante elementar, foi inclu´ıdo no trabalho com o objetivo de torn´a-lo auto-contido.

O Cap´ıtulo 3 ´e uma introdu¸c˜ao `as curvas el´ıpticas, do ponto de vista da teoria com-putacional dos n´umeros. Em particular, conceitos topol´ogicos e anal´ıticos relacionados `as curvas el´ıpticas n˜ao s˜ao abordados.

O Cap´ıtulo 4 introduz o algoritmo ECPP, comparando-o com outros algoritmos para certifica¸c˜ao de car´ater primo e pseudoprimo, e justificando sua escolha para uso no

(24)

lho. ´E feita tamb´em uma revis˜ao da principal melhoria ao algoritmo descrita na literatura, a variante fastECPP.

O Cap´ıtulo 5 discute as modifica¸c˜oes ao ECPP para torn´a-lo um algoritmo distribu´ıdo, o uso de estruturas hier´arquicas de rede para distribui¸c˜ao de dados de maneira eficiente em sistemas distribu´ıdos, e os desafios de realizar computa¸c˜oes v´alidas em uma rede de computadores cuja confiabilidade n˜ao pode ser garantida.

O Cap´ıtulo 6 discute a implementa¸c˜ao do sistema. Inicialmente justifica-se a decis˜ao de tornar o sistema um software livre sob licen¸ca GPL, e o impacto desta decis˜ao sobre a infraestrutura utilizada, em particular as bibliotecas empregadas na constru¸c˜ao do sis-tema. A seguir, s˜ao descritas as metas de projeto do sistema, e o restante do cap´ıtulo ´e dedicado `a descri¸c˜ao da implementa¸c˜ao, no est´agio em que se encontrava quando da publica¸c˜ao deste trabalho.

O Cap´ıtulo 7 relata alguns resultados obtidos at´e 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 dire¸c˜oes futuras de pesquisa.

(25)

2

Algebra Abstrata e Teoria dos

´

umeros

Esta disserta¸c˜ao trata do algoritmo ECPP, que envolve conceitos de curvas el´ıpticas. A teoria destas curvas, pelo menos no contexto da teoria computacional dos n´umeros, 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 n´umeros, que ´e fundamental tanto para o problema abordado por este trabalho (demonstra¸c˜oes de car´ater primo), quanto na implementa¸c˜ao dos al-goritmos utilizados. Os assuntos s˜ao abordados superficialmente, omitindo resultados desnecess´arios ao desenvolvimento do trabalho.

A primeira se¸c˜ao trata da teoria de grupos. Partem-se de defini¸c˜oes e proprieda-des b´asicas, para ent˜ao introduzir mapeamentos entre grupos, seguido pela no¸c˜ao de subgrupo, concluindo com a importante classe de grupos e subgrupos c´ıclicos. A segunda se¸c˜ao aborda resultados simples sobre corpos finitos, e a implementa¸c˜ao de sua aritm´etica. A ´ultima se¸c˜ao do cap´ıtulo ´e uma compila¸c˜ao de resultados da teoria dos n´umeros. O pri-meiro assunto tratado ´e a divisibilidade. Em seguida, h´a alguns resultados sobre n´umeros primos e sua distribui¸c˜ao entre os inteiros. O pr´oximo t´opico ´e um tratamento breve de aritm´etica modular e congruˆencias. A seguir, s˜ao expostos alguns resultados simples sobre a aritm´etica de polinˆomios com coeficientes modulares. A fun¸c˜ao φ de Euler ´e introdu-zida, e alguns teoremas relacionados a esta fun¸c˜ao s˜ao fornecidos. ´E feito um estudo do grupo multiplicativo dos inteiros m´odulo n, e conclui-se o cap´ıtulo com os conceitos de residuosidade quadr´atica e ra´ızes quadradas modulares.

2.1

Teoria de grupos

(26)

de resultados da teoria dos n´umeros (como o Pequeno Teorema de Fermat 2.3.20 e sua generaliza¸c˜ao, o Teorema de Fermat-Euler 2.3.19) em termos da teoria de grupos, ´e um caminho produtivo para a cria¸c˜ao 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 est´a mais em voga atualmente.

Muitos resultados acerca de grupos infinitos ser˜ao omitidos, mesmo havendo analogia direta com os resultados para grupos finitos, por serem irrelevantes ao trabalho.

2.1.1

Defini¸

ao e propriedades b´

asicas

A defini¸c˜ao de um grupo ´e simples (11):

Defini¸c˜ao 2.1.1. Um grupo ´e um conjunto G e uma opera¸c˜ao bin´aria × : 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. Existˆencia de identidade: existe um elemento 1 ∈ G, dito a identidade de G, tal que para todo a ∈ G vale que a1 = 1a = a;

4. Existˆencia 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 defini¸c˜ao, foi empregada uma nota¸c˜ao multiplicativa para o grupo. Tamb´em ´e poss´ıvel utilizar uma nota¸c˜ao aditiva, em que a opera¸c˜ao × ´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 nota¸c˜ao desejada, principalmente se corresponder `a nota¸c˜ao tradicional para aquele grupo. Algumas propriedades dos grupos podem ser obtidas diretamente da defini¸c˜ao acima: Teorema 2.1.1. Se G ´e um grupo com opera¸c˜ao ×, ent˜ao

(27)

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 s˜ao

colocados parˆenteses na express˜ao (a chamada lei de associatividade generalizada).

Devido `a lei de associatividade generalizada, o valor do produto xx · · · x | {z }

n vezes

n˜ao depende da ordem de avalia¸c˜ao, e ser´a denotado simplesmente por xn. De forma semelhante, x−1x−1· · · x−1

| {z }

n vezes

´

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

O seguinte teorema estabelece a existˆencia de cancelamento em grupos:

Teorema 2.1.2. Seja G um grupo com a, b ∈ G. As equa¸c˜oes ax = b e ya = b apresentam solu¸c˜oes ´unicas x, y ∈ G. Em particular, as leis de cancelamento pela esquerda e pela direita s˜ao v´alidas em G, ou seja,

1. se au = av, ent˜ao u = v; 2. se ub = vb, ent˜ao u = v.

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

Defini¸c˜ao 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 potˆencia positiva de x corresponde `a identidade, define-se a ordem de x como infinito.

´

E poss´ıvel falar tamb´em na ordem do grupo como um todo.

Defini¸c˜ao 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

Aplica¸

oes entre grupos

(28)

Defini¸c˜ao 2.1.4. Sejam G e H dois grupos. Uma aplica¸c˜ao ϕ : G → H tal que ϕ(xy) = ϕ(x)ϕ(y), para todo x, y ∈ G

´e dita um homomorfismo.

Observa-se que na equa¸c˜ao da Defini¸c˜ao 2.1.4, a opera¸c˜ao no lado esquerdo ´e realizada em G, enquanto a opera¸c˜ao no lado direito ´e realizada em H. Intuitivamente falando, um homomorfismo respeita as estruturas de grupo entre o dom´ınio e o contradom´ınio. Defini¸c˜ao 2.1.5. Uma aplica¸c˜ao ϕ : G → H ´e dita um isomorfismo, e G e H s˜ao ditos isomorfos, se

1. ϕ ´e um homomorfismo; 2. ϕ ´e uma bije¸c˜ao.

Se G e H s˜ao isomorfos, escreve-se G ∼= H.

Um isomorfismo entre dois grupos ´e uma bije¸c˜ao que preserva as opera¸c˜oes de grupo. Intuitivamente falando, G e H s˜ao o mesmo grupo, exceto que a representa¸c˜ao dos ele-mentos e da opera¸c˜ao de cada grupo pode ser diferente.

´

E poss´ıvel demonstrar que dois grupos n˜ao s˜ao isomorfos se o seguinte crit´erio n˜ao 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 s´o, satisfazem os axiomas de grupo. Tais subconjuntos s˜ao ditos subgrupos do grupo original.

(29)

1. xy ∈ H; 2. x−1 ∈ H.

Se H ´e um subgrupo de G, emprega-se a nota¸c˜ao H ≤ G, ou H < G caso H 6= G.

2.1.4

Grupos e subgrupos c´ıclicos

Uma classe muito importante de grupos s˜ao os chamados grupos c´ıclicos.

Defini¸c˜ao 2.1.7. Um grupo G ´e c´ıclico se G pode ser gerado pelas potˆencias de um ´

unico elemento, ou seja, existe x ∈ G tal que G = {xn | n ∈ Z}. A nota¸c˜ao G = hxi ´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, ent˜ao x−1 tamb´em ´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. S˜ao v´alidas as seguintes propriedades:

1. |G| = |x|;

2. se |G| = n, ent˜ao xn = 1 e 1, x, x2, . . . , xn−1 ao elementos distintos de G.

Em grupos c´ıclicos finitos, ´e poss´ıvel utilizar a rela¸c˜ao xn = 1, onde n = |G|, para reduzir expoentes k ≥ n para a faixa 0 ≤ x < n por divis˜ao Euclidiana, onde o divisor ´e a ordem do grupo n. Este procedimento sugere que ´e poss´ıvel utilizar as leis de expoentes e a aritm´etica do grupo aditivo Z/nZ para realizar aritm´etica em G. Isto n˜ao ´e coincidˆencia; o teorema a seguir estabelece isomorfismos entre grupos c´ıclicos, dos quais Z/nZ sob adi¸c˜ao ´e um exemplo.

Teorema 2.1.5. Dois grupos c´ıclicos quaisquer de mesma ordem s˜ao isomorfos. Especi-ficamente, se n ∈ Z+, e hxi, hyi s˜ao dois grupos c´ıclicos de ordem n, ent˜ao o mapeamento

ϕ : hxi →hyi xk 7→yk

(30)

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, ent˜ao |xa| = n/ mdc(n, a);

2. Em particular, se a divide n, ent˜ao |xa| = n/a;

3. Se G = hxi, ent˜ao G = hxai se e somente se mdc(n, a) = 1, o que tamb´em implica que o n´umero de geradores de G ´e φ(n), onde φ(n) ´e a fun¸c˜ao de Euler da Defini¸c˜ao 2.3.7.

´

E poss´ıvel desvendar a estrutura completa dos subgrupos de um grupo c´ıclico atrav´es do seguinte teorema.

Teorema 2.1.7. Seja G = hxi um grupo c´ıclico.

1. Todo subgrupo de G ´e c´ıclico. Mais especificamente, se K ≤ H, ent˜ao K = {1} ou K = hxdi, onde d ´e o menor inteiro positivo tal que xd∈ K.

2. Se |G| = n, os divisores d de n est˜ao em correspondˆencia 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

Introdu¸

ao aos corpos

Defini¸c˜ao 2.2.1. Um corpo F ´e um conjunto e duas opera¸c˜oes bin´arias associadas, + : F → F e × : F → F (ditas adi¸c˜ao e multiplica¸c˜ao), que satisfazem os seguintes axiomas, onde a e b denotam dois elementos quaisquer do grupo em quest˜ao:

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. Existˆencia de identidades, onde 0 denota a identidade aditiva e 1 a identidade multiplicativa: a + 0 = 0 + a = a e a1 = 1a = a;

(31)

Alguns sistemas num´ericos tradicionais s˜ao corpos: o conjunto dos n´umeros racionais Q, dos n´umeros reais R e dos n´umeros complexos C. J´a o conjunto dos n´umeros inteiros Z n˜ao forma um corpo, por n˜ao atender ao item 5 da defini¸c˜ao.

Defini¸c˜ao 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, ent˜ao o corpo ´e dito de caracter´ıstica n. Caso n˜ao exista n que satisfa¸ca a propriedade, a caracter´ıstica do corpo ´e 0.

Corpos de caracter´ıstica n 6= 0 s˜ao ditos corpos finitos, e s˜ao os corpos mais interessan-tes do ponto de vista computacional. Algumas propriedades dos corpos finitos, retiradas de (2), s˜ao dadas a seguir.

Teorema 2.2.1 (Resultados b´asicos sobre corpos finitos).

1. A caracter´ıstica de um corpo finito F, ch(F), ´e um n´umero 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 ser´a denotado por Fpk;

4. O grupo multiplicativo F∗pk de elementos n˜ao-nulos de Fpk ´e c´ıclico.

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

grupo, tamb´em recebem o nome de ra´ızes primitivas.

Ra´ızes primitivas podem ser obtidas atrav´es do seguinte crit´erio (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 −1q 6= 1

para todo primo q | pk− 1.

2.2.1

Implementa¸

ao da aritm´

etica de corpos finitos

A maneira cl´assica de realizar aritm´etica de corpos finitos ´e atrav´es de aritm´etica modular de inteiros e polinˆomios.

1Dois corpos s˜ao ditos isomorfos quando h´a uma bije¸ao entre eles, de modo que ambos possuem a

(32)

Inicialmente observa-se que um corpo de caracter´ıstica p e que possui p elementos ´e isomorfo ao corpo dos inteiros m´odulo p, Z/pZ (2). Desse modo, a aritm´etica de Fp pode

ser realizada atrav´es da aritm´etica m´odulo p.

J´a corpos de caracter´ıstica p e que possuem pk elementos correspondem a extens˜oes

de Fp. Nesse caso, em uma transposi¸c˜ao direta da teoria (11), os elementos de Fpk s˜ao

polinˆomios com coeficientes provindos de Fp, e a aritm´etica desses polinˆomios ´e realizada

m´odulo um polinˆomio irredut´ıvel qualquer de grau k (2, 3). Polinˆomios irredut´ıveis podem ser obtidos a partir do crit´erio a seguir.

Teorema 2.2.3 (Crit´erio de irredutibilidade de polinˆomios). Um polinˆomio f (x) em Fp[x] de grau k ´e irredut´ıvel se e somente se mdc(f (x), xp

j

− x) = 1, para j = 1, 2, . . . , bk/2c.

Observa-se que a escolha do polinˆomio irredut´ıvel de grau k no par´agrafo acima ´e imaterial, visto que todos os corpos de pk elementos s˜ao isom´orficos entre si; a escolha do

polinˆomio afeta apenas a representa¸c˜ao dos elementos.

Em princ´ıpio, a aritm´etica modular, tanto de inteiros como de polinˆomios, pode ser realizada atrav´es das opera¸c˜oes inteiras e polinomiais comuns, seguidas de uma divis˜ao pelo m´odulo, em que o resto da divis˜ao caracteriza o resultado da opera¸c˜ao modular (3). Divis˜oes s˜ao realizadas na forma de multiplica¸c˜ao 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 n´

umeros

2.3.1

Divisibilidade

O ponto de partida da teoria dos n´umeros ´e o chamado algoritmo de divis˜ao, ou divis˜ao Euclidiana.

Teorema 2.3.1. Se a e b s˜ao inteiros e b > 0, ent˜ao existem, e s˜ao ´unicos, inteiros q e r tais que

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

(33)

Como consequˆencia da defini¸c˜ao, 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 s˜ao dados a seguir. Teorema 2.3.2.

1. se a | b e b | c, ent˜ao a | c; 2. se a | b e c | d, ent˜ao ac | bd;

3. se m 6= 0, ent˜ao a | b se e somente se ma | mb; 4. se d | a e a 6= 0, ent˜ao |d| ≤ |a|;

5. se c divide a1, . . . , ak, ent˜ao c divide a1u1 + . . . + akuk para quaisquer inteiros

u1, . . . , uk.

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

Defini¸c˜ao 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, h´a um de maior valor; este ´e dito o m´aximo divisor comum (MDC).

O c´alculo do MDC de dois inteiros pode ser feito, de maneira ingˆenua, pela listagem dos divisores dos inteiros em quest˜ao, seguido da busca pelo maior elemento em comum entre as duas listas. Infelizmente, este algoritmo ´e extremamente ineficiente, pois exige a fatora¸c˜ao de seus argumentos. Um algoritmo mais eficiente ´e conhecido desde a Gr´ecia antiga, o chamado algoritmo de Euclides, considerado o primeiro algoritmo da hist´oria, e possivelmente o mais importante algoritmo da teoria dos n´umeros. Seu princ´ıpio de funcionamento ´e baseado no lema a seguir.

Lema 2.3.3. Se a = qb + r, ent˜ao mdc(a, b) = mdc(b, r).

De posse desse lema, a obten¸c˜ao do algoritmo ´e trivial.

Algoritmo 2.3.1 (Algoritmo de Euclides). Dados dois inteiros n˜ao-negativos a e b, o algoritmo calcula o m´aximo divisor comum dos dois.

(34)

r = a mod b; a = b;

b = r; }

return r;

O tempo de execu¸c˜ao deste algoritmo, se programado com cuidado, ´e O log2n, onde n = max(a, b) (1). Existem tamb´em variantes do algoritmo, cuja implementa¸c˜ao em computadores bin´arios ´e mais eficiente (1).

Defini¸c˜ao 2.3.3. Dois inteiros a e b s˜ao ditos coprimos (ou relativamente primos) se mdc(a, b) = 1.

O teorema a seguir ser´a utilizado na se¸c˜ao sobre aritm´etica modular.

Teorema 2.3.4. Sejam a, b, c inteiros, onde a, b n˜ao s˜ao simultaneamente nulos, e seja d = mdc(a, b). Ent˜ao a equa¸c˜ao

ax + by = c

possui solu¸c˜ao inteira para x, y se e somente se d | c, e nesse caso existem infinitas solu¸c˜oes, dadas pelos pares

x = x0+

bn

d , y = y0− an

d , onde x0, y0 ´e uma solu¸c˜ao particular qualquer e n ∈ Z.

Solu¸c˜oes particulares desta equa¸c˜ao podem ser encontradas pelo chamado algoritmo estendido de Euclides (1, 2).

(35)

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

return (x, y, c);

Assintoticamente, o tempo de execu¸c˜ao deste algoritmo ´e o mesmo do algoritmo de Euclides para MDC.

2.3.2

umeros primos

A defini¸c˜ao de n´umero primo e o importante resultado acerca dos mesmos, denominado Teorema Fundamental da Aritm´etica, j´a foi abordado no Cap´ıtulo 1. Esta se¸c˜ao preocupa-se apenas com a distribui¸c˜ao dos primos entre os inteiros, e com algoritmos rudimentares para determina¸c˜ao de car´ater primo e composto.

Teorema 2.3.5. Existem infinitos n´umeros primos.

Defini¸c˜ao 2.3.4. A fun¸c˜ao π(x) denota o n´umero de primos p ≤ x. Teorema 2.3.6. Para x → ∞,

π(x) ∼ x

log x

O seguinte crit´erio permite determinar o car´ater 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 situa¸c˜oes, ´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 compila¸c˜ao desta lista que ´e mais eficiente, o Crivo de Erat´ostenes.

Algoritmo 2.3.3 (Crivo de Erat´ostenes). Dado um inteiro n > 1, este algoritmo retorna um vetor bin´ario p[2..n], tal que se k ´e composto, p[k] = 0, e se k ´e primo, p[k] = 1.

1. [Inicializa¸c˜ao]

// Pelo Lema 2.3.7, os elementos de 1 a n n˜ao // possuem fatores primos maiores que d√ne l = d√ne;

(36)

2. [La¸co principal] while (i ≤ l) {

// M´ultiplos de i s˜ao compostos por defini¸c˜ao for (j = 2i; j < n; j = j + i)

p[j] = 0;

// Procura pr´oximo primo no vetor for (i + +; p[i] = 1; i + +)

; }

return p;

Pode-se mostrar (2) que o tempo de execu¸c˜ao 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 (at´e 10 ou 11 d´ıgitos).

2.3.3

Congruˆ

encias e aritm´

etica modular

Defini¸c˜ao 2.3.5. Seja n um inteiro positivo, e a, b dois inteiros quaisquer. Diz-se que a ´e congruente a b m´odulo n, e escreve-se a ≡ b (mod n), se a e b apresentam o mesmo resto ap´os divis˜ao 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), ent˜ao b ≡ a (mod n);

3. se a ≡ b (mod n) e b ≡ c (mod n), ent˜ao a ≡ c (mod n).

Este lema estabelece que a congruˆencia ´e uma rela¸c˜ao de equivalˆencia, por satisfazer os axiomas de reflexividade, simetria e transitividade. Assim, Z ´e particionado em classes de equivalˆencia disjuntas, representadas pelas classes de congruˆencia

(37)

Cada classe corresponde aos poss´ıveis restos r = 0, 1, . . . , n − 1 da divis˜ao de um inteiro por n, de modo que h´a n classes de congruˆencia, 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 equivalˆencia m´odulo n ´e denotado por Z/nZ. ´E poss´ıvel definir uma aritm´etica desse conjunto da seguinte forma:

a + b = a + b, a − b = a − b,

ab = ab.

O lema a seguir afirma que essas opera¸c˜oes s˜ao bem-definidas.

Lema 2.3.10. Para um dado n ≥ 1, se a0 ≡ a (mod n) e b0 ≡ b (mod n), ent˜ao a0+ b0

a + b (mod n), a0 − b0 ≡ a − b (mod n) e a0b0 ≡ ab (mod n).

O conjunto Z/nZ e as opera¸c˜oes aritm´eticas assim definidas formam um anel (quando n n˜ao ´e primo ou potˆencia de primo) ou um corpo.

Deve-se prestar aten¸c˜ao `a defini¸c˜ao de exponencia¸c˜ao. Aplicando a defini¸c˜ao de mul-tiplica¸c˜ao de classes de congruˆencia, obt´em-se ak = ak. Deve-se observar que, em geral,

ak 6= ak; mas nem tudo est´a perdido com rela¸c˜ao ao c´alculo eficiente de exponencia¸c˜oes.

Ser´a visto mais `a frente que, de fato, ´e poss´ıvel efetuar redu¸c˜oes modulares neste expoente, desde que se escolha o m´odulo correto pelo uso do Teorema 2.3.19.

Embora, `a primeira vista, opera¸c˜oes de exponencia¸c˜ao ak (sejam exponencia¸c˜oes

(38)

Algoritmo 2.3.4 (Exponencia¸c˜ao 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 expans˜ao bin´aria, com k[D − 1] = 1 o bit mais significativo.

1. [Inicializa¸c˜ao] z = a;

2. [La¸co 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 c´alculo de exponencia¸c˜oes modulares, o algoritmo ser´a mais eficiente se as opera¸c˜oes de multiplica¸c˜ao forem seguidas por redu¸c˜oes modulares, mantendo os valores das vari´aveis estritamente menores que o m´odulo.

A divis˜ao de classes de congruˆencia n˜ao pode ser definida como a/b = a/b, visto que a/b n˜ao necessariamente assume valor inteiro. Ao inv´es disso, ser˜ao consideradas as solu¸c˜oes da equa¸c˜ao bx ≡ a (mod n). Pelo Teorema 2.3.8, isso equivale a dizer que n | (bx − a), ou seja, bx − a = ny. Equa¸c˜oes deste tipo j´a foram estudadas pelo Teorema 2.3.4, e suas solu¸c˜oes podem ser obtidas de maneira eficiente pelo Algoritmo 2.3.2. Um corol´ario do Teorema 2.3.4, empregando os conceitos de congruˆencia, ´e ´util nesta situa¸c˜ao: Corol´ario 2.3.11. Se mdc(b, n) = 1, ent˜ao as solu¸c˜oes da congruˆencia bx ≡ a (mod n) para x formam uma ´unica classe de congruˆencia m´odulo n.

Esse corol´ario indica as situa¸c˜oes em que faz sentido definir o quociente de classes de congruˆencia; especificamente, quando o divisor b ´e coprimo ao m´odulo n. Quando esta condi¸c˜ao n˜ao ´e verdadeira, e d | a, h´a mais de uma solu¸c˜ao para a congruˆencia, enquanto se d - a, a congruˆencia n˜ao possui solu¸c˜ao. Em ambos os casos, n˜ao ´e possivel definir um quociente a/b.

Uma defini¸c˜ao de amplo uso, e relacionada aos quocientes de classe de congruˆencia, ´e a invers˜ao de classes de congruˆencia.

Defini¸c˜ao 2.3.6. O inverso a−1 de uma classe de congruˆencia a m´odulo n ´e a solu¸c˜ao x

(39)

Ap´os este breve interl´udio ao t´opico de divis˜ao de classes de congruˆencia, retornamos ao estudo da aritm´etica destas classes. O Lema 2.3.10 pode ser interpretado da seguinte maneira: a aritm´etica de classes de congruˆencia depende apenas das classes de congruˆencia em quest˜ao, e n˜ao do representante particular escolhido para aquela classe. Surge ent˜ao a quest˜ao de como escolher os representantes mais adequados para maximizar a eficiˆencia da implementa¸c˜ao da aritm´etica modular. As duas possibilidades mais comuns s˜ao o conjunto de res´ıduos n˜ao-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 defini¸c˜oes e resultados obtidos at´e agora sugerem a implementa¸c˜ao da aritm´etica modular atrav´es da aritm´etica de inteiros e aplica¸c˜ao do algoritmo de divis˜ao. Existe um sistema alternativo de aritm´etica modular para o caso em que n ´e composto (1, 5). Para introduzi-lo, ´e necess´ario o teorema a seguir.

Teorema 2.3.12. Seja n um inteiro com fatora¸c˜ao em potˆencias de primos n = pe1

1 · · · p ek

k ,

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

somente se a ≡ b (mod pei

i ) para i = 1, . . . , k.

Este resultado, em conjunto com o Lema 2.3.10, sugere a realiza¸c˜ao da aritm´etica m´odulo os diferentes fatores primos de n; esse procedimento pode ser vantajoso em al-gumas situa¸c˜oes. ´E necess´ario, no entanto, um m´etodo para obten¸c˜ao da classe de con-gruˆencia m´odulo n dadas as classes de congruˆencia m´odulo cada fator primo de n. O seguinte teorema garante a existˆencia e unicidade da solu¸c˜ao para esse problema.

Teorema 2.3.13 (Teorema Chinˆes do Resto). Sejam n1, . . . , nk inteiros positivos tais

que mdc(ni, nj) = 1 para i 6= j, e sejam a1, . . . , ak inteiros quaisquer. Ent˜ao a solu¸c˜ao

das congruˆencias simultˆaneas

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

forma uma ´unica classe de congruˆencia m´odulo n, onde n = n1· · · nk. Ademais, esta

solu¸c˜ao ´e dada por

x ≡

k

X

i=1

(40)

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

2.3.4

Polinˆ

omios com coeficientes em Z/nZ

A defini¸c˜ao de uma aritm´etica de Z/nZ permite a constru¸c˜ao de polinˆomios com coeficientes provindos desse corpo. O lema a seguir afirma que, de certa forma, tais polinˆomios se comportam como esperado.

Lema 2.3.14. Seja f = f (x) um polinˆomio com coeficientes inteiros, e n ≥ 1. Se a ≡ b (mod n), ent˜ao f (a) ≡ f (b) (mod n).

O n´umero de ra´ızes de polinˆomios 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 polinˆomio com

coeficientes inteiros, com ai 6≡ 0 (mod p) para pelo menos um valor de i. Ent˜ao a

con-gruˆencia f (x) ≡ 0 (mod p) ´e satisfeita por n˜ao mais que d classes de congruˆencia de Z/nZ.

2.3.5

A fun¸

ao φ de Euler

Defini¸c˜ao 2.3.7. A fun¸c˜ao φ = φ(n) indica o n´umero de inteiros 1 ≤ a < n coprimos a n.

Lema 2.3.16. Se n = pe com p primo e e natural, ent˜ao

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

Teorema 2.3.17. Se m e n s˜ao coprimos, ent˜ao φ(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.

Corol´ario 2.3.18. Se a fatora¸c˜ao de n em potˆencias de primos ´e n = pe1

(41)

Este resultado pode ser escrito de forma mais concisa como φ(n) = nY p|n  1 − 1 p  .

O teorema a seguir ´e o resultado mais importante envolvendo a fun¸c˜ao de Euler. Teorema 2.3.19 (Teorema de Fermat-Euler). Se mdc(a, n) = 1, ent˜ao

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

Um corol´ario 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), ent˜ao

ap−1≡ 1 (mod p).

Se, no Teorema 2.3.19 a restri¸c˜ao mdc(a, n) = 1 n˜ao puder ser garantida, ent˜ao ´e necess´ario 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 ser´a feito na se¸c˜ao seguinte.

2.3.6

O grupo multiplicativo (Z/nZ)

Nesta se¸c˜ao, s˜ao dados alguns resultados a respeito do grupo mais importante no estudo de teoria dos n´umeros, (Z/nZ)∗.

Teorema 2.3.22. Os inteiros 1 ≤ a < n tais que mdc(a, n) = 1, sob a opera¸c˜ao de multiplica¸c˜ao modular, formam o grupo (Z/nZ)∗. Este grupo ´e abeliano e de ordem φ(n).

A condi¸c˜ao 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 potˆencia de um primo ´ımpar, ou duas vezes uma potˆencia de um primo ´ımpar.

(42)

´e o mesmo objeto alg´ebrico que o grupo (Z/nZ)∗; por exemplo, a cardinalidade dos dois n˜ao ´e a mesma: |Fpk| = pk− 1, enquanto |(Z/pkZ)∗| = φ(pk) = pk−1(p − 1) 6= pk− 1. Por

conta disso, os resultados dados naquela se¸c˜ao s˜ao 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, ent˜ao estas ra´ızes primitivas s˜ao em n´umero de φ(φ(n)).

2.3.7

Res´ıduos quadr´

aticos e ra´ızes quadradas modulares

Esta se¸c˜ao contempla as solu¸c˜oes para congruˆencias quadr´aticas do tipo x2 ≡ a

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

Defini¸c˜ao 2.3.8. Um elemento a ∈ (Z/nZ)∗ ´e dito um res´ıduo quadr´atico se a ≡ s2 (mod n) para algum s ∈ (Z/nZ)∗. O conjunto dos res´ıduos quadr´aticos m´odulo n ser´a denotado por Qn.

O resultado a seguir determina o n´umero de ra´ızes quadradas de elementos de Qn

(lembrando que os elementos de (Z/nZ)∗\Qnn˜ao possuem ra´ızes quadradas por defini¸c˜ao).

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

Ent˜ao n´umero 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 contr´ario.

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

A determina¸c˜ao de Qn ´e particularmente simples quando (Z/nZ)∗ ´e c´ıclico.

Teorema 2.3.28. Seja n > 2, e suponha a existˆencia de uma raiz primitiva g (mod n). Ent˜ao Qn ´e um grupo c´ıclico de ordem φ(n)/2 gerado por g2.

(43)

Defini¸c˜ao 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)\ Q p.

Defini¸c˜ao 2.3.10. Seja m um inteiro ´ımpar, e a um inteiro qualquer. O s´ımbolo de Jacobi (ma) ´e definido em termos da fatora¸c˜ao de m em potˆencias de primos,

m =Ypti i , como a m  =Y a pi t i .

Deve-se observar que, para m composto, o s´ımbolo de Jacobi (ma) = 1 n˜ao significa que a congruˆencia x2 ≡ a (mod m) possui solu¸c˜ao, ao contr´ario 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. Por´em, se (ma) = −1, pode-se afirmar com certeza que a congruˆencia n˜ao possui solu¸c˜ao.

S´ımbolos de Legendre podem ser calculados de maneira eficiente atrav´es do seguinte resultado.

Teorema 2.3.29 (Crit´erio de Euler). Se p ≥ 3 ´e primo, ent˜ao para todos os inteiros a,

 a p



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

Algumas simplifica¸c˜oes podem ser feitas em express˜oes envolvendo s´ımbolos de Le-gendre e Jacobi atrav´es dos resultados a seguir.

Teorema 2.3.30. Sejam m, n inteiros ´ımpares e a, b inteiros quaisquer. As seguintes rela¸c˜oes s˜ao v´alidas para os s´ımbolos de Legendre e Jacobi:

 ab m  =a m  b m  ,  a mn  =a m  a n  . As rela¸c˜oes especiais a seguir s˜ao de uso amplo:

 −1 m



(44)

 2 m



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

O grande valor das rela¸c˜oes especiais inclu´ıdas no teorema ´e que seu c´alculo n˜ao exige exponencia¸c˜oes 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 condi¸c˜oes podem ser simplificadas para m ≡ 1 (mod 4) e m ≡ 3 (mod 4), respectivamente, e o c´alculo do resto da divis˜ao de um inteiro por uma potˆencia de 2 pode ser realizado sem envolver uma divis˜ao expl´ıcita, atrav´es da opera¸c˜ao l´ogica AND: se a = 1, 3, m ≡ a (mod 4) ⇐⇒ (m & 3) == a (na nota¸c˜ao das lingua-gens C/C++). O c´alculo de (−1)(m2−1)/8 ´e ligeiramente mais complicado; inicialmente observa-se que esse valor depende apenas da classe de congruˆencia de m m´odulo 8, e constr´oi-se uma tabela tab[8] = { 0, 1, 0, -1, 0, -1, 0, 1 }, obtendo-se a rela¸c˜ao (−1)(m2−1)/8

= tab[m & 7].

O resultado a seguir est´a para o c´alculo de s´ımbolos de Jacobi como o Lema de Euclides 2.3.3 est´a para o c´alculo de m´aximos divisores comuns, eliminando a necessidade de fatorar o m´odulo m.

Teorema 2.3.31 (Lei de reciprocidade quadr´atica). Se m, n s˜ao inteiros ´ımpares coprimos, ent˜ao m n  n m  = (−1)(m−1)(n−1)/4.

O c´alculo de a = (−1)(m−1)(n−1)/4 tamb´em pode ser realizado sem exponencia¸c˜oes

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

O algoritmo a seguir mostra como ´e poss´ıvel usar a lei de reciprocidade quadr´atica para computa¸c˜ao 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 (ma). O vetor tab ´e o vetor descrito acima para c´alculo eficiente de (−1)(m2−1)/8

.

(45)

} (a, m) = (m, a); if (a & m & 2) t = −t; a = a (mod m); } 2. [Conclus˜ao] 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 execu¸c˜ao do algoritmo ´e O log2m, assumindo que a < m.

A discuss˜ao at´e agora permite responder a quest˜ao da existˆencia de ra´ızes quadradas m´odulo primos, mas na pr´atica tamb´em ´e necess´ario calcul´a-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 solu¸c˜ao x de x2 ≡ a (mod p).

1. [Encontrar um certo res´ıduo n˜ao-quadr´atico]

Encontrar um inteiro aleat´orio 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 execu¸c˜ao ´e O log3p.

Embora o algoritmo retorne apenas uma raiz quadrada (de duas poss´ıveis nesta si-tua¸c˜ao), a obten¸c˜ao da outra ´e direta, uma vez que se x2 ≡ a (mod p), ent˜ao (−x)2 ≡ a

(mod p), e assim −x ´e a outra raiz quadrada de a m´odulo p.

Outro detalhe ´e que o algoritmo utiliza a aritm´etica de Fp2, de modo que um exemplo

do funcionamento desta aritm´etica pode ser ´util. A aritm´etica nesse corpo ´e semelhante `a aritm´etica complexa; esta poderia ser interpretada como a aritm´etica de Fp(

(46)

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 aritm´etica pode ser confinada a esse conjunto pela substitui¸c˜ao ω = 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 interpreta¸c˜ao em termos da aritm´etica de polinˆomios ´e mais ´util quando o grau de extens˜ao do corpo ´e superior a 2. No caso do algoritmo, o polinˆomio ´e f (ω) = ω2−(t2−a),

e ´e poss´ıvel verificar a equivalˆencia da aritm´etica de x + ωy e a rela¸c˜ao ω2 = t2− a, com

a aritm´etica de polinˆomios m´odulo f (ω).

Resta a quest˜ao de como calcular ra´ızes quadradas m´odulo n, um inteiro composto. Nesse caso, ´e poss´ıvel observar que se n = pe1

1 · · · p ek

k , ent˜ao as congruˆencias simultˆaneas

x2 ≡ a (mod pe1

1 ), . . . , x2 ≡ a (mod p ek

k ) implicam x

2 ≡ a (mod n) pelo Teorema Chinˆes

do Resto 2.3.13. Supondo que todos os expoentes eina fatora¸c˜ao de n sejam 1, a solu¸c˜ao de

(47)

3

Curvas El´

ıpticas

As curvas el´ıpticas vˆem se estabelecendo como ferramentas promissoras para a teo-ria dos n´umeros e criptografia. Nas ´ultimas duas d´ecadas, diversos algoritmos tˆem sido propostos empregando a aritm´etica de curvas el´ıpticas, geralmente apresentando diver-sas vantagens sobre outros algoritmos conhecidos. Destacam-se o algoritmo ECPP para demonstra¸c˜oes de car´ater primo, o algoritmo ECM para fatora¸c˜ao de inteiros, e criptos-sistemas baseados em curvas el´ıpticas, como o ECDSA, ECDH e outros.

Este cap´ıtulo consiste de uma introdu¸c˜ao ao grupo de pontos de uma curva el´ıptica, que representa o uso das curvas el´ıpticas no contexto da teoria computacional do n´umeros. Inicialmente introduz-se as curvas el´ıpticas sob um ponto de vista geom´etrico. Em seguida, discute-se o seu grupo de pontos e teoremas fundamentais a respeito do mesmo. Por fim, alguns algoritmos simples para a aritm´etica deste grupo s˜ao expostos.

3.1

Aspectos geom´

etricos

Uma curva el´ıptica ´e uma curva c´ubica sobre a qual exige-se a condi¸c˜ao extra de n˜ ao-singularidade: as derivadas parciais da equa¸c˜ao da curva n˜ao podem ser simultaneamente nulas em nenhum ponto da curva. Se esta condi¸c˜ao for satisfeita, e ademais, a curva for considerada sobre um corpo cuja caracter´ıstica n˜ao seja 2 nem 3, ´e poss´ıvel simplificar a equa¸c˜ao geral de um polinˆomio de grau 3 para a forma

y2 = x3+ ax + b, (3.1)

a chamada parametriza¸c˜ao de Weierstrass para uma curva el´ıptica (2). A curva satisfaz a condi¸c˜ao de n˜ao-singularidade se e somente se 4a3+ 27b2 6= 0, onde este valor ´e o

(48)

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

parametriza¸c˜oes para estes casos n˜ao ser˜ao consideradas.

Um gr´afico da curva el´ıptica y2 = x3− 3x + 3 sobre os n´umeros reais ´e mostrada na

Figura 3.1.

Diz-se que uma curva el´ıptica em 2 vari´aveis, como considerada at´e agora, est´a na sua forma afim. Uma forma equivalente, por´em mais ´util em certas situa¸c˜oes, ´e a forma projetiva, onde a curva ´e dada em fun¸c˜ao de 3 vari´aveis. A parametriza¸c˜ao de Weierstrass para a curva nesta forma ´e dada por

y2z = x3+ axz2+ bz3. (3.2)

Certas solu¸c˜oes projetivas da curva est˜ao relacionadas entre si. Se (x, y, z) ´e uma solu¸c˜ao de (3.2), ent˜ao ´e f´acil ver que (tx, ty, tz) tamb´em ser´a uma solu¸c˜ao, caso t 6= 0. Faz sentido ent˜ao falar da classe de equivalˆencia de solu¸c˜oes [x, y, z], que representa todas as solu¸c˜oes em que as coordenadas s˜ao multiplicadas por um escalar n˜ao-nulo.

As solu¸c˜oes afins e projetivas tamb´em est˜ao relacionadas entre si. Se (x, y) ´e uma solu¸c˜ao afim de (3.1), ent˜ao [x, y, 1] ´e uma solu¸c˜ao projetiva de (3.2); e de forma rec´ıproca, se [x, y, z] ´e uma solu¸c˜ao projetiva de (3.2), ent˜ao (x/z, y/z) ´e uma solu¸c˜ao afim de (3.1). A forma projetiva (3.2) tamb´em permite a defini¸c˜ao de uma solu¸c˜ao especial da curva, o ponto O = [0, 1, 0], que ´e chamado ponto no infinito. Esta solu¸c˜ao ser´a crucial nas defini¸c˜oes da Se¸c˜ao 3.2.

(49)

am-plamente utilizadas na literatura da teoria de curvas el´ıpticas, as parametriza¸c˜oes a seguir podem ser computacionalmente mais convenientes em certas situa¸c˜oes. 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 equa¸c˜ao nessa forma ´e 4A3+ 27B2 − 18ABC − A2C2+ 4BC3, e

como na parametriza¸c˜ao de Weierstrass, deve ser diferente de zero para que a curva seja n˜ao-singular.

A defini¸c˜ao a seguir compila os resultados desta se¸c˜ao.

Defini¸c˜ao 3.1.1. Uma curva c´ubica n˜ao-singular com coeficientes provindos de um corpo F, e que possua pelo menos um ponto com coordenadas n˜ao simultaneamente nulas em F, ´e dita uma curva el´ıptica sobre F. Se a caracter´ıstica de F n˜ao ´e 2 ou 3, a equa¸c˜ao (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 equa¸c˜ao da curva, mais o ponto no infinito O. Temos ent˜ao

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 equa¸c˜ao (3.1). ´E poss´ıvel construir um terceiro ponto P3 = (x3, y3) da curva

em fun¸c˜ao desses dois pontos, atrav´es da seguinte regra: tra¸ca-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 reflex˜ao desse terceiro ponto em torno do eixo x, o que ´e poss´ıvel uma vez que a curva ´e sim´etrica em rela¸c˜ao a esse eixo, obt´em-se o ponto P3. A justificativa

para essa reflex˜ao aparentemente arbitr´aria ´e que de outra maneira, os trˆes pontos seriam colineares por defini¸c˜ao, o que impossibilitaria a obten¸c˜ao de novos pontos a partir de combina¸c˜oes desses trˆes.

A Figura 3.2 ilustra o processo descrito.

Quando P1 = P2, essa constru¸c˜ao falha, uma vez que existem infinitas retas que

(50)

Figura 3.2: Soma de pontos em uma curva el´ıptica. pode ser obtida por deriva¸c˜ao impl´ıcita da equa¸c˜ao da curva (3.1).

Outro caso especial ´e aquele em que a reta resultante da constru¸c˜ao ´e vertical; o terceiro ponto de intersec¸c˜ao dessa reta com a curva ´e definido como o ponto no infinito O.

A regra geom´etrica aqui descrita pode ser interpretada como uma opera¸c˜ao bin´aria entre dois pontos da curva, que resulta em um terceiro ponto da curva. Combinando todas as solu¸c˜oes da equa¸c˜ao da curva, dadas na Defini¸c˜ao 3.1.1, com a opera¸c˜ao 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 express˜oes para as regras geom´etricas consideradas. Observa-se que essas opera¸c˜oes s˜ao v´alidas n˜ao somente para R, onde foi feita a dedu¸c˜ao, mas tamb´em para outros corpos. O teorema a seguir fornece essas express˜oes e afirma que E(F), em conjunto com estas express˜oes, forma um grupo abeliano (2), cuja nota¸c˜ao empregada ao longo desse trabalho ser´a 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)

(51)

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, 3x2 1+ a 2y1 se x2 = x1; 2. −P1 = (x1, −y1).

Ent˜ao o grupo (E(F), +) ´e um grupo abeliano com identidade O.

A interpreta¸c˜ao geom´etrica da opera¸c˜ao se perde quando a curva ´e considerada sobre um corpo finito Fp, como os inteiros m´odulo p. No entanto, as express˜oes do Teorema 3.2.1

ainda s˜ao v´alidas nesta situa¸c˜ao, bastando substituir a aritm´etica de R pela aritm´etica de Fp; em particular, as opera¸c˜oes de divis˜ao podem ser realizadas atrav´es de multiplica¸c˜ao

pelo inverso do divisor.

A defini¸c˜ao de multiplica¸c˜ao de pontos por inteiros, que corresponde `a opera¸c˜ao de exponencia¸c˜ao em grupos multiplicativos, ´e direta:

nP = P + P + · · · + P

| {z }

n vezes

.

Define-se tamb´em 0P = O e (−n)P = −(nP ). Devido `a similaridade com a exponen-cia¸c˜ao em grupos multiplicativos, os mesmos algoritmos podem ser empregados, embora n˜ao necessariamente os melhores algoritmos para exponencia¸c˜ao em (Z/nZ)∗ sejam os melhores para multiplica¸c˜ao por inteiro em E(Fp), devido ao desempenho relativo das

opera¸c˜oes de somar dois pontos distintos e de dobrar um ponto.

O seguinte teorema elucida a estrutura alg´ebrica do grupo de pontos de uma curva el´ıptica (2).

Teorema 3.2.2 (Cassels). O grupo E(Fpk) ´e c´ıclico ou isom´orfico a um produto de dois

grupos c´ıclicos

E ∼= Z/d1Z × Z/d2Z,

(52)

Grupos c´ıclicos j´a 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 − 2ppk< |E(F

pk)| < pk+ 1 + 2

p pk.

Uma interpreta¸c˜ao 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 n´umero de bits que o n´umero de elementos do corpo sobre o qual ela ´e definida. Esse dado ´e bastante ´util na an´alise de algoritmos envolvendo curvas el´ıpticas. No entanto, isso n˜ao significa que os dois valores estejam muito pr´oximos, 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 aritm´

etica el´ıptica

Nesta se¸c˜ao, ser˜ao considerados algoritmos b´asicos para aritm´etica el´ıptica, sem gran-des preocupa¸c˜oes quanto `a eficiˆencia dos mesmos; algoritmos eficientes s˜ao 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 equa¸c˜ao

y2 = x3 + ax + b. Este algoritmo retorna um ponto (x, y) de E.

1. [La¸co]

Sorteie um valor aleat´orio 0 ≤ x < p; t = x3+ ax + b mod p;

if ((pt) == −1) goto [La¸co];

return (x, ±√t mod p); // Raiz quadrada modular.

O funcionamento do algoritmo deve ser claro: para que x0 seja uma coordenada x

v´alida da curva y2 = x3+ax+b, ´e preciso que x3

(53)

permitir a extra¸c˜ao da raiz quadrada desse valor. Quando um ponto (x, y) ´e encontrado, sabe-se que, pela simetria da curva, (x, −y) tamb´em ´e um ponto v´alido, e por isso as duas solu¸c˜oes s˜ao retornadas.

O n´umero de execu¸c˜oes do la¸co no algoritmo deve ser pequeno: admitindo que x3+

ax + b seja um valor aleat´orio (dado que x ´e aleat´orio), e como metade dos elementos de (Z/pZ)∗ s˜ao res´ıduos quadr´aticos, fica claro que em 50% dos casos um dado valor de x3+ ax + b ser´a res´ıduo quadr´atico.

A seguir, ´e preciso realizar aritm´etica com os pontos da curva el´ıptica. A escolha de um sistema de coordenadas ´e crucial. Ser˜ao consideradas as duas op¸c˜oes j´a discutidas anteriormente, coordenadas afins e projetivas.

3.3.1

Coordenadas afins

Inicialmente ´e apresentado o algoritmo para aritm´etica em coordenadas afins. Devido `

a impossibilidade de representar o ponto no infinito O em coordenadas afins, h´a duas op¸c˜oes: ´e poss´ıvel utilizar uma vari´avel booleana cujo valor indica se o ponto atual ´e O, ou adicionar uma terceira coordenada z `a representa¸c˜ao, como em coordenadas projetivas, por´em z s´o pode assumir os valores 0 (quando o ponto em quest˜ao ´e O) ou 1.

Algoritmo 3.3.2. Seja uma curva el´ıptica E(F), em que a caracter´ıstica do corpo F ´e diferente de 2 e 3, e dada pela equa¸c˜ao afim y2 = x3 + ax + b. Pontos P da curva

s˜ao 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 fun¸c˜ao a seguir computa a opera¸c˜ao fundamental de adi¸c˜ao el´ıptica.

(54)

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 desej´avel fornecer tamb´em as seguintes opera¸c˜oes extras: 2. [Fun¸c˜ao de nega¸c˜ao el´ıptica]

neg(P ) { return (x, −y, z); }

3. [Fun¸c˜ao de adi¸c˜ao el´ıptica de um ponto a si mesmo] dobro(P ) { return soma(P ,P ); }

4. [Fun¸c˜ao de subtra¸c˜ao el´ıptica]

sub(P1, P2) { return soma(P1,neg(P2)); }

Deve-se observar que as multiplica¸c˜oes por constantes pequenas, como 2 e 3, devem ser efetuadas por meio de somas e n˜ao multiplica¸c˜oes.

Os dois primeiros testes do algoritmo verificam se um dos pontos n˜ao ´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 s˜ao distintas ou n˜ao (geralmente indicando se os pontos em si s˜ao distintos ou n˜ao), e calcula o coeficiente angular m de acordo com cada caso. Observe que se P2 = −P1, ent˜ao

a coordenada x destes dois pontos ´e a mesma, embora os pontos sejam distintos; o teste aninhado dentro do terceiro teste reconhece esta condi¸c˜ao e retorna O como resultado, uma vez que P − P = O.

A contagem de opera¸c˜oes de corpo realizadas a cada adi¸c˜ao el´ıptica ´e crucial para decidir qual sistema de coordenadas a implementar. H´a uma certa desvantagem para as coordenadas afins, gra¸cas `as opera¸c˜oes de invers˜ao modular envolvidas no c´alculo do coeficiente angular m, que s˜ao consideravelmente mais custosas que as opera¸c˜oes b´asicas de adi¸c˜ao, subtra¸c˜ao e multiplica¸c˜ao modular.

3.3.2

Coordenadas projetivas

Referências

Documentos relacionados

A combinação dessas dimensões resulta em quatro classes de abordagem comunicativa, que podem ser exemplificadas da seguinte forma: interativo/dialógico: professor e

Eles argumentam que áreas desmatadas sob domínio público na Amazônia oferecem uma oportunidade única para o Brasil implementar o refl orestamento em larga escala recorrendo

Regeneration of deforested areas in undesignated lands is not as common as in protected territory, but the extent of forest regrowth seen in 2014 shows that it is certainly

No Nível 6, os estudantes são capazes de conceituar, generalizar e utilizar informações com base em suas investigações e na modelagem de problemas complexos, e são capazes de usar

Etapa 3: Para a avaliação da influência da capacidade do forno, da quantidade de instrumentos irradiados ao mesmo tempo e da potência a ser empregada, o frasco de vidro

3.2 Proteção à Imagem nas Legislações Estrangeiras ... DA PROTEÇÃO AO DIREITO À IMAGEM DA PESSOA MORTA NA JURIPRUDÊNCIA PÁTRIA .... Hoje em dia tornou-se um hábito social

Foi possivel alcancar os objetivos propostos neste estudo, haja vista que reproduzidas no conteudo dos referidos capitulos, mediante a utilizacao dos metodos de pesquisa

Clique no link dentro do e-mail para confirmar seu e-mail e liberar sua conta.... Após confirmar seu e-mail irá surgir uma página com seus dados