我知道分组密码在软件中更受欢迎,而流密码通常是基于硬件的。但是,为什么密钥不能在流密码中重用?是因为可能形成的模式?
答案 0 :(得分:31)
流密码是一种加密系统,可在给定的输入位序列上工作。大多数流密码通过从密钥生成一长串随机查找位来工作,然后将这些位组合(通过按位XOR)与要加密的数据。这是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,对于使用给定密钥加密的每条消息,该IV应该是唯一的。分组密码不会减少对此的需求。
答案 1 :(得分:1)
分组密码:分组密码就像逐块加密消息一样。 它在加密消息之后逐块打破。
流密码:流密码就像原始邮件的逐位加密一样。
答案 2 :(得分:1)
因为重新使用流中的密钥密码流密码
一般功能是加密=(明文+密钥)%2
和模2被认为是xor
因此,重复使用密钥加密功能将导致密文在一定长度后重复自身
因此,随机生成器用于在加密操作中每次生成密钥
像LFSR每次生成随机密钥
一次性垫也被使用