分组密码与流密码

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

分组密码与流密码

第一节什么是分组密码

分组密码是将明文消息编码表示后的数字(简称明文数字)序列,划分成长度为n的组(可看成长度为n的矢量),每组分别在密钥的控制下变换成等长的输出数字(简称密文数字)序列。现代分组密码的研究始于20世纪70年代中期,至今已有20余年历史,这期间人们在这一研究领域已经取得了丰硕的研究成果。大体上,分组密码的研究包括三方面:分组密码的设计原理,分组密码的安全性分析和分组密码的统计性能测试。

第二节分组密码的设计原则

Claude Shannon在1949年提出了代替—置换(S-P)网络的想法,成为当代分组加密法的基础,而代替和置换就是两种基本的密码学运算。

Shannon又提出扩散(diffusion)和扰乱(confusion)是影响密码安全的主要因素。扩散的目的是让明文中的单个数字影响密文中的多个数字,从而使明文的统计特征在密文中消失,相当于明文的统计结构被扩散。例如,最简单的方法让明文中的一个数字影响密文中的k个数字,可以用:

扰乱是指让密钥与密文的统计信息之间的关系变得复杂,从而增加通过统计方法进行攻击的难度。扰乱可以通过各种代换算法实现。

设计安全的分组加密算法,需要考虑对现有密码分析方法的抵抗,如差分分析、线性分析等,还需要考虑密码安全强度的稳定性。此外,用软件实现的分组加密要保证每个组的长度适合软件编程(如8、16、32……),尽量避免位置换操作,以及使用加法、乘法、移位

等处理器提供的标准指令;从硬件实现的角度,加密和解密要在同一个器件上都可以实现,即加密解密硬件实现的相似性。

第三节Feistel加密结构

如今许多对称式分组密码都是以Horst Feistel提出的“Feistel加密法”的结构为基础。Feistel加密法以不可逆的混合式加密为基础,将输入的区段分为两半,分多个回合来处理,每回合左半部资料会执行一次替换运算,替换运算会将右半部回合函式F的结果,以XOR运算方式与左半部资料结合起来,然后交换左右两半资料。这一思路充分展现了Shannon的SP网络概念。

图3-1 标准Feistel网络

Feistel 加密法的设计通过增大区段提升安全性;增加长度可以提升安全性,使得暴力搜寻密钥变得更困难;增加回合数可以提升安全性;复杂的产生方法可以使分析变困难;复杂的函数可以使分析变困难。但是这些设计都使得加解密都变得缓慢。

图3-2 Feistel加密法的加解密程序

第四节分组密码算法的要求

分组密码算法实际上就是密钥控制下,通过某个置换来实现对明文分组的加密变换。为了保证密码算法的安全强度,对密码算法的要求如下。

(1)分组长度足够大

当分组长度较小时,分组密码类似于古典的代替密码,它仍然保留了明文的统计信息,这种统计信息将给攻击者留下可乘之机,攻击者可以有效地穷举明文空间,得到密码变换本身。

(2)密钥量足够大

分组密码的密钥所确定密码变换只是所有置换中极小一部分。如果这一部分足够小,攻击者可以有效地穷举明文空间所确定所有的置换。这时,攻击者就可以对密文进行解密,以得到有意义的明文。

(3)密码变换足够复杂

使攻击者除了穷举法以外,找不到其他快捷的破译方法。

第五节分组密码技术总结

分组密码将定长的明文块转换成等长的密文,这一过程在秘钥的控制之下。使用逆向变换和同一密钥来实现解密。对于当前的许多分组密码,分组大小是64 位,但这很可能会增加。

明文消息通常要比特定的分组大小长得多,而且使用不同的技术或操作方式。这样的方式示例有:电子编码本(ECB)、密码分组链接(CBC)或密码反馈(CFB)。ECB 使用同一个密钥简单地将每个明文块一个接一个地进行加密;在CBC 方式中,每个明文块在加密前先与前一密文块进行“异或”运算,从而增加了复杂程度,可以使某些攻击更难以实施。

“输出反馈”方式(OFB)类似CBC 方式,但是进行“异或”的量是独立生成的。CBC 受到广泛使用,例如在DES(qv)实现中,而且在有关密码术的技术性方面的相应书籍中深入讨论了各种方式。请注意:您自己建立的密码系统的普遍弱点就是以简单的形式来使用某些公开的算法,而不是以提供了额外保护的特定方式使用。

迭代的分组密码是那些其加密过程有多次循环的密码,因此提高了安全性。在每个循环中,可以通过使用特殊的函数从初始秘钥派生出的子密钥来应用适当的变换。该附加的计算需求必然会影响可以管理加密的速度,因此在安全性需要和执行速度之间存在着一种平衡。天下没有免费的午餐,密码术也是如此;与其它地方一样,应用适当方法的技巧中有一部分是源于对需要进行的权衡以及它们与需求平衡的关系如何的理解。

分组密码包括DES、IDEA、SAFER、Blowfish 和Skipjack ——最后一个是“美国国家安全局(US National Security Agency,NSA)”限制器芯片中使用的算法。

第六节什么是序列密码

序列密码也称为流密码,它是对称密码算法的一种。序列密码具有实现简单、便于硬件实施、加解密处理速度快、没有或只有有限的错误传播等特点,因此在实际应用中,特别是专用或机密机构中保持着优势,典型的应用领域包括无线通信、外交通信。1949年Shannon 证明了只有一次一密的密码体制是绝对安全的,这给序列密码技术的研究以强大的支持,序列密码方案的发展是模仿一次一密系统的尝试,或者说“一次一密”的密码方案是序列密码的雏形。如果序列密码所使用的是真正随机方式的、与消息流长度相同的密钥流,则此时的序列密码就是一次一密的密码体制。若能以一种方式产生一随机序列(密钥流),这一序列由密钥所确定,则利用这样的序列就可以进行加密,即将密钥、明文表示成连续的符号或二进制,对应地进行加密。

第七节序列密码与分组密码的对比

分组密码已一定大小作为每次处理的基本单元,而序列密码则是以一个元素(一个字母或一个比特)作为基本的处理单元。

序列密码是一个随时间变化的加密变换,具有转换速度快、低错误传播的优点,硬件实现电路更简单;其缺点是:低扩散(意味着混乱不够)、插入及修改的不敏感性。

分组密码使用的是一个不随时间变化的固定变换,具有扩散性好、插入敏感等优点;其缺点是:加解密处理速度慢、存在错误传播。

序列密码涉及到大量的理论知识,提出了众多的设计原理,也得到了广泛的分析,但许多研究成果并没有完全公开,这也许是因为序列密码目前主要应用于军事和外交等机密部门的缘故。目前,公开的序列密码算法主要有RC4、SEAL等。

相关文档
最新文档