Este artigo não está em nenhuma categoria. (junho de 2026) |
Na criptografia, a Curve25519 é uma curva elíptica utilizada na criptografia de curvas elípticas (ECC) que oferece 128 bits de segurança (tamanho de chave de 256 bits) e é concebida para uso com o esquema de acordo de chaves Diffie-Hellman de curvas elípticas (ECDH), descrita e implementada pela primeira vez por Daniel J. Bernstein. É uma das curvas mais rápidas em ECC e não está coberta por nenhuma patente conhecida. A implementação de referência é um software de domínio público.
O artigo original da Curve25519 definiu-a como uma função Diffie-Hellman (DH). Desde então, Bernstein propôs que o nome Curve25519 fosse utilizado para a curva subjacente, e o nome X25519 para a função DH.
A curva utilizada é , uma Curva de Montgomery, sobre o corpo primo definido pelo número primo pseudo-Mersenne (daí o valor numérico "25519" no nome), e utiliza o ponto base . Este ponto gera um subgrupo cíclico cuja ordem é o número primo . Este subgrupo possui um cofator de 8, o que significa que o número de elementos no subgrupo é 1/8 daquele do grupo da curva elíptica. A utilização de um subgrupo de ordem prima previne a montagem de um ataque através do Algoritmo de Pohlig-Hellman.
O protocolo utiliza um ponto elíptico comprimido (apenas coordenadas X), permitindo assim o uso eficiente da escada de Montgomery (Montgomery ladder) para ECDH, utilizando apenas coordenadas XZ.
A Curve25519 é construída de tal forma que evita muitas potenciais armadilhas de implementação.
A curva é birracionalmente equivalente a uma Curva de Edwards torcida utilizada no esquema de assinatura Ed25519.
Em 2005, a Curve25519 foi lançada pela primeira vez por Daniel J. Bernstein.
Em 2013, o interesse começou a aumentar de forma considerável quando se descobriu que a NSA tinha potencialmente implementado um backdoor no algoritmo Dual_EC_DRBG baseado na curva P-256. Embora não estivessem diretamente relacionados, aspectos suspeitos das constantes das curvas P do NIST levaram a preocupações de que a NSA tivesse escolhido valores que lhes concedessem uma vantagem na quebra da criptografia.
"Não confio mais nas constantes. Acredito que a NSA as manipulou por meio de suas relações com a indústria."
— Bruce Schneier, A NSA Está Quebrando a Maior Parte da Criptografia na Internet (2013)
Desde 2013, a Curve25519 tornou-se a alternativa de facto à P-256, sendo utilizada numa ampla variedade de aplicações. A partir de 2014, o OpenSSH adotou por padrão o ECDH baseado na Curve25519 e o GnuPG adicionou suporte para chaves Ed25519 para assinatura e criptografia. O uso da curva acabou por ser padronizado tanto para a troca de chaves quanto para assinatura em 2020.
Em 2017, o NIST anunciou que a Curve25519 e a Curve448 seriam adicionadas à Publicação Especial 800-186, que especifica as curvas elípticas aprovadas para uso pelo Governo Federal dos EUA. Ambas estão descritas na RFC 7748. Um rascunho de 2019 do "FIPS 186-5" denota a intenção de permitir o uso de Ed25519 para assinaturas digitais. A atualização de 2023 da Publicação Especial 800-186 permite a utilização da Curve25519.
Em fevereiro de 2017, a especificação do DNSSEC para o uso de Ed25519 e Ed448 foi publicada como RFC 8080, atribuindo-lhes os algoritmos números 15 e 16.
Em 2018, a especificação DKIM foi emendada de modo a permitir assinaturas com este algoritmo. Também em 2018, a RFC 8446 foi publicada como a nova norma do Transport Layer Security v1.3. Esta recomenda o suporte aos algoritmos X25519, Ed25519, X448 e Ed448.
My curve25519 library computes the Curve25519 function at very high speed. The library is in the public domain.