Cryptography 基于过去的值预先计算加密nonce的下一个值是否安全?

Cryptography 基于过去的值预先计算加密nonce的下一个值是否安全?,cryptography,libsodium,nonce,Cryptography,Libsodium,Nonce,服务器只需使用伪随机生成器在初始化时创建第一个nonce,并且应让客户端知道该值。此nonce应用于第一个加密请求,然后服务器根据响应的某些属性计算下一个nonce值,这是客户端和服务器都能做到的。第二个加密请求将使用nonce的更新值,依此类推。这类似于初始化向量在其他解决方案中的工作方式 由于nonce是公开可见的值,并且根据初步研究,它的公开可见性对安全性没有影响,所以我这里的问题只是关于nonce值链的生成,而不是随机的。好处是,在加密请求中,它将在客户端和服务器之间形成链接 我使用的是

服务器只需使用伪随机生成器在初始化时创建第一个nonce,并且应让客户端知道该值。此nonce应用于第一个加密请求,然后服务器根据响应的某些属性计算下一个nonce值,这是客户端和服务器都能做到的。第二个加密请求将使用nonce的更新值,依此类推。这类似于初始化向量在其他解决方案中的工作方式

由于nonce是公开可见的值,并且根据初步研究,它的公开可见性对安全性没有影响,所以我这里的问题只是关于nonce值链的生成,而不是随机的。好处是,在加密请求中,它将在客户端和服务器之间形成链接


我使用的是LibNaude密码系统

暂时状态不一定是秘密的,只是随机的。i、 e.不可重复使用。只要你能满足这个就好了。我建议使用nonce的散列棘轮。

您将如何预计算它?
xor
它与加密请求的最后一个结果。不管是什么方式,客户端和服务器都可以。这在很大程度上取决于依赖于nonce的特定密码系统,以及伪随机数生成器的强度(熵的来源是什么?)这里的主要问题是:你为什么要发明一个系统?您的安全要求是什么?您能否利用现有的结构?我特别关心的是“并基于初步研究……”确切地说,您所依赖的系统是什么,其当前的安全要求是什么?“Nonce”是一个通用术语,精确要求取决于密码系统的具体情况。我在标记部分添加了密码系统作为libnaude。我更新了这个问题,把密码系统也包括在内,所以让我来解释一下为什么。使用Protobuf。我不想编辑protobuf定义来插入nonce。如我所述,除机组外,未使用PRG。其余的是确定的价值链,两者都可以计算。我不认为我是在发明新密码,如果新密码生成的方法得到澄清,在最佳实践中,谁生成新密码?是客户端还是服务器?这完全取决于密码系统。有些nonce具有更高的要求,例如不可预测性,这比不可重用性更严格。在没有特定密码系统的情况下,这是无法评估的。有些事情变得更清楚了。临时值不需要是随机的。例如,从1到无穷大的计数整数可以是一个有效的nonce,它不是随机的。是的,我同意这取决于上下文。这对于交通会议来说很好。但是对于任意使用秘密盒,需要随机的nonce。