XChaCha20
Вариант ChaCha20 с 192-битным nonce — достаточно большим, чтобы выбирать его случайно для каждого сообщения, не опасаясь коллизий.
У версии ChaCha20 по стандарту IETF nonce 96-битный. С счётчиком этого хватает, но случайные nonce начинают совпадать примерно после 248 сообщений из-за парадокса дней рождения, а повторный nonce раскрывает открытый текст. XChaCha20 обходит это, сначала пропуская ключ и первые 128 бит nonce через вспомогательную функцию HChaCha20. На выходе получается подключ, а оставшиеся биты nonce используются как обычно.
Конструкция повторяет XSalsa20 Дэниела Дж. Бернштейна 2008 года. Она входит в libsodium, а WireGuard использует её для шифрования cookie-ответов. Черновик IETF, который должен был её стандартизовать, так и не стал RFC, что совершенно никому не помешало ею пользоваться.