APP下载

改进的传输层非对称加密方案设计

2013-03-27龚茜茹

河北能源职业技术学院学报 2013年1期
关键词:加解密传输层私钥

龚茜茹,徐 珂

(河南工业职业技术学院,河南南阳 473009)

合作方协同设计的PDM项目,采用Web Services模式下分布式数据系统,数据是分布于互联网上的。由于合作方协同设计所传输信息的敏感性,必须研究合适的传输层加密方法,以保证即使第三方截获了加密的数据,也将难以解密该数据。

加密用于达到以下目的:第一,确保保密性,防止用户的标识或数据被读取;第二,确保数据完整性,防止数据被更改;第三,进行身份验证,确保数据发自特定的一方。

1.方案选择

传输层安全设计的主要困难,是要仔细平衡安全性、可用性以及效率这三个几乎对立的非功能性需求。目前在传输层安全方面有以下三种设计方案:

1.1 对称加密方案

对称加密也称之为单密钥加密,采用这种加密方法的双方使用方式用同样的密钥进行加密和解密。其特点是使用同一密钥既用于加密又用于解密。由于具有密钥的任意一方都可以使用该密钥解密数据,因此必须保护密钥不被未经授权的代理得到。对称加密算法比较快,特别适用于对较大的数据流执行加密转换。

私钥加密的缺点是它假定双方已就密钥达成协议,但是一旦传输信息被解密,攻击者就可以把所获得的知识延伸到其他信息中去。

1.2 不对称加密方案

不对称加密也称之为公钥加密。不对称加密使用一个对未经授权的用户保密的私钥和一个公开的公钥。公钥和私钥都在数学上相关联;用公钥加密的数据只能用私钥解密,而用私钥签名的数据只能用公钥验证。公钥可以被任何人使用;该密钥用于加密要发送到私钥持有者的数据。两个密钥对于通信会话都是唯一的。公钥加密算法之所以称为不对称算法,原因是需要用一个密钥加密数据而需要用另一个密钥来解密数据。

在传输公钥期间,未经授权的代理可能截获该密钥。而且,同一代理也可能截获来自乙方的加密消息。但是,该代理无法用公钥解密该消息。因为该消息只能用甲方的私钥来解密,而该私钥并没有被传输。

不对称加密保密性比较好,但是传输效率比较低,系统结构也比较复杂。

1.3 Web领域的SSL(安全套接字层)

这是一种通用方法,但是在传输体积庞大的文件时,SSL对效率影响太大,可使用性也不是很好。另一方面,如果采用通用的数据加密方式,尽管设计上可能比较简单,但加密思想容易被人理解而失去秘密。

由于上述各种方案均不能满足传输效率和保密性兼顾的要求,综合考虑之后,设计了一种改进的非对称加密方案,使传输效率能达到要求,又有一定的保密性。

2.传输层加密方案设计

2.1 加解密原理

通过研究,发现传统的不对称加密方法产生效率问题的主要原因在于一次请求中需要多次往返,但是,由于一次请求实际上是一个完整的过程,有些密钥数据是可以重用的,所以,本系统设计的目标是在保证一定安全性的条件下,减少往返次数,提高传输效率。

在正式文件传输时,利用RC2加密算法作为公钥,这种算法的特点是加解密速度快,而且形成的加密文件体积并不会增大。在加密的过程中,如果传输的是比较大的图纸类文件,要先进行压缩。如果是数据库的表文件,则转换成XML文件,然后再进行加密。

定义私钥为一个自定义算法,这个算法可以根据需要重新编写,因此具有很强的私密性,而这个算法具体的计算参数,可以在运行中随机产生的,使得私钥可变。

在每个约定的使用方,必须存在一个证书,以确保这个请求方是约定的对象。各方面的证书要保证一致,以保证所有参与数据传输的各方,都是事先约定的成员。这个证书实际上是一个RSA加密算法的密钥,它是以XML文件形式表现的。同时还利用该证书对登录密码和公钥传输进行加密。RSA算法的特点是算法复杂而且加解密速度比较慢,但适合对密码(或者密钥)这些比较小的内容进行加解密处理。

为了避免证书泄露,需要定期由服务方自动生成新的证书,然后通过系统特定的功能,自动安装到各个约定对象的服务器中,这就保证了系统的安全性与可用性达到要求。

2.2 传输层加密系统体系结构

传输层加密的体系结构如图1所示,在该结构中,通过将一些通用的处理业务封装成独立的业务组件,来提高系统的可理解与可维护性。

图1 传输层加解密体系结构

2.3 传输层加密流程分析

1)启动服务时生成公钥(甲)

首先在服务端启动服务的时候需要建立这一阶段服务的公钥(甲)。

2)客户登录获取公钥(甲)

客户第一次申请需要登录,此时客户用RSA加密的密码进行登录,登录成功以后,服务方就把已经加密的公钥(甲)传递给客户方,由客户程序暂时保留,此后客户对公钥(乙)的加密将利用所保留的公钥(甲),直到客户退出,如图2所示。

图2 登录时即时公钥的传输

3)不对称加密业务流程

利用上面的组件,可以建立任何需要加密的一个请求/响应往返所需要的工作流程,本项目请求/响应整体业务流程如下:第一,当客户发出某个服务请求的时候,客户自动生成一对随机密钥,包括RC2公钥(Key,IV),以及连接私钥(M123自定义加密算法)的三个参数(m1,m2,m3)。这个动态RC2密钥用来加密请求内容,再由保留在客户方的公钥(甲)来加密公钥(乙),并打包一起发送给服务方;第二,服务方收到后,通过本地的公钥(甲)来解密相应的公钥(乙),再用这个已经解开的密钥来解密请求内容;第三,服务方用普通方式来处理请求;第四,返回的数据,也用同一个公钥(乙)中的RC2密钥加密返回,此时的数据中并不包括密钥本身;第五,客户方收到返回数据之后,用还保存在客户方的RC2密钥(乙)解密,完成这一次操作以后,这一次往返所使用的公钥(乙)都被删除掉。整个业务流程如图3所示。

图3 加密的请求和返回

3.算法结构

本项目不对称算法RSA和对称算法RC2均采用了通用的算法包。RC2是一种通用的私钥算法,但本方案中经过变形将其作为公钥存在,也是加解密传输内容的最主要算法。这种算法加解密速度快,加密后的文件大小不会膨胀。由于系统要求大部分数据转换成XML格式(由于XML Schema标准的推行,即使二进制数据也可以用XML表达),该方法组要求传入的数据是字符串,加密后的数据为字节数组。反之,解密的传入值为字节数组,而解密后的返回值为字符串。加解密的密钥分别是16字节的Key和8字节的IV,这两个数据是由系统随机自动地产生的,将作为公钥经过加密后传输。

自定义的私钥算法M123主要作用是与公钥的关联以及区分。依靠三个数字(m1,m2,m3),所以把这个算法称作M123。这三个数字决定了加密的结果(所以它们也是一种密钥),而且这三个数字是系统随机自动的产生,这就确保了私钥的随机性。

从算法的角度,使用了算术加逻辑的方法:

为了避免相同字符得到同一个变形码,使攻击者找到规律,需要把字符串的上一个字符的内码经过某种计算,作为下一个字符加密的m1码存在,也就是:

这样就实现了某种形式的链型加密,增加了破译的难度。

这个加解密算法的作用,是作为一种辅助,来对相互传输的公钥做二次加密,并不直接处理传输内容,速度上影响很小。而且这种二次加密就使公钥和私钥之间具有了关联,符合不对称加密的定义。

目前的算法流程如图4所示,在运行中根据情况可以重新定义算法。

图4 自定义M123算法流程

4.应用结果分析

采用该传输层加解密机制有以下优点:

(1)性能好:RSA加密算法虽然保密性好,但速度慢且计算量大,而RC2算法的速度快得多。为了兼顾性能,这个设计只是客户登录的时候对密码使用RSA加密算法,而对以后传递的数据都使用RC2算法,极大地提升了传输效率。整体速度上不受影响,经测试能达到客户要求。

(2)安全性好:客户的每次请求将产生不同的RC2密钥(乙),所以一次请求被破译,不至于外推到下一次,提高了传输的安全性。对于客户随机产生的密钥传输,除使用RC2加密算法外,内层还使用了一个自定义算法(M123),形成多层加密,大大提升了敏感的密钥数据解密难度。

(3)公钥随机产生:攻击者即使盗取了存储在服务器(或客户端)上的证书,也无法解开传输中的请求和结果。因为实际使用的公钥是在服务器上随机的产生的,其产生频度为每次服务应用程序被客户启动。

(4)证书可更换:通过定期更换存储的证书,还可以进一步提升系统的安全性。

(5)加密流程是自定义:整个加密流程是自定义的,如果不了解具体项目传输层加密的思想,即使截获了数据,也很难利用通常的思维进行解密,加大了解密的难度。

当然,如果理解了这个系统的加解密原理,破解这个系统并不是完全不可能。问题在于安全性与系统其它的非功能需求,比如效率、易使用性等的矛盾的,需要平衡各方面因素,寻求一个平衡的解决方案,既不能过分强调安全,使系统最终无法使用;更不能不考虑安全问题,使系统失去使用价值。

[1]Biham E and Shamir A.Differential Cryptanalysis of DES -like Cryptosystems[J].Journal of Cryptology,1991,4(1):3-72.

[2]刘传领,范建华.RSA非对称加密算法在数字签名中的应用研究[J].通信技术,2009,42(3):192 -196.

[3]Robert J.Boncella.Web Services and Web Services Security[J].Communications of the Association for Information Systems,2004,(6):344 -363.

[4]Boehm B,Turner R.Balancing Agility and Discipline - A Guide for the Perplexed[R].USC -CSE Annual Research Review,Los Angeles,2004,(3):1556 -1668.

猜你喜欢

加解密传输层私钥
清扫机器人避障系统区块链私钥分片存储方法
比特币的安全性到底有多高
基于改进ECC 算法的网络信息私钥变换优化方法
基于Python语言的网络传输层UDP协议攻击性行为研究
ZnO电子传输层在有机无机杂化钙钛矿太阳能电池中的应用
物联网无线通信传输层动态通道保障机制
一种基于虚拟私钥的OpenSSL与CSP交互方案
基于物联网GIS的消防智能巡检系统设计与实现
PDF中隐私数据的保护方法
电子取证中常见数据加解密理论与方法研究