1. DAVID RIOS BETONI
Criptografia com o uso de curvas elípticas.
Instituto Tecnológico de Aeronáutica (ITA)
São José dos Campos – SP – 2010
2. Resumo
Este trabalho apresenta criptografia com uso das curvas elípticas. Sua segurança está baseada
equações cúbicas referenciadas na matemática. Neste trabalho apresentaremos o que é curvas
Elípticas e sua aplicação na criptografia.
Introdução
Criptografia é o estudo dos princípios e técnicas pelas quais a informação pode ser
transformada da sua forma original para outra ilegível, de forma que possa ser conhecida apenas
por seu destinatário final (detentor da "chave secreta"), o que a torna difícil de ser lida por
alguém não autorizado. Assim sendo, só o receptor da mensagem pode ler a informação com
facilidade. É um ramo da Matemática, parte da Criptologia.
Os sistemas de criptografia são classificados em simétricos e assimétricos.
Os sistemas simétricos usam uma chave secreta, conhecida por ambos os lados A e B
da comunicação, esta chave secreta é de conhecimento somente de A e B e ninguém mais
dever ter conhecimento. Um dos problemas de se utilizar este sistema é que os interlocutores A
e B precisam combinar previamente a chave secreta a ser usada através de um meio
comunicação seguro. Se a chave secreta for transmitida por um interlocutor a outro através de
um meio inseguro, todo o sistema de segurança estará comprometido. Outra desvantagem é que
cada interlocutor deve armazenar uma chave secreta para manter comunicação privada entre os
interlocutores, com isso a quantidade de chaves privadas criadas é enorme e de difícil
armazenamento.
Já a criptografia assimétrica é um método de criptografia que utiliza um par de chaves:
uma chave pública e uma chave privada. A chave pública é distribuída livremente para todos os
correspondentes via e-mail ou outras formas, enquanto a chave privada deve ser conhecida
apenas pelo seu dono.
3. Atualmente, existem somente três tipos de sistemas de criptografia com chave pública
considerados seguros e eficientes [1]. Esses sistemas estão classificados de acordo com o
problema matemático em que eles se baseiam [1] [2]:
• Sistemas de fatoração de inteiros (Integer Factorization Systems – IFS), baseados no
problema de fatoração de inteiros (Integer Factorization Problem – IFP)
• Sistemas de logaritmo discreto (Discrete Logarithm System – DLS), baseados no
problema do logaritmo discreto (Discrete Logarithm Problem – DLP)
• Sistemas de curva elíptica (Elliptic Curve Discrete Logarithm System – ECDLS),
baseados no problema do logaritmo discreto em curvas elípticas (Elliptic Curve Discrete
Logarithm Problem – ECDLP)
Abaixo, algumas das aplicações de cada uma das técnicas em algoritmos reais:
I. IFS : RSA - Rabin-Williams
II. DLS : DAS – US Gov / Diffie-Hellman/KE Schnorr
III. ECDSL : ECC
Alguns problemas encontrados:
Problema: Fatoração de Inteiros
Definição Dado um número n que é o produto de dois valores primos grandes p
e q (ou seja, n = pq), determinar p e q.
Base Enquanto encontrar números primos grandes é uma tarefa
relativamente fácil, o problema de fatorar o produto desses valores é
considerada uma tarefa computacionalmente intratável .
Problema: Logaritmo Discreto
Definição Dado um primo p , o conjunto Zp = {0, 1,..., p–1}, y, g Î Zp,(g > 0),
determinar x Î Zp ( 0 £ x £ p - 2 ), onde y = gx (mod p)
Base O problema de calcular o x = logdg(y) (logaritmo discreto na base g),
sendo g e y primos extensos, também é considerada uma tarefa
computacionalmente intratável .
Problema: Logaritmo Discreto em Curvas Elípticas
Definição Dada uma curva elíptica E, definida por um conjunto finito de pontos
de natureza Fq (q é o número elementos do conjunto) - E(Fq) - e os
pontos P, Q Î E(Fq), determinar o inteiro l ( 0 £ l £ q -1) tal que Q = lP
Base Ao passo que é relativamente fácil determinar o ponto Q = lP
(veremos isso ao definir as operações em curvas elípticas),
determinar l dados Q, P Î E(Fq) é bem mais difícil.
4. O que é uma Curva Elíptica
As curvas elípticas se definem mediante equações cúbicas (de terceiro grau) da
matemática.
As curvas elípticas sobre o corpo dos números reais vêm a ser dadas pelas equações:
y² = x³ − x e por y² = x³ − x + 1 onde , de modo que o polinômio não tenha raízes múltiplas, e
ainda um elemento 0 chamado ponto no infinito
A definição formal de uma curva elíptica é a de uma curva algébrica que vai se projetando no
corpo finito
Se define a curva como o conjunto de todos os pontos (x,y) que satisfazem a equação acima e
tais que x e y sejam elementos do fecho algébrico de corpo finito .
Embora estejamos mais familiarizados com o uso de curvas elípticas aplicada ao plano dos
reais, seu uso em sistemas criptográficos não seria prático e tão pouco preciso. Isso de deve,
principalmente, devido à problemas com arredondamento, “trucagem” de valores e limites .
Aplicações de criptografia necessitam de uma aritmética rápida e precisa, que pode ser obtida
através do uso de corpos inteiros finitos.
Existe uma regra para somar dois pontos pertencentes a uma curva elíptica, de tal forma que
esta soma seja um terceiro ponto sobre a mesma curva. O conjunto de pontos E(Zp), juntamente
com a operação de soma, formam um grupo abeliano, onde o ponto no infinito 0 é o elemento
neutro.
5. Sejam, pois, P = (x1 ; y1) e Q = (x2 ; y2) dois pontos distintos tomados em uma curva elíptica E.
A soma de P e Q, denotada por R = (x3 ; y3) é definida através do traçamento de uma linha que
atravesse P e Q. Esta linha intercepta a curva elíptica E em um terceiro ponto, onde R é a
reflexão deste ponto sobre o eixo x. Este ponto R é portanto o resultado da operação de soma P
+ Q.
Se P = (x1 ; y1), então o dobro de P, denotado por R = (x3 ; y3) define-se pelo
traçamento de uma reta tangente à curva elíptica no ponto P. Esta reta intercepta a curva
em um segundo ponto, cuja reflexão sobre o eixo x é o ponto R [14].
As fórmulas algébricas que representam P + Q podem ser derivadas dos procedimentos
geométricos na Figura abaixo.
6. Abaixo é ilustrado a adição de pontos diferentes e do mesmo ponto numa curva elíptica,
conforme definido acima.
Duas das mais eficientes e freqüentemente utilizadas opções de Campo Finito ou Corpo Finito
são:
• Curvas elípticas sobre corpos finitos primos (Fq = Fp)
• Curvas elípticas sobre corpos finitos de característica dois (Fq = F2m).
7. Aplicação de Curvas Elípticas em Criptografia
Ao se projetar um sistema de criptografia baseado em curvas elípticas, é necessário determinar,
num primeiro momento, quais são as características gerais do sistema, onde serão definidos
todos as operações e parâmetros genéricos que todos os componentes irão utilizar. Num
segundo momento, cada um dos usuários desse sistema terá que definir seus parâmetros
pessoais (chaves), de forma a viabilizar sua participação no sistema. Ao se determinar as
características gerais do sistema, precisamos realizar os seguintes passos [6][18]:
I. Definir a natureza de seu campo finito Fq (Fp ou F2m);
II. Selecionar a representação para os elementos em Fq (polinomial, base ótima,
subcampos, etc);
III. Implementar aritmética e operações em Fq;
IV. Selecionar uma curva apropriada em Fq (quais parâmetros utilizar para a curva)
V. Definir um ponto gerador em E(Fq)
VI. Definir o mapeamento da mensagem original em pontos de uma curva (“embedding”)
Discussões mais extensas sobre o que deve ser evitado e quais as “boas práticas” em
termos de parametrização dessas curvas também podem ser vistas em [1].
8. Exemplo de Criptografia com Curvas Elípticas
Considerando uma curva elíptica E(F751) com a equação y2 = x3- x + 188 (mod 751) (a = -1 e b
= 188), e ponto gerador G = (0, 376). Consequentemente, os múltiplos kG do ponto gerador G
são (1≤ k≤ 751 )
G = (0, 376) 2G = (1, 376) 3G = (750, 375) 4G = (2, 373)
5G = (188, 657) 6G = (6, 390) 7G = (667, 571) 8G = (121, 39)
9G = (582, 736) 10G = (57, 332) ... ... ... 761G = (565, 312)
762G = (328, 569) 763G = (677, 185) 764G = (196, 681) 765G = (417, 320)
766G = (3, 370) 767G = (1, 377) 768G = (0, 375) 769G = O (ponto no
infinito)
Quando A decide mandar uma mensagem M para B, ele deve saber, a partir de alguma
estratégia, a chave pública do destinatário. Se o destinatário desse exemplo escolheu o valor
nB = 85 como chave privada, teremos que a chave pública correspondente à mesma é o ponto
PB = nBG = 85(0, 376) => PB = (671,558). O procedimento de criptografia de PM passa, então,
pelas etapas:
A: Mapeia a mensagem M no ponto PM = (433, 253) € E(Fq)
A: Escolhe, digamos, k = 113
A: Calcula o par de pontos PC :
PC = [(kG), (PM+ kPB)]
PC = [113 (0, 376), (443, 253) + 113 (671, 558)]
PC = [(34, 633), (443, 253) + (47, 416)]
PC = [(34, 633), (217, 606)]
A: Transmite para B o par de pontos cifrados PC = [(34, 633), (217, 606)]
B: Recebe o par de pontos cifrados PC= [(34, 633), (217, 606)
B: Calcula, a partir de sua chave privada nB = 85:
(PM + kPB) – [nB (kG)] = (217, 606) – [85(34, 633)]
(PM + kPB) – [nB (kG)] = (217, 606) – [(47, 416)]
(PM + kPB) – [nB (kG)] = (217, 606) + [(47, -416)] (PM + kPB) – [nB (kG)] = (217,
606) + [(47, 335)] (–416 =335 mod 751)
(PM + kPB) – [nB (kG)] = (443, 253)
B: Mapeia ponto PM = (433, 253) novamente na mensagem M
9. Bibliografia
[1] BARBOSA, J. C. – “CRIPTOGRAFIA DE CHAVE PÚBLICA BASEADA EM CURVAS
ELÍPTICAS” 2003
[2] Prof. Dr. Jean-Yves Chouinard - “Notes on Elliptic Curve Cryptography” –
Design of Secure Computer Systems - http:://www.site.uottawa.ca/ - September, 24th, 2002
[3] V. Miller. Uses of Elliptic Curves in Cryptography. Advances in Cryptography,
Crypto 85, Springs Verlag LNCS 218, 417-426, 1986
[4] www.certicom.com – An Introduction to Information Security– A Certicom
Whitepaper – March, 1997
[5] www.certicom.com - Current Public-Key Cryptographic Systems – A Certicom
Whitepaper – April, 1997
[6] www.certicom.com – Remarks on the Security of the Elliptic Curve Cryptosystem – A Certicom
Whitepaper – September, 1997- DIFFIE, Whitfield; HELLMAN, Martin. E. New directions in
cryptography. IEEE Transactions on Information Theory, vol. 22, n. 6, p. 644-654, 1976.
[7]BOTES, J. J.; PENZHORN, W. T. Public-key cryptosystems based on elliptic curves.
Communications and Signal Processing, 1993., Proceedings of the 1993 IEEE South African
Symposium
[8] Portonoi P. “Criptografia com curvas Elípticas “ 2005