6 Projeto e Implementa¸ c˜ ao do Sistema
6.3.5 Aritm´ etica el´ıptica
O ´ultimo detalhe importante da implementa¸c˜ao ´e o sistema de coordenadas empregado para aritm´etica el´ıptica. ´E definida uma estrutura de dados para curvas el´ıpticas e pontos sobre as mesmas, al´em de opera¸c˜oes sobre pontos, no arquivo elliptic.h, enquanto a implementa¸c˜ao destas opera¸c˜oes ´e realizada no arquivo elliptic.cpp.
N˜ao s˜ao utilizadas as coordenadas afins e projetivas discutidas na Se¸c˜ao 3.3, mas sim as chamadas coordenadas de Montgomery, propostas em (34). Este ´e um sistema de coordenadas projetivas com uma mudan¸ca crucial: os valores da coordenada y de pontos da curva nunca s˜ao calculados. Embora isso possa parecer absurdo, existem muitas situa¸c˜oes em que as coordenadas y s˜ao dispens´aveis. Aqui, a aplica¸c˜ao da aritm´etica el´ıptica ´e na verifica¸c˜ao das condi¸c˜oes do Teorema 4.3.1, em que basta decidir se um ponto corresponde ao ponto no infinito O ou n˜ao, e para esta opera¸c˜ao basta verificar se as coordenadas x, z s˜ao nulas ou n˜ao.
Atrav´es do descarte das coordenadas y, ´e poss´ıvel eliminar diversas adi¸c˜oes e multi-plica¸c˜oes da aritm´etica em coordenadas projetivas, por´em h´a um detalhe importante: as f´ormulas para a adi¸c˜ao de dois pontos P1 e P2 exigem, al´em das coordenadas dos pontos em si, as coordenadas do ponto P1 − P2. Embora isto pare¸ca limitar a utilidade das co-ordenadas de Montgomery, ´e poss´ıvel forjar um algoritmo de multiplica¸c˜ao de pontos por inteiros empregando as cadeias de Lucas discutidas na Se¸c˜ao 4.1.2. Recorda-se daquela se¸c˜ao que a cada itera¸c˜ao da cadeia, as coordenadas de kP, (k + 1)P s˜ao conhecidas, e ´e poss´ıvel calcular as coordenadas de 2kP, (2k + 1)P ou (2k + 1)P, (2k + 2)P , onde k ´e um inteiro e P ´e um ponto sobre uma curva. Observa-se que a diferen¸ca entre os dois elementos dos pares de coordenadas citadas ´e sempre P , que obviamente ´e conhecido.
No entanto, as cadeias de Lucas apresentam uma desvantagem: o c´alculo de nP exigir´a invariavelmente 2dlog2ne + 1 opera¸c˜oes el´ıpticas, enquanto uma cadeia de exponencia¸c˜ao comum exigir´a bem menos – mesmo o simples Algoritmo 2.3.4 exigir´a cerca de 1, 5dlog2ne opera¸c˜oes, supondo que n ´e um inteiro com uma distribui¸c˜ao aproximadamente igual de bits 1 e 0 em sua representa¸c˜ao bin´aria. Algoritmos mais sofisticados exibir˜ao uma quan-tidade at´e menor de opera¸c˜oes. No entanto, (2) defende as coordenadas de Montgomery em fun¸c˜ao da grande economia de opera¸c˜oes modulares para cada opera¸c˜ao el´ıptica indi-vidual. Seria interessante implementar a aritm´etica em outros sistemas de coordenadas para efeito de compara¸c˜ao, por´em isto n˜ao foi feito neste trabalho.
7 Resultados
Dentre as subrotinas do algoritmo ECPP, o maior esfor¸co foi dispendido na imple-menta¸c˜ao da constru¸c˜ao de curvas com multiplica¸c˜ao complexa. Assim, os resultados deste trabalho consistir˜ao exclusivamente de computa¸c˜oes de curvas com multiplica¸c˜ao complexa por √
−D, para valores bastante grandes de D.
As computa¸c˜oes consistiram nas curvas citadas na dedicat´oria e agradecimentos do trabalho. Alguns dados a respeito destas computa¸c˜oes s˜ao fornecidos na Tabela 7.1, em que todos os discriminantes s˜ao dados na forma fundamental, ao inv´es da forma reduzida empregada no restante do trabalho.
D h(D) h(D) precis˜ao usando precis˜ao usando
esperado heur´ıstica inical nova heur´ıstica
-1000147768 4128 14597 12832 -2001806020 5904 20651 19104 -3006633688 7248 25309 22656 -4004850712 9536 29209 28864 29120 -5022511288 9968 32711 30816 -6005976568 9616 35770 31040 31296 -7005075940 12504 38631 39648 40480 -8011737892 12192 41313 39104 40000 -9003700612 12760 43796 41408 42368 -10000129528 16336 46156 50944 51968 -20029259608 19676 65322 66880 -50051763448 26272 103261 93792
Tabela 7.1: Dados das computa¸c˜oes realizadas neste trabalho.
Deve-se observar que os n´umeros de classe dos discriminantes escolhidos est˜ao muito abaixo da m´edia, dada pela f´ormula 0, 461559p|D| (12). Isto foi proposital; o n´umero de classe afeta diretamente o tempo de execu¸c˜ao do algoritmo (lembrando que o grau do polinˆomio de classe a ser constru´ıdo ´e igual ao n´umero de classe). Al´em disso, a precis˜ao necess´aria para os c´alculos tamb´em ´e fun¸c˜ao do n´umero de classe.
Para realizar estes c´alculos, criamos uma vers˜ao modificada do software que busca por discriminantes com n´umero de classe abaixo de um certo limite, e comunica ao usu´ario os discriminantes encontrados e seu n´umero de classe. Para cada um destes discriminantes, foi executada a primeira passada do algoritmo de c´alculo do polinˆomio de classe (em-pregando baixa precis˜ao), para estimativa da precis˜ao real necess´aria. Os discriminantes mais favor´aveis encontrados nessa etapa s˜ao os listados na Tabela 7.1. A quantidade de processamento empregada nessa etapa foi cerca de 1,5 dia, em um computador Pentium 4 2,6 GHz com 1 GB de mem´oria RAM.
As curvas foram calculadas neste Pentium 4 2,6 GHz e em um Athlon XP 1,83 GHz com 1 GB de RAM, gentilmente cedido por Heron Franklin, exceto pela ´ultima linha da tabela. Esta computa¸c˜ao exigiu uma quantidade maior de mem´oria RAM e utilizou um computador Athlon MP 1,66 GHz com 4 GB de RAM, pertencente a um dos laborat´orios do Departamento de Engenharia El´etrica. Os dez menores discriminantes foram calcu-lados em menos de 2 dias de processamento nos dois computadores citados no in´ıcio do par´agrafo, sendo que ao mesmo tempo o programa de busca de discriminantes com baixo n´umero de classe era executado no computador Pentium 4, de modo que o tempo real de processamento ´e ainda menor. O discriminante -20029259608 exigiu pouco mais de 1 dia de processamento no Athlon XP 1,83 GHz, enquanto o discriminante -50051763448 exigiu mais de 2 dias de processamento no Athlon MP 1,66 GHz.
Deve-se observar que, durante as computa¸c˜oes iniciais, foi descoberto que a heur´ıstica para estimativa de precis˜ao dos c´alculos estava subestimando a precis˜ao real necess´aria. Os discriminantes -4004850712 e -6005976568 n˜ao puderam ser calculados com a esti-mativa inicial de precis˜ao, mas a heur´ıstica de reestimativa de precis˜ao em face deste problema, que adiciona um m´ultiplo do n´umero de falhas devidas a baixa precis˜ao at´e ent˜ao, permitiu o c´alculo ainda na segunda tentativa. Atribu´ımos este problema ao con-junto de dados utilizado para desenvolvimento da heur´ıstica inicial, que era composto de discriminantes com n´umeros de classe mais pr´oximos da m´edia. Ademais, essa heur´ıstica dependia somente da precis˜ao estimada pelos c´alculos em baixa precis˜ao e do n´umero de classe. No entanto, observa-se na Tabela 7.1 que discriminantes com n´umero de classe aproximadamente igual ainda apresentam divergˆencias na precis˜ao necess´aria, indicando uma dependˆencia da precis˜ao com o valor do discriminante em si. Este fato foi levado em conta na formula¸c˜ao da nova heur´ıstica, que tamb´em depende do valor do discriminante. Atrav´es dela, os polinˆomios de classe restantes foram calculados na primeira tentativa sem erros de baixa precis˜ao.
´
E poss´ıvel perceber que todos os discriminantes calculados s˜ao divis´ıveis por 4, e ne-nhum ´e divis´ıvel por 3. De fato, estes discriminantes apresentam propriedades desej´aveis. A divisibilidade por 3 leva a requerimentos muito maiores de precis˜ao, em torno de 3 vezes maiores. J´a a divisibilidade por 4 leva a caracter´ısticas mais pr´oximas de discriminantes menores, facilitando as computa¸c˜oes: os n´umeros de classe s˜ao visivelmente menores, e a precis˜ao exigida para as computa¸c˜oes tamb´em ´e ligeiramente menor, que discriminantes na mesma faixa n˜ao divis´ıveis por 4.
Acreditamos que estes discriminantes representam novos recordes de computa¸c˜ao: o maior discriminante anteriormente calculado (julho/2004), at´e onde sabemos, ´e -8581560955 (39). At´e dezembro de 2004, nossas computa¸c˜oes permanecem recordes.
8 Conclus˜ao
Argumentou-se neste trabalho (particularmente nas Se¸c˜oes 5.1 e 5.2) que ´e poss´ıvel realizar demonstra¸c˜oes de car´ater primo em sistemas distribu´ıdos de larga escala. In-felizmente, o objetivo original do trabalho, que era fornecer uma prova concreta disso, atrav´es de um software que realizasse esta tarefa e fosse mais eficiente que as alternativas monoprocessadas existentes, n˜ao pode ser atingido por quest˜oes de tempo.
Apesar disso, a implementa¸c˜ao parcial do sistema mostrou-se competitiva, pelo menos na ´area em que foi dedicado mais esfor¸co, a constru¸c˜ao de curvas el´ıpticas com multi-plica¸c˜ao complexa. Os resultados relatados nos Agradecimentos do trabalho, e discutidos na Se¸c˜ao 7, incluem uma curva el´ıptica com multiplica¸c˜ao complexa por um discriminante que ´e (at´e o conhecimento do autor) o maior j´a empregado neste tipo de c´alculo.
Embora esse resultado pare¸ca impressionante, ele tamb´em enfatiza uma das princi-pais deficiˆencias da implementa¸c˜ao nesse ponto: conforme s˜ao empregados discriminantes progressivamente maiores nos c´alculos, a ineficiˆencia das rotinas de aritm´etica modular de polinˆomios fica mais clara, assim como as limita¸c˜oes do algoritmo de Cantor-Zassenhaus implementado para a fatora¸c˜ao desses polinˆomios. Mas otimiza¸c˜ao nenhuma nessas ´areas permitir´a atingir resultados realmente espetaculares; para tanto, ´e preciso implementar uma t´ecnica como a fatora¸c˜ao sobre o corpo de gˆenero, ou uma das t´ecnicas de solubi-lidade por radicais introduzidas por Fran¸cois Morain, que levam em conta a estrutura especial dos grupos de Galois dos polinˆomios de classe (40, Cap. 3.1) (41).
Outra deficiˆencia est´a relacionado ao uso dos invariantes IEEE P1363 (20). Para discriminantes divis´ıveis por 3, esses invariantes exigem uma precis˜ao cerca de 3 vezes maior que a m´edia para discriminantes do mesmo tamanho. Outros invariantes foram propostos na literatura, como γ2 (14), e devem ser implementados futuramente.
Tamb´em est´a claro que as rotinas de aritm´etica modular empregadas poderiam ser melhoradas. Em (17), ´e utilizada a biblioteca FFTW para substituir as rotinas de mul-tiplica¸c˜ao da biblioteca GMP, obtendo-se um grande ganho de desempenho. Por outro
lado, o website do GMP (27) afirma que a vers˜ao 5.0 da biblioteca est´a planejada para novembro de 2005, incluindo diversos algoritmos de complexidade reduzida e uma rotina de FFT mais eficiente para multiplica¸c˜ao de inteiros. Desta forma, a melhor estrat´egia ´e n˜ao otimizar a aritm´etica modular neste momento, mas sim completar a implementa¸c˜ao do sistema e otimizar outras ´areas que necessitam de melhorias com maior urgˆencia, como as descritas no par´agrafo acima. Neste ponto, em que a nova vers˜ao do GMP j´a deve estar dispon´ıvel, pode-se avaliar se ainda ´e vantajoso substituir suas rotinas de multiplica¸c˜ao por uma implementa¸c˜ao baseada na biblioteca FFTW.
Outra grande ´area de estudo ´e a sele¸c˜ao de parˆametros para os algoritmos de fatora¸c˜ao de inteiros. Experimentos preliminares indicam que os parˆametros atuais est˜ao longe de serem competitivos com outras implementa¸c˜oes do ECPP. Neste sentido, o autor vislum-brou uma nova forma de an´alise do algoritmo ECPP, que pode contribuir com esta sele¸c˜ao de parˆametros, mas isto ser´a objetivo de um trabalho futuro. Deve-se estudar tamb´em a precis˜ao necess´aria para c´alculo dos polinˆomios de classe: mesmo na gera¸c˜ao de alguns resultados para este trabalho, foram observadas deficiˆencias na heur´ıstica utilizada at´e ent˜ao para estimativa de precis˜ao. Nesse sentido, talvez uma abordagem experimental para a determina¸c˜ao do comportamento desse parˆametro seja v´alida, uma vez que as abordagens te´oricas se mostraram insatisfat´orias.