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.
Propriedades matemáticas 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.
História 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.
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.RFC 7748. Disponível em 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.
Bibliotecas
Libgcrypt libssh libssh2 (desde a versão 1.9.0) NaCl GnuTLS mbed TLS (anteriormente PolarSSL) wolfSSL Botan Schannel Libsodium OpenSSL desde a versão 1.1.0 LibreSSL NSS desde a versão 3.28 Crypto++ curve25519-dalek Bouncy Castle
Protocolos OMEMO, uma extensão proposta para XMPP (Jabber) Secure Shell (SSH) Signal Protocol Matrix Tox Zcash Transport Layer Security WireGuard
Aplicações
Bitchat Aplicação Android Conversations OMEMO Cryptocat DNSCrypt DNSCurve DNSSEC Dropbear Facebook Messenger Gajim através de plugin GNUnet GnuPG Google Allo I2P IPFS iOS Monero OpenBSD e signifyUsado para assinar lançamentos e pacotes}} OpenSSHTroca de chaves exclusiva no OpenSSH 6.7 quando compilado sem.}} Peerio Proton Mail PuTTY Signal Silent Phone SmartFTP SSHJ SQRL Threema Instant Messenger TinySSH TinyTERM Tor Viber WhatsApp Wire WireGuard
Referências
Ligações externas Página inicial do Curve25519
Categoria:Curvas elípticas