一种基于DES加密算法的Adnroid平台与服务器通信加密的实现

2015-06-28 16:53孙语泽
关键词:服务器端加密算法解密

孙语泽,迟 嘉,胡 亮

(吉林大学计算机科学与技术学院,吉林长春130012)

一种基于DES加密算法的Adnroid平台与服务器通信加密的实现

孙语泽,迟 嘉,胡 亮

(吉林大学计算机科学与技术学院,吉林长春130012)

通过对DES加密算法进行改进,在Android平台下设置DES加密算法相应的工作模式、填充模式以及初始化向量,并在服务器端进行同样的设置,保证加密结果和解密结果的一致性.实现了Android客户端与服务器端通信信息的加密,在很大程度上保证了信息的安全性和可靠性,这为Android系统下的数据信息加密提供一个可行的方案.

DES加密算法;通信加密;随机密钥

在信息量猛增的今天,智能手机在日常生活中扮演着十分重要的角色,Android操作系统作为智能手机主流的操作系统(市场占有率约为78.9%)凭借全新的用户体验被越来越多的用户接受,因此Android系统下的手机客户端如雨后春笋般出现在用户的智能手机中.在这样一个背景下,无论是用户的个人信息还是用户与他人进行交流的信息都呈爆炸式增长,一旦通信的信息遭到窃取和泄露,对于用户和企业都是无法容忍的,如何确保用户的通信安全成为十分严峻的问题[1].

本文通过对传统DES加密算法[2]进行改进,在通信双方约定一个初始化向量,这样加/解密的过程不再单纯地依赖密钥,并保证了客户端与服务器对数据加密结果的一致性.通过随机算法在每次通信过程中都生成一个全新的密钥,进一步加强安全[3].经实验证明,改进后的加密方案在安全性上较传统算法有很大的进步.

1 预备知识

信息加密是以密码学为基础的.密码学是研究如何把信息转换成一种隐蔽的方式并阻止其他人得到[4].现代密码学中,假设密钥用K表示,K可以是很多数值里的任意值,密钥K的可能值的范围叫做密钥空间.加密和解密运算都使用这个密钥(即运算都依赖于密钥,并用K作为下标表示),这样,加/解密函数变成:

上述函数具有这样的特性方程

有些算法使用不同的加密密钥和解密密钥(见图1),也就是说加密密钥K1与相应的解密密钥K2不同,在这种情况下有:

图1 使用2个密钥的加/解密框图

密码系统由算法、所有可能的明文、密文和密钥组成.根据密钥类型不同将现代密码技术分为两类:一类是对称加密(私钥加密)系统;另一类是非对称加密(公开密钥加密)系统.

传统的DES加密算法是一种对称加密算法.在大多数对称加密算法中,加密和解密密钥是相同的[5],这些算法也叫秘密密钥算法或单密钥算法.在实际应用中要求发送者和接收者在通信之前,约定一个密钥.对称加密算法的安全性主要依赖于密钥,泄漏密钥就意味着任何人都能对消息进行加密和解密,通信的保密是建立在密钥保密的基础上.

2 加密方案的设计与实现

2.1 DES算法简介

DES采用56位密钥处理64位明文数据,它的算法是公开的,算法的保密性取决于对密钥的保密,是一种对称的分组密码.在加密前,先对整个明文数据进行分组[6],然后对分组后的数据分别进行加密处理,产生相对应的密文数据,最后将各组密文数据串接起来,得出整个密文,加密过程完成.解密过程是加密过程的逆过程,即密钥的使用次序相反.

密钥的长度为56位(密钥通常表示为64位的数,但每个第8位都用做奇偶检验,可以忽略).密钥可以是任意的56位数,且可以在任意时间改变.

DES算法的输入参数主要有Key,Data,Mode.其中:Key表示8个字节共64位的工作密钥;Data表示8个字节64位的要被加密或解密的数据;Mode表示DES的基本工作方式,有加密或解密2种.

DES的工作过程描述:若Mode为加密模式,则用Key对数据Data进行加密,生成Data的密文形式(64位)作为DES的输出结果;若Mode为解密模式,则用Key对密文形式的数据Data解密,还原为Data的明文形式(64位)作为DES的输出结果[7].

简单地说,加密算法只不过是一种基本技术(见图2),DES基本组建分组是这些技术的一种组合,它基于密钥作用于明文,这是众所周知的轮(Round)[8].DES有16轮,这意味着要在明文分组上有16次实施相同的组合技术.

图2 DES加密算法的一般过程

2.2 对DES加密算法的改进实现

本文对传统的DES加密方法进行改进,引入一个初始化向量,使得整个加密和解密过程不仅仅依赖密钥,还需要初始化向量的共同参与.该初始化向量是一个长度为8的字节数组,Android客户端和服务器端可以任意选取,但前提是保证二者的一致性,这样可以确保Android客户端和服务器加密和解密结果是相同的,同时消除不同服务器环境对数据加密的影响[9](服务器端可能会采用jsp,php和net等其中的一种进行编写).该初始化向量会有2的64次方种组合,即使加密系统的密钥被他人窃取,窃取者也要进行很多次尝试才能够破解整个加密系统.本文的加密方案采用了产生随机密钥的设计方法,窃取者在持有初始化向量的情况下,密钥也是不断改变的,仍然无法破解整个加密过程,上述的诸多环节为整个加密系统添加了更多安全屏障.

由于本文的加密方案是以DES加密算法为基础的,从本质上来讲,是一种对称加密方案,加密和解密的过程是互逆的,在操作过程上十分的相似.仅以Android客户端来描述本文加密方案的实现.

本文加密方案的精髓主要包括:

(1)构造一个用于加密的实例对象cipher,需要为该对象传入3个参数,分别是所采用的加密算法、工作模式、填充模式;

(2)初始化实例化对象cipher,即为cipher设置工作模式、密钥和初始化向量.

2.3 构造加密的实例化对象并设置参数

在具体实现中,Android软件开发工具包(Android SDK)中有一个类Cipher,它构造一个用于加密的实例化对象cipher,具体操作为

括号中的3个参数就是需要传入的,分别对应所采用的加密算法、工作模式、填充模式.本文的加密方案是以DES为基础的,所以第一个参数设置为DES,工作模式设置为CBC(加密分组链接模式),填充模式设置为PKCS5Padding,明确定义分组块的大小是8位[10].

得到对象cipher后,只有对其进行初始化该对象才能完成加密工作,操作为

括号中的3个参数是初始化时需要传入的,分别对应于工作模式、密钥、初始化向量,在客户端需要对数据进行加密,所以第1参数设置为ENCRYPT_MODE(加密模式),第2个参数key是随机产生的密钥,第3个参数iv是商定好的初始化向量.

完成上述两步操作后,对象cipher就可以对数据进行加密和解密了,借助Base64进行编码和解码,就可以得到加密后的密文和解密后的明文.

2.4 随机产生密钥

本文的加密方案中,不采用传统的固定密钥的方式,而是每次数据传输都将产生一个全新的密钥,Android客户端负责随机产生这个密钥,并作为加密数据的一部分发送给服务端,服务端根据这个密钥进行数据的解密.本文中的密钥采用一个8字节长度的字节数组,初始时,密钥是一个空字符串,每次随机产生一个字符加入到密钥中,反复迭代8次,最终得到一个8长度的字符串,该字符串将作为密钥发送到服务端.通过这种随机产生密钥的方式,以牺牲计算机一小部分计算资源为代价,换取了传统DES加密算法安全性的提升,使信息在传递的过程中不容易被篡改和窃取,在很大程度上保护了用户信息的安全性[11].

3 结果和评价

3.1 客户端数据的加密

为验证本文加密方案的正确性,首先在Android客户端对测试数据进行加密,约定一个8字节长度的字节数组作为初始化向量,实验中设为{1,2,3,4,5,6,7,8},随机产生一个8长度的字符串作为密钥,并设置工作模式为加密模式.完成上述操作后,进行加密操作,加密结果返回一个字节数据,通过Base64[12]对字节数据进行编码,得到测试数据最终的密文.实验结果如图3所示.

图3 Android客户端加密执行结果

在待加密数据字段中填入“http://www.baidu.com”作为测试数据,点击“执行”按钮,得到随机产生的密钥和加密结果.

上述实验是在Android模拟器中进行的,并利用图形界面化将实验结果展示出来,实验环境与真正的Android智能手机完全一致,所以加密的结果是十分可靠的.

3.2 服务器端数据的解密

有了上述客户端对测试数据的加密过程,只要服务器端通过一系列操作最终得到的解密结果与测试数据的明文一致就可以证明本文提出的加密方案的正确性.

实验中,服务器端采用Java语言进行编写,由于初始化向量是服务器端与Android客户端约定好的,所以在服务器端初始化向量的设置与客户端相同,服务器端的密钥是客户端随机生成的,并跟随测试数据一起发送给服务器,服务器端通过截取字符串就可以进行密钥的设置.完成上述操作后,就可以对加密的密文进行解密了,实验结果如图4所示.

图4 服务器端解密执行结果

在正确设置了服务器端的各项参数后,从服务器端执行结果可以看出,解密结果与测试数据的明文完全一致,都是“http://www.baidu.com”.这证明了改进后的加密方法是正确的.

3.3 实验结果评价

通过上述实验,改进后的加密方案可以保证加密和解密的结果的正确性,初始化向量的引入不仅提高了安全性,并且保证了该方案在多种服务器语言和环境中可以部署和执行,使得该方案具有良好的通用性,不局限于某种特定的语言和环境.

本文中提出的加密方案是基于传统的DES加密算法进行改进的,充分地分析了传统DES加密算法的缺点,单纯地依赖密钥的保密性来保证信息的安全性.针对该缺点,引入了初始化向量和密钥随机产生的方案,初始化向量的引入使得改进后的加密方案在加密和解密的过程中不再完全依赖密钥,而是需要初始化向量的共同参与,也就是说加/解密的结果是密钥和初始化向量共同作用的结果.传统方法的另外一个缺点就是密钥的固定性,针对这一缺点,每次通信,客户端随机产生密钥,打破了固定性,进一步保证了加/解密过程的安全性.

在信息安全日益重要的今天,本文提出的加密方案为Android客户端与服务器进行信息交互时加密操作提供了一个可靠的解决方案,克服了传统算法的缺点,具有更好的使用性.

[1] 蒋绍林,王金双,张涛,等.Android安全研究综述[J].计算机应用与软件,2012,29(10):205-210.

[2] 胡美燕,刘然慧.DES算法安全性的分析与研究[J].内蒙古大学学报:自然科学版,2005,36(6):95-99.

[3] 贺红,马绍汉.随机算法的一般性原理[J].计算机科学,2002,29(1):90-92.

[4] 冯登国.国内外密码学研究现状及发展趋势[J].通信学报,2002,23(5):18-26.

[5] 刘浪,周新卫.基于DES对称加密体制的探讨[J].科技广场,2012,10:10-13.

[6] 普运伟,耿植林,楼静.从DES算法论分组密码的设计原则[J].微机发展,2005,15(9):56-59.

[7] 李尚恩.动态模拟方式详解DES轮密钥生成[J].智能计算机与应用,2013,3(6):91-94.

[8] 管莹,敬茂华.DES算法原理及实现[J].电脑编程技巧与维护,2009(4):5-7.

[9] 侯淑英,韩玲.服务器端编程技术比较分析[J].渤海大学学报:自然科学版,2007,28(2):185-186.

[10] 姜春风.基于Android行为的加密应用系统研究[J].煤炭技术,2010,29(9):159-160.

[11] 徐洪波,李颖华.DES加密算法在保护文件传输中数据安全的应用[J].信息网络安全,2009(6):24-26.

[12] 康武生,田立红,曹伟.Base64编码的实现与应用研究[J].长春大学学报,2006,16(2):69-72.

Based on the DES encryption algorithm to encrypt communications between the server and the Android client

SUN Yu-ze,CHI Jia,HU Liang
(College of Computer Science and Technology,Jilin University,Changchun 130012,China)

In this paper,based on the DES encryption algorithm to improve,set the appropriate mode,fill patterns,and initialization vector DES encryption algorithm in the Android platform,and the same on the server side settings to ensure the encryption and decryption of the results of the consistency of the results,achieved Android client and server-side encryption communication information to a large extent to ensure the safety and reliability of the information,which provides a viable solution for data encryption system under the Android.

DES encryption algorithm;communication encryption;random secret key

TP 309 [学科代码] 520·1060

A

(责任编辑:石绍庆)

1000-1832(2015)03-0078-05

10.16163/j.cnki.22-1123/n.2015.03.017

2014-08-20

国家自然科学基金资助项目(61103197;61073009);国家高技术研究发展计划项目(2011AA010101).

孙语泽(1987—),男,硕士研究生;通讯作者:胡亮(1968—),男,教授,博士研究生导师,主要从事分布式系统和计算机网络研究.

猜你喜欢
服务器端加密算法解密
炫词解密
解密“一包三改”
Linux环境下基于Socket的数据传输软件设计
炫词解密
混沌参数调制下RSA数据加密算法研究
基于Qt的安全即时通讯软件服务器端设计
基于Qt的网络聊天软件服务器端设计
HES:一种更小公钥的同态加密算法
基于小波变换和混沌映射的图像加密算法
基于C/S架构的嵌入式监控组态外设扩展机制研究与应用