Centro de Tecnologia e Urbanismo
Departamento de Engenharia El´
etrica
D´
ecio Luiz Gazzoni Filho
Demonstra¸
c˜
oes Distribu´ıdas de
Car´
ater Primo em Larga Escala
Demonstra¸
c˜
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
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
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 √
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.
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 √
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.
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.
Resumo
Abstract
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
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
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
Lista de Defini¸
c˜
oes
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 F∗pk . . . p. 10
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
Lista de Algoritmos
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
(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
1
Introdu¸
c˜
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’.
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
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.
2
Algebra Abstrata e Teoria dos
´
N´
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
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¸
c˜
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
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¸
c˜
oes entre grupos
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.
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 s˜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
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¸
c˜
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;
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¸
c˜
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¸c˜ao entre eles, de modo que ambos possuem a
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.
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.
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).
(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
N´
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;
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
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
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
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
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¸
c˜
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
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.
´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.
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
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
.
} (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(
√
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
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
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.
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
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)
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,
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
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.
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.