Pular para o conteúdo
ecdsa.com

ChaCha20-Poly1305

O AEAD que combina a cifra de fluxo ChaCha20 com o autenticador Poly1305 (RFC 8439): chaves de 256 bits, nonces de 96 bits e tags de 128 bits, rápido em software sem hardware de AES.
Também escrito comoChaCha20Poly1305XChaCha20-Poly1305RFC 8439

O ChaCha20 usa apenas adições, rotações e XORs, por isso roda em tempo constante em qualquer CPU, e o Poly1305 é um MAC de uso único cuja chave, diferente para cada mensagem, vem do primeiro bloco da cifra. A RFC 8439 (que substituiu a RFC 7539) usa um contador de blocos de 32 bits, o que limita cada mensagem a 256 GiB. O XChaCha20-Poly1305 estende o nonce para 192 bits, de modo que nonces aleatórios ficam seguros; ele é descrito em um Internet-Draft e implementado pela libsodium, entre outras.

Um par de chave e nonce repetido quebra a confidencialidade e permite que um atacante forje mensagens, exatamente como no AES-GCM. Em CPUs com instruções AES, o AES-GCM costuma ser mais rápido para grandes volumes de dados (em um núcleo do Apple M4 Max: cerca de 2,1 GB/s para o ChaCha20-Poly1305 contra 8,8 GB/s para o AES-256-GCM com o OpenSSL 3.6.5), mas o ChaCha20-Poly1305 leva vantagem em mensagens pequenas e em dispositivos sem hardware de AES.

Ele aparece como TLS_CHACHA20_POLY1305_SHA256 (0x1303) no TLS 1.3, como chacha20-poly1305@openssh.com no OpenSSH, como a cifra de transporte do WireGuard, na criptografia do payload do age e nos tokens locais do PASETO v2.

Padrões e referências

Todos os termos