2024年4月16日发(作者:)

流密码和分组密码

按照密钥的特征不同,密码体制分为对称密码体制和非对称密码体制。按照对明文消息加密方式

的不同,密码体制分为流密码(Stream Cipher)和分组密码(Block Cipher)

[1]

。非对称密码体制

均为分组密码

[2]

1 流密码

流密码也称为序列密码。在流密码中,明文以序列的方式表示,称为明文流。在对明文流进行加

密时,先由种子密钥生成一个密钥流。然后,利用加密算法把明文流和密钥流加密,产生密文流。流

密码每次只对明文中的单个bit位进行加密变换,加密过程所需的密钥流由种子密钥通过密钥流生成

器产生。流密码的主要原理是通过随机数发生器产生性能优良的伪随机序列(密钥流),使用该序列加

密明文流(逐bit位加密),得到密文流。由于每一个明文都对应一个随机的加密密钥,因此流密码在

理论上属于无条件安全的密码体制(一次一密密码)

[3]

。流密码的基本加密过程,如图1所示。

种子密码

随机数发生器

密钥流

明文流加密变换密文流

图1 流密码的加密过程

设明文流为:

mm

1

m

2

m

i

,密钥流由密钥流发生器

f

产生:

z

i

f(k,

i

)

,这里

i

是加密器中的存储

器在时刻

i

的状态,

f

是由种子密钥

k

i

产生的函数。设最终得到的密钥流为:

kk

1

k

2

果为:

cc

1

c

2

c

i

E

k

1

(m

1

)E

k

2

(m

2

)E

k

i

(m

i

)

k

i

,加密结

,解密结果为:

mD

k

1

(c

1

)D

k

2

(c

2

)D

k

i

(c

i

)m

1

m

2

m

i

。用流密码进

行保密通信的模型,如图2所示:

种子密码

随机数发生器

密钥流

明文流加密变换密文流

安全信道种子密码

随机数发生器

密钥流

公共信道密文流解密变换明文流

图2 流密码保密通信图

2 分组密码

分组密码也称为块密码。当加密一条长消息(明文)时,首先,将明文编码表示为二进制序列;

然后,将其分成若干个固定长度的组(最后一组长度不够时还得进行填充,如补0);最后,再对逐个

分组依次进行加密操作。分组长短决定着密码的强度。从算法的安全性考虑,分组长度不能太短,应

该保证加密算法能够应付密码分析;从实用性考虑,分组长度又不能太长,要便于操作和运算。近年

来,随着计算机计算能力的不断提高,分组长度为64位的分组密码的安全性越来越不能满足实际需

要,为提高加密的安全性,很多的分组密码开始选择128位作为算法的分组长度

[4]

。在相同密钥下,

分组密码对长为

t

的输人明文组所实施的变换是等同的,所以只须研究对任一组明文数字的变换规则。

这种密码实质上是字长为

t

的数字序列的代换密码

[3]

分组密码是将明文经编码表示后的二进制序列

m

1

m

2

各组分别在密钥

kk

1

k

2

m

i

划分成若干固定长度

t

为的组

mm

1

m

2

m

t

k

r

的控制下转换成长度为

l

的二进制密文分组

cc

1

c

2

c

l

。若

tl

,则称为带数据

压缩的分组密码,易增加密文解密的难度;若

tl

,则称为带数据扩展的分组密码,必然要增加密文存

储和传输的代价。通常的分组密码算法大多取

tl

[2]

。其本质是一个从明文空间(

t

的比特串的集合)

M

到密文空间(

l

长的比特串的集合)

C

的映射,该映射由密钥和加密算法确定。采用分组密码,对一个

明文分组进行加解密的过程,如图3所示。其中,明文分组长度为

t

,密文分组长度为

l

,密钥长度为

r

。这些参数是分组密码的重要参数,对算法的安全性能有重要的影响(密钥空间有

2

r

个元素)。在不

同的分组密码算法中,它们的取值往往不同。

密钥k

明文分组m加密变换密文分组c

安全信道

公共信道密文分组c

密钥k

解密变换明文流分组m

图3 分组密码保密通信图

3 二者联系

(1)流密码:令

M

代表明文。流密码是把

M

拆分成相连的比特

M

1

,M

2

,

KK

1

K

2

K

i

,M

i

,

,并用密钥流

E

K

(M)E

K

1

(M

1

)

中的第

i

个成分

K

i

对明文流中的第

i

个成分

M

i

进行加密,即

E

K

2

(M

2

)E

K

i

(M

i

)

。如果在

T

(固定值)个比特后密钥序列重复,则流密码是周期序列密码。否则,

就是非周期序列密码。

(2)分组密码:分组密码是把

M

拆分成相连的分组

M

1

,M

2

,

M

i

进行加密,即

E

K

(M)

,M

i

,

,并用同一个密钥

K

对每个分组

E

K

(M

1

)E

K

(M

2

)E

K

(M

i

)

。分组的长度视具体方案而定。

(3)二者的联系:对于周期为

T

的流密码,令

KK

1

K

2

K

T

,也可把这类密码看作是分组密码,这

里每个

M

i

都是具有

T

个比特的一个分组。当

T

较小时,这类密码更像是分组密码。随着

T

的增加,这类

密码变得更像流密码。

4 二者区别

(1)分组密码的特征是每次处理一个固定长度的数据组(如DES的分组长度64bit)。一个长度

小于密码分组尺寸的明文,只有当它被填补足够的位数能构成标准尺寸时,才能进行加密。在分组密

码中,明文被分为多个比特的分组,逐组进行加密。对于某一消息

M

,分组密码体制一般首先将

M

行填充得到消息

M

,使其长度为固定分组长度

L

的整数倍,密码算法把

M

划分为一系列长度为

L

的分组,

再对分组进行加密。在流密码中,明文

M

被分成连续的比特

MM

1

M

2

K

i

M

i

,用密钥流

KK

1

K

2

K

i

进行加密。其中,密钥流

K

是密钥流生成器得到的。

(2)对于流密码,在一个固定密钥作用下,对相同的明文进行加密,并不一定得到相同的密文。

因为明文的重复部分是用密钥流的不同部分加密的。对于分组密码,在一个固定密钥作用下,对相同

的明文进行加密,一定得到相同的密文。

参考文献

[1] 卢铁城. 信息加密技术. 四川科学技术出版社,1989.10.

[2] 张福泰 等. 密码学教程 . 武汉大学出版社,2006.9.

[3] 杨波. 现代密码学(第2版). 清华大学出版社,2007.4.

[4] 范九伦 等. 密码学基础. 西安电子科技大学出版社,2008.8.