【发布时间】:2025-12-12 20:35:01
【问题描述】:
我知道,与通常基于硬件的流密码相比,分组密码在软件中更受欢迎。但是,为什么不能在流密码中重用密钥?是因为可能形成的模式吗?
【问题讨论】:
标签: encryption
我知道,与通常基于硬件的流密码相比,分组密码在软件中更受欢迎。但是,为什么不能在流密码中重用密钥?是因为可能形成的模式吗?
【问题讨论】:
标签: encryption
流密码是一种加密系统,可在给定的输入位序列上工作。大多数流密码的工作原理是从密钥生成一长串看起来随机的位,然后将这些位(通过按位异或)与要加密的数据组合。这是one-time pad 的(粗略)模拟。
块密码是一种通用密码元素,它作用于“块”,这些“块”是具有固定长度的位序列(例如,AES 为 128 位)。分组密码是分组的排列;键选择我们正在谈论的排列。单独的分组密码不能处理任意长的消息;分组密码和数据必须在称为mode of operation(通常也称为“链接模式”)的精心构造中使用。
有一种称为“CTR”的块密码的链接模式,称为“计数器模式”:在这种模式下,块密码用于加密计数器的连续值(计数器具有块的大小)。然后将得到的加密块连接起来,产生一个任意长的位序列,该序列仅取决于密钥。只需将该序列与要加密的数据进行异或运算即可。换句话说,CTR 模式将分组密码转换为流密码。另一种流行的链接模式是 CBC,它不适合流密码的模型。
对于流密码,必须不惜一切代价避免为两条不同的消息重用相同的依赖于密钥的位序列;这将产生臭名昭著的“两次填充”,它很容易被破解(通过利用两个加密消息中的冗余)。在 CTR 模式下使用分组密码,这转化为重复使用相同的计数器值。这就是为什么 CTR 模式需要一个随机的初始值 (IV),它是您开始加密的计数器值。通过选择具有足够大块的新随机 IV,您可以非常高地避免使用的计数器值序列中的任何重叠。
IV 的概念并不特定于分组密码;一些流密码也使用 IV(例如 eSTREAM portfolio 中的那个)。当流密码具有 IV 时,重用密钥是没有问题的——只要您使用正确的 IV(即,在可能的 IV 的完整空间中使用加密强 RNG 生成的 IV,具有统一的概率)。但是,其他一些流密码没有 IV,特别是广泛使用的RC4。重复使用相同的密钥意味着重复使用完全相同的生成位序列,这很糟糕。
请注意,除了 CTR 之外的某些链接模式还需要一个 IV,对于使用给定密钥加密的每条消息,它应该是唯一的。分组密码并不能减轻这种需求。
【讨论】:
块密码: 块密码就像一个块一个块地加密一个消息。 它是在消息加密之后逐块破坏。
流密码:流密码就像是对原始消息的一点一点加密。
【讨论】:
因为在流密码中重用密钥时,流密码
一般功能是加密=(明文+密钥)%2
模 2 被认为是异或
因此重复使用密钥进行加密功能将导致密文在一定长度后自我重复
所以每次在加密操作中都使用随机生成器来生成密钥
就像 LFSR 每次都产生随机密钥
一次性垫也用过
【讨论】: