分组密码
分组密码(Block cipher,又称分块密码),是一种对称密钥密码。它的特点是将明文分成多个等长的组,并用相同的密码算法和密钥对每组分别进行加密和解密。其中典型的如DES和AES作为美国政府核定的标准加密算法,应用领域从电子邮件加密到银行交易转帐,非常广泛。
目录 |
简述 [编辑]
一个分块密码包含一对密码算法:用来加密的E和用来解密的E-1。每个算法分别有两个输入:一个n位的组和一个k位的密钥。将两个算法看作函数,K是密钥,M是明文,C是密文,则两个函数互为反函数,满足:
对于任意一个密钥K来说,EK是输入的组的一个置换函数,每一个密钥实际上是选择了n位输入排列的
种组合中的一种[1]。
大多数的分组密码在在加密算法中会重复使用某一函数进行多轮运算,典型的轮数在4-32次之间,每一轮的函数R使用不同的子密钥Ki,由原密钥生成,作为输入:
其中
是最初的明文,
是第i轮加密后的密文。
历史 [编辑]
Lucifer一般被认为是第一个现代分组密码,由IBM在1970年代基于霍斯特·費斯妥(Horst Feistel)的工作完成。它的一个修改版本是数据加密标准,被美国政府纳入联邦资料处理标准,并于1976年正式发布,至今仍被广泛应用。
当时设计DES密码的最初目的是为了抵抗某些美国国家安全局(NSA)和IBM知道的密码分析方法,直到1980年代末期,这种被称为差分分析的方法才被毕汉姆(Eli Biham)和萨莫尔(Adi Shamir)独立重新发现[2]。线性分析是另一种方法,NSA在松井充发布这种实验性的密码分析方法[3]之前还并不知道。DES作为早期的分组密码,最早成为密码标准,引领了很多密码学和密码分析的研究。另一种分组密码标准高级加密标准(AES)被美国国家标准与技术研究院(NIST)采纳,即将逐渐取代DES目前的位置。
优缺点 [编辑]
设计原则 [编辑]
扩散(diffusion)和扰乱(confusion)是影响密码安全的主要因素[4]。扩散的目的是让明文中的单个数字影响密文中的多个数字,从而使明文的统计特征在密文中消失,相当于明文的统计结构被扩散[5]。例如,最简单的方法让明文中的一个数字影响密文中的k个数字,可以用:
扰乱是指让密钥与密文的统计信息之间的关系变得复杂,从而增加通过统计方法进行攻击的难度。扰乱可以通过各种代换算法实现。
设计安全的分组加密算法,需要考虑对现有密码分析方法的抵抗,如差分分析、线性分析等,还需要考虑密码安全强度的稳定性。此外,用软件实现的分组加密要保证每个组的长度适合软件编程(如8、16、32……),尽量避免位置换操作,以及使用加法、乘法、移位等处理器提供的标准指令;从硬件实现的角度,加密和解密要在同一个器件上都可以实现,即加密解密硬件实现的相似性[6]。
参见 [编辑]
参考资料 [编辑]
- ^ Matt Bishop. Introduction to Computer Security First Edition. Addison-Wesley Professional. 2004. ISBN 0321247442 (英文).
- ^ Eli Biham and Adi Shamir. Differential cryptanalysis of DES-like cryptosystems. Journal of Cryptology. 1991, 4 (1). doi:10.1007/BF00630563 (英文).
- ^ Mitsuru Matsui. The First Experimental Cryptanalysis of the Data Encryption Standard, CRYPTO. 1994. doi:10.1007/3-540-48658-5_1.
- ^ C.E. Shannon. Communication theory of secrecy systems.. Bell System Technology Journal. 1949, 28: 656-715 (英文).
- ^ 黄皓. 分组加密的原理. 《计算机系统信息安全》课程讲义. 南京大学. 2010年9月28日 [2011-07-29] (中文).
- ^ 冯登国,吴文玲,张文涛. 《分组密码的设计与分析》 第二版. 清华大学出版社. 2009年. ISBN 9787302204602 (中文).
|
|
||||||||


