Na criptografia assimétrica, cada parte da comunicação possui um par
de chaves. Uma chave é utilizada para encriptar e a outra para decriptar
uma mensagem. A chave utilizada para encriptar a mensagem é publica, isto
é, ela é divulgada para o transmissor; enquanto a chave para decriptar a
mensagem é privada, isto é, ela é um segredo pertencente ao receptor.
Sendo assim, não existe o problema de manutenção e transmissão do
segredo que existe na criptografia simétrica.
Ao implementar um sistema criptográfico baseado em curvas elípticas
é necessário definir alguns parâmetros genéricos do sistema, e em um
momento posterior, os parâmetros pessoais, isto é, as chaves, são
definidas pelos usuários do sistema. Entre os parâmetros gerais se
destacam os parâmetros que definem a curva elíptica e um ponto gerador
G que pertence à curva, todos estes parâmetros são públicos para permitir
a utilização deste sistema por duas pessoas. O ponto G é obtido a partir da
escolha de um valor n primo grande tal que nG = O. Todos os pontos Pi que
pertencem a curva têm uma ordem ni tal que niPi = O, dessa forma n é
denominado ordem de G. Além disso, n deve ser grande o suficiente para
inviabilizara obtenção de todos os múltiplos de G: G, 2G, 3G, ..., (n - 1)G.
Uma tabela que mapeia a mensagem original em pontos na curva elíptica
também precisa der definida, por exemplo cada caractere pode ser
mapeado em um ponto na curva.
Uma vez estabelecidos todos parâmetros genéricos do sistema
criptográfico, neste momento cada usuário determina seus parâmetros
individuais, um par de chaves, onde uma é a chave pública e a outra a chave
privada. Cada usuário define um valor ni < n (ordem do ponto gerador G)
como sua chave privada. A chave pública correspondente é calculada a
partir da chave privada; Pi = niG. Note que Pi pertence à curva. A
mensagem M (mensagem de comprimento de 1 caractere) é mapeada no
ponto PM.
A seguir será descrito os cálculos efetuados quando um transmissor
envia uma mensagem M a um receptor, cuja chave privada é nR e a chave
pública é PR = nRG.
Transmissor: Escolhe, aleatoriamente, um inteiro k
Transmissor: Calcula, a partir de k, G, PR e PM (obtido da tabela de
mapeamento) , um par de pontos PC1 e PC2:
PC1 = (kG)
PC2 = (PM + kPR)
Transmissor: Transmite para o receptor o par de pontos cifrados PC:
PC = [PC1, PC2]
Do outro lado, quando o receptor recebe a mensagem cifrada (par de
pontos PC), recupera PM, a partir do segundo ponto (PC2), da seguinte
forma:
Receptor: Embora o receptor não conheça k, ele sabe que kPR =
knRG e obtém kPR de PC1 da seguinte maneira:
PC1nR = (kG)nR = kPR
Receptor: Para extrair PM de PC2, basta calcular PC2 - kPR, assim:
PC2 - PC1nR = (PM + kPR) - kPR =
= (PM + [(kG)nR]) - [(kG)nR]) = PM
Receptor: Obtém M a partir da tabela de mapeamento.