流密码与分组密码

一.加密方法的分类:
按照不同的标准有不同的分类标准:

1.按照密钥的特征不同,可以分为对称密码与非对称密码。
2.按照加密方式的不同,可以分为流密码和分组密码。

3.非对称密码均属于分组密码。
1.流密码。

又名序列密码。明文称为明文流,以序列的方式表示。加密时候,先由种子密钥生成一个密钥流。然后利用加密算法把明文流和密钥流进行加密,产生密文流。流密码每次只针对明文流中的单个比特位进行加密变换,加密过程所需要的密钥流由种子密钥通过密钥流生成器产生。流密码的主要原理是通过随机数发生器产生性能优良的伪随机序列,使用该序列加密明文流(按比特位加密),得到密文流。由于每一个明文都对应一个随机的加密密钥,所以流密码在绝对理想的条件下应该是算一种无条件安全的一次一密密码。
机密流程:

种子密码->随机数发生器->密钥流
明文流->(通过密钥流)->加密变换->密文流

设明文流为:m=m1m2·····mi·····,密钥流由密钥流发生器f产生:zi=f(k,ai),ai指加密器存储器在i时刻的状态,f是由种子密钥k和ai产生的函数,设最终的密钥流为k=k1k2···ki·····,加密结果为c=c1c2····ci·····=Ek1(m1).。。。Eki(mi),解密结果为m=Dk1(c1)Dk2(c2)···Dki(ci)=m1m2···mi,无论加密解密,其关键都是密钥流。
2.流密码的分类

分为同步流密码和自同步流密码
3.流密码的特性:极大的周期,良好的统计特性,抗线性分析。

4.流密码的安全性取决于密钥流的安全性,要求密钥流序列有较好的随机性。
5.不明密钥的人如何对流密码进行分析。

这种密钥流一般都是周期的,做到完全随机是困难的,这样伪随机序列,理论上是可以分析出来的。
举个例子。

敌方截获了密文串:101101011110010
明文串:011001111111001

密钥流:110100100001011
可以根据前10个比特建立如下方程

带入整理可得密钥流递推公式:

ai+5=c5ai异或c2ai+3=ai异或ai+3

二.组密码
分组密码又称块密码。当加密明文时,先把明文变成二进制序列,然后将其变成若干个固定长度的组,不足位用0补全。

然后逐个分组依次进行加密操作。分组长短影响密码强度,分组长度不能太短也不能太长。既要便于操作与运算又要保证密码的安全性。
分组密码将明文编码表示后成为m1m2····mi····划分成为若干固定长度的t的组m=m1m2···mi,各组分别在密钥k=k1k2···ki的控制下转换成长度为l的二进制密文分组c=c1c2···ci。若t>l,则成为带数据压缩的分组密码,增加密文解密的难度;若t<l,则称为带数据扩展的分组密码,必然要增加密文存储和传输的代价。通常的分组密码算法大多取t=l。其本质是一个从明文空间(t的比特串的集合)M的密文空间(l长的比特串的集合)c的映射,该映射由密钥和加密算法确定。采用分组密码,对一个明文分组进行加解密的过程。其中,明文分组长度为t,密文分组长度为l,密钥长度为r。这些参数是分组绵绵的重要参数,对算法的安全性能有重要的影响(密钥空间有2r次方个元素)。在不同的分组密码算法中,它们的取值往往不同。

明文分组m->通过密钥k加密变换->密文分组c->通过密钥k解密变换->明文流分组。
三.两者之间的联系
流密码:M代表明文。流密码把M拆分成比特为单位的M1,M2````MI,`````,并用密钥流K=K1K2```KI中的第i个成分Ki对明文流中的第i个成分Mi进行加密,即Ek(M)=Eki(Mi)=Ek2(M2)···Eki(Mi)····。如果T个比特后密钥序列重复,那么为周期流密码,否则就是非周期。
而分组密码是把M拆分成Mi块状,单位待定。用的是同一个密钥K对每个分组进行加密,分组的长度也不确定。
周期为T的流密码,令K=K1K2···KT,这类密码可以看作是分组密码,这里的每个Mi都是具有T个比特的一个分组。T越小,越像分组密码,T越大则越像流密码。
四.区别。
分组密码每次只能处理一个固定长度的明文,不足还需要补全,分组密码的体制一般首先将M‘进行填充得到消息M,使其长度为固定分组长度L的整数倍。而流密码加密时不一定得到相同的密码,因为明文的重复部分是使用密钥流的不同部分加密的。对于分组密码,在一个固定的密钥的作用下,对相同的明文加密,一定能得到相同的密文。


猜你喜欢

转载自blog.csdn.net/tatebrwonjava/article/details/79777460
今日推荐