分组密码与流密码的分析设计与比较
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
分组密码与流密码的分析设计与比较
1引言
随着科技的发展,信息安全在现代电子通信等方面发挥着越来越重要的作用密码编码学是应对各种信息安全威胁的最有效的方法。
所谓密码编码学,是指生成高强度、有效的加密或认证算法。
欲传送的原始信息叫做明文,对其进行可逆的数字变换后的信息称为密文。
发送者通过加密算法对明文进行加密,得到密文,这个过程称为加密。
接收者收到经过处理的密文后,通过解密算法,还原成明文,这一过程称为解密。
密码系统所采取的基本工作模式叫做密码体制,主要分为两大类:对称密钥密码体制与非对称密钥密码体制。
对称密钥密码体制中的加密密钥与解密密钥相同,需要安全可靠的密钥传递信道,通信双方需保管好密钥。
非对称密钥密码体制中加密与解密分别有一个对应的密钥,发送者查询接收者公开的公钥对明文进行加密,接收者收到密文后再利用只有自己知道的私钥进行解密。
对称密钥密码体制又分为两大类,分别是分组密码与流密码。
所谓分组密码,就是按照算法设计者预先设定的长度把明文分割成块,再对每一分组进行加密解密的算法。
而对
比特进行运算、采用"一次一密"的算法,则称为流密码。
2分组密码
2.1 概论
所谓分组密码,其明文分为若干个数据块,加密后得到的密文仅与给定的密钥算法和密钥有关,与被处理的明文数据块在整个明文中所处的位置无关。
较典型的分组密码算法有DES算法、IDEA算法、AES算法等。
算法设计者事先设定好分块的长度,算法将明文按照该长度进行分组,再在这些定长的分组上进行运算。
在分组密码的设计中,加密与解密的处理是建立在块的基础上。
算法把明文分成设定的大小,通常为64 bit或128 bit,再对每个块单独编码。
2.2 设计原则
创立了经典信息论的数学家C.E.Shannon在1949年时发表了一篇名为"《保密系统的通信理论》的论文。
在这篇论文中,Shannon提出了如何设计分组加密的组合密码系统。
其中,设计分组密码需要依据两个一般原则,分别是混淆原则和扩散原则。
实现混淆原则,实际上就是复杂化密文的统计特性与和密钥的依赖关系。
扩散原则,即所设计的密码应使得密钥的每一位数字影响密文的许多位数字以防止对密钥进行逐段破译,且明文的每一位数字也影响密文的许多位数字以隐蔽
明文数字统计特性。
混淆原则与扩散原则的实现,奠定了分组密码设计的基础。
3 AES
3.1 概述
为了确定一个更能保护敏感信息安全的、非保密的分组密码算法,美国国家标准和技术研究所在1997年开始征集高级加密标准。
2000年9月,经过两轮评估,美国国家标准和技术研究所最后把Rijndael的算法确定为AES的最终算法。
Rijndael算法的本质是SP网络,S与P分别表示替代与置换,替代起混淆作用,而置换起扩散作用。
这是一种乘积密码,它包含了一定数量的迭代,而每一次迭代都包括了替代和置换,一般是先进行替换操作,再进行置换操作。
Rijndael 算法的分组长度与密钥长度均为可变长度,但一般分组长度设为128 bit。
3.2 设计原理
由于AES算法的分组长度设定为128 bit,故一般将该状态设计成一个4*4大小的矩阵,称为一个状态。
该分组被复制到状态分组,这个数组在加密或解密的每个阶段都会改变。
该算法的密钥也是用字节为单位的矩阵描述。
在这些矩阵中的排列顺序是从上到下、从左到右。
AES算法中有一些运算是针对列进行的。
其算法过程主要包括以下四个变换:字节替换、行移位、列混合和圈密钥加。
一共经过n轮,前n-1轮都包含了以上四个变换,最后一轮则只有字节替换、行移位和圈密钥加,由于该算法密钥长度设为128 bit(本文中AES算法均为128位),故轮数为10。
(1)字节替换
这是作用在字节上的一种非线性字节变换,独立地对每一个字节进行,是可逆的。
主要由两个变换合成,一是对每个字节求它的乘法逆元,其中零多项式没有乘法逆元,仍表示为它自身。
二是对所求得的乘法逆进行仿射变换。
可以通过查表替换。
(2)行移位
数据块的第0行保持不变,第1行左移C1位,第2行左移C2位,第3行左移C3位,移位值与分组长有关。
对于128 bit来说,第1行左移1位,第2行左移2位,第3行左移3位。
(3)列混合
每一直行的四个字节透过线性变换互相结合。
每一直行的四个元素分别当作1,x,x2,x3的系数,合并即为GF(28)中的一个多项式,接着将此多项式和一个固定的多项式
c(x)=3x3+x2+x+2 在x4+1下相乘。
(4)圈密钥加
在每次的加密循环中,都会由主密钥产生一把回合密钥,大小与原矩阵一样,可以和原矩阵中每个对应的字节作异或运算。
每一个回合密钥由初始密钥通过密钥扩展算法得到。
4 流密码
4.1 概论
流密码,又称序列密码,是对明文中单个位进行运算的算法,常用于对军事和外交信息安全的处理。
加密时,算法会将伪随机序列与明文序列模2加,产生密文序列。
在这里,伪随机序列的生成主要依靠一个伪密钥流生成器,生成一个表面随机的密钥流。
流密码与一次一密相似,但一次一密所使用的是真正的随机序列,而流密码的密钥流生成器产生的是表面随机的伪随机序列。
解密的方法是把接收到的密文序列与加密时所用的伪
随机序列模2加。
这里应用到的是这样一个原理:P?H?K?H?K=P
P是明文序列,K是伪随机序列,P与K异或后得到密文,在此基础上与K再进行异或运算后可以得到原来的明文P。
加密算法为
ci≡(ki+pi)(mod2)
解密算法为
pi≡(ki+ci)(mod2)
当数据必须被实时处理或者数据的大小未知而需要避免缓冲时,流密码是一个相当合适的选择。
流密码的加密解密过程相比起分组加密而言非常简单,不需要替换、移位等等,只需进行异或便可以得到密文。
4.2 流密码设计原则
在流密码的应用中,流密码强度依赖于伪随机序列的随机性与不可预测性。
在考虑流密码的设计时,有以下几点需要注意:
(1)如果要增强流密码的安全性,其伪随机序列的周期要尽可能的长,因为当产生的伪随机序列长度不够时,它会重复前面的随机数。
(2)伪随机序列要尽量接近真正随机序列的性质。
(3)如果要抵御穷举攻击,该密钥的长度需要越长越好,不得少于128 bit。
5 RC4
5.1 概述
由于流密码目前主要应用于军事和外交等机密部门,它的许多研究成果并没有完全公开,目前流密码中公开的著名算法主要有RC4算法、SEAL算法、A5算法等,其中RC4是目前为止最具有影响力的。
RC4的算法实现非常简单,代码简洁却不失高效。
其密钥长度是可变的,可从1字节到256
字节变化,是面向字节的操作,密钥流独立于明文。
5.2 设计原理
RC4有一个足够大的数据表S,在此基础上进行非线性变换,生成非线性的密钥流序列。
这个数据表S的大小与参数有关,一般而言这个参数为8,则该数据表S有28 个元素。
RC4密钥流的输出都是该数据表S中的一个随机元素。
RC4以随机置换为基础。
密钥流的生成主要有两个算法:密钥调度算法对数据表S进行初始排列,伪随机生成算法随机选取其中的元素并修改数据表S的排列顺序。
首先初始化不大于256字节的可变长密钥,将其扩充为256字节的状态矢量S,其元素分别记为S[i](i=0,1,2,…,255)。
接着置换S中的字节,使其始终包含0到255所有8 bit数,每次置换都讲生成1字节的密钥。
6 分组密码与流密码的比较
6.1 分组密码的优缺点
(1)优点
①可以重复使用密钥;
②如果某个块的处理发生了错误,并不会影响到之后的块的运算;
③分组密码在软件上更容易实现,即容易被移植,成本也较低;
④在现实生活中,分组密码更常见,它有四种工作模
式,包括ECB模式、CBC模式、OFB模式、CFB模式;
⑤易于标准化,当今信息大多是按块进行传输处理的;
⑥扩散性好,插入敏感。
(2)缺点
①相同的明文产生相同的密文;
②加解密处理速度慢;
③分组加密更容易受到密码分析的影响;
④存在错误传播。
6.2 流密码的优缺点
(1)优点
①流密码的加密和解密每次都是以一个bit或byte为单位进行处理,更符合硬件上的实现;
②流密码较难受到密码分析的影响,因为它每一个单位加密时使用的密钥都是不同的;
③流密码所用密钥的产生独立于信息流;
④硬件实现电路更简单;
⑤对于字符数据的处理都是实时的;
⑥转换速度快,低错误传播。
(2)缺点
①某一比特发生错误时会影响到其他比特;
②不太适用于软件;
③低扩散,插入、删除的不敏感性。