首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何为ChaCha20 Poly1305生成一个nonce?

如何为ChaCha20 Poly1305生成一个nonce?
EN

Cryptography用户
提问于 2020-03-04 01:53:37
回答 1查看 1.7K关注 0票数 1

我使用的是ChaCha20与Poly1305的自实现。因为现在只有96位,所以不能随意选择。有人能建议一种有效的方法来从密钥生成现在吗?

EN

回答 1

Cryptography用户

回答已采纳

发布于 2020-03-04 07:37:36

RFC 7539描述了您的需求。

的唯一性:

在实现本文档时,最重要的安全考虑是ChaCha20中使用的nonce的唯一性。计数器和LFSR都是生成唯一非DES的可接受的方法,就像使用64位密码(如DES)加密计数器一样。请注意,使用用128位或256位密码加密的计数器的截断是不可接受的,因为这种截断可能会在短时间内重复。(螺栓是我的)

LFSR和计数器是非常有效的。使用96位二进制计数器或具有原始多项式的96位长度LFSR .在重新启动系统时必须小心,特别是系统和电源故障,因为您必须将当前存储在某个地方才能正确恢复。您需要确保当发生故障时,要么在计数器/LFSR上跳远,要么生成一个新的键。

随机生成:

您还可以在考虑生日绑定\mathcal{O}(\sqrt n)时随机生成它。在生成2^{48}之前,您应该先停下来,在相同的键下创建一个碰撞。你可以通过计算生日来调整对手的优势。

结合

还可以将计数器/LFSR与随机生成相结合。例如,使用48位二进制计数器和48位随机.对于每一次产生,增加计数器/LFSR,并生成一个新的48位随机。

这比单计数器/LFSR或基于随机的计数器更可靠。在故障期间,如果系统没有正确地写入计数器/LFSR的最后一步/阶段,那么随机部分将有助于减少以前的nonce的重复。

重复当前的

的后果

如果一个nonce被重复,那么一次Poly1305键和密钥流在消息之间都是相同的。这揭示了明文的异或,因为明文的异或等于密文的异或。

票数 5
EN
页面原文内容由Cryptography提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://crypto.stackexchange.com/questions/77982

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档