5.1 Criptografia Assimétrica
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.