随着Internet的飞速发展和计算机技术的广泛应用,信息的安全问题日益突出,以数据加密技术为核心的信息安全技术也得到了很大的发展,数据加密技术不仅能对数据进行加解密,而且还能够实现数字签名、认证和鉴别等多种功能,从而保障了在网络上传输数据的机密性、完整性和确认性,本文结合了DES算法和RSA算法的优点,设计了一个数据加密系统,同时利用Java安全软件包实现数字签名。
1 数据加密技术
数据加密技术是以加密算法为核心的,根据密码算法所使用的加密密钥和解密密钥是否相同、能否由加密过程推导出解密过程等因素,可将密码体制分为对称密钥加密体制和非对称密钥加密体制。
1.1对称密钥加密体制
对称密钥加密体制又称单密钥加密体制,在这种加密方法中,信息的加密和解密都使用相同的密钥,或者说从一个密钥可以很容易地推导出另一个密钥,该机制优点是简单,通信双方只需交换彼此密钥,即可实现加解密过程,对称加密体制的算法实现速度极快,软件实现速度达到了每秒数兆或数十兆比特,但是,对称密码算法存在下面的问题:密钥不能秘密地分配;缺乏自动检测密钥泄露的能力;假设网络中每对用户使用不同的密钥,那么密钥总数随着用户数的增加而迅速增多;无法解决消息确认问题。
对称加密算法中最著名的是美国数据加密标准DES、高级加密标准AES和欧洲数据加密标准IDEA。
1.2非对称密钥加密体制
非对称密钥加密体制又称公钥加密体制,该体制的特性是,从公钥推导出私钥几乎不可能,用公钥密钥对明文进行加密,只能用私钥密钥对其进行解密,公开密钥都是在某些数学上的难解的问题上发展而来的,公开密钥加密体制的优点有:加密密钥是公开的,用户之间不需要传递私钥;能够很容易地实现数字签名,保证交易过程的机密性、身份确认性、数据完整性和不可否认性,因此最适合电子商务的应用需要,由于公钥加密系统是基于尖端的数学难题,它的缺点就是计算复杂,实现速度远远赶不上对称加密系统。
根据所基于的数学难题来分类,有整数因子分解系统(代表性的有RSA)、离散对数系统(代表性的有DSA)、椭圆曲线离散对数系统(ECC)。
2 数字签名技术
数字签名技术是以公钥密码技术为基础,主要用来保证信息传输过程中信息的完整性和认证信息发送者的身份,数字签名的算法很多,应用最为广泛的三种是:HaSh签名、DES签名、RSA签名,这三种算法可单独使用,也可综合在一起使用。
数字签名如果用对称算法实现,需要第三方认证,较麻烦;如果采用公钥加密算法实现,可以避免上述的麻烦,采用公钥加密算法实现数字签名和验证过程如下:
1)发送方首先用公开的单向函数对报文进行一次变换,得到数字签名,然后利用私有密钥对数字签名进行加密后附在报文之后一同发出。
2)接收方用发送方的公开密钥对数字签名进行解密交换,得到一个数字签名的明文,发送方的公钥可以由一个可信赖的技术管理机构即认证中心(CA)发布,接收方将得到的明文通过单向函数进行计算,同样得到一个数字签名,再将两个数字签名进行对比,如果相同,则证明签名有效,否则无效。
这种方法使任何拥有发送方公开密钥的人都可以验证数字签名的正确性。
3 数据加密系统的设计与实现
3.1数据加密模块的设计与实现
数据加密系统采用混合加密体制,充分利用了对称密码算法的加密速度快、加密强度高、对大量数据的高效的加解密;利用公钥密码算法加密强度高,密钥便于管理,实现对明文的密钥进行加密,以弥补传统密码算法中的密钥不便于传递的缺点,两者结合,以达到数据传输的安全性。
3.1.1 3DES算法的设计与实现
虽然目前DES的应用范围很广且能方便地从公开渠道获得,但是由于DES的密钥长度只有56位,易于攻击,加密强度已不能满足现代安全需要,故使用两个56位的密钥混合加解密,密钥长度达112位,加密强度大大增加,这就是3DES,3DES算法原理图如图1所示,其中的密钥K1、K2随机产生。
图1 3DES算法原理图
三重DES算法的实现主要包含两个类:DES类和THREE类。
DES类的主要函数:
3.1.2 RSA算法的设计与实现
RSA的安全性依赖于大数分解,公钥和私钥都是两个大素数(大于100个十进制位)的函数,RSA算法的实现主要包括密钥的生成、加密数据、解密数据,下面是RSA算法的实现过程:
1)定义变量:使用Java中的大数BigInteger()来定义p、q、n、e、d、t。
2)生成密钥:使用public b∞lean gener—atePQNTED(String e)来生成密钥。
3)加密过程:使用public String Encrypt(String msg,BigInteger pbkey,BigInteger n)完成,加密中用到了一个转换函数copyBytes(),用它将要加密数据的字节数组进行分组。
4)解密过程:使用之前产生的私钥d和公钥n来对数据进行加密,将要解密的数据、私钥d和公钥n作为参数传递给加密函数:public String Decrypt(String msg,BigIntegERPrikey,BigInteger n)
RSA必须基于大数运算,这样算法的实现就要执行大量的大数加、减、乘、除及模幂、模逆运算,这导致RSA实现效率相比于其他尤其是对称密钥算法(比如:DES)显得十分低下,这种速度上的差异也是本文设计的系统中用RSA来交换生成的DES密钥的原因。
3.2数字签名的设计与实现
实现数字签名,主要包括密钥的生成、签名的产生、签名的核实和密钥的管理的过程,可以使用Java中定义好的类创建RSA的公钥和私钥。
1)密钥的生成:Java的KeyPair&nerator类提供了一些方法来创建密钥对,以便用于非对称加密,密钥对创建好后封装在KeyPair类型的对象中,在KeyPair类中提供了获取公钥和私钥的方法。
2)使用SHA生成数字摘要:从得到的私钥文件prikey.txt中,以此对文件中的信息进行签名,签名将保存在文件nleSSdig.rsa中.Javax.se—curity包中的MessageDigest类提供了产生数字摘要的方法。
3)使用RSA进行数字签名:在进行了上述操作之后,将生成的数字摘要进行RSA签名认证。
4)使用公钥验证数字签名:当接收者接收到发送者发来的密文及其签名meSsdig-rSa后,可以对其进行验证,前提是接收者拥有发送者的公钥,使用iN.txt和pubkey.txt对收到的密文及其签名文件进行验证,确保原文未被修改过,并且确实是发送者发来的。
Javax.security包中的Signature类除了用于签名外,还可用于验证数字签名.Signature对象的initverfy()方法传入公钥,执行其verify()方法,用其参数中的签名信息验证原始数据。
3.3数据加密系统的通信模型设计与实现
本系统采用3DES算法对明文信息加密,通过RSA算法传送该算法的数据加密密钥,并用SHA单向散列函数实现数字签名,达到保密数据安全通信的要求,系统的保密通信模型如图2所示。
图2数据加密系统的通信模型
为了实现网络通信系统中加密文件在网络间的传输,本系统使用了windows Socket编程,在WindowS XP操作系统平台之上,基于TCP/IP协议,使用Java中的Socket编程实现了文件传输,本系统的通信主界面如图3所示。
图3 数据加密系统的主界面
4 结论
本文设计的数据加密系统,综合利用了数据加密技术和数字签名技术,既解决了密钥管理问题,又保证了数据的完整性、不可否认性,同时给出了该系统网络通信的界面设计和程序设计方法,本系统将几种主要加密算法封装成类,增强了代码的简洁性、高效性、可移植性、可扩展性,便于二次开发。
转载请注明出处:拓步ERP资讯网http://www.toberp.com/
本文标题:数据加密系统的设计与实现