Pular para o conteúdo
ecdsa.com

X25519

A função Diffie–Hellman sobre a Curve25519 definida na RFC 7748, com chaves de 32 bytes e um segredo compartilhado de 32 bytes, usada para troca de chaves no TLS 1.3, no SSH, no WireGuard, no Signal e no age.
Também escrito comoX25519 key exchangecurve25519-sha256ECDH over Curve25519

X25519(k, u) executa uma escada de Montgomery em tempo constante apenas sobre coordenadas u. Uma chave privada é formada por 32 bytes aleatórios que a função ajusta (clamping: zera os três bits menos significativos e o bit 255 e define o bit 254 como 1); a chave pública é X25519(k, 9) (RFC 7748 §5). Como a curva e o seu twist são ambos seguros, qualquer sequência de 32 bytes pode ser usada como chave do outro participante sem validação de pontos, mas entradas de ordem baixa produzem um segredo compartilhado todo em zeros, e convém que os protocolos detectem e rejeitem esse caso (RFC 7748 §6.1).

Identificadores: grupo suportado do TLS x25519 (29, 0x001D); SSH curve25519-sha256 (RFC 8731); OID 1.3.101.110 (RFC 8410); JOSE ECDH-ES com uma chave OKP e crv X25519 (RFC 8037); HPKE DHKEM(X25519, HKDF-SHA256), ID de KEM 0x0020 (RFC 9180). O OpenSSL 3.6.5 calcula cerca de 52.000 operações X25519 por segundo em um núcleo de um Apple M4 Max.

O X25519 é um acordo de chaves, não uma assinatura: quem assina é o Ed25519. Os dois compartilham a curva, e as chaves podem ser convertidas de uma forma para a outra, mas usar a mesma chave para os dois fins é desaconselhado. O algoritmo de Shor quebra o X25519, por isso o TLS agora o combina com o ML-KEM-768 no grupo híbrido X25519MLKEM768 (0x11EC, RFC 10024), e o OpenSSH usa mlkem768x25519-sha256 por padrão.

Padrões e referências

Todos os termos