我是ChaCha20的新手。从RFC --
ChaCha20的输入如下:
O 256位键,被视为由8个32位的小对数位整数级联而成.
O一个96位的非整数,被看作是三个32位的小对数位整数的级联.
O 32位块计数参数,作为32位小端整数处理.
现在,计数器不是作为输入选项提供的。他们在引擎盖下面实现了计数器。为了解决这个问题,让我们假设计数器是正确实现的。
现在,如果我使用NULL nonce,计数器仍然被使用。会没事吗?
在密钥必须更改之前,可以以这种方式加密的最大邮件数是否为2^32?或者是最大字节数?
发布于 2020-03-31 16:11:11
现在不一定是秘密的或不可预测的,它只是不能被重复使用。用一个给定的钥匙一次使用全零的一次是很好的。您只需确保永远不要重用它,就像使用任何其他的当前值一样。要明确的是,这意味着最多只能有一条消息。
发布于 2022-10-20 21:37:27
另一个答案是有规律的,那么直觉呢?
ChaCha将一个数据块转换为一个不可预测的数据块,并使用您的纯文本进行XOR。因为XOR是可逆的,相同的不可预测的数据块将把密文返回到明文。
如果两段明文是相同的,并且对不可预测块的相同字节进行xor编辑,则它们得到相同的密文值。在足够大的范围内,攻击者将能够看到“哦,这个模式出现了好几次,这一定意味着他们正在发送可预测的文本。”这是一个街区计数进来的地方。块计数被混合到块中,为每个明文块提供不同的不可预测的数据块。
但是,如果相同字节的明文发生在给定块的同一部分,那么它们每次都会以相同的方式加密。同样,攻击者可能会看到这种模式。因此,我们引入了一个n,一个大的随机数,它被引入到块中,使得它对每条消息都是随机的(并且通过块计数的幂,每条消息的每个块)。
因此,所有零的IV都可以,但是如果两个明文用相同的IV (0或其他)加密,则可能会向攻击者显示明文中的模式。硬和快速的规则是,IV应该完全随机生成,并与密文一起传输。
https://security.stackexchange.com/questions/229027
复制相似问题