ChaCha20 は加算、ビット回転、XOR だけを使うため、どの CPU でも定数時間で動作します。Poly1305 は、暗号の最初のブロックからメッセージごとに鍵を生成するワンタイム MAC です。RFC 8439(RFC 7539 を置き換えたもの)は 32 ビットのブロックカウンターを使うため、1 つのメッセージは 256 GiB までに制限されます。XChaCha20-Poly1305 は nonce を 192 ビットに拡張しており、ランダムな nonce を安全に使えます。Internet-Draft で記述されており、libsodium などが実装しています。
鍵と nonce の組が重複すると、AES-GCM とまったく同じく機密性が失われ、攻撃者がメッセージを偽造できるようになります。AES 命令を持つ CPU では、大量のデータについては通常 AES-GCM のほうが高速です(Apple M4 Max の 1 コアで OpenSSL 3.6.5 を使うと、ChaCha20-Poly1305 が約 2.1 GB/s、AES-256-GCM が 8.8 GB/s)。ただし、小さなメッセージや AES のハードウェア支援がないデバイスでは ChaCha20-Poly1305 が有利です。
TLS 1.3 の TLS_CHACHA20_POLY1305_SHA256(0x1303)、OpenSSH の chacha20-poly1305@openssh.com、WireGuard のトランスポート暗号、age のペイロード暗号化、PASETO v2 の local トークンとして使われています。