Um survey sobre bibliotecas criptográficas com
suporte à Criptografia de Curvas Elípticas*
Nelson Uto** e David Reis Jr.
A Criptografia de Curvas Elípticas (ECC) surgiu como uma importante alternativa ao criptossistema RSA.
Apresenta procedimentos de geração de chaves e de assinatura mais rápidos e requer parâmetros menores
para prover o mesmo grau de segurança quando comparado ao RSA. Há diversas bibliotecas de código
aberto disponíveis atualmente, que podem ser utilizadas para implementar segurança em aplicações usando
ECC. Porém, não é uma tarefa fácil decidir qual delas é melhor em cada caso. Para ajudar nessa decisão, o
presente artigo avalia seis bibliotecas com suporte a ECC, com base em desempenho, portabilidade e
documentação.
Palavras-chave: ECC. Criptografia de Curvas Elípticas. Bibliotecas criptográficas. Comparação de
desempenho. ECDSA.
1.
Introdução
A criptografia assimétrica desempenha um
papel fundamental em segurança da informação,
fornecendo algoritmos e protocolos para cifração,
assinaturas digitais e estabelecimento de chaves.
O criptossistema assimétrico mais conhecido é o
RSA, que apresenta a desvantagem de necessitar
de chaves grandes para prover um nível de
segurança adequado. Devido ao tamanho das
chaves, as operações envolvendo a chave privada
são lentas. Nesse contexto, a criptografia de curvas
elípticas (doravante ECC) surgiu como uma
alternativa atraente ao RSA. Como a ECC baseiase em um problema matemático diferente do RSA,
no qual somente algoritmos completamente
exponenciais são conhecidos, chaves menores
podem ser empregadas. Isso significa menor
necessidade de memória, consumo de energia mais
baixo e operações mais rápidas, comparativamente
ao RSA. Essas vantagens são de especial interesse
em sistemas embarcados.
Os principais algoritmos baseados em curvas
elípticas são ECDSA (análogo ao DSA) para
assinatura digital, ECDH e ECMQV para acordo de
chaves e ECIES para cifração. Esses algoritmos,
juntamente com parâmetros de domínio de curvas
elípticas, têm sido adotados por diversos padrões
*
como ANSI X9.62, ANSI X9.63, FIPS 186-2, IEEE
P1363, IEEE P1363a e SEC 1 e 2.
Nos últimos anos, a adoção de criptografia
de curvas elípticas tem aumentado consideravelmente. Bons exemplos são: (i) a decisão do
governo americano de empregar ECC em
comunicações “classificadas” e “sensíveis, mas não
classificadas”; (ii) o uso de ECC pela Microsoft no
esquema de proteção de direitos digitais. Com a
popularização de ECC, bibliotecas criptográficas
que a suportem serão essenciais no desenvolvimento de softwares demandando segurança.
Neste artigo, seis bibliotecas criptográficas
são avaliadas, baseadas nas linguagens C/C++,
com suporte à criptografia de curvas elípticas.
Somente bibliotecas livres, pelo menos para uso
não comercial, são analisadas. Os critérios de
avaliação incluem desempenho, qualidade da
documentação, portabilidade, algoritmos
suportados, existência de parâmetros de domínio
previamente especificados e facilidade de uso. Com
relação a desempenho, somente o tempo de
execução do ECDSA foi medido, porque o tempo
dos demais algoritmos pode ser estimado a partir
do último.
O restante deste artigo está organizado da
seguinte maneira: a Seção 2 descreve as bibliotecas
avaliadas, enquanto a Seção 3 aborda os testes
O presente trabalho é um resumo do artigo “A Survey of Cryptographic Libraries Supporting Elliptic Curve Cryptography”, de
mesma autoria, publicado nos anais do 3er Congreso Iberoamericano de Seguridad Informática (CIBSI’05), p. 159-176, Valparaíso,
Chile, 21 a 25 de novembro de 2005.
**
Autor a quem a correspondência deve ser dirigida: [email protected].
Cad. CPqD Tecnologia, Campinas, v. 1, n. 1, p. 133-141, jan./dez. 2005
Um survey sobre bibliotecas criptográficas com suporte à criptografia de curvas elípticas
de desempenho. Finalmente, na Seção 4, são
apresentadas as conclusões do trabalho.
2.
Bibliotecas C e C++ avaliadas
As bibliotecas escritas em C/C++ são muito
mais rápidas que as escritas em Java, uma vez
que são compiladas em vez de interpretadas. Se
desejável, o desempenho delas pode ser
melhorado ainda mais se utilizarem código escrito
em Assembly. Neste trabalho, somente serão
analisadas bibliotecas baseadas em C/C++.
2.1. borZoi (Versão 1.0.2)
borZoi (Dragongate Technologies Ltd., 2003)
é uma biblioteca minimalista de criptografia de
curvas elípticas disponibilizada pela Dragongate
Technologies, sob uma licença GNU GPL. É escrita
em C++ e implementa os algoritmos ECDSA,
ECDH e ECIES utilizando curvas elípticas definidas
sobre corpos binários. A implementação segue os
padrões ANSI e IEEE e fornece parâmetros de
domínio pré-especificados para as curvas binárias
do NIST.
O manual de 26 páginas que acompanha o
produto detalha as funcionalidades da biblioteca,
a representação interna e as classes, além de
fornecer exemplos de uso. A interface é fácil de
entender e é relativamente simples gerar e verificar
assinaturas ECDSA ou realizar um acordo de
chaves empregando ECDH.
A biblioteca possui código próprio para a
manipulação de inteiros e polinômios, mas seu
desempenho é baixo. Para melhorar o
desempenho, é possível compilar a biblioteca
juntamente com NTL, mas encontrou-se um erro
ao utilizar a versão 5.3.1 desta última. Outra
otimização possível está na multiplicação escalar:
borZoi implementa o algoritmo duplicação-e-soma
padrão, mas pode-se utilizar wNAF ou janela
deslizante.
A biblioteca foi compilada com sucesso nas
plataformas xScale e x86 após pequenas mudanças
no makefile, mas os testes de validação falharam
para o primeiro ambiente. Não foi possível medir
o desempenho de borZoi em nenhuma das
plataformas, pois os tempos coletados pareciam
completamente aleatórios (alto desvio padrão) sem
uma explicação razoável.
2.2. Crypto++ (Versão 5.2.1)
Crypto++ (Dai, 2005) é uma biblioteca
criptográfica escrita em C++ que inclui um grande
número de algoritmos. Suporta as principais
primitivas baseadas em curvas elípticas, isto é,
134
ECDSA, ECIES e ECDH, além de vir com os
parâmetros de domínio definidos pelo NIST e pelo
SECG. A versão 5.2.3, ainda não disponível, está
passando pelo processo de certificação do ECDSA,
realizado pelo NIST.
A documentação ainda se encontra em
desenvolvimento e, até o momento de escrita deste
artigo, restringe-se a uma breve descrição das
funções e dos parâmetros correspondentes. A
documentação interna precisa ser melhorada, mas
Crypto++ possui um número razoável de usuários
e a lista de discussões da biblioteca é uma boa
fonte de suporte.
A estrutura interna é substancialmente
baseada em templates e herança de classes. A falta
de documentação e o uso excessivo de templates
tornam difícil determinar a causa de erros de
compilação. Outro problema é o tamanho da
biblioteca; a versão otimizada padrão resulta em
um arquivo-objeto de aproximadamente 13
MBytes, em ambas as plataformas. A compilação
de programas usando Crypto++ é demorada,
mesmo em um Pentium 4 de 2,8 GHz. A biblioteca
pode ser reduzida para algoritmos essenciais, mas
não há mecanismos automatizados para isso.
Apesar dos problemas acima apontados,
Crypto++ tem um grande suporte para a
manipulação de dados: pode-se, por exemplo, ler
um arquivo binário, processá-lo e gerar a saída
para outro arquivo codificado em hexadecimal,
utilizando-se apenas de algumas linhas de código.
Durante a avaliação de desempenho, notouse que o tempo de execução para algumas curvas
binárias era muito alto. A razão é que Crypto++ é
otimizado somente para corpos baseados em
trinômios; assim, quando são empregados
pentanômios, a degradação de desempenho é
grande.
A biblioteca foi compilada com sucesso, em
ambas as plataformas, com algumas pequenas
mudanças no makefile. Porém, alguns testes de
validação, não relacionados a ECC, falharam em
xScale.
2.3. LibTomCrypt (Versão 1.0.5)
LibTomCrypt (2005) é uma biblioteca
criptográfica de código aberto desenvolvida por
Tom St Denis. Suporta ECDSA e ECDH em curvas
definidas sobre corpos primos. É escrita em ISO C
e pode ser compilada, sem modificações, em uma
grande gama de plataformas, incluindo x86_32,
x86_64, ARM e PowerPC.
Esta biblioteca vem com um ótimo manual,
o qual possui descrições detalhadas de cada
função, além de exemplos. Ela possui uma interface
clara e uniforme que simplifica muito o
Cad. CPqD Tecnologia, Campinas, v. 1, n. 1, p. 133-141, jan./dez. 2005
Um survey sobre bibliotecas criptográficas com suporte à criptografia de curvas elípticas
desenvolvimento. Os programas de verificação e
de desempenho, que acompanham o produto,
podem ser utilizados como um ponto de partida
para a implementação de novos programas.
As curvas incluídas são as cinco definidas
pelo NIST. Teoricamente, porém, pode-se utilizar
qualquer curva prima com equação y2= x3- 3x+b.
Para realizar a multiplicação escalar, LibTomCrypt
usa o método de janela deslizante com largura 4.
A biblioteca vem com um makefile, que a
compila com sucesso nas plataformas xScale e x86.
O processo de geração é flexível e podem-se excluir
algoritmos não desejados da biblioteca. O
makefile também permite o ajuste de algumas
opções de otimização.
2.4. LiDIA (Versão 2.1.3)
LiDIA (Hamdy, 2004) é uma biblioteca C++
para teoria de números computacional, que provê
implementações para diversos tipos de dados de
precisão arbitrária e algoritmos pesados. É
desenvolvido pelo grupo LiDIA, na Technische
Universität Darmstadt, e é livre para uso não
comercial. Supostamente, a LiDIA pode ser
executada em qualquer computador POSIX que
suporte nomes de arquivos longos. A biblioteca
foi compilada com sucesso nas plataformas
Pentium 4 e xScale, executando o sistema
operacional Linux. Entretanto, alguns ajustes no
script configure foram necessários para se utilizar
namespaces na plataforma xScale.
A biblioteca LiDIA é composta dos cinco
níveis abaixo listados (Hamdy, 2004):
1. Kernel – contém um módulo de aritmética
de inteiros de precisão arbitrária e um
gerenciador de memória. As bibliotecas
de precisão arbitrária suportadas são a
libI, GNU MP, cln, piologie e freelip. Desde
a versão 2.1, nenhuma delas acompanha
a LiDIA.
2. Interfaces – por meio das quais os níveis
mais altos acessam o kernel.
3. Classes simples – classes não
parametrizadas como bigrational.
4. Classes parametrizadas – classes como
base_vector <T>.
5. Interfaces de usuário – documentação online e interpretador de comandos.
Embora a LiDIA não forneça algoritmos de
criptografia de curvas elípticas diretamente, ela
suporta toda a aritmética de inteiros de precisão
arbitrária e de curvas elípticas, que é necessária
para implementá-los. A LiDIA é dividida em diversos
pacotes, dos quais o mais relevante para este artigo
Cad. CPqD Tecnologia, Campinas, v. 1, n. 1, p. 133-141, jan./dez. 2005
é o pacote EC. Ele contém classes para manipular
curvas elípticas sobre os inteiros e sobre corpos
finitos. Tanto corpos binários como primos são
suportados. Os pontos podem ser representados
em coordenadas afins ou projetivas e nenhum
algoritmo para otimizar multiplicação de pontos é
disponibilizado.
A API da biblioteca é simples de usar e a
documentação (Hamdy, 2004) é muito boa; além
de diversos exemplos, contém descrições ricas de
classes e métodos.
2.5. MIRACL (Versão 4.85)
A biblioteca Multiprecision Integer and
Rational Arithmetic C/C++ Library (Shamus
Software Ltd., 2005), ou simplesmente MIRACL, é
uma biblioteca de números grandes que contém
as rotinas necessárias para implementar algoritmos
assimétricos como RSA e ECDSA. É desenvolvida
pela Shamus Software Ltd. e é livre para fins não
lucrativos: qualquer uso comercial requer uma
licença a ser obtida da Shamus. A MIRACL é
implementada como uma biblioteca C, mas um
wrapper C++ é fornecido.
A documentação consiste do manual de
usuário, que descreve a instalação, otimização,
representação interna, interface C++ e as rotinas
MIRACL. A biblioteca vem com vários exemplos
(tanto em C como em C++), os quais são muito
úteis, uma vez que a API não é muito intuitiva. Bons
conhecimentos criptográficos são necessários para
construir as primitivas a partir das rotinas de baixo
nível fornecidas, ou para adaptar os exemplos para
necessidades específicas.
Das bibliotecas avaliadas, a MIRACL é a mais
rápida de todas, o que é resultado da
implementação de rotinas críticas em linguagem
Assembly. A biblioteca fornece versões Assembly
para algumas plataformas e também código C
genérico para os casos em que o código Assembly
não está disponível. Para curvas definidas sobre
corpos primos, é possível melhorar o desempenho
ainda mais, gerando-se uma biblioteca
especificamente otimizada para o corpo desejado.
Nesse caso, uma pequena degradação de
desempenho pode ocorrer, caso a biblioteca seja
utilizada para um corpo de diferente ordem.
De acordo com a documentação, a MIRACL
pode ser instalada com sucesso nas plataformas
VAX 11/780, estações de trabalho Unix, IBM PC,
computadores baseados em ARM, Apple
Macintosh, Itanium e AMD 64 bits. Em nosso caso,
as bibliotecas foram facilmente portadas para
Pentium 4 e xScale executando Linux.
A MIRACL suporta a cifra de blocos AES e a
família de funções de hash criptográficas SHA-2.
135
Um survey sobre bibliotecas criptográficas com suporte à criptografia de curvas elípticas
Os algoritmos de geração e verificação de
assinaturas ECDSA podem ser facilmente adaptados
a partir do conjunto de exemplos fornecidos. Podem
ser utilizadas curvas definidas sobre corpos primos
e binários e alguns parâmetros de domínio são
fornecidos previamente em arquivos. Esses
parâmetros podem ser carregados pela função
ECP_DOMAIN_INIT, que também pode pré-calcular
alguns pontos, se desejado.
Os pontos podem ser representados em
coordenadas afins ou projetivas e a multiplicação
de pontos pode ser acelerada pelo método de
janela fixa de autoria de Brickell et al (1992).
2.6. OpenSSL (Versão 0.9.8)
OpenSSL (OpenSSL Project, 2005) é uma
biblioteca criptográfica de código aberto
disponibilizada sob uma licença do tipo BSD.
Suporta os algoritmos ECDSA e ECDH para todas
as curvas binárias e primas padronizadas por NIST,
ANSI e SECG.
É escrita em linguagem C e possui rotinas em
Assembly para diversos processadores, conseguindo, dessa maneira, um ótimo desempenho em
uma grande gama de plataformas. A multiplicação
escalar pode ser otimizada por meio da précomputação de pontos e usa o método wNAF com
largura 4.
A documentação da biblioteca ainda não está
completamente pronta. O tópico sobre ECDSA
descreve a funcionalidade dos procedimentos e
seus parâmetros e inclui um código de exemplo
mostrando como assinar uma mensagem e verificar
a assinatura. A interface é simples e podem-se
escrever aplicações usando ECDSA com base no
manual e no programa speed. O ECDH não é
documentado, mas o programa speed mostra um
exemplo de uso simples.
Embora o grupo da OpenSSL não tenha
incluído um makefile na distribuição, a biblioteca
possui um sistema de geração maduro, que
funciona em um grande número de plataformas. É
possível excluir alguns algoritmos por meio do script
configure. A compilação em Pentium 4 foi trivial,
mas um patch foi necessário para xScale.
3.
Testes de desempenho
3.1. Plataformas
As seguintes plataformas foram utilizadas
para testar o desempenho das bibliotecas avaliadas:
1. Intel Pentium 4 2.80 GHz, 512 MB RAM,
Linux Kernel 2.4.20.8, gcc 3.2.2 e g++
versão 3.2.2.
2. Intel PXA27x 520 MHz, 64MB RAM, Linux
Kernel 2.6.11.8, arm-Linux-gcc 3.4.3 e armLinux-g++ 3.4.3.
3.2. Metodologia de teste
Os testes avaliaram o desempenho dos
procedimentos de geração (com e sem précomputação) e verificação de assinaturas ECDSA1.
Mensagens de tamanho fixo foram usadas,
correspondendo a exatamente um bloco da função
de hash criptográfica SHA-1. Com essa
abordagem, objetivou-se minimizar a influência do
cálculo de resumos criptográficos nos tempos
medidos para a geração e a verificação de
assinaturas ECDSA. Para cada iteração, gerou-se
um par de chaves, embora os testes tenham
demonstrado que a utilização de um único par de
chaves não acarretaria mudanças substanciais nos
tempos obtidos.
Para cada biblioteca, foram coletadas cinco
rodadas de tempos para todas as curvas definidas
pelo padrão SEC 2. Cada rodada executou os três
procedimentos acima 2 mencionados um
determinado número de vezes (dependente de
plataforma). Como a plataforma xScale possui
freqüência muito inferior à do Pentium 4, foi
necessário utilizar um número reduzido de iterações
para ela. O número de iterações para cada
plataforma foi definido com base no desempenho
da OpenSSL: cem repetições para xScale e mil
para Pentium 4.
3.3. Comparação de desempenho
Os resultados para as curvas primas (P) e
binárias (B) do NIST estão consolidados nas Tabelas
2 e 3, respectivamente. Como os tempos para as
curvas B e K foram muito similares, não se incluiu
uma tabela com os valores desta última no presente
trabalho. Por esse fato, também, concluiu-se que
nenhuma otimização em especial é implementada
pelas bibliotecas para acelerar a computação em
curvas de Koblitz.
Os rótulos das colunas A, AP e V significam
geração de assinatura, geração de assinatura com
pré-cálculo e verificação de assinatura,
respectivamente. Cada célula da tabela
corresponde à média dos tempos coletados nas
1
O desempenho do ECDH e do ECIES podem ser estimados pelo desempenho do ECDSA.
No caso da biblioteca LiDIA, foi medido o tempo da multiplicação escalar, que pode ser tomado como uma boa estimativa do
tempo de execução da geração de assinatura ECDSA.
2
136
Cad. CPqD Tecnologia, Campinas, v. 1, n. 1, p. 133-141, jan./dez. 2005
Um survey sobre bibliotecas criptográficas com suporte à criptografia de curvas elípticas
Figura 1 Tempos (em ms) para geração de assinatura sem pré-computação em Pentium 4
Figura 2 Tempo (em ms) para geração de assinatura sem pré-computação em xScale
cinco rodadas realizadas para a tripla (biblioteca,
curva, operação). Verificou-se se o desvio padrão
era pequeno, uma vez que valores altos podem
ser um indicativo da existência de bugs na
implementação. Quando a operação ou a
característica do corpo não é suportada, a célula
é deixada em branco. Os melhores tempos para
cada curva/operação aparecem em negrito.
Para comparar visualmente os resultados das
bibliotecas, os tempos para geração de assinaturas
Cad. CPqD Tecnologia, Campinas, v. 1, n. 1, p. 133-141, jan./dez. 2005
sem pré-computação também estão consolidados
nas Figuras 1 e 2 para as plataformas Pentium 4 e
xScale, respectivamente. Pode-se ver pelos
gráficos que, conforme o tamanho do corpo
aumenta, os tempos também aumentam. Como o
desempenho de Crypto++ para curvas binárias
não aumenta monotonicamente (depende de o
polinômio irredutível ser um trinômio ou um
pentanômio), foram usadas linhas tracejadas para
representá-la.
137
Um survey sobre bibliotecas criptográficas com suporte à criptografia de curvas elípticas
De um modo geral, a melhor biblioteca foi a
MIRACL, que apresentou o melhor desempenho
em quase todos os testes, em ambas as
plataformas, sendo superada pela OpenSSL
somente em dois de todos os testes. A MIRACL
foi compilada usando-se código especializado em
Assembly para xScale e x86 e isso fez toda a
diferença. A segunda melhor biblioteca é a
OpenSSL, que possui código especializado em
Assembly para aritmética de inteiros no x86.
Entretanto, mesmo com essas otimizações, a
OpenSSL é cerca de 50% mais lenta que a MIRACL
para a geração e a verificação de assinaturas
empregando-se curvas primas. Somente quando
a pré-computação é utilizada, o desempenho
dessas bibliotecas se torna relativamente próximo.
Considerando-se curvas primas em xScale e curvas
binárias em ambas as plataformas, a superioridade
da MIRACL sobre a OpenSSL é notável.
As outras três bibliotecas, LibTomCrypt,
Crypto++ e LiDIA apresentaram desempenho
muito pior que a MIRACL e a OpenSSL. Para curvas
primas, a LibTomCrypt foi a que melhor se saiu
entre as bibliotecas desse grupo. É de se notar
que LiDIA + GMP, que é apenas uma biblioteca de
teoria de números computacional, superou
amplamente a Crypto++ sobre corpos binários.
5.
Esta última é incrivelmente lenta para os corpos
cujos polinômios irredutíveis são pentanômios. O
desempenho é tão ruim que a Crypto++ chega a
ficar atrás das bibliotecas escritas em Java (Reis e
Uto, 2005). Finalmente, a combinação de LiDIA
com cln e libI não é tão boa quanto com GMP.
O comentário final é que, de um modo geral,
curvas definidas sobre corpos primos apresentam
desempenho superior, principalmente para corpos
maiores. Por exemplo, comparando-se os tempos
de assinatura para as curvas P-521 e B-571, usando
a MIRACL em um Pentium 4, a diferença é de três
vezes.
4.
Conclusões
Neste trabalho, foram avaliadas diferentes
opções para integrar criptografia de curvas elípticas
em aplicações, considerando-se as plataformas
xScale e Pentium 4. Há alguns produtos maduros
com bom desempenho, mas o “campeão geral”
foi a biblioteca MIRACL, com o melhor
desempenho e com um bom suporte a várias
plataformas. A OpenSSL é, em média, 50% mais
lentsa que a MIRACL, mas é livre para uso
comercial e possui o melhor suporte a curvas
padronizadas.
Referências
BRICKELL, E.; GORDON, D.; MCCURLEY, K.;
WILSON, D. Fast exponentiation with precomputation.
In: Eurocrypt 1992; 1992. Anais... pp. 200-207.
DAI, W. Crypto++: a free C++ class library of
cryptographic scheme; versão 5.2.1; 2005.
Disponível em <http://www.cryptopp.com>.
DRAGONGATE TECHNOLOGIES LTD. borZoi
Manual. 2003.
LIBTOMCRYPT. Versão 1.0.5. 2005. Disponível em
<http://libtomcrypt.org>.
OPENSSL PROJECT. OpenSSL 0.9.8. 2005.
Disponível em <http://www.openssl.org>.
REIS, D.; UTO, N. A Survey of Cryptographic
Libraries Supporting Elliptic Curve Cryptography. In:
3er Congreso Iberoamericano de Seguridad
Informática; 2005.
HAMDY, S. LiDIA: A library for computational number
theory – Reference Manual.Technische Universität
Darmstadt, 2004.
SHAMUS SOFTWARE LTD. MIRACL Users Manual.
2005.
A.
GPL
IEEE
Lista de acrônimos
AES
AMD
ANSI
BSD
DSA
ECC
ECDH
ECIES
ECMQV
FIPS
GNU
138
Advanced Encryption Standard
Advanced Micro Devices
American National Standards Institute
Berkeley Software Distribution
Digital Signature Algorithm
Elliptic Curve Cryptography
Elliptic Curve Diffie-Hellman
Elliptic Curve Integrated Encryption Scheme
Elliptic Curve Menezes-Qu-Vanstone
Federal Information Processing
Standards
GNU’s Not UNIX
General Public License
Institute of Electrical and Electronics
Engineers
MIRACL Multiprecision Integer and Rational
Arithmetic C Library
NIST
National Institute of Standards and
Technology
POSIX Portable Operating System Interface for
UNIX
RSA
Rivest-Shamir-Adleman
SECG
Standards for Efficient Cryptography
Group
SHA-1
Secure Hashing Algorithm 1
SHA-2
Secure Hashing Algorithm 2
Cad. CPqD Tecnologia, Campinas, v. 1, n. 1, p. 133-141, jan./dez. 2005
Um survey sobre bibliotecas criptográficas com suporte à criptografia de curvas elípticas
B.
Curvas suportadas
A tabela a seguir mostra as curvas pré-especificadas definidas por cada biblioteca.
Tabela 1 Curvas pré-especificadas
Cad. CPqD Tecnologia, Campinas, v. 1, n. 1, p. 133-141, jan./dez. 2005
139
Um survey sobre bibliotecas criptográficas com suporte à criptografia de curvas elípticas
Tabela 2 Tempos (em ms) para as curvas elípticas do NIST definidas sobre corpos primos
Tabela 3 Tempos (em ms) para as curvas elípticas do NIST definidas sobre corpos binários
140
Cad. CPqD Tecnologia, Campinas, v. 1, n. 1, p. 133-141, jan./dez. 2005
Um survey sobre bibliotecas criptográficas com suporte à criptografia de curvas elípticas
Abstract
Elliptic Curve Cryptography (ECC) has emerged as an important alternative to RSA cryptosystem. It has
faster key generation and signing procedures and requires smaller parameters to provide the same degree of
security compared to RSA. There are various open-source libraries available today that can be used to
secure new applications using ECC. However, it is not a simple task to assess which one is best for a specific
case. To help with this decision, this paper evaluates six libraries supporting ECC, providing information
about performance, portability and documentation.
Key word: ECC. Elliptic Curve Cryptography. Cryptographic libraries. Performance comparison. ECDSA.
Cad. CPqD Tecnologia, Campinas, v. 1, n. 1, p. 133-141, jan./dez. 2005
141
Download

Um survey sobre bibliotecas criptográficas com suporte à