动态模拟方式详解DES轮密钥生成
2013-04-29李尚恩
李尚恩
摘要:DES对称加密算法过程繁锁复杂,其中的16轮密钥生成过程也是一个复杂的过程,大量的选择操作、循环移位操作,令众多学者望而却步,从而对该加密算法只是一知半解。现从笔者自己编写的一个轮密钥生成模拟程序入手,用动态演示的方法全面而又详细地剖析了轮密钥的生成过程及原理,为大家透彻理解轮密钥生成提供帮助,从而为深入学习DES加密算法和应用DES加密算法打下基础。
关键词:DES; 加密算法; 轮密钥; 轮密钥生成; 动态模拟
中图分类号:TP31156 文献标识码:E文章编号:2095-2163(2013)06-0091-04
0引言
DES对称加密算法过程繁琐复杂,其中的16轮密钥生成也同样是一个繁杂的过程,涉及了大量的选择和循环移位操作,这令众多学者一直未能得见该加密算法的实质和精髓。本文从笔者自己编写的一个轮密钥生成模拟程序入手,用动态演示的方法全面、详细地剖析了轮密钥的原理及生成过程,旨在为诸多学者透彻理解轮密钥生成提供切实、有效的帮助。一直以来,密码学以研究秘密通信为目的,通过对需传输的信息进行加密,力求防止第三方非法窃取信息[1]。在当今计算机得到广泛应用的数字信息时代,大量信息以数据的形式存放在计算机里,而信息的传输则需通过公共信道,但这些计算机和公共信道均未设防,很不安全,极易受到攻击和破坏,因而如何保护信息的安全,是每位研究学者面临的一大挑战。众所周知,密码是一种有效且可行的保护信息安全的重要办法,但在计算机犯罪日益增长,计算机黑客日益猖獗的环境下,一种高强度的加密算法已显得尤为重要。
1DES加密算法简介
DES算法为密码体制中的对称密码体制,又被称为美国数据加密标准,是1972年美国IBM公司研制的对称密码体制加密算法。该加密算法的明文按64位进行分组,密钥长64位。事实上,密钥是56位参与DES运算(第8、16、24、32、40、48、56、64位是校验位,使得每个密钥都有奇数个1),分组后的明文组和56位密钥按位替代和交换的方法形成密文组的加密方法[2]。具体来说,该加密算法是一个迭代的分组密码,使用称为Feistel的技术[2],其中将需加密的64位文本块分成两半,使用轮密钥(也称子密钥)对其中的一半应用循环移位功能,再将移位后的输出与文本块的另一半进行异或运算;接着交换这两半,重复这一循环移位和异或过程,即进行16次循环移位和异或,但最后一个循环则不交换这两半文本块,最后即可得到加密后的64位文本块[3]。DES使用了16个循环,同时也调用了异或、置换、代换、移位操作四种基本运算[4,5],从而将64位的明文输入块变成64位的密文输出块。算法整体流程如图1所示。
2轮密钥
密钥是一种参数,是在明文转换为密文或将密文转换为明文的算法中输入的数据。从DES算法流程可以看出,整个DES加密过程需要16个轮密钥(K1,K2,K3,……,K16)参与运算,才能完整地将明文输入块变换为密文输出块。那么这16个轮密钥从何而来?在DES迭代加密过程中,使用的16个轮密钥(48位)均来自于一个64位的种子密钥。该种子密钥共有64位,其中每个字节的第8位(第8、16、24、32、40、48、56、64位是校验位,使得每个密钥都有奇数个1)作为奇偶校验[6]。其具体过程描述如下:64位种子密钥首先根据选择置换表PC-1(见表1)进行置换(就是将数码中的某一位的值根据置换表的规定,用另一位代替),从而去除其中的奇偶校验位,得到56位的选择矩阵;然后在DES的16轮密钥变换生成过程中,每一轮都将一个56位的密钥分成左右各28位的两部分,再根据轮数循环左移表(见表2)分别左移后,合并左右两部分,得到56位密钥,其后则由密钥压缩置换表PC-2(表3)将56位密钥压缩成48比特密钥。完整的生成算法过程如图2所示。
3.9依此类推,依次得到剩下的轮密钥
依此类推,依次得到剩下的轮密钥K4,K5,K6,K7,K8,K9,K10,K11,K12,K13,K14,K15,K16。下面用表格形式展示本次轮密钥生成过程得到的16个轮密钥,如表4所示。表格第一列是轮密钥的名称,表格第二列是二进制的轮密钥,表格第三列是与第二列对应的16进制的轮密钥。
4结束语
总而言之,轮密钥生成过程是一个复杂的移位和选择过程,很多学者都难以读懂,对其只是一知半解。本文通过一种崭新的逐步动态演示的方式阐述了整个流程,借助图表展示了整个算法的步骤,远比文字、数字式表达具有更高的可接受度,整个过程紧凑,且清晰,而且将传统文字,数字表达方式转换成图表的表现方式,有助于研究人员透彻地认识该算法的原理及过程,从而为深入学习DES加密算法和应用DES加密算法打下基础。
参考文献:
[1](美)斯坦普著. 信息安全原理与实践(第2版) [M]. 张戈,译.北京:清华大学出版社,2013-05.
[2]陈鲁生,沈世镒. 现代密码学(第二版) [M].北京:科学出版社, 2008-08.
[3]林新平.浅析DES数据加密算法[J]. 福建电脑, 2008(1).
[4]靳冰,赖宏慧,贾玉珍. DES加密算法的安全分析[J].华南金融电脑, 2007(2):71-73.
[5]孙瑜.基于FPGA的数据加解密系统设计[D]. 大连:大连海事大学, 2010.
[6]马银华,刘明生,王书海,等.提高DES加密强度的密钥选位方法研究[J].计算机工程, 2000(3):68-69.