Escolar Documentos
Profissional Documentos
Cultura Documentos
Braslia
2013
Universidade de Braslia
Instituto de Cincias Exatas
Orientador
Prof. Dr. Diego de Freitas Aranha
Braslia
2013
Coordenador: Prof.
Dr.
Endereo:
Universidade de Braslia
Campus Universitrio Darcy Ribeiro Asa Norte
CEP 70910-900
BrasliaDF Brasil
Universidade de Braslia
Instituto de Cincias Exatas
CIC/UnB
CIC/UnB
Prof.
Dr.
Agradecimentos
Aos meus pais e irmos, que nunca pouparam esforos para me apoiar e orientar
em todo caminho que decidi seguir. s Professoras Carla Koike, Fernanda Lima, Carla
Castanho e a amigos por acreditarem em minha competncia.
Resumo
O desenvolvimento da criptograa, em especial a criptograa de chave assimtrica, foi
fator determinante para o crescimento e popularizao das redes de computadores. Foi responsvel pela viabilizao de demandas como comrcio e correio eletrnicos, assinaturas e
certicaes digitais. O uso adequado de tcnicas criptogrcas requer o desenvolvimento
de aplicaes ecientes que sejam capazes de executar em diversos tipos de dispositivos
que cada vez mais se incorporam vida das pessoas. A gerao de chaves criptogrcas
uma operao no s crtica quanto segurana, mas tambm de alto custo computacional. Este trabalho tem o intuito de estudar sistemas criptogrcos, conceitos tericos
e teste de primalidade, elemento que compe o ncleo do processo de gerao de chaves.
dado enfoque na implementao, otimizao e anlise de desempenho do Teste de Frobenius Quadrtico Simplicado, um teste de primalidade de 2005 e pouco explorado. Os
resultados atingidos so positivos quanto viabilidade da reduo do custo computacional
dessas operaes.
ii
Abstract
The development of cryptography, public key cryptography in particular, was a crucial factor responsible for the growth and popularization of computer networks. It was
responsible for appearance of demands as email, e-commerce, digitals signature and certication. The proper use of cryptographic techniques requires the development of ecient
applications capable of running in all kind of devices witch more and more incorporates
people's lives.
eration but also a have high computational cost. This project has the goal of studying
cryptosystems and their theoretical basis and primality test, the core element of the key
generation process. It has an especial approach on implementing, optimizing and performance analysis of Simplied Frobenius Quadratic Test, a primality test from 2005 and
under explored. The achieved results are positives about the feasibility of reducing the
computational cost of operation.
iii
Sumrio
1 Introduo
1.1
1.2
Criptograa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.1.1
Contexto Histrico
. . . . . . . . . . . . . . . . . . . . . . . . . . .
1.1.2
Criptograa Moderna . . . . . . . . . . . . . . . . . . . . . . . . . .
1.1.3
Segurana . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.1.4
Princpios de Kercho
. . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Objetivos
2 Sistema Criptogrco
2.1
2.2
2.3
. . . . . . . . . . . . . . . . . . . . . . . .
2.1.1
Vantagens . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.1.2
Desvantagens
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
11
2.2.2
Vantagens . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
12
2.2.3
Desvantagens
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . .
3.2
3.3
2.2.1
12
12
14
Complexidade Computacional . . . . . . . . . . . . . . . . . . . . . . . . .
14
3.1.1
. . . . . . . . . . . . . . . . . . . . . .
14
3.1.2
15
16
3.2.1
Nmeros Primos
3.2.2
. . . . . . . . . . . . . . . . .
18
3.2.3
Algoritmo Euclidiano . . . . . . . . . . . . . . . . . . . . . . . . . .
19
3.2.4
Congruncia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
20
3.2.5
. . . . . . . . . . . . . . . . . . . . . . .
21
3.2.6
21
3.2.7
Teorema de Euler . . . . . . . . . . . . . . . . . . . . . . . . . . . .
22
3.2.8
22
Algoritmo RSA
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
16
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
23
3.3.1
Esquema de Cifrao . . . . . . . . . . . . . . . . . . . . . . . . . .
25
3.3.2
26
3.3.3
iv
. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . .
28
4 Teste de Primalidade
30
4.1
30
4.2
31
4.2.1
4.3
Funo de Mills . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Testes de Primalidade
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.3.1
Crivo de Eratstenes
. . . . . . . . . . . . . . . . . . . . . . . . . .
33
4.3.2
Teste de Fermat . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
34
4.3.3
Teste de Solovay-Strassen
. . . . . . . . . . . . . . . . . . . . . . .
35
4.3.4
Teste de Miller-Rabin . . . . . . . . . . . . . . . . . . . . . . . . . .
36
4.3.5
Teste de Adleman-Huang . . . . . . . . . . . . . . . . . . . . . . . .
37
4.3.6
Teste AKS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
37
5.2
31
32
Implementao
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
40
42
5.1.1
Relic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
43
5.1.2
Quadrado Perfeito
. . . . . . . . . . . . . . . . . . . . . . . . . . .
44
5.1.3
Aritmtica Bsica . . . . . . . . . . . . . . . . . . . . . . . . . . . .
44
5.1.4
Exponenciao Modular
. . . . . . . . . . . . . . . . . . . . . . . .
46
5.1.5
Probabilidade de Erro
. . . . . . . . . . . . . . . . . . . . . . . . .
47
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
47
Otimizao
5.2.1
. . . . . . . . . . . . . . . . . . . .
47
5.2.2
Multiplicao de Karatsuba
. . . . . . . . . . . . . . . . . . . . . .
47
5.2.3
. . . . . . . . . . . . . . . . . . .
48
5.2.4
Janela Deslizante . . . . . . . . . . . . . . . . . . . . . . . . . . . .
48
5.2.5
Reduo de Montgomery . . . . . . . . . . . . . . . . . . . . . . . .
49
5.2.6
Mudana Algbrica . . . . . . . . . . . . . . . . . . . . . . . . . . .
51
5.2.7
Reduo Preguiosa . . . . . . . . . . . . . . . . . . . . . . . . . . .
52
5.3
Testes
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
52
5.4
Resultados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
53
5.4.1
Consumo de Tempo . . . . . . . . . . . . . . . . . . . . . . . . . . .
53
5.4.2
Teste de Primalidade . . . . . . . . . . . . . . . . . . . . . . . . . .
56
5.4.3
Gerador de Primos
57
. . . . . . . . . . . . . . . . . . . . . . . . . . .
6 Concluso
60
Referncias
61
Lista de Figuras
2.1
2.2
2.3
Adaptado de
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
10
2.4
Menezes [29].
11
3.1
3.2
Retirado de
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.1
5.2
. . . . . . . . . . .
43
verso 1. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.3
24
54
verso 5. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
55
5.4
. . . . . . . . . .
55
5.5
. . . . . . . . . . . . . . . .
57
5.6
5.7
. . . . . . . . . . .
58
5.8
59
vi
. . . . . . . . . . . . . .
57
Lista de Tabelas
2.1
Tabela de terminologias
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.1
Algoritmo RSA. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
24
5.1
vs.
nmero de rodadas
t).
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
47
5.2
. . . . . . . . . . . . . . . . . . . . .
53
5.3
Ambiente de testes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
100
Rodadas do Miller-Rabin ajustada para erro de 2
. . . . . . . . . . . . .
53
5.4
5.5
56
vii
59
Captulo 1
Introduo
1.1 Criptograa
A criptograa, na sua denio clssica, a tcnica de transformar mensagens em um
padro no compreensvel para que apenas o destinatrio, atravs de um conhecimento
privilegiado, possa retorn-la ao seu estado original, assim, protegendo-a de agentes no
autorizados (adversrios). Este conhecimento privilegiado chamado de chave. uma
forma de escrita secreta, como pode ser observado na etimologia da palavra.
A criptoanlise refere-se ao conjunto de tcnicas para analisar mtodos criptogrcos [4]. Um dos propsitos decifrar criptogramas sem ter acesso chave ou tambm sem
conhecimento do sistema criptogrco utilizado. Para tal, deve-se buscar fraquezas que
possam levar descoberta do texto em claro ou da chave. Pode ser classicada como passiva, no qual a mensagem interceptada sem que o destinatrio saiba do ocorrido, e como
criptoanlise ativa, que consiste em modicar, retransmitir ou substituir a mensagem em
trnsito, algumas dessas aes podem ser detectadas pelas partes.
Criptologia cincia que rene a criptograa e criptoanlise e estuda suas interaes [7].
The Codebreakers
[22],
um livro no tcnico, mas que rene inmeros materiais histricos que exemplicam o uso
da criptograa, sua maior parte nos perodos das guerras, e que fez um timo servio ao
coletar dados histricos e trazer maior ateno para esta rea.
Historicamente, o uso da criptograa para ns militares era crucial, desde a civilizao
egpcia, datando de 4000 A.C., passando pelo imprio Romano com clssico exemplo da
cifra de Csar, at os tempos modernos, no qual teve papel fundamental nas duas grandes
guerras.
de durao da segunda grande guerra na regio do pacco. evidente que conquistase enorme vantagem ao desvendar manobras militares do seu adversrio.
Infelizmente,
durante esses perodos de conito que ocorrem grandes avanos tecnolgicos, com a
criptograa no foi diferente.
[49], Til-
borg cita o artigo de Shannon [44] de 1949, como base da criptograa moderna. Contudo,
naquele tempo, grande parte dos pesquisadores ainda estavam restritos a agncias governamentais e poder blico. Situao que teve mudana gradativa com a expanso das
indstrias de telecomunicaes.
Dada esta nova ordem computacional e o importante marco da criao da criptograa
assimtrica, tendo Die & Hellman [12] como pioneiros, a criptograa moderna passou a
se ocupar muito menos com a obteno de sigilo, seu uso clssico cuja etimologia era justicada plenamente, e alcanou novas propriedades da segurana da informao. Passou
a ser o estudo de tcnicas matemticas relacionadas segurana da informao como a
condencialidade, integridade, autenticao e irretratabilidade (no-repudiao). A criptograa, portanto, no o nico meio de garantir esta segurana, mas sim um conjunto
de tcnicas para tal [29].
Os principais objetivos da criptograa moderna so:
Integridade uma propriedade de se resguardar da alterao no autorizada de dados. preciso, para isto , ter a capacidade de detectar a manipulao da mensagem
por partes no autorizadas. Esta abordagem pertence criptoanlise ativa, na qual
a manipulao inclui aes como insero, excluso ou substituio de dados.
devem ser autenticadas com origem, a data de origem, o contedo de dados, hora
de envio, etc. Por estas razes, esta propriedade da criptograa geralmente subdividida em duas classes: autenticao de entidades e autenticao de origem de
dados.
Por exemplo,
1.1.3 Segurana
A segurana de primitivas e protocolos criptogrcos pode ser avaliada sob vrios
modelos [29]. As mtricas de segurana mais comuns so computacional e demonstrvel
(ou provvel).
A cifra
One-Time Pad,
Nenhum inconveniente deve ocorrer caso o sistema criptogrco caia nas mos do inimigo [24, 46]. Kerckhos tambm enunciou, em sua publicao, seis propriedades que so
tidas com grande relevncia at os dias de hoje:
1. O sistema deve ser substancialmente, se no matematicamente, indecifrvel.
2. No deve ser exigido sigilo do sistema. Seu furto no deve causar problemas.
3. Deve ser fcil de se comunicar e de guardar a chave sem necessitar anot-la, tambm
deve ser fcil de alterar a chave entre as partes.
4. O sistema deve ser compatvel com a comunicao via telgrafo.
5. O sistema deve ser portvel e seu uso no deve necessitar mais de uma pessoa.
6. Por m, dada as circunstncias de sua aplicao, o sistema deve ser fcil de usar e
no deve exigir esforo cognitivo nem conhecimento de longas regras [24].
1.2 Objetivos
Aps as recentes denncias sobre os casos de vigilantismo global por parte do Governo
norte-americano [38, 39], a criptograa e segurana digital tm sido um tema constante na
mdia mundial. No momento, h grande discusso a respeito da liberdade e privacidade
individual e a criptograa elemento fundamental para a garantia de tais direitos civis
no cenrio de telecomunicaes globalizado.
O tamanho das chaves de sistemas criptogrcos de chave pblica como o RSA tendem
a crescer consideravelmente nos prximos 10 anos. Em vrios casos h exigncia dessas
chaves serem geradas em sigilo, ento tais aplicaes devem ser executadas tambm em
ambientes seguros como
smartcards
ou dispositivos blindados.
Esses dispositivos normalmente possuem poder computacional muito limitado, tornando a gerao de chaves de alto nvel de segurana uma operao demorada e at
mesmo com tempo de execuo proibitivo.
Este trabalho cr na premissa de que a difuso de criptograa depende de solues
prticas e ecientes. Para isso, o seu objetivo geral reduzir o custo computacional na
gerao de chaves criptogrcas. Como objetivos especcos, tem-se a anlise, implementao e otimizao de algoritmos de teste de primalidade, que so responsveis por maior
porcentagem do tempo de gerao de chaves.
Para isso, ser realizado um estudo sobre sistemas criptogrcos e uma base terica de
Teoria dos Nmeros e lgebra. Em seguida, o foco ser no sistema de chave pblica RSA e
sua gerao de chaves, algoritmos de teste de primalidade e escolha do Teste de Fobrenius
Quadrtico Simplicado para implementao, otimizao e anlise de desempenho.
Captulo 2
Sistema Criptogrco
Para o incio do estudo cientco de tcnicas criptogrcas, primeiramente, necessitamos de elucidar a terminologia da rea e expressar algumas denies formais.
A Tabela 2.1 contm alguns termos que sero usados constantemente.
Pode
Receptor
Adversrio
a entidade que no nem o emissor nem o receptor e tem o intuito de driblar o protocolo ou servio de segurana de informao
provido pelas partes. Pode ter outros sinnimos como inimigo, atacante, oponente, intruso.
Canal seguro
Canal inseguro
(M, C, K, Ee , Dd )
propriedades:
bits
binrias distintas, assim, pode-se atribuir cada letra do nosso alfabeto a uma nica
cadeia de
bits
de tamanho 5.
Um elemento de
consiste em uma
M
bits, um
Um elemento de
chamado
texto em
Um
Ee
deve
chamado de criptograma.
Cada elemento
Ee
M.
eK
chamado de chave.
em
C,
denida por
Ee .
ser uma funo bijetiva para que possua uma transformao inversa que retorne um
nico texto claro para cada criptograma distinto. Ou seja:
Para cada
d K, Dd
dene a bijeo de
em
M.
chamado de funo de
Portanto, seja
Ee
Ee : M C
injetiva: Se
Ee (m1 ) = c
Ee (m2 ) = c,
ento
m1 = m2
para qualquer
m1 , m2 M
Ee
sobrejetora:
c C,
! m M : Ee (m) = c
{Ee : e K} de funes
de cifrao e um conjunto correspondente {Dd : d K} de decifrao com a
1
propriedade de que para cada e K existe um nico d K tal que Dd = Ee ,
consequentemente, Dd (Ee (m)) = m para todo m M. Ou seja,
As chaves
d,
[4]
(e, d)
(e, d)
atravs de um
canal seguro. Aps a denio das chaves entre as partes, quando Alice desejar enviar
uma mensagem
ao receber
c,
m = Dd (c)
c = Ee (m)
H dois tipos comuns de sistemas criptogrcos: sistemas baseados em chaves simtricas e sistemas baseados em chaves assimtricas. Nas prximas sees iremos tratar da
construo e utilidades de ambos.
e pode-se facilmente
e vice-versa.
e = d.
secreta ou de chave nica, requerem que o emissor e receptor escolham uma chave antes
de iniciarem uma comunicao segura [42].
A segurana desse sistema est baseada no sigilo da chave.
No momento em que a
chave for revelada, qualquer entidade terceira pode cifrar e decifrar as mensagens em
trnsito.
Figura 2.2: Modelo de comunicao utilizando criptograa simtrica. Adaptado de Menezes [29].
2.1.1 Vantagens
Vantagens do sistema criptogrco simtrico [29]:
Cifras de chave simtrica podem ser desenvolvidos para atingir altas taxas de rendimento ou processamento. Algumas implementaes em
taxas de cifragem que chegam centenas de
plementao em
software
megabytes
hardware
podem atingir
megabytes
por segundo.
As chaves dos sistemas criptogrcos simtricos costumam ser relativamente pequenas em comparao com as chaves assimtricas.
Sistemas criptogrcos simtricos podem ser empregados pra construo de mecanismos criptogrcos incluindo geradores de nmero pseudoaleatrios, funes de
resumo criptogrcos, vericao eciente de integridade, etc.
Sistemas criptogrcos simtricos podem ser combinados para gerar uma cifra mais
forte.
A Criptograa de chave simtrica tem uma extensa histria, ento acredita-se que
muito de sua segurana j foi explorada, embora deva ser considerado que muito do
conhecimento nessa rea tem sido adquirido aps a inveno do computador digital,
e, em particular, da criao do DES na dcada de 1970.
2.1.2 Desvantagens
Desvantagens do sistema criptogrco simtrico [29]:
Portanto,
{Dd : d K}
{Ee : e K}
o espao de
chaves possveis. E principalmente supe que, para cada par, existe a propriedade de ser
1
computacionalmente invivel calcular d tendo o conhecimento de e, onde Dd = Ee .
Tendo este esquema em mente, consideremos a ilustrao da comunicao entre Alice
e Bob, Figura 2.3.
(e, d),
(chamada de chave pblica) para Alice atravs de qualquer canal e mantm a chave
de decifragem
comunicar de forma segura com Bob aplicando a transformao da chave pblica na sua
mensagem
e obtendo o criptograma
tal que
Dd .
Figura 2.3:
Adaptado de
Menezes [29].
Podemos notar como a Figura 2.3 difere da Figura 2.2 no sistema simtrico. Neste
cenrio assimtrico, a chave de cifrao transmitida para Alice atravs de um canal
inseguro. Este canal pode ser o mesmo pelo qual o criptograma tambm ser transmitido.
Uma vez que que a chave de cifragem no precisa ser mantida em segredo, qualquer
outra entidade poder, posteriormente, cifrar mensagens, para Bob, as quais apenas Bob,
portador da chave privada, poder decifr-las, supondo autntica a chave pblica de Bob.
Como modelo mais didtico, pode-se ver a criptograa de chave pblica no como
pares de chaves de Bob, mas sim uma chave mantida em segredo (chave privada) e um
cadeado aberto (chave pblica). O cadeado pblico pode ter quantas cpias seja necessrio
e pode ser analisado por qualquer entidade interessada. A cifragem seria o ato de colocar
uma mensagem dentro de um ba seguro e tranc-lo com o cadeado de Bob, deste modo,
apenas Bob possui a chave que abrir o cadeado.
A criptograa de chave pblica assume o conhecimento e autenticidade da chave pblica e considera que a derivao da chave privada a partir da chave pblica um problema
intratvel, ou seja, assume a existncia de funes unidirecionais e autenticao prvia de
chaves pblicas.
importante resaltar que um sistema criptogrco de chave pblica nunca poder
fornecer segurana incondicional. Isto ocorre pois caso o adversrio tenha acesso a um
y , ele pode cifrar exaustivamente todos os possveis textos claros com a chave
pblica Ee at que encontre um nico texto claro x tal que Ee (x) = y , ento este x a
decifrao de y . Portanto, estudamos a segurana computacional de criptograa de chave
criptograma
pblica [48].
10
Dd
a partir de
da relao
Figura 2.4: Diagrama de uma funo dita uniderecional. Adaptado de Goldreich [17].
Dado uma
lista telefnica com grande quantidade dados, tendo o nome de uma pessoa, possvel
encontrar seu telefone em tempo hbil, mas a operao inversa, encontra o nome de uma
pessoa tendo apenas o seu telefone, uma tarefa difcil devido a desordem dos telefones.
Assim, seria preciso comparar nmero por nmero at encontrar o seu proprietrio.
O estudo dessas funes fundamental para a segurana computacional, pois h a
possibilidade de se descobrir novos mtodos que solucionam esses problemas, que at
ento acredita-se ser unidirecional, em tempo polinomial.
11
2.2.2 Vantagens
Vantagens do sistema criptogrco assimtrico [29]:
o-line.
Dependendo do modo de operao, o par (chave privada, chave pblica) pode permanecer sem modicao por grande perodo de tempo, isto , sendo usado por
vrias sesses e validade de vrios anos, desde que seja preservado o sigilo da chave
privada.
2.2.3 Desvantagens
Desvantagens do sistema criptogrco assimtrico [29]:
Os tamanhos da chave so geralmente maiores do que os necessrios para criptograa simtrica e o tamanho da assinatura de chave pblica maior, fornecendo
autenticao de origem de dados por tcnicas de chave simtrica.
Criptograa de chave pblica tem uma histria ainda recente em comparao com
a Criptograa simtrica. O que nos faz acreditar que ainda houve pouca explorao
a respeito de sua segurana.
12
Tcnicas de criptograa de chave pblica podem ser usadas para estabelecer uma chave
de sistema criptogrco simtrico a ser usado pelas entidades Alice e Bob. Neste cenrio,
Alice e Bob tiram proveito da validade longa das chaves pblica/privada e da ecincia
do esquema simtrico para cifrar grande quantidade de dados. A cifragem e decifragem
dos dados so os processos que custam maior tempo e o esquema de chave pblica para
estabelecer a chave simtrica apenas uma pequena frao do processo criptogrco. Os
sistemas criptogrcos atuais exploram os pontos fortes de ambos os sistemas:
13
Captulo 3
Criptograa de Chave Pblica
3.1 Complexidade Computacional
Um problema computacional pode ser visto como uma coleo innita de instncias
parametrizada em conjunto com uma soluo para cada instncia. A sequncia de entrada
para um problema computacional referida como uma instncia do problema, e no deve
ser confundido com o problema em si.
na entrada
de comprimento n no mximo
tempo
f (n)
f (n).
f (n),
sim ou no).
Um problema de deciso
em cada entrada
f (n)
que resolve o
n.
14
n.
mdia. Essa complexidade s denida com relao a uma distribuio de probabilidade sobre as entradas. Por exemplo, se todas as entradas do mesmo tamanho so
consideradas equiprovveis, a complexidade do caso mdio pode ser denida com
relao distribuio uniforme sobre todas as entradas de tamanho
Por exemplo, considere o algoritmo de ordenao
n.
ordenar uma lista de inteiros que dada como entrada. O pior caso quando a entrada j
2
est ordenada ou est em ordem inversa, e o algoritmo leva tempo O(n ) para este caso.
Se assumirmos que todas as permutaes possveis da lista de entrada so igualmente
A anlise de um determinado
algoritmo cai sob o campo de anlise de algoritmos. Esta anlise realizada de maneira
assinttica, para entradas a partir de um determinado valor.
menores.
Isso faz com que os limites independam dos detalhes especcos do modelo
T (n) = 7n2 + 15n + 40 tem limite superior, ou
f (n)
para a funo
Provar Limites inferiores mais difceis, uma vez que limites inferiores fazem uma declarao sobre todos os possveis algoritmos que resolvem um determinado problema, inclusive
algoritmos ainda no conhecidos.
Limites inferiores geralmente tm maior aplicao quando usados como complemento
para denio de limites restritos.
A gura 3.1 ilustra a comparao entre o crescimento assinttico de algumas funes
comuns na anlise de algoritmos.
15
Figura 3.1: Comparao assinttica entre crescimento das funes. Retirado de Hein [19].
16
pN
denominado primo, se
p>1
1.
Indicamos por
P = {p N : p
primo}
p P ( a, b N : p = ab a = p
Para um primo
b=1
ou
a=1
b = p)
[8].
0,
tm ordem p.
Zp denota o grupo multiplicativo mdulo p, consiste no conjunto {1, . . . , p
operao de multiplicao mdulo p. Ambos so grupos fechados e cclicos.
1}
e a
Um nmero
chamam-se
a, b
c Z.
Se
a|bc
e mdc(a, b)
= 1,
ento
a|c.
Atravs
p P,
ento
a, b N : p|ab p|a
ou
p|b
rpida reduo ao absurdo. Suponha o contrrio, suponha que existe um nmero nito
de primos:
p1 , p2 , p3 , p4 , . . . , pn
Esta uma lista completa dos primos. Agora geramos um nmero
produto de todos os primos da lista,
C = p1 p2 p3 . . . pn .
aritmtica 3.2.2, sabemos que um nmero pode ser decomposto em fatores primos nicos,
C so
Q = C + 1:
ou seja, os fatores de
Agora suponha
Q = C + 1 = p1 p2 p3 . . . pn + 1
Ento,
1.
2.
Q composto. Ento Q deve ser divisvel por todos seus fatores primos (pi | Q i
[1, n]), o que no verdade, pois qualquer diviso por pi deixa resto 1. Logo a lista
no completa (absurdo).
17
H vrias outras provas pra a innidade de primos [40], mas o primeiro registro foi
elucidado por Euclides [13] por volta de 300 a.C., utilizava a mesma ideia apresentada,
mas em um tempo onde ainda no existia a lgebra, toda a aritmtica era realizada
atravs da Geometria, segmentos de reta e circunferncias.
(n)
(n)
[2, n].
n
,
ln n
e apresentaram um limite superior para esse espaamento entre os primos, provaram que
para qualquer natural
n 2,
tal que
n < p < 2n
[40].
bits.
1. Todo nmero
p1 p2 . . . pr = q1 q2 . . . qs
q1 q2 . . . qr , ento
2. Se
com
p0 s
q0s P
e se
p1 p2 . . . pr
tal como
r = s p1 = q1 , p2 = q2 , . . . , pr = qs
Demonstrao:
1. Se
n=p
1 < m < n.
Seja
Como
n>1
sabemos que
n S,
isto ,
mN
com
(r = 1).
S 6= .
p1 S
n = p1 m.
18
p1
primo e temo
Como
p1 > 1
no primo, segue
1 < m < n.
m,
existem
p + 2, p3 , . . . , pr P
tais que
m = p2 p 3 . . . pr .
Segue, como armado:
n = p1 m = p1 p2 p3 . . . pr
p1 p2 . . . pr = q1 q2 . . . qs
q1 q2 . . . qr .
2. Suponha
tal como
com
p0 s
q0s P
e se
p1 p2 . . . pr
p1 |q1 q2 . . . qs
Temos
p1
k(k 1 s)
qk
Assim,
p1 |qk .
com
p1 = qk q1 .
so primos, temos
Da mesma forma,
p1 = q 1 .
q1 |pl
com
Agora de
p1
q1 , q2 , . . . , qs .
(1 l r)
e segue que
q1 = pl p 1
p1 p2 . . . pr = q1 q 2 . . . q s
ocorre
p2 . . . pr = q2 . . . qs
r 1 = s 1, isto , r = s, p2 = q2 , p3 = q3 , . . . , pr = qs .
resultado p1 = q1 , alcanamos a armao inicial.
Sejam
comum
d = mdc(a, b)
denido pelas duas propriedades:
1.
d|a
d|b
(i. e.
2. Se algum
cN
Podemos denir
Sejam
bZ
divide ambos
divide ambos
d,
a
a
e
e
b).
b,
ento
c|d.
d = mdc(a, b).
Ento existem
x, y Z
tais que
ax + by = d.
O Algoritmo 1 mostra o mtodo estendido de Euclides para obter o mximo divisor
comum entre
b.
19
a0 a
b0 b
t0 0
t1
s0 1
s0
q b ab00 c
r a0 qb0
while r > 0 do
temp (t0 qt)
t0 t
t temp
temp s0 qs
s0 s
s temp
a0 b 0
b0 r
q b ab00 c
r a0 qb0
mod
end while
return (r, s, t)
3.2.4 Congruncia
n N um nmero
(a b) mltiplo de n.
Seja
se
a, b Z
Formalmente:
ab
Assim,
ab
mod
n n|a b,
mod
n.
ou mais, a diviso de
por
deixa resto
mod
[27].
aa
mod
2. Se
ab
mod
n,
3. Se
ab
mod
bc
mod
n,
ento
ac
4. Se
ab
mod
cd
mod
n,
ento
a+cb+d
ento
ba
mod
n
mod
a a1 1
O inteiro
a1
mod
20
a1 Zn
n.
ac bd
mdulo
n.
mod
tal que
n,
Suponha
x a1 (mod m1 )
x a2 (mod m2 )
.
.
.
x ar (mod mr )
O teorema garante que existe uma nica soluo mdulo
M = m1 m2 . . . mr
[48].
Tambm chamado de
Input: a e b N
Output: t tal que t b = 1 (mod a)
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
a0 a
b0 b
t0 0
t1
q b ab00 c
r a0 qb0
while r > 0 do
temp (t0 qt)
t0 t
t temp
a0 b 0
b0 r
q b ab00 c
r a0 qb0
mod
end while
if b0 6= 1 then
return b no tem inverso mod a.
else
return t
end if
ap a
(mod
21
p).
Outro resultado conhecido para o Pequeno Teorema de Fermat pode ser trivialmente
obtido dividindo a congruncia por
a:
ap
a
(mod p)
a
a
p1
a
1 (mod p).
aN
a(n) 1
A funo
(n),
ento
n).
1kn
(mod
1,
e mdc(k, n)=
n.
Formalmente,
(n) = |{k N :
1}|.
p,
1 e por p,
(p) = p 1.
(a b) = (a) (b). Assim,
como todo nmero composto pode ser fatorado em um produto nico de primos, podemos
calcular facilmente a funo totiente de qualquer nmero, conhecendo a sua fatorao.
tal
Critrio de Euler
Partindo do pequeno teorema de Fermat, podemos chegar ao seguinte resultado quanto
residualidade de
Suponha que
(mod
p), a 6 0
(mod
p).
Assim,
ap1 (y 2 )p1 1
(p1)/2
Agora suponha que a
1 (mod
i
a b (mod p) para i Z. Logo,
p).
Seja
(mod
p).
(mod
Portanto,
p a(p1)/2 1
22
ento
p).
quadradas de
p,
(mod
p).
Smbolo de Legendre
Para
a Z, p
0
a
= 1
se
se
se
a
p
a 0 (mod p)
a resduo quadrtico mdulo p
a resduo no-quadrtico mdulo p
a
p
que tem-se armativo para resduo quadrtico e negativo para resduo no-quadrtico.
Smbolo de Jacobi
O smbolo de Jacobi a generalizao para o smbolo de Legendre. Tem importante
aplicao em testes de primalidade e em fatorao de inteiros, portanto fundamental na
criptograa.
Suponha
n N com
a
smbolo de Jacobi
fatorao
n=
Qk
i=1
pei i ,
com
pi P
ei 6= 0 i.
Seja
a Z,
denido por:
Y
k ei
a
a
=
n
pi
i=1
Devemos
armar, com maior rigor, que conjecturado que sua segurana depende do problema
da fatorao de nmeros grandes, ou que o problema da fatorao fornece uma quota
superior para o custo de ataque matemtico ao RSA.
23
Figura 3.2:
Retirado de
xkcd [50].
P 6= N P .
O algoritmo em 3.1 exibido a seguir chamado de RSA verso livro texto, pois o apresenta de forma simplicada e sem qualquer otimizao, assim permitindo uma abordagem
mais didtica.
Tabela 3.1: Algoritmo RSA.
1. Gere dois primos grandes aleatrios e distintos
2.
n pq
(n) (p 1)(q 1)
(1 < b < (n))
(b, n)
(decifragem) (a, n)
24
=1
(e, n),
n 1.
Seccione a mensagem em uma srie de blocos representados tambm como inteiros, seguindo qualquer padro de representao. Com este procedimento, obtm-se a mensagem
numa forma numrica necessria para a cifragem.
Cifre elevando a mensagem potncia
criptograma
c)
n.
e-zima
mdulo
E(m) = c = me
(mod
n.
Ou seja, o resultado (o
E:
n)
(3.1)
modulo
n.
Assim, o algoritmo de
D(c) = m = cd
(mod
n)
(3.2)
n 1.
m, c Zn
(3.3)
Analogamente, a chave
(d, n).
(e, n).
q.
n = p q.
Estes primos so grandes e aleatrios. Apesar de
(3.4)
n.
Assim, tambm
[41].
(n).
(n) = (p 1) (q 1)
1 < e < (n) mdc(e, (n)) = 1
Usualmente nas implementaes mais conhecidas, utiliza-se, para o valor de
padres como
3, 5, 17, 257
ou
65537
[9].
e,
primos
F (n) = 22 + 1.
O primo
65537
(3.5)
F (n)
para
n = 4.
Tambm o
25
expoentes pequenos tornam o RSA vulnervel (vulnerabilidades que sero discutidas mais
d
(n).
O expoente privado
multiplicativo mdulo
calculado em relao a
ser o inverso
Portanto:
de1
(mod
(n)).
npq
(n) (p 1)(q 1)
Escolha e de modo que 1 < e < (n)
q,
e mdc(e, (n))
=1
tal que
e d 1(mod (n))
(b, n)
(decifragem) (a, n)
Os inteiros obtidos
de decifragem, respectivamente.
Suponha que Alice deseja cifrar uma mensagem
como inteiro
Zn
c m (mod n)
4: Envia o criptograma
para Bob
(e, n)
m,
Bob procede:
m c (mod n)
26
bit
da mensagem, perde
utilizando sua sua chave privada, no contexto do esquema de assinatura, que chamaremos
de funo
SB
de Bob.
s = SB (m) = md
(mod
n)
VB
m = VB (s) = se
(mod
n)
1: Representa
2:
3:
inteiro
Zn
1: Recebe o par
2:
3:
4:
qP
modulo
27
ed1
Quer dizer que
inteiro
ed
dividido por
(n)
(mod
(n))
deixa resto
1.
tal que:
ed = 1 + k (n).
(3.6)
mp1 1
k (q 1)
p)
(mod
obtemos:
m mk(p1)(q1) m
(mod
p)
(mod
p)
m1+k(n) m
(mod
p)
1+k(p1)(q1)
(3.7)
med m
(mod
p).
mde m
Como
(mod
q).
med m
Lembrando que
c = (me ),
(mod
q:
p q:
n).
cd (me )d m
(mod
n)
[29].
28
m1
m2 ,
s1 = md1
(mod
n)
s2 = md2
(mod
n)
logo temos
s1
s2
tal que:
m3 :
m3 = m1 m2
m3 ,
A assinatura de
s3 = md3
(mod
s3 = (m1 m2 )d
s3 = md1 md2
n)
(mod
(mod
s3
n)
n)
atravs do produto de
s1
s2 :
s3 = s1 s2
s3 = md1 md2
(mod
n)
Para obter resistncia a esses ataques, no se utiliza o texto em claro para ser assinado,
mas sim o seu
Esta funo
hash
a partir do seu
hash h(m)
Outro fato no abordado no RSA livro texto o caso das mensagens cifradas terem
tamanho menor do que as chaves do RSA. Esta vulnerabilidade abre a oportunidade para
vrios tipos de ataques [32] utilizando ideia semelhante ao da forja de assinatura citada.
O preenchimento (padding ) no opcional, uma primitiva criptogrca crtica. Devese realizar o
padding
demonstrado inseguro [32] em sua verso 1.5 e hoje, sendo complementado pelo uso do
29
Captulo 4
Teste de Primalidade
4.1 Importncia dos Nmeros Primos
A ecincia na gerao de chaves e parmetros para criptograa de chave pblica
pr-requisito crucial para estes sistemas. Citando como exemplo, a necessidade de um
p para denir um corpo Zp que satisfaa as propriedades no protocolo Diee tambm a necessidade de se gerar primos p e q para operaes mdulo
nmero primo
Hellman [12]
n = pq
no algoritmo RSA, principal protocolo que teve enfoque neste documento. Neste
n),
bits
desejado para
seja intratvel.
A busca por nmeros primos grandes responsvel por mais da metade do tempo de
gerao de chaves do RSA. Tal fato corrobora a estratgia de otimizao adotada.
Dese-ja que estes nmeros primos atenda a alguma propriedades adicionais a m de
tornar o sistema no passvel a ataques especializados:
1. Resistente contra o algoritmo de fatorao por curvas elpticas: a diferena entre
pq
pequeno implica
p q,
strong primes
mais custosa.
p
n.
assim
n.
Uma
torna a fatorao de
seguintes propriedades:
p1
p1 1
p+1
p1 .
p2 .
p3 .
P (n) =
30
2
ln
f (n)
H muito tempo, matemticos buscam uma funo ou frmula fechada que gere nmeros nmeros primos, sem excees. Euler, em 1772, foi o primeiro a notar que o polinmio
P (n) = n2 n + 41 produzia somente nmeros primos como sada.
P (1) = 41,
P (2) = 43,
P (3) = 47,
P (4) = 53,
1681 = 41 41,
P (5) = 61,
1 n < 41,
P (6) = 71,
para
...
n = 41, P (41) =
ela falha. Este foi um dos primeiros esforos realizados na rea e serve
tal que, se
ento
M (n)
M (n) = bA3 c
resulta um nmero primo para qualquer inteiro
chamados de primos de Mills e
n.
Os primos resultados de
M (n)
so
A = 1, 3063778838630806904686144926 . . .
[20].
n = 1,
n = 2,
n = 3,
n = 4,
n = 5,
M (n) = 2
M (n) = 11
M (n) = 1361
M (n) = 2521008887
M (n) = 16022236204009818131831320183
.
.
.
.
.
.
n,
A.
31
Cincia parece exigir que todos os recursos possveis sejam explorados para a
soluo de um problema to elegante e to celebrado.
Pode-se mencionar que Shor [45] demonstrou que o problema da fatorao se torna
polinomial em computadores qunticos, computadores cujo clculo pode percorrer por
todos os estados possveis ao mesmo tempo.
Como abordado na seo 3.1, um problema de deciso uma questo formal cuja
resposta seja ou
qual a reposta
analisado primo e
no
No nos preocuparemos com a fatorao de nmeros, mas apenas armar quanto a sua
primalidade.
Dizer que um nmero primo implica, evidentemente, negar sua compositividade e
vice-versa:
primo
primo
composto
composto
Logo, tambm podemos utilizar um teste de compositividade para provar a primalidade, ou no primalidade, de um nmero.
Trataremos a respeito de dois tipos de teste:
32
copo com a bola nenhuma vez, ento a probabilidade de obter 30 fracassos sucessivos
30
no jogo seria 2
0.0000001%, aproximadamente uma em um bilho.
Tendo este resultado, podemos armar com alta probabilidade que o jogo desonesto, mas nunca h certeza.
80
Os padres de criptograa exigem uma probabilidade de erro de no mximo 2
ou
100
2
para gerar nmeros primos [21], ou seja, mais provvel uma pessoa ganhar 3 vezes
seguidas na Mega-Sena, o maior prmio da loteria federal, do que um nmero composto
ser dado como primo provvel. Pode aparentar uma margem de segurana excessiva, mas
aplicao de segurana devem ser excessivas.
Algoritmos probabilsticos podem ser classicados em dois tipos:
sim.
no.
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
10
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
11
13
31
41
23
43
5
33
7
17
37
47
19
29
Ao nal os
nN
rN
tal que
r<
n,
ento
nP
1 a p 1,
primo e
um inteiro tal
ento
ap1 1
(mod
p).
de Fermat,
a inteiro aleatrio
r an1 mod n
if r 6= 1 then
com
2an2
return composto
end if
end for
return primo
O parmetro
maior a probabilidade de
ser primo.
Pseudoprimos
Um nmero composto que passa em um teste de primalidade chamado de pseudoprimo. Existem nmeros compostos com propriedades peculiares que passam na congruncia do teorema para toda base. Neste caso, esses pseudoprimos so especialmente
chamados de nmeros de Carmichael.
a560 1
(mod
chamado de
34
mpar
Pa
n1
2
a
n
(mod n) a Zn
n1
2
= 1.
n1
a
Caso contrrio, mdc(a, n) = 1 e a 2 ( )(mod n), n se comporta como primo, pois
n
satisfaz o critrio de Euler para a base a. Contudo, seja n um mpar composto, ento
(n)
existem no mximo
bases a, com 1 a n 1, que satisfazem o critrio de Euler,
2
mesmo com n composto [29].
Caso
( na ) = 0 ou a
x ( na )
if x = 0 then
return composto
end ifn1
ya 2
if x 6= y
n
n then
mod
mod
return composto
end if
end for
return primo
35
A Hiptese de Riemann
um dos problemas do milnio e sua soluo vale uma recompensa no valor de um milho
de dlares, que trata a respeito das razes da funo zeta de Riemann e tambm tem
profunda ligao com a densidade dos nmeros primos.
Rabin [37] aleatorizou a abordagem de Miller, conseguindo, deste modo, eliminar a
dependncia da HER e criar o teste probabilstico de Miller-Rabin, um dos testes mais
ecientes da atualidade [11].
O teste de Miller-Rabin um algoritmo de Monte Carlo com vis positivo para com = 14 e o teste probabilstico mais utilizado na prtica.
Sabemos que as razes quadradas de 1 mod p com p P, s podem ser 1 e 1.
p1
Analisando o PTF, a
1(mod p) com p P, ao extrair sucessivas razes quadradas
p1
de a
, devemos obter 1 ou 1.
k
Seja n um primo mpar, n 1 par, logo pode ser escrito na forma n 1 = 2 m em
positividade com erro
que a potncia
Seja
no mnimo
am 1(mod n)
ou
a2 m 1(mod n),
para algum
r, 0 r k 1
Consequentemente
r
am 6 1(modn) e se a2 m 6 1(mod n) r zk ,
nha de que n composto.
Se
Caso contrrio, se
a base
uma
ento
para algum
36
r zk ,
ento
1: Escreve
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
mpar}
return primo
end if
for i 1 to k 1 do
if b = 1 then
return primo
else
b b2
mod
end if
end for
return composto
end for
algoritmo de Monte Carlo com vis positivo para primalidade, ou seja, para um nmero
composto, o teste sempre vai dar como sada composto e para uma entrada primo, o teste
vai dar na maioria das rodadas primo. Deste modo, se o sada
certeza primo e se a sada
is in P
Gdel
Fulkerson
em 2006.
A motivao inicial para este teste pode ser observada em uma propriedade do tringulo de Pascal.
37
n=0
1
n=1
1 1
n=2
1 2 1
n=3
1 3 3 1
n=4
1 4 6 4 1
n=5
1 5 10 10 5 1
n=6
1 6 15 20 15 6 1
n = 7 1 7 21 35 35 21 7 1
n = 8 1 8 28 56 70 56 28 8 1
.
.
.
Cada linha
.
.
.
(x + y)n ,
n
n!
,
=
k!(n k)!
k
para
n, k N
k n,
n
n1
n1
=
+
.
k
k1
k
Um interessante fato pode ser notado nas linhas primas do tringulo, todos os coecientes
diferentes de
so mltiplos de
quando
n>2
a Zn ,
ento
primo se e somente se
(x + a)n = xn + a
(mod
n).
0 < k < n.
Ainda assim, esta expresso resultada de Fermat tambm sofre com o problema dos
pseudo-primos, nmeros de Carmichael. Um outro problema o alto custo computacional
n
para calcular (x + a) , que tem complexidade O(n), o que inviabilizaria o teste.
Algumas modicaes foram realizadas para contornar esses obstculos e reduzir sua
complexidade. Para um valor pequeno
r,
r
(x + a)n xn + a
A quantidade de valores de
(mod
xr 1, n).
so
38
4: Encontre o menor
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
return composto.
end if
if n r then
return primo
end if
p
for a 1 to b (r) log nc do
if (x + a)n 6= xn + a (mod xr 1, n) then
return composto
end if
end for
return primo
Nesta primeira verso apresentada pelos autores, foi provado que o algoritmo tem um
O(log12 n). Logo aps a publicao deste trabalho [3], vrios
matemticos revisaram o artigo em busca de torn-lo mais eciente, o que foi bastante
positivo, pois logo nos meses seguintes havia a proposta de diferentes verses para o teste
e com limites mais baixos.
A ltima verso do teste AKS proposta por Lenstra e Pomerance [26] conseguiu alO(log6 n). o limite terico mais baixo para o teste que
39
Captulo 5
Teste de Frobenius Quadrtico
Simplicado
O teste escolhido para o desenvolvimento deste trabalho foi o Teste de Frobenius
Quadrtico Simplicado [43] (TFQS), baseado no Teste de Frobenius Quadrtico proposto
por Grantham [18]. Nesta verso simplicada, o tempo de execuo foi reduzido de trs
rodadas do testes de Miller-Rabin para duas e a probabilidade de erro, para o pior caso,
12t
de 2
, sendo t o nmero de rodadas.
A publicao de Grantham estimulou vrias outras pesquisas e novas verses para o
teste. O TFQS, a princpio, aparenta ser um teste muito promissor, pois, apesar de ter
um tempo de execuo maior, tem uma probabilidade de erro extremamente baixa, o que
reduz bastante a quantidade de rodadas necessrias, t, para obter exigncias de segurana
e o torna um teste convel. Tambm, ainda no se tem conhecimento de trabalhos de
implementao ou anlise de desempenho deste teste em comparao aos utilizados na
indstria, o que refora a motivao de examin-lo.
O TFQS um algoritmo de Monte Carlo com vis positivo para compositividade, usa
polinmios quadrticos e o automorsmo de Frobenius.
m
Seja q = p
a potncia de um primo p e o corpo nito
Galois. O
automorsmo de Frobenius q
Fq = G(q), G
a extenso de
o mapeamento na bijeo
:F F
z 7 z q
z F.
um n natural
para todo
Para
mpar e
R(n, c)
n,
R(n, c) o grupo multiplicativo em R(n, c). Sendo f (x) um polinmio mnico quadrtico
em Zn , se n primo e f (x) irredutvel em Zn , ento este anel equivalente ao corpo
2
nito G(n ). Felizmente, esses polinmios so facilmente encontrados: para n primo,
um polinmio quadrtico em Zn irredutvel se e somente se seu discriminante, ,
2
um
no-quadrtico mdulo n, ou seja, para o polinmio mnico x bx c,
2 resduo
b +4c
= 1.
n
e
G(n2 )
40
n
2
que deve ser equivalente ao automorsmo de Frobenius z z em G(n ) para n
2
1
2
primo. Alm disso, sendo n primo, n 1 divisvel por 24
e tambm G(n ) tem um
R(n, c),
q -simas
razes de unidade
q.
polinmio z = ax + b,
z,
se existir, satisfazem
q (z) = 0
para o
q -simo
polinmio ciclotmico
Para um
R(n, c):
(a/n)
z = b ax
N (z) = z z = b2 ca2
(conjugado);
(norma).
Zn
composto.
8 () = 0).
if n = 3 (mod 4) then
n3
2 4 (mod n)
if 22 6= 1 (mod n) then return
else return c 1, + x
2:
3:
4:
5:
6:
composto
end if
if n = 5 (mod 8) then
n1
2 4 (mod n)
if 2 6= 1 (mod n) then return
x
else return c 2, 1+
2
7:
8:
9:
10:
11:
12:
13:
14:
end if
if n = 1 (mod 8) then
if n um quadrado perfeito then
return composto
else
15:
16:
17:
18:
19:
20:
composto
end if
end if
Na verdade, o Algoritmo MR2 realiza uma rodada de Miller-Rabin com base 2 caso
6= 1 (mod 8) e com base c caso contrrio. A relao 4 = 1 (mod R(n, c)) evidente
caso
das quatro razes oitavas primitivas de unidade nos outros casos [43].
41
R(n, c).
O comporta-
mento de Frobenius sob o conjugado similar ao comportamento do grupo de decomposio como um todo.
Suponha o grupo G. Dois elementos a e b so ditos conjugados se existe um elemento
g G tal que gag 1 = b. Isso mostra que o conjugado uma relao de equivalncia e toda
conjugao um automorsmo. Logo, a no vericao do automorsmo de Frobenius
(z n 6= z) um certicador da compositividade de n.
O Algoritmo 12 representa uma rodada do teste de Frobenius quadrtico simplicado.
Ou
1: Escolha
3:
4:
5:
6:
7:
8:
(c, n) = 1
e o polinmio
R(n, c)
= 1.
Output:
2:
tal que
primo ou composto
aleatrio
R(n, c)
if z n 6= z then
return composto
endn2if1
if z 8 6 {, 3 } then
return composto
end if
return primo
com
(N (z)/n) = 1
5.1 Implementao
O planejamento da implementao foi realizado sobre a biblioteca criptogrca Relic [5].
fornea aritmtica multi-preciso, suporte manipulao de nmeros inteiros muito grandes que extrapolariam a preciso de qualquer tipo primitivo de variveis.
Em resoluo com a Relic, a implementao foi executada utilizando a linguagem C
padro C99.
42
5.1.1 Relic
A Relic uma moderna biblioteca criptogrca com nfase em ecincia e exibilidade.
Alm de possuir vrias opes de protocolos criptogrcos, oferece suporte para construir
toolkits
bn_t.
BigNumber,
/
Represents a multiple precision integer.
typedef struct {
/ The number of digits allocated to this multiple precision integer. /
int alloc;
/ The number of digits actually used. /
int used;
/ The sign of this multiple precision integer. /
int sign;
/ The sequence of contiguous digits that forms this integer. /
dig_t dp;
} bn_st;
/
43
representado
20
21
22
BigNumbers bn_t*,
coeciente.
a com n bits
( 2b
n1
c
2
O(log2 n)
, 2b 2 c ).
com o
multiplicaes.
de
a,
basta vericar se
c2 = a
para determinar se
quadrado
perfeito.
Listing 5.2: Funes de quadrado perfeito e raiz.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/
Tests if a multiple precision integer is a perfect square.
/
Computes the integer oor square root of a multiple precision integer
n.
m e n,
resulta em um polinmio de
a = a1 x + a0
b = b1 x + b0
polinmios de grau
1,
ento
a b = (a1 x + a0 )(b1 x + b0 )
a b = a1 b1 x2 + (a1 b0 + a0 b1 )x + a0 b0
44
a1 b1 x2 + (a1 b0 + a0 b1 )x + a0 b0
a1 b1 x2
+ a1 b 1 c
x2 c
a 1 b1
(5.1)
(a1 b0 + a0 b1 )x + a0 b0 + a1 b1 c
O custo de processamento desses algoritmos limitado pelo nmero de multiplicaes,
quadrados e redues entre nmeros grandes, portanto iremos desconsiderar o custo das
somas e subtraes, que em geral so muito inferiores. Deste modo, uma multiplicao
de dois polinmios custa quatro multiplicaes e uma reduo de coecientes em Zn .
a = b,
que resulta em
shift.
/
Adds two multiple precision polynoms in a polynomial ring. c = a + b.
void
bn_t
bn_t
bn_t
bn_t
/
Subtracts two multiple precision polynoms in a polynomial ring. c = a b.
@param[out] c
@param[in] a
@param[in] b
@param[in] n
/
the result.
the rst multiple precision polynom to add.
the second multiple precision polynom to add.
the modulus of coecients.
@param[out] c
@param[in] a
@param[in] b
@param[in] m
@param[in] n
/
the result.
the rst multiple precision polynom to multiply.
the second multiple precision polynom to multiply.
the polynomial modulus.
the modulus of coecients.
38
39
40
@param[in] n
/
k1 2
ak = a a 2
2
a k2
se
k=0
se
k1
(mod
2)
se
k0
(mod
2)
right
nos
bits
como um
shift
c1
for i |e| 1 downto 0 do
c c2 mod (n, f )
if ei = 1 then
c a c mod (n, f )
end if
end for
return c
multiplicaes.
Listing 5.4: Funo de exponenciao modular esquerda para direita.
1
2
3
4
5
6
7
8
9
10
/
Exponentiates a multiple precision polynom modulo a polynomial modulus
using the binary method.
11
k vs.
de [43].
k \t
300
48
100
124
143
160
400
57
118
146
169
189
500
65
134
166
192
214
600
72
148
184
212
237
1000
96
197
243
281
314
5.2 Otimizao
5.2.1 Crivo para Quadrados Perfeitos
a um inteiro par e b um inteiro mpar, ento eles tero a forma a = 2n e b = 2m+1,
n, m N. Assim,
Seja
para
a2 = (2n)2 = 4n2
b2 = (2m + 1)2 = 4m2 + 4m + 1 = 4 (m + m2 ) +1 = 4k + 1
| {z }
mod
e, por transitividade,
mod
4,
8.
na diviso por
2, 3, 7
ou
8.
47
a b = (a1 + a0 )(b1 + b0 ) a1 b1 a0 b0 x + a0 b0 + a1 b1 c
Expandindo essa expresso de Karatsuba, pode-se notar que retorna ao mesmo resultado da equao 5.1.
/
Multiplies two multiple precision polynoms using Karatsuba multiplication
in a polynomial ring.
void
bn_t
bn_t
bn_t
bn_t
bn_t
(a + bi),
(a0 + a1 )(a0 + a1 c)
a0 a1 .
/
Computes de squareof a multiple precision polynoms using complex square
form in a polynomial ring.
void
bn_t
bn_t
bn_t
bn_t n);
bit
do expoente
w chamado de tamanho
e = (et et1 . . . e1 e0 )2 com et = 1, logo t = |e|.
48
da janela e
w 1. e
tem forma
a1 a, a2 a2
for i 1 to (2w1 1) do a2i+1 a2i1 a2
c 1, i t
while i 0 do
if ei = 0 then
c c2 , i i 1
2:
3:
4:
5:
6:
7:
else
8:
9:
10:
. . . el
tal que
el = 1
(i l + 1) w
end if
end while
return c
11:
12:
13:
/
Exponentiates a multiple precision polynom modulo a polynomial modulus
using the sliding window method.
void
bn_t
bn_t
Zn
da funo.
A diviso em multi-preciso, como tambm em preciso simples, tem alto custo computacional. Uma soluo proposta por Montgomery trocar as divises por multiplicaes.
|n|
Seja r = a b (mod n). Para n mpar, escolhe-se V = 2 . O mdc(V, n) = 1, portanto
n.
a e b, usaremos os resduos a
e b.
a
= aV
(mod
b = bV
n),
49
(mod
n).
Esta transformao
b mantendo
a forma de Montgomery:
r = a
b V 1 (mod n)
= aV bV V 1 (mod n)
= a b V (mod n)
em termos de
r = r V 1
(mod
r:
n).
necessrio o pr-clculo de
/
Multiplies two multiple precision polynoms using Karatsuba multiplication
in a polynomial ring using Montgomery reduction.
@param[out] c
@param[in] a
@param[in] b
@param[in] m
@param[in] n
@param[in] u
/
the result.
the rst multiple precision polynom to multiply.
the second multiple precision polynom to multiply.
the polynomial modulus.
the modulus of coecients.
the reciprocal of the modulus.
@param[out] c
@param[in] a
@param[in] m
@param[in] n
@param[in] u
/
the result.
the multiple precision polynom to square.
the polynomial modulus.
the modulus of coecients.
the reciprocal of the modulus.
50
casos:
1.
c = 1 n 1
2.
c=2
3.
c=
(c/n) = 1
n1
e uma reduo
n.
shift left
e uma
subtrao.
Para o terceiro caso, podemos trocar a busca aleatria por uma busca incremental com
no mximo 3 clculos de Jacobi [43], assim mantendo o valor de
restritamente pequeno
de modo que possamos trocar uma multiplicao e uma reduo por uma multiplicao
por dgito simples e
O(1)
subtraes.
/
Multiplies a multiple precision integer for a small digit using best method
for each digit.
zn.
2.
z (n
2 1)/8
2 1)/8
z (n
O(1)
multiplicaes e quadrados.
51
2k1 bits
e no mximo
2k bits.
k bits
Zn
r = n 2|n| .
2. Quando necessria uma soma ou subtrao de um produto com a preciso acumulada, realiza-se uma soma ou subtrao de
como reduo.
redues.
Na operao de quadrado no h como usar a tcnica da reduo preguiosa, pois o
cenrio ja timo, duas multiplicaes e duas redues modulares.
5.3 Testes
A cada passo da implementao, alterao ou otimizao no cdigo, importante
efetuar testes que garantam a corretude dos componentes para que se obtenha uma coleta
de dados consistente.
O artefato de testes foi desenvolvido em um ambiente fornecido pela prpria biblioteca
Relic. Foram construdas operaes que vericam diversas assertivas, as principais esto
descritas na Tabela 5.2.
52
R(n, c) comutativa.
Multiplicao em R(n, c) associativa.
Multiplicao em R(n, c) distributiva.
Multiplicao em R(n, c) tem identidade.
Multiplicao em R(n, c) tem propriedade
Quadrado em R(n, c) est correto.
Multiplicao em
Polinmio
zero.
Computador
OS / kernel
Compilador
gcc 4.8.1
Relic
relic-0.3.5
GMP
2:5.1.2+dfsg amd64.
5.4 Resultados
5.4.1 Consumo de Tempo
Ao nal das etapas de implementao e teste, chegou-se a um cdigo inicial e funcional
TFQS verso 1. Para maior compreenso do consumo de tempo do teste, foi dividido em
53
3. Calcular
zn
4. Calcular
(N (z), n) = 1
(Jacobi).
(Cmp 1).
n2 1
8
(Cmp 2).
Com esta diviso e dado um primo provvel entrada do teste, foi possvel analisar o
consumo de tempo de cada parte individualmente, apresentado na Figura 5.2. A partir
desta informao, foi criada uma estratgia de otimizao com enfoque nas partes de
maior volume.
Tamanho de
verso 1.
A etapa de otimizao culminou no TFQS verso 5, que tem seu consumo de tempo
apresentado na Figura 5.3.
54
Tamanho de
verso 5.
Pode-se notar que na Figura 5.3, ltima verso, a economia da segunda exponenciao
modular (Cmp 2) reduziu o seu tempo para um valor desprezvel. Tambm visvel que
a nica exponenciao modular restante continua custosa, seu clculo responsvel por
mais da metade do tempo de execuo do teste. As outras etapas do teste aparentaram
pouca ou nenhuma mudana.
2, 5
speedup
foram importantes para este ganho, mas a que foi responsvel pelo maior volume foi a
55
economia de uma exponenciao modular (Cmp 2), que notvel na comparao entre
os Grcos 5.2 e 5.3.
Tambm foi implementada uma verso chamada TFQS Subs, na qual a busca por
um polinmio aleatrio, linha 1 do algoritmo 12, s necessria na primeira rodada do
teste. A verso alternativa no mostrou signicativa melhora no desempenho e tambm a
partir de primos com 1000
bits,
a verso TFQS Subs irrelevante quando necessrio alto nvel de segurana para chaves
criptogrcas.
setup
t
k
2100 .
10
3883
1761
1159
868
698
586
507
448
403
367
A coleta de dados dos testes de primalidade em si, foram divididas em dois cenrios:
1. Cenrio primo. Apenas primos provveis j testados so entregues aos algoritmos.
2. Cenrio composto. Apenas inteiros compostos so entregues aos testes. Este cenrio
tem o intuito de analisar o tempo de prova de compositividade para os testes.
A Figura 5.5 apresenta o desempenho dos testes com entrada de apenas primos provveis. Para facilitar a visualizao e comparao entre os grcos, foi divido o tempo
de cada teste pelo tamanho em
bits
entre as curvas.
Nota-se que o TFQS mais veloz para inteiro de at 256
bits
e a partir de 512
bits,
56
https://code.google.com/p/mrtab/
57
end if
end while
ou 500 primeiros primos. Esta tcnica uma otimizao para provar a compositividade
de nmeros que tenham fatores pequenos.
Com o objetivo de obter uma anlise completa e equilibrada, as comparaes foram
novamente divididas em 2 cenrios:
1. Cenrio justo. A semente do gerador pseudoaleatrio foi xada de modo que os testes
recebam exatamente a mesma sequncia de inteiros para vericao de primalidade.
2. Cenrio aleatrio.
Figura 5.7: Gerador de primo com semente xa. Rabin vs. TFQS.
58
bits
Figura 5.8: Gerador de primo com semente aleatria. Rabin vs. TFQS.
devido a Lei dos Grandes Nmeros, as mdias das repeties convergem para o cenrio
justo.
Em uma viso panormica, o TFQS pode ser delimitado pelo custo de uma exponenciao modular em anel de polinmio por rodada, como evidenciado na Imagem 5.3. De
maneira semelhante, o teste de Miller-Rabin pode ser delimitado por uma exponenciao
modular simples por rodada.
Os dados de desempenho das duas funes apresentado na Tabela 5.5. Assim, nota-se
que a exponenciao modular em
R(n, c)
ao modular simples. Este fato, juntamente com o nmero de rodadas para cada teste,
apoiam os resultados obtidos na anlise dos grcos de desempenho.
Bits
Tempo (nanosegundos)
bn_mxp
bn_pol_mxp
bn_pol_mxp
32
15848
51871
3,27
64
29142
93074
3,19
128
60060
188831
3,14
256
138390
415677
3,00
512
414568
1206350
2,90
1024
1617537
4169730
2,57
59
bn_mxp
Captulo 6
Concluso
Neste trabalho foi apresentado mtodos de aritmtica em anel de polinmio e tambm
tcnicas de otimizao que culminaram na produo de um artefato ecaz. Foi apresentado um teste de primalidade ainda novo que obteve resultado satisfatrio para inteiros
de at 256
bits.
bits.
com
1 https://code.google.com/p/bruno-tg2/
60
Referncias
[1] S. Aaronson. The Prime Facts: From Euclid to AKS.
com/writings/prime.pdf,
2003. 32, 37
Finite Fields.
http://www.scottaaronson.
Annals of Mathematics,
https://docs.google.com/
file/d/0BwyUaEvgJMOnSFBvQmFUN1Y3OEk/edit,
2013. 1, 6
http://code.google.com/p/relic-toolkit/.
[6] R. Baillie and S. Wagsta.
42
Lucas pseudoprimes.
Mathematics of Computation,
35(152):13911417, 1980. 60
[7] F. L. Bauer.
Springer-Verlag,
Berlin, 1999. 1, 2, 11
[8] D. M. Burton.
22
[9] The OpenSSL Core and Development Team. Openssl: Documents, genrsa(1), julho
2013.
http://www.openssl.org/docs/apps/genrsa.html.
25
Introduction to Algorithms.
on Information Theory,
IEEE Transactions
Euclid's Elements,
Proceedings of
the 7th International Colloquium on Automata, Languages and Programming, pages
61
In
Mathematical Constants.
31
[17] O. Goldreich.
J. Number Theory,
72(1):3247, 1998. 40
[19] J. L. Hein.
http://oeis.org/A051021.
31
[21] ISO/IEC 18032. Information technology - Security techniques - Prime number generation, 2005. 33, 47
[22] D. Kahn.
Macmillan Publishing
Physics-Doklady,
7:595596, 1963. 47
1883. 4
[25] D. E. Knuth.
vo-
Proceedings of the 7th International Colloquium on Automata, Languages and Programming. Springer-Verlag,
[27] R. R. Maier. Teoria dos nmeros. Universidade de Braslia - IE, 2005. 19, 20
[28] T. Matsumoto and H. Imai. On the key predistribution system: A practical solution
tography.
Systems Sciences,
13(3):300317, 1976. 36
Society,
293
53(6):604, 1947. 31
62
[32] D. Naccache.
4(4):2833, 1999. 29
[33] W. Narkiewicz.
and Littlewood.
[34] S. J. Piestrak.
Lett,
43(11):611612, 2007. 26
1021
, 2007. 35
matics of Computation,
25 109 . Mathe-
35(151):10031026, 1980. 60
ory,
Electron.
12(1):128138, 1980. 36
br/docentes/pedro/trabs/operamundi.html,
[39] P. A. D. Rezende.
Janeiro 2014. 4
unb.br/docentes/pedro/trabs/aprendercsnowden.html,
[40] P. Ribenboim.
http://www.cic.unb.
http://www.cic.
Janeiro 2014. 4
18, 35
[41] R. L. Rivest, A. Shamir, and L. Adleman. A method for obtaining digital signatures
and public-key cryptosystems.
[42] B. Schneier.
Communications ACM,
Applied Cryptography.
18
[43] M. Seysen. A simplied quadratic frobenius primality test, 2005. vii, 40, 41, 47, 51,
60
[44] C. E. Shannon. Communication theory of secrecy systems.
Journal,
28(4):656715, 1949. 2
[45] P. W. Shor. Algorithms for quantum computation: discrete logarithms and factoring.
In
The Code Book: How to Make It, Break It, Hack It, Crack It.
Delacorte
Press, 2003. 1, 4, 11
[47] R. Solovay and V. Strassen. A fast monte-carlo test for primality.
Computing,
SIAM Journal on
6(1):8485, 1978. 35
[48] D. R. Stinson.
2006. 6, 10, 21
63
Springer,
//xkcd.com/247/.
vi, 24
64
http: