一种面向移动代理的安全传输方法

文档序号:7614992阅读:253来源:国知局
专利名称:一种面向移动代理的安全传输方法
技术领域
本发明是一种分布式计算的安全解决方案。主要用于解决移动代理的安全问题,属于分布式计算软件安全技术领域。
背景技术
移动代理技术是随着Internet(因特网)的发展而出现的一种新兴技术,它较好的适应了Internet的特点,有效简化分布式系统的设计、实现和维护。一般来讲,移动代理是指一段独立的计算机程序,它按照一定的规程,能够自主的在异构的网络上移动,代表用户完成特定的任务。移动代理的优势主要有两点一方面,它实现了计算向所需资源的靠拢,这可以节省网络的带宽并具有异步功能;另一方面,允许程序动态发布到主机。
由于移动代理的诸多优点,它在电子商务、移动计算、Internet信息的智能发现等方面都有较好的应用前景,对移动代理技术的研究正成为学术界和工业界的热点之一。移动代理的关键技术包括移动机制、通讯机制以及安全机制。安全性是制约移动代理技术广泛使用的重要因素之一,因此研究移动代理的安全问题具有重要意义。
移动代理的安全问题主要包括三个方面(1)保护移动代理传输(2)执行环境的保护(3)移动代理的保护。其中移动代理的安全传输保障是移动代理安全问题中的重中之重。针对该问题提出了签名加密等。存在着效率低下、安全保障性差等缺陷。例如直接使用RSA这种非对称加密算法来加密数据有一些问题①非对称加密的效率比对称加密算法要低很多,很多情况下对称加密要比非对称加密快1000倍以上;②直接使用RSA非对称加密方法来加密数据很容易受到特定方式的攻击(如选择密文攻击);③典型的非对称加密一般只加密明文数据中的一个分组。通常这个分组大小与密钥相同,如1024位RSA(RSA作为第一个公钥加密算法在很多密码协议中得到了应用,例如SSL和S/MIME。它是一个非对称的加密算法,使用了公钥和私钥来进行加密和解密和数字签名。)最多能加密117字节的数据(有一些空间用来装载填充数据)。而如果直接采用对称加密算法来加密数据,那么密钥分配和管理就非常困难。因为加密和解密使用相同的秘密密钥,它需要在加密方和解密方之间共享,安全性就不能得到很好的保证。

发明内容
技术问题本发明的目的是提供一种面向移动代理安全传输方法,来解决保护移动代理安全传输的问题。通过使用本发明提出的方法可以在Java(一种纯面向对象编程语言)开发系统中构建面向移动代理的安全传输信道从而达到保护移动代理传输的目标。
技术方案本发明的方法是一种改进性的方法,数据安全传输信道系统主要的任务是为系统自身的内部数据传输提供一个安全、透明的数据传输通道,它与上层的数据处理模块相对独立,使得它可以与上层分别并行开发,并为将来的系统升级提供便利。
一、体系结构移动代理的跨平台运行的需求使得Java语言已经成为了移动代理开发的主流环境。Java开发环境中提供了keytool(Java提供的密钥管理工具)来创建和管理公/私钥对和自签名的证书,而且这些密钥和证书都包含在密钥库内,密钥库可用keytool管理。keytool允许用户指定在Java的运行环境中注册的由加密服务提供器提供的密钥对的生成算法和签名算法。在产生密钥和自签名证书时可以使用参数指明使用的算法,在这里可以指定使用RSA算法,所以产生的密钥是RSA密钥对。RSA是被研究得最广泛的公钥算法,从提出到现在已近二十年,经历了各种攻击的考验,逐渐为人们接受,普遍认为是目前最优秀的公钥方案之一。RSA算法是第一个能同时用于加密和数字签名的算法,也易于理解和操作。RSA的安全性依赖于大数的因子分解。
共钥基础设施(PKI,Public Key Infrastructure)是管理公钥密码的一个基本系统。它是认证机构(CA)、注册机构(RA)、策略管理、密钥(Key)与证书管理、密钥备份与恢复、撤消系统等功能模块的有机结合。证书管理如图1。
二、方法流程在系统中使用PKI使每个节点都拥有自己的证书以及对应的一组RSA密钥对,我们就可以在每个节点使用RSA算法加密、解密。通过RSA算法加密过的数据,只有使用对应的RSA私钥才能够解密出来。
基于以上分析,我们在实际设计时采用了混合加密的方案,即不直接使用RSA来加密数据,而是先创建一个128比特的对称加密算法(比如Blowfish算法)的会话密钥,并且用它来通过对称加密来加密数据,然后再使用RSA公钥来加密这个会话密钥。加密流程为(如图2)1.产生一个对称加密(Blowfish)的密钥Key。
2.使用该对称密钥Key对敏感数据进行对应的对称加密。
3.使用对应的RSA公钥对密钥Key进行RSA加密。
4.将加密后的敏感数据和加密后的Key存入数据库中。
对应的解密过程为(如图3)1.将从数据库中读出的数据分解为加密后的敏感数据和加密后的对称密钥。
2.将从数据库中读出的加密后的对称加密的Key使用对应的RSA私钥进行解密。
3.使用解密后的Key对从数据库中读出加密后的敏感数据进行解密。
由于目前版本的Java开发系统中没有提供用于加密和签名的RSA算法实现,本发明方法给出了一种更高性能额度RSA算法及其在Java中的实现。
RSA基于非常大的正整数的算术理论。RSA公钥包括一个模数n和一个公开指数e,对应的私钥包括相同的模数和一个私有的指数d。
加解密的过程非常类似。如果用M来表示要加密的消息,那么密文C可以用一个简单的公式得到C=Me mod n。解密的方法相同,区别只是使用了私有的指数C=Md mod n。由于得到一个数字的模数是一个单向函数,所以如果不知道私钥的话,很难将密文解出。
为了使用RSA算法,要拥有能够满足特定数学要求的密钥对。可以按如下方法产生1.找到两个大的质数p和q。
2.将p和q相乘得到模数n。
3.将(p-1)和(q-1)相乘得到Ф(n)。
4.选择一个数字e,比Ф(n)小且与Ф(n)互质。
5.计算数字d=e-1mod Ф(n)。
公钥就是{n,e},私钥就是{n,d}。
Java2中只提供了少量对RSA的支持。在java.security.interfaces中包括了两个定义的RSA密钥接口RSAPublicKey、RSAPrivateKey。我们提供的RSA算法实现将包括密钥产生、加密、解密、填充、数字签名和签名认证等操作。为了对算法实现进行优化,我们将提供一个额外的接口RSAPrivateCtrKey,用于加快解密的速度。
1.密钥的产生需要特别指出的是在产生RSA私钥时,原始的质数p和q可以用来计算出三个额外的变量dP=d mod(p-1)dQ=d mod(q-1)qInv=q-1 mod p这三个变量被保存在RSAPrivateCtrKeyImpl中,在解密时使用。
要产生密钥,只要对抽象类java.security.KeyPairGeneratorSpi进行扩展,这个类对密钥对的产生建立了实现接口。通过对它的扩展,可以通过KeyPairGenerator来产生RSA密钥。
public final class RSAKeyPairGenerator extends KeyPairGeneratorSpi密钥的产生方法如下1.获取密钥的长度,它是模数的长度。
2.计算p和q的长度,分别为密钥长度一半。
3.按照确定的长度来产生素数p和q。
4.检查p-1和q-1都与公开指数e互素。如果不符合要求,重新产生p和q。
5.计算p和q的乘积n。如果n的长度与密钥长度不同,重新产生p和q。
6.设m为要加密的数据。
7.计算c=me mod n。
8.返回c。
解密的过程中如果我们使用和加密相同的方式,即m=cd mod n,由于这些运算在计算过程中非常耗时,所以我们使用密钥生成过程中的一些额外信息,结合中国剩余定理来加快计算速度,提高解密的性能。下面证明之首先给出中国剩余定理令n1,n2,…ni为两两互素的正整数,令N=n1n2…ni。则以下同余系统中,x=a1mod n1,x=a2mod n2,…,x=aimod ni,会在
中有唯一解。且这个解可以表示为x=[Σi=1t(Nni)yiai]modN,]]>其中(Nni)yi=1modni.]]>设m1=m mod p(1),m2=m mod q(2)。
根据我们在生成密钥时计算的额外参数dP,dQ,以及原来的解密变换m=cdmod n,我们可以计算下式m1=m mod p=(cd mod n)mod p=(kn+cd)mod p=cd mod p=cr(p-1)+dP mod p (3)由(3)式,根据费尔马定理得m1=cdP mod p(6)。
同理可得m2=cdQ mod q(7)。
将(1)(2)稍做变换为m=m1 mod p,m=m2 mod q。可以看出这是一个t=2的中国剩余定理的形式。
因此我们根据中国剩余定理在t=2时的简化形式,得到x=(((a1-a2)×u)mod n1)×n2+a2,其中u满足u×n2=1 mod n1,即u为n2模n1的乘法逆元。因此我们利用化简的方法,将解密的步骤改为1.设c为已加密数据,如果c<0或者c>n-1,消息不能被解密,转入异常处理。
2.计算m1=cdP mod p。
3.计算m2=cdQ mod q。
4.计算h=qInv(m1-m2)mod p。
5.计算m=m2+hq。
6.返回m。
本发明的安全传输方法具体采用本发明的复合加密方法和高效解密方法对移动代理进行加/解密,具体如下移动代理的鉴权步骤1).利用本发明方法的对称加密算法对各个主机签署并分发安全证书,
步骤2).移动代理被发送时,携带发起主机的安全证书,步骤3).主机接受来访的移动代理后,对其发起主机的证书进行鉴定和验证,通过后,该移动代理方可对本地主机进行资源访问和数据操作;移动代理的加/解密步骤1).代理发起方创建一个移动代理,产生一个对称加密的密钥Key;步骤2).代理发起方使用该对称密钥Key对代理关键字段进行对应的对称加密;步骤3).发起方使用对应的RSA公钥对密钥Key进行RSA加密;步骤4).发起方将加密后的敏感数据和加密后的Key存入安全中心中;步骤5).代理移动到目的主机;步骤6).代理接收方将从安全中心读出的数据分解为加密后的敏感数据和加密后的对称密钥;步骤7).代理接收方将从数据库中读出的加密后的对称加密的Key使用改进后的对应RSA私钥进行解密;步骤8).使用解密后的Key对移动代理关键字段进行解密;步骤9).在目标主机上的任务完成,则判断是否需要继续移动到其他主机但不包括发起主机,如果需要则转步骤1,否则转步骤11;步骤10).代理返回;步骤11).全过程结束。
有益效果本发明方法提出了一种高性能移动代理安全传输新方法,主要用于解决移动代理加密和传输中的安全保护问题,通过使用本发明提出的方法可以避免过去密码学方法的低效性,在不降低安全保护能力的前提下提高了加解密的速度,可以有效的达到保护移动代理的目的。下面我们给出具体的说明混合性传统的安全算法总是单一的选择对称和非对称加密算法,因而不能很好地提供安全和性能上的保障。我们在实际设计时采用了混合加密的方案,即首先利用对称加密算法生成会话密钥,对密钥采用非对称加密算法。一方面避免了非对称算法对大量数据加密引起的低效,另一方面则很好地实现了两种算法的取长补短。
高效性本发明方法中利用数学推导的方法,针对RSA算法解密的低效给出了一种高性能的解密方法。利用该方法,可在一定程度上(与程序的运行环境有关,包括软件环境如操作系统,硬件环境如CPU,内存等)提高RSA算法的解密效率,当然这是建立在保持RSA安全型保证的前提之上。
接口一致性目前的Java2中只提供了少量对RSA的支持。在java.security.interfaces中包括了两个定义的RSA密钥接口RSAPublicKey、RSAPrivateKey。我们提供的RSA算法实现将包括密钥产生、加密、解密、填充、数字签名和签名认证等操作。为了对算法实现进行优化,本发明方法提供了一个额外的接口RSAPrivateCtrKey,用于加快解密的速度。


图1是利用PKI实现证书管理实例图。
图2是本发明方法的加密流程示意图。
图3是本发明方法的解密流程示意图。
图4是本发明移动代理的鉴权、移动代理的加/解密方法的示意图。
具体实施例方式
本发明的一种面向移动代理的安全传输方法是采用复合加密方法和高效解密方法对移动代理进行加/解密,具体如下移动代理的鉴权步骤1).利用本发明的对称加密方法对各个主机签署并分发安全证书,步骤2).移动代理被发送时,携带发起主机的安全证书,步骤3).主机接受来访的移动代理后,对其发起主机的证书进行鉴定和验证,通过后,该移动代理方可对本地主机进行资源访问和数据操作;移动代理的加/解密步骤1).代理发起方创建一个移动代理,产生一个对称加密的密钥Key;步骤2).代理发起方使用该对称密钥Key对代理关键字段进行对应的对称加密;步骤3).发起方使用对应的RSA公钥对密钥Key进行RSA加密;步骤4).发起方将加密后的敏感数据和加密后的Key存入安全中心中;步骤5).代理移动到目的主机;步骤6).代理接收方将从安全中心读出的数据分解为加密后的敏感数据和加密后的对称密钥;步骤7).代理接收方将从数据库中读出的加密后的对称加密的Key使用改进后的对应RSA私钥进行解密;步骤8).使用解密后的Key对移动代理关键字段进行解密;步骤9).在目标主机上的任务完成,则判断是否需要继续移动到其他主机但不包括发起主机,如果需要则转步骤1,否则转步骤11;步骤10).代理返回;步骤11).全过程结束。
使用RSA公钥来加密会话密钥的加密流程为1)、产生一个对称加密Blowfish的密钥Key,2)、使用该对称密钥Key对敏感数据进行对应的对称加密,3)、使用对应的RSA公钥对密钥Key进行RSA加密,4)、将加密后的敏感数据和加密后的Key存入数据库中。
对应的解密过程为1)、将从数据库中读出的数据分解为加密后的敏感数据和加密后的对称密钥;2)、将从数据库中读出的加密后的对称加密的Key使用对应的RSA私钥进行解密;3)、使用解密后的Key对从数据库中读出加密后的敏感数据进行解密。
为了方便描述,我们假定有如下应用实例一、代理执行环境的证书创建证书的创建及签署流程如下1.首先使用Keytool为我们自己的CA创建一个自签的系统根证书和私钥,并将其存放于Keystore文件中。
2.再使用Keytool来创建其他各个检测管理器证书的待签证书。
3.再使用Keytool来创建各个主机证书的待签证书。
4.使用设计的证书签发程序以及根证书来签发各个检测管理器的证书。
5.使用设计的证书签发程序以及各个检测管理器证书来签发各个检测管理器管理的目标主机的证书。
二、代理执行环境的证书签署从Keystore中装入用来签署其他证书的上级证书的私钥和证书。
1.按照上级证书的格式创建一个证书模板。
2.将上级证书的内容保存到该证书模板中。
3.从Keystore中装入待签证书的证书以及私钥。
4.为待签证书也创建一个证书模板。
5.接下来设定新证书的有效期以及新的序列号。
6.设定新证书的签发者,及上级证书。
7.使用上级证书的私钥来签署该待签证书。
8.将新证书存入Keystore中。
证书被签署以后,就可以分发给各个主机。当目标主机被访问时,如检测管理器发送来的移动代理要求访问该主机的数据库时,就可以要求移动代理出示由检测管理器签发的证书,并进行验证。只有验证通过以后才可以访问数据库。或者当使用安全传输信道子系统中内嵌的SSL协议时,通信双方一般必须交换证书,只有证书被验证通过才能建立通信链路。
三、代理的签名由于在密码实现程序中已经创建大量的处理RSA计算的类,所以只需要少量的工作可实现RSA签名功能。首先要对签名的消息进行摘要运算,再对摘要的结果使用私钥进行签名。这个经过加密的结果就是数字签名。要验证签名,需要使用相应的公钥来进行解密,再与消息的摘要结果进行比较,如果两者一致,消息就有效。填充字符串,所有的字节值都是0xff。T是一个对于DigestInfo对象的ASN.1DER编码。ASN是使用标签来说明所包含内容的一种对二进制数据进行编码的方式。
签名的步骤与解密过程很类似1.计算s1=mdP mod p。
2.计算s2=mdQ mod q。
3.计算h=qInv(s1-s2)mod p。
4.计算s=s2+hq。
5.返回s。
验证的步骤1.m=se mod n2.返回m。
权利要求
1.一种面向移动代理的安全传输方法,其特征在于采用复合加密方法和高效解密方法对移动代理进行加/解密,具体如下移动代理的鉴权步骤1).利用本发明的对称加密算法对各个主机签署并分发安全证书,步骤2).移动代理被发送时,携带发起主机的安全证书,步骤3).主机接受来访的移动代理后,对其发起主机的证书进行鉴定和验证,通过后,该移动代理方可对本地主机进行资源访问和数据操作;移动代理的加/解密步骤1).代理发起方创建一个移动代理,产生一个对称加密的密钥Key步骤2).代理发起方使用该对称密钥Key对代理关键字段进行对应的对称加密;步骤3).发起方使用对应的RSA公钥对密钥Key进行RSA加密;步骤4).发起方将加密后的敏感数据和加密后的Key存入安全中心中;步骤5).代理移动到目的主机;步骤6).代理接收方将从安全中心读出的数据分解为加密后的敏感数据和加密后的对称密钥;步骤7).代理接收方将从数据库中读出的加密后的对称加密的Key使用改进后的对应RSA私钥进行解密;步骤8).使用解密后的Key对移动代理关键字段进行解密;步骤9).在目标主机上的任务完成,则判断是否需要继续移动到其他主机但不包括发起主机,如果需要则转步骤1,否则转步骤11;步骤10).代理返回;步骤11).全过程结束。
2.根据权利要求1所述的一种面向移动代理的安全传输方法,其特征在于复合加密方法使用RSA公钥来加密会话密钥的加密流程为1)、产生一个对称加密Blowfish的密钥Key,2)、使用该对称密钥Key对敏感数据进行对应的对称加密,3)、使用对应的RSA公钥对密钥Key进行RSA加密,4)、将加密后的敏感数据和加密后的Key存入数据库中。
3.根据权利要求1所述的一种面向移动代理的安全传输方法,其特征在于高效解密方法为1)、将从数据库中读出的数据分解为加密后的敏感数据和加密后的对称密钥;2)、将从数据库中读出的加密后的对称加密的Key使用对应的RSA私钥进行解密;3)、使用解密后的Key对从数据库中读出加密后的敏感数据进行解密。
全文摘要
一种面向移动代理的安全传输方法主要用于解决移动代理的安全问题,采用复合加密方法和高效解密方法对移动代理进行加/解密,具体为移动代理的鉴权利用本发明的对称加密算法对各个主机签署并分发安全证书,移动代理被发送时,携带发起主机的安全证书,主机接受来访的移动代理后,对其发起主机的证书进行鉴定和验证,通过后,该移动代理方可对本地主机进行资源访问和数据操作;移动代理的加/解密通过使用本发明提出的方法可以避免过去密码学方法的低效性,在不降低安全保护能力的前提下提高了加解密的速度,可以有效的达到保护移动代理的目的。
文档编号H04L9/00GK1697365SQ20051003796
公开日2005年11月16日 申请日期2005年3月4日 优先权日2005年3月4日
发明者王汝传, 李捷 申请人:南京邮电学院
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1