如何使用salsa20计数器nonce?

时间:2016-01-22 18:33:32

标签: encryption cryptography nonce

  1. 我不确定我是否做对了:消息的计数器可以用作/而不是nonce?
  2. 我的意思是这样的消息:

      

    标题(2字节)|计数器(8字节)|正文(加密n个字节)| HMAC-SHA1

    with counter = 1(63位= 0)可以吗?

    1. 我明白我永远不应该使用相同的nonce两次相同的密钥。 当新连接启动并且计数器再次从1开始时,我该怎么办?

1 个答案:

答案 0 :(得分:2)

  

据我所知,我永远不应该使用相同的nonce两次相同的密钥。当新连接启动并且计数器再次从1开始时我该怎么办?

如果您重复使用具有相同密钥的随机数this happens。您应该将用作nonce的计数器存储在客户端的某个位置,为发送的每条消息都将其递增,然后在发送该消息之前将其写回存储。这很重要,因为如果您无法将其写回,但发送消息,则下一条消息将使用相同的计数器。如果你不能写回来,你真的不应该发信息。

如果您无法在客户端上存储类似计数器的内容,则可以随机生成随机数。 64位不能提供足够的空间以获得良好的抗冲击性。您应该期望在具有相同密钥的2个 32 消息之后获得第一次nonce冲突。如果你的消息少于此数量,那么你可以简单地生成一个随机的随机数并且相当确定不会发生碰撞。如果你想要更加确定,请使用XSalsa20,它使用192位IV / nonce。

  

我不确定我是否做对了:消息的计数器可以用作/而不是nonce?

Nonce 表示号使用过一次。如果您总是递增计数器,那么您将始终使用一次的不同数字。所以,是的,一个计数器可以用作nonce。