孔洁 刘杨
(北京电子科技职业学院,北京 100176)
关于数据加密算法的分析
孔洁刘杨
(北京电子科技职业学院,北京100176)
信息安全涉及数学、密码学、通信等诸多学科,是近些年迅速发展的的一个学科领域,网络安全是信息安全的核心。数据加密技术被广泛应用到信息安全的各个领域,它伴随着信息技术的发展在不断发展。随着互联网的发展,数据加密技术也越来越重要。 数据加密是保障数据安全的一种方式。通过数据加密,可以有效地保证通信线路上的内容不被泄漏,还可以检验传输数据的完整性。目前DES算法得到了广泛的应用。DES是一种用56位密钥来加密64位数据的方法,本文将重点分析和研究DES算法。
数据加密密钥DES算法
密码技术是通信双方按约定的法则进行信息特殊变换的一种保密技术。根据特定的法则,变明文(Plaintext)为密文(Ciphertext)。从明文变成密文的过程称为加密(Encryption); 由密文恢复出原明文的过程,称为解密(Decryption)。
所谓数据加密就是对原来的明文文件或数据按某种算法进行处理,使其成为不可读的一段代码,称为“密文”,使其只能在输入相应的密钥之后才能显示出本来的内容,这样可以保护数据不被窃取。
图1:密钥置换函数PC—1(8×7)
图2: 密钥置换输出的划分
图3: 循环左移示意图
图4:压缩置换PC-2
数据加密技术一般分为两大类:对称加密算法和非对称加密算法。
对称式数据加密就是加密和解密使用同一个密钥。
对称加密算法,交易双方要使用同样的钥匙,安全性得不到保证。用户每次使用对称加密算法时,都要使用唯一钥匙,这会使得收发双方所拥有的钥匙数量很多,密钥管理困难,使用成本增高。
非对称式加密算法需要两个密钥进行加密和机密,这两个密钥分别是公开密钥(public key)和私有密钥(private key)。加密和解密使用不同的加密算法。例如:两个用户要加密交换数据,首先双方交换公钥,一方用对方的公钥加密,另一方用自己的私钥解密。显然,采用不对称加密算法,收发信双方在通信之前,收信方必须将自己早已随机生成的公钥送给发信方,而自己保留私钥。
由于不对称算法拥有两个密钥,因而特别适用于分布式系统中的数据加密。
3.1DES的工作方式
图5:子密钥产生过程
DES(Data Encryption Standard)是IBM公司开发的单密钥对称加密解密算法。该算法利用56+8奇偶检验位(第8,16,24,32,40,48,56,64位)=64位的密钥对以64位为单位的块数据进行加密和解密。
3.2DES算法分析
3.2.1创建16个子密钥
当用户输入的密码长度为0时,使用缺省的64位密码,当用户输入的密码长度大于8字节时,前8个字节为有效的密码。
在加密时首先设定的密钥被转化为64位的二进制,然后按照密钥置换函数PC—1(8×7)进行压缩置换,变成56位,将其置换后的输出分为前28位C0和后28位D0两部分。再将2部分进行16轮的循环左移及压缩置换PC-2(8×6),最后生成16个48位的密钥。
(1)压缩置换到56位。
假设密钥:K(64位)=133457799BBCDFF1
即:K=00010011 00110100 010110111 01111001 10011011 10111100 11011111 11110001
其中:第8、16、24、32、40、48、56、64位是奇偶校验位,不参加运算,实际密钥为65位
对K(64位)用PC—1(8×7)进行置换,去掉8个校验位,如图1所示。
这样,由K(64位),得到:
K’(56位)=1111000 0110011 0010101 0101111 0101010 1011001 1001111 0001111
(2)C0 和D0的分类。经过PC-1置换后,将置换后的输出分为前28位C0和后28位D0两部分,如图2所示。
C0(28位)=1111000 0110011 0010101 0101111
D0(28位)=0101010 1011001 1001111 0001111
(3)再将两部分按照表进行16轮的循环左移,如图3所示。
C1、D1分别为C0和D0左移1位,C3、D3分别为C2、D2左移2位….C16、D16分别为C15、D15左移一位,得到的C1D1-C16D16为:
C1=1110000 1100110 0101010 1011111
D1=1010101 0110011 0011110 0011110
C2=1100001 1001100 1010101 0111111
D2=0101010 1100110 0111100 0111101
…….
(4)压缩置换到48位。每进行一次循环左移,就按表进行压缩置换,得到一个子密钥。置换后的输出数据位数要比置换前的位数要少。原来的8行7列(56位)数据被压缩成8行6列(48位)数据。在置换过程中,第9、18、22、25、35、38、43、54位共8位数据被丢掉,如图4所示。
置换过程如下图5所示:
Kn=PC—2(CnDn(56位))
最终得到16个子密钥,每个48位:
K1=000110 110000 001011 101111 111111 000111 000001 110010
K2=011110 011010 111011 011001 110110 111100 100111 100101
……
K16=110010 110011 110110 001011 000011 100001 011111 110101
3.2.2数据加密
DES算法对固定大小的数据块进行加密和解密操作,不够64位的数据块需要采用填充机制补到6 4位。如果该明文串为M= m1m2…m64,明文串经过长度都为48位的16个子密钥K加密,最后生成长度为64位的密文E。
(1)IP初始置换。
假设有明文M=0123456789ABCDEF,即
M=0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111
对M运用IP置换后为:
IP=1100 1100 0000 0000 1100 1111 1111 1111 0000 1010 1010 1111 0000 1010 1010
该64位串被分为左半部分L0和右半部分R0两部分,各32位,用于f函数的16轮迭代运算的首次迭代的初始输入。
L0=1101 1100 0000 0000 1100 1100 1111 1111
R0=1111 0000 1010 1010 1111 0000 1010 1010
(2)数据加密:通过将原来的32位数据中的某些位重复出现达到扩展的目的。扩展置换通过将32、1、4、5、8、9、12、13、6、17、20、21、24、25、28、29共16位分别放置在两个位置,从而将32位数据扩展成48位。
扩展后的48位与K1进行异或,通过S盒子转换为32位。
将异或运算后得到的48位数据分为8个6位的块,将每块通过对应的S盒产生一个4位的输出。S盒接收6位的输入,经过置换后输出4位的数据。
输出结果再通过一个P盒置换产生一个32位的输出。最后P盒置换的结果与左半部分进行异或运算,再将左右部分交换,再进入下次迭代。
在完成完全相同的16轮运算后,将得到的数据和在一起,将L16与R16的位置交换,再经过一个末置换函数IP-1即可得到64位的密文。
3.2.3数据解密
DES的解密过程和加密过程完全类似,只是将16圈的子密钥K1、k2….k16的顺序颠倒过来,即第一圈用K16,即第二圈用K15,依次类推。
数据安全问题涉及企业及公司的利益,加强数据安全更是迫在眉睫,数据安全不仅仅是数据加密技术和加密算法,还涉及其他方面的技术与知识:如黑客技术、入侵检测技术等。因此一个完善的数据加密安全保护系统,不仅能够根据具体需求对安全技术进行有效的取舍,还能对单位的业务数据进行充分的保护。
[1]William Stallings、白国强.网络安全基础:应用于标准(第5版)[M].清华大学出版社,2014.
[2]阳宪惠.网络化控制系统-现场总线技术(第2版)[M].清华大学出版社,2014.
[3]刘雨棣,雷新颖.计算机控制技术[M].西安交通大学出版社.2013.
[4]陈文革.计算机网络[M].西安交通大学出版社,2013.
[5]斯特凡诺·巴萨尼.移动Ad Hoc网络[M].西安交通大学出版社,2012.
[6]赖英旭,杨震,刘静.网络安全协议[M].清华大学出版社,2012.
[7]张尧学,郭国强,王晓春,赵艳标.计算机网络与Internet教程(第2版)[M].清华大学出版社,2010.
[8]沈鑫剡.计算机网络工程.清华大学出版社[M].2013.
[9]杨云江,高建瓴,黄斌,李可.网络工程应用技术.清华大学出版社[M],2012.
[10]张健.密码学原理及应用技术[M].清华大学出版社,2011.