分组密码和流密码

Joe*_*dev 9 encryption

我知道分组密码在软件中更受欢迎,而不是通常基于硬件的流密码.但是,为什么密钥不能在流密码中重用?是因为可能形成的模式?

Tho*_*nin 31

流密码是一个加密系统,该系统的工作原理在输入比特的给定序列.大多数流密码通过从密钥生成一长串随机查找位来工作,然后将这些位组合(通过按位XOR)与要加密的数据.这是一次性垫的(粗略)仿真.

块密码是其中工程结束"块",其是具有固定长度(例如,对于128位的位的序列的通用加密元件AES).分组密码是块的排列; 键选择我们正在谈论的排列.单独的分组密码不能处理任意长消息; 分组密码和数据必须在称为操作模式的精细构造中使用(通常也称为"链接模式").

存在用于块密码的链接模式,称为"CTR"作为"计数器模式":在该模式中,块密码用于加密计数器的连续值(具有块大小的计数器).然后将得到的加密块连接起来,产生任意长的位序列,它仅依赖于密钥.然后,将该序列与要加密的数据进行异或.换句话说,CTR模式将分组密码转换为流密码.另一种流行的链接模式是CBC,这并适合流密码的模型.

对于流密码,必须不惜一切代价避免的是为两个不同的消息重用相同的密钥相关的比特序列; 这将产生臭名昭着的"两倍垫",可以很容易地打破(通过利用两个加密消息中的冗余).使用CTR模式下的分组密码,可转换为重复使用相同的计数器值.这就是CTR模式需要随机初始值(IV)的原因,这是您开始加密的计数器值.通过选择具有足够大块的新随机IV,可以非常高的概率避免使用的计数器值序列中的任何重叠.

IV的概念并不特定于分组密码; 一些流密码也使用IV(例如eSTREAM组合中的一个).当流密码具有IV时,重用密钥是没有问题的 - 只要您使用适当的IV(即在可能的IV的完整空间中以均匀的概率使用加密强RNG生成的IV).然而,一些其他流密码没有IV,特别是广泛使用的RC4.重用相同的密钥意味着重用完全相同的生成位序列,这很糟糕.

请注意,CTR之外的某些链接模式也需要IV,对于使用给定密钥加密的每条消息,IV应该是唯一的.分组密码不会减少对此的需求.