Encryption 分组密码和流密码

Encryption 分组密码和流密码,encryption,Encryption,据我所知,与通常基于硬件的流密码相比,分组密码在软件中更受欢迎。然而,为什么不能在流密码中重用密钥?这是因为可能形成的模式吗?流密码是一种在给定的输入位序列上工作的加密系统。大多数流密码的工作原理是从密钥生成一个长序列的随机位,然后(通过按位异或)与要加密的数据组合。这是一种(粗略的)模仿 分组密码是一种通用的密码元件,它在“块”上工作,这些块是具有固定长度的位序列(例如,128位用于)。分组密码是块的排列;关键点选择我们正在讨论的排列。单独使用分组密码无法处理任意长消息;分组密码和数据必须在称

据我所知,与通常基于硬件的流密码相比,分组密码在软件中更受欢迎。然而,为什么不能在流密码中重用密钥?这是因为可能形成的模式吗?

流密码是一种在给定的输入位序列上工作的加密系统。大多数流密码的工作原理是从密钥生成一个长序列的随机位,然后(通过按位异或)与要加密的数据组合。这是一种(粗略的)模仿

分组密码是一种通用的密码元件,它在“块”上工作,这些块是具有固定长度的位序列(例如,128位用于)。分组密码是块的排列;关键点选择我们正在讨论的排列。单独使用分组密码无法处理任意长消息;分组密码和数据必须在称为a(通常也称为“链接模式”)的复杂结构中使用

有一种称为“CTR”的分组密码链接模式作为“计数器模式”:在这种模式下,分组密码用于加密计数器的连续值(具有块大小的计数器)。然后将得到的加密块串接在一起,产生一个仅依赖于密钥的任意长的比特序列。然后,用要加密的数据对该序列进行异或就足够了。换句话说,CTR模式将分组密码转换为流密码。另一种流行的链接模式是CBC,它不适合流密码的模型

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

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


请注意,除CTR之外的某些链接模式也需要IV,对于使用给定密钥加密的每条消息,IV应该是唯一的。分组密码并不能减轻这种需要。

分组密码:分组密码就像是逐块加密消息。 它是在消息加密后,一块一块地破坏消息


流密码:流密码类似于原始消息的逐位加密。

因为在流密码中重用密钥时,流密码 一般函数为加密=(明文+密钥)%2 模2被认为是xor
因此,重复使用密钥进行加密功能将导致密文在经过一段时间后自身重复它
因此,在每次加密操作中都会使用随机生成器生成密钥 喜欢LFSR每次都产生随机密钥

一次性键盘也被使用了

哇,这比我想要的要多。谢谢你这么详细的回复。顺致敬意,