As I know chacha20-poly1305 is stream cipher. Does that mean for every encryption process require a new key?


1 Answer 1


You do not require a new key. You use a different initialization vector (IV) for every message.

As long as you use a different pair of (key, nonce) for each message you retain the confidentiality and integrity of messages. The nonce is the initialization vector.

  • $\begingroup$ Does that mean it wok like Aes-GCM? $\endgroup$ Sep 10, 2018 at 5:17
  • $\begingroup$ @AymnAlaney Yes, ChaCha20-Poly1305 is an authenticated stream cipher, like AES-GCM. The main difference is that ChaCha20 is a native stream cipher, whereas raw AES is a block cipher that can be run in a stream mode when used with GCM (which is just CTR with GHASH authentication). $\endgroup$
    – forest
    Sep 10, 2018 at 6:15
  • $\begingroup$ @forest - What makes ChaCha20 a native stream cipher? E.g. isn't it a block cipher, too, with a block size of $512$ bits? $\endgroup$
    – caveman
    Sep 2, 2021 at 8:38
  • 1
    $\begingroup$ @caveman The core of ChaCha is a public permutation which can be thought of as a block cipher under a fixed key (albeit with a more limited set of security guarantees, e.g. it shows a trivial fixed point with an all zero input, which makes it suitable only in limited situations, such as the ChaCha design). Just because it processes input in chunks of blocks does not necessarily mean it is a block cipher. $\endgroup$
    – forest
    Nov 12, 2021 at 20:22

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.