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.