專(zhuān)利名稱(chēng):一種面向移動(dòng)代理的安全傳輸方法
技術(shù)領(lǐng)域:
本發(fā)明是一種分布式計(jì)算的安全解決方案。主要用于解決移動(dòng)代理的安全問(wèn)題,屬于分布式計(jì)算軟件安全技術(shù)領(lǐng)域。
背景技術(shù):
移動(dòng)代理技術(shù)是隨著Internet(因特網(wǎng))的發(fā)展而出現(xiàn)的一種新興技術(shù),它較好的適應(yīng)了Internet的特點(diǎn),有效簡(jiǎn)化分布式系統(tǒng)的設(shè)計(jì)、實(shí)現(xiàn)和維護(hù)。一般來(lái)講,移動(dòng)代理是指一段獨(dú)立的計(jì)算機(jī)程序,它按照一定的規(guī)程,能夠自主的在異構(gòu)的網(wǎng)絡(luò)上移動(dòng),代表用戶完成特定的任務(wù)。移動(dòng)代理的優(yōu)勢(shì)主要有兩點(diǎn)一方面,它實(shí)現(xiàn)了計(jì)算向所需資源的靠攏,這可以節(jié)省網(wǎng)絡(luò)的帶寬并具有異步功能;另一方面,允許程序動(dòng)態(tài)發(fā)布到主機(jī)。
由于移動(dòng)代理的諸多優(yōu)點(diǎn),它在電子商務(wù)、移動(dòng)計(jì)算、Internet信息的智能發(fā)現(xiàn)等方面都有較好的應(yīng)用前景,對(duì)移動(dòng)代理技術(shù)的研究正成為學(xué)術(shù)界和工業(yè)界的熱點(diǎn)之一。移動(dòng)代理的關(guān)鍵技術(shù)包括移動(dòng)機(jī)制、通訊機(jī)制以及安全機(jī)制。安全性是制約移動(dòng)代理技術(shù)廣泛使用的重要因素之一,因此研究移動(dòng)代理的安全問(wèn)題具有重要意義。
移動(dòng)代理的安全問(wèn)題主要包括三個(gè)方面(1)保護(hù)移動(dòng)代理傳輸(2)執(zhí)行環(huán)境的保護(hù)(3)移動(dòng)代理的保護(hù)。其中移動(dòng)代理的安全傳輸保障是移動(dòng)代理安全問(wèn)題中的重中之重。針對(duì)該問(wèn)題提出了簽名加密等。存在著效率低下、安全保障性差等缺陷。例如直接使用RSA這種非對(duì)稱(chēng)加密算法來(lái)加密數(shù)據(jù)有一些問(wèn)題①非對(duì)稱(chēng)加密的效率比對(duì)稱(chēng)加密算法要低很多,很多情況下對(duì)稱(chēng)加密要比非對(duì)稱(chēng)加密快1000倍以上;②直接使用RSA非對(duì)稱(chēng)加密方法來(lái)加密數(shù)據(jù)很容易受到特定方式的攻擊(如選擇密文攻擊);③典型的非對(duì)稱(chēng)加密一般只加密明文數(shù)據(jù)中的一個(gè)分組。通常這個(gè)分組大小與密鑰相同,如1024位RSA(RSA作為第一個(gè)公鑰加密算法在很多密碼協(xié)議中得到了應(yīng)用,例如SSL和S/MIME。它是一個(gè)非對(duì)稱(chēng)的加密算法,使用了公鑰和私鑰來(lái)進(jìn)行加密和解密和數(shù)字簽名。)最多能加密117字節(jié)的數(shù)據(jù)(有一些空間用來(lái)裝載填充數(shù)據(jù))。而如果直接采用對(duì)稱(chēng)加密算法來(lái)加密數(shù)據(jù),那么密鑰分配和管理就非常困難。因?yàn)榧用芎徒饷苁褂孟嗤拿孛苊荑€,它需要在加密方和解密方之間共享,安全性就不能得到很好的保證。
發(fā)明內(nèi)容
技術(shù)問(wèn)題本發(fā)明的目的是提供一種面向移動(dòng)代理安全傳輸方法,來(lái)解決保護(hù)移動(dòng)代理安全傳輸?shù)膯?wèn)題。通過(guò)使用本發(fā)明提出的方法可以在Java(一種純面向?qū)ο缶幊陶Z(yǔ)言)開(kāi)發(fā)系統(tǒng)中構(gòu)建面向移動(dòng)代理的安全傳輸信道從而達(dá)到保護(hù)移動(dòng)代理傳輸?shù)哪繕?biāo)。
技術(shù)方案本發(fā)明的方法是一種改進(jìn)性的方法,數(shù)據(jù)安全傳輸信道系統(tǒng)主要的任務(wù)是為系統(tǒng)自身的內(nèi)部數(shù)據(jù)傳輸提供一個(gè)安全、透明的數(shù)據(jù)傳輸通道,它與上層的數(shù)據(jù)處理模塊相對(duì)獨(dú)立,使得它可以與上層分別并行開(kāi)發(fā),并為將來(lái)的系統(tǒng)升級(jí)提供便利。
一、體系結(jié)構(gòu)移動(dòng)代理的跨平臺(tái)運(yùn)行的需求使得Java語(yǔ)言已經(jīng)成為了移動(dòng)代理開(kāi)發(fā)的主流環(huán)境。Java開(kāi)發(fā)環(huán)境中提供了keytool(Java提供的密鑰管理工具)來(lái)創(chuàng)建和管理公/私鑰對(duì)和自簽名的證書(shū),而且這些密鑰和證書(shū)都包含在密鑰庫(kù)內(nèi),密鑰庫(kù)可用keytool管理。keytool允許用戶指定在Java的運(yùn)行環(huán)境中注冊(cè)的由加密服務(wù)提供器提供的密鑰對(duì)的生成算法和簽名算法。在產(chǎn)生密鑰和自簽名證書(shū)時(shí)可以使用參數(shù)指明使用的算法,在這里可以指定使用RSA算法,所以產(chǎn)生的密鑰是RSA密鑰對(duì)。RSA是被研究得最廣泛的公鑰算法,從提出到現(xiàn)在已近二十年,經(jīng)歷了各種攻擊的考驗(yàn),逐漸為人們接受,普遍認(rèn)為是目前最優(yōu)秀的公鑰方案之一。RSA算法是第一個(gè)能同時(shí)用于加密和數(shù)字簽名的算法,也易于理解和操作。RSA的安全性依賴(lài)于大數(shù)的因子分解。
共鑰基礎(chǔ)設(shè)施(PKI,Public Key Infrastructure)是管理公鑰密碼的一個(gè)基本系統(tǒng)。它是認(rèn)證機(jī)構(gòu)(CA)、注冊(cè)機(jī)構(gòu)(RA)、策略管理、密鑰(Key)與證書(shū)管理、密鑰備份與恢復(fù)、撤消系統(tǒng)等功能模塊的有機(jī)結(jié)合。證書(shū)管理如圖1。
二、方法流程在系統(tǒng)中使用PKI使每個(gè)節(jié)點(diǎn)都擁有自己的證書(shū)以及對(duì)應(yīng)的一組RSA密鑰對(duì),我們就可以在每個(gè)節(jié)點(diǎn)使用RSA算法加密、解密。通過(guò)RSA算法加密過(guò)的數(shù)據(jù),只有使用對(duì)應(yīng)的RSA私鑰才能夠解密出來(lái)。
基于以上分析,我們?cè)趯?shí)際設(shè)計(jì)時(shí)采用了混合加密的方案,即不直接使用RSA來(lái)加密數(shù)據(jù),而是先創(chuàng)建一個(gè)128比特的對(duì)稱(chēng)加密算法(比如Blowfish算法)的會(huì)話密鑰,并且用它來(lái)通過(guò)對(duì)稱(chēng)加密來(lái)加密數(shù)據(jù),然后再使用RSA公鑰來(lái)加密這個(gè)會(huì)話密鑰。加密流程為(如圖2)1.產(chǎn)生一個(gè)對(duì)稱(chēng)加密(Blowfish)的密鑰Key。
2.使用該對(duì)稱(chēng)密鑰Key對(duì)敏感數(shù)據(jù)進(jìn)行對(duì)應(yīng)的對(duì)稱(chēng)加密。
3.使用對(duì)應(yīng)的RSA公鑰對(duì)密鑰Key進(jìn)行RSA加密。
4.將加密后的敏感數(shù)據(jù)和加密后的Key存入數(shù)據(jù)庫(kù)中。
對(duì)應(yīng)的解密過(guò)程為(如圖3)1.將從數(shù)據(jù)庫(kù)中讀出的數(shù)據(jù)分解為加密后的敏感數(shù)據(jù)和加密后的對(duì)稱(chēng)密鑰。
2.將從數(shù)據(jù)庫(kù)中讀出的加密后的對(duì)稱(chēng)加密的Key使用對(duì)應(yīng)的RSA私鑰進(jìn)行解密。
3.使用解密后的Key對(duì)從數(shù)據(jù)庫(kù)中讀出加密后的敏感數(shù)據(jù)進(jìn)行解密。
由于目前版本的Java開(kāi)發(fā)系統(tǒng)中沒(méi)有提供用于加密和簽名的RSA算法實(shí)現(xiàn),本發(fā)明方法給出了一種更高性能額度RSA算法及其在Java中的實(shí)現(xiàn)。
RSA基于非常大的正整數(shù)的算術(shù)理論。RSA公鑰包括一個(gè)模數(shù)n和一個(gè)公開(kāi)指數(shù)e,對(duì)應(yīng)的私鑰包括相同的模數(shù)和一個(gè)私有的指數(shù)d。
加解密的過(guò)程非常類(lèi)似。如果用M來(lái)表示要加密的消息,那么密文C可以用一個(gè)簡(jiǎn)單的公式得到C=Me mod n。解密的方法相同,區(qū)別只是使用了私有的指數(shù)C=Md mod n。由于得到一個(gè)數(shù)字的模數(shù)是一個(gè)單向函數(shù),所以如果不知道私鑰的話,很難將密文解出。
為了使用RSA算法,要擁有能夠滿足特定數(shù)學(xué)要求的密鑰對(duì)??梢园慈缦路椒óa(chǎn)生1.找到兩個(gè)大的質(zhì)數(shù)p和q。
2.將p和q相乘得到模數(shù)n。
3.將(p-1)和(q-1)相乘得到Ф(n)。
4.選擇一個(gè)數(shù)字e,比Ф(n)小且與Ф(n)互質(zhì)。
5.計(jì)算數(shù)字d=e-1mod Ф(n)。
公鑰就是{n,e},私鑰就是{n,d}。
Java2中只提供了少量對(duì)RSA的支持。在java.security.interfaces中包括了兩個(gè)定義的RSA密鑰接口RSAPublicKey、RSAPrivateKey。我們提供的RSA算法實(shí)現(xiàn)將包括密鑰產(chǎn)生、加密、解密、填充、數(shù)字簽名和簽名認(rèn)證等操作。為了對(duì)算法實(shí)現(xiàn)進(jìn)行優(yōu)化,我們將提供一個(gè)額外的接口RSAPrivateCtrKey,用于加快解密的速度。
1.密鑰的產(chǎn)生需要特別指出的是在產(chǎn)生RSA私鑰時(shí),原始的質(zhì)數(shù)p和q可以用來(lái)計(jì)算出三個(gè)額外的變量dP=d mod(p-1)dQ=d mod(q-1)qInv=q-1 mod p這三個(gè)變量被保存在RSAPrivateCtrKeyImpl中,在解密時(shí)使用。
要產(chǎn)生密鑰,只要對(duì)抽象類(lèi)java.security.KeyPairGeneratorSpi進(jìn)行擴(kuò)展,這個(gè)類(lèi)對(duì)密鑰對(duì)的產(chǎn)生建立了實(shí)現(xiàn)接口。通過(guò)對(duì)它的擴(kuò)展,可以通過(guò)KeyPairGenerator來(lái)產(chǎn)生RSA密鑰。
public final class RSAKeyPairGenerator extends KeyPairGeneratorSpi密鑰的產(chǎn)生方法如下1.獲取密鑰的長(zhǎng)度,它是模數(shù)的長(zhǎng)度。
2.計(jì)算p和q的長(zhǎng)度,分別為密鑰長(zhǎng)度一半。
3.按照確定的長(zhǎng)度來(lái)產(chǎn)生素?cái)?shù)p和q。
4.檢查p-1和q-1都與公開(kāi)指數(shù)e互素。如果不符合要求,重新產(chǎn)生p和q。
5.計(jì)算p和q的乘積n。如果n的長(zhǎng)度與密鑰長(zhǎng)度不同,重新產(chǎn)生p和q。
6.設(shè)m為要加密的數(shù)據(jù)。
7.計(jì)算c=me mod n。
8.返回c。
解密的過(guò)程中如果我們使用和加密相同的方式,即m=cd mod n,由于這些運(yùn)算在計(jì)算過(guò)程中非常耗時(shí),所以我們使用密鑰生成過(guò)程中的一些額外信息,結(jié)合中國(guó)剩余定理來(lái)加快計(jì)算速度,提高解密的性能。下面證明之首先給出中國(guó)剩余定理令n1,n2,…ni為兩兩互素的正整數(shù),令N=n1n2…ni。則以下同余系統(tǒng)中,x=a1mod n1,x=a2mod n2,…,x=aimod ni,會(huì)在
中有唯一解。且這個(gè)解可以表示為x=[Σi=1t(Nni)yiai]modN,]]>其中(Nni)yi=1modni.]]>設(shè)m1=m mod p(1),m2=m mod q(2)。
根據(jù)我們?cè)谏擅荑€時(shí)計(jì)算的額外參數(shù)dP,dQ,以及原來(lái)的解密變換m=cdmod n,我們可以計(jì)算下式m1=m mod p=(cd mod n)mod p=(kn+cd)mod p=cd mod p=cr(p-1)+dP mod p (3)由(3)式,根據(jù)費(fèi)爾馬定理得m1=cdP mod p(6)。
同理可得m2=cdQ mod q(7)。
將(1)(2)稍做變換為m=m1 mod p,m=m2 mod q。可以看出這是一個(gè)t=2的中國(guó)剩余定理的形式。
因此我們根據(jù)中國(guó)剩余定理在t=2時(shí)的簡(jiǎn)化形式,得到x=(((a1-a2)×u)mod n1)×n2+a2,其中u滿足u×n2=1 mod n1,即u為n2模n1的乘法逆元。因此我們利用化簡(jiǎn)的方法,將解密的步驟改為1.設(shè)c為已加密數(shù)據(jù),如果c<0或者c>n-1,消息不能被解密,轉(zhuǎn)入異常處理。
2.計(jì)算m1=cdP mod p。
3.計(jì)算m2=cdQ mod q。
4.計(jì)算h=qInv(m1-m2)mod p。
5.計(jì)算m=m2+hq。
6.返回m。
本發(fā)明的安全傳輸方法具體采用本發(fā)明的復(fù)合加密方法和高效解密方法對(duì)移動(dòng)代理進(jìn)行加/解密,具體如下移動(dòng)代理的鑒權(quán)步驟1).利用本發(fā)明方法的對(duì)稱(chēng)加密算法對(duì)各個(gè)主機(jī)簽署并分發(fā)安全證書(shū),
步驟2).移動(dòng)代理被發(fā)送時(shí),攜帶發(fā)起主機(jī)的安全證書(shū),步驟3).主機(jī)接受來(lái)訪的移動(dòng)代理后,對(duì)其發(fā)起主機(jī)的證書(shū)進(jìn)行鑒定和驗(yàn)證,通過(guò)后,該移動(dòng)代理方可對(duì)本地主機(jī)進(jìn)行資源訪問(wèn)和數(shù)據(jù)操作;移動(dòng)代理的加/解密步驟1).代理發(fā)起方創(chuàng)建一個(gè)移動(dòng)代理,產(chǎn)生一個(gè)對(duì)稱(chēng)加密的密鑰Key;步驟2).代理發(fā)起方使用該對(duì)稱(chēng)密鑰Key對(duì)代理關(guān)鍵字段進(jìn)行對(duì)應(yīng)的對(duì)稱(chēng)加密;步驟3).發(fā)起方使用對(duì)應(yīng)的RSA公鑰對(duì)密鑰Key進(jìn)行RSA加密;步驟4).發(fā)起方將加密后的敏感數(shù)據(jù)和加密后的Key存入安全中心中;步驟5).代理移動(dòng)到目的主機(jī);步驟6).代理接收方將從安全中心讀出的數(shù)據(jù)分解為加密后的敏感數(shù)據(jù)和加密后的對(duì)稱(chēng)密鑰;步驟7).代理接收方將從數(shù)據(jù)庫(kù)中讀出的加密后的對(duì)稱(chēng)加密的Key使用改進(jìn)后的對(duì)應(yīng)RSA私鑰進(jìn)行解密;步驟8).使用解密后的Key對(duì)移動(dòng)代理關(guān)鍵字段進(jìn)行解密;步驟9).在目標(biāo)主機(jī)上的任務(wù)完成,則判斷是否需要繼續(xù)移動(dòng)到其他主機(jī)但不包括發(fā)起主機(jī),如果需要?jiǎng)t轉(zhuǎn)步驟1,否則轉(zhuǎn)步驟11;步驟10).代理返回;步驟11).全過(guò)程結(jié)束。
有益效果本發(fā)明方法提出了一種高性能移動(dòng)代理安全傳輸新方法,主要用于解決移動(dòng)代理加密和傳輸中的安全保護(hù)問(wèn)題,通過(guò)使用本發(fā)明提出的方法可以避免過(guò)去密碼學(xué)方法的低效性,在不降低安全保護(hù)能力的前提下提高了加解密的速度,可以有效的達(dá)到保護(hù)移動(dòng)代理的目的。下面我們給出具體的說(shuō)明混合性傳統(tǒng)的安全算法總是單一的選擇對(duì)稱(chēng)和非對(duì)稱(chēng)加密算法,因而不能很好地提供安全和性能上的保障。我們?cè)趯?shí)際設(shè)計(jì)時(shí)采用了混合加密的方案,即首先利用對(duì)稱(chēng)加密算法生成會(huì)話密鑰,對(duì)密鑰采用非對(duì)稱(chēng)加密算法。一方面避免了非對(duì)稱(chēng)算法對(duì)大量數(shù)據(jù)加密引起的低效,另一方面則很好地實(shí)現(xiàn)了兩種算法的取長(zhǎng)補(bǔ)短。
高效性本發(fā)明方法中利用數(shù)學(xué)推導(dǎo)的方法,針對(duì)RSA算法解密的低效給出了一種高性能的解密方法。利用該方法,可在一定程度上(與程序的運(yùn)行環(huán)境有關(guān),包括軟件環(huán)境如操作系統(tǒng),硬件環(huán)境如CPU,內(nèi)存等)提高RSA算法的解密效率,當(dāng)然這是建立在保持RSA安全型保證的前提之上。
接口一致性目前的Java2中只提供了少量對(duì)RSA的支持。在java.security.interfaces中包括了兩個(gè)定義的RSA密鑰接口RSAPublicKey、RSAPrivateKey。我們提供的RSA算法實(shí)現(xiàn)將包括密鑰產(chǎn)生、加密、解密、填充、數(shù)字簽名和簽名認(rèn)證等操作。為了對(duì)算法實(shí)現(xiàn)進(jìn)行優(yōu)化,本發(fā)明方法提供了一個(gè)額外的接口RSAPrivateCtrKey,用于加快解密的速度。
圖1是利用PKI實(shí)現(xiàn)證書(shū)管理實(shí)例圖。
圖2是本發(fā)明方法的加密流程示意圖。
圖3是本發(fā)明方法的解密流程示意圖。
圖4是本發(fā)明移動(dòng)代理的鑒權(quán)、移動(dòng)代理的加/解密方法的示意圖。
具體實(shí)施例方式
本發(fā)明的一種面向移動(dòng)代理的安全傳輸方法是采用復(fù)合加密方法和高效解密方法對(duì)移動(dòng)代理進(jìn)行加/解密,具體如下移動(dòng)代理的鑒權(quán)步驟1).利用本發(fā)明的對(duì)稱(chēng)加密方法對(duì)各個(gè)主機(jī)簽署并分發(fā)安全證書(shū),步驟2).移動(dòng)代理被發(fā)送時(shí),攜帶發(fā)起主機(jī)的安全證書(shū),步驟3).主機(jī)接受來(lái)訪的移動(dòng)代理后,對(duì)其發(fā)起主機(jī)的證書(shū)進(jìn)行鑒定和驗(yàn)證,通過(guò)后,該移動(dòng)代理方可對(duì)本地主機(jī)進(jìn)行資源訪問(wèn)和數(shù)據(jù)操作;移動(dòng)代理的加/解密步驟1).代理發(fā)起方創(chuàng)建一個(gè)移動(dòng)代理,產(chǎn)生一個(gè)對(duì)稱(chēng)加密的密鑰Key;步驟2).代理發(fā)起方使用該對(duì)稱(chēng)密鑰Key對(duì)代理關(guān)鍵字段進(jìn)行對(duì)應(yīng)的對(duì)稱(chēng)加密;步驟3).發(fā)起方使用對(duì)應(yīng)的RSA公鑰對(duì)密鑰Key進(jìn)行RSA加密;步驟4).發(fā)起方將加密后的敏感數(shù)據(jù)和加密后的Key存入安全中心中;步驟5).代理移動(dòng)到目的主機(jī);步驟6).代理接收方將從安全中心讀出的數(shù)據(jù)分解為加密后的敏感數(shù)據(jù)和加密后的對(duì)稱(chēng)密鑰;步驟7).代理接收方將從數(shù)據(jù)庫(kù)中讀出的加密后的對(duì)稱(chēng)加密的Key使用改進(jìn)后的對(duì)應(yīng)RSA私鑰進(jìn)行解密;步驟8).使用解密后的Key對(duì)移動(dòng)代理關(guān)鍵字段進(jìn)行解密;步驟9).在目標(biāo)主機(jī)上的任務(wù)完成,則判斷是否需要繼續(xù)移動(dòng)到其他主機(jī)但不包括發(fā)起主機(jī),如果需要?jiǎng)t轉(zhuǎn)步驟1,否則轉(zhuǎn)步驟11;步驟10).代理返回;步驟11).全過(guò)程結(jié)束。
使用RSA公鑰來(lái)加密會(huì)話密鑰的加密流程為1)、產(chǎn)生一個(gè)對(duì)稱(chēng)加密Blowfish的密鑰Key,2)、使用該對(duì)稱(chēng)密鑰Key對(duì)敏感數(shù)據(jù)進(jìn)行對(duì)應(yīng)的對(duì)稱(chēng)加密,3)、使用對(duì)應(yīng)的RSA公鑰對(duì)密鑰Key進(jìn)行RSA加密,4)、將加密后的敏感數(shù)據(jù)和加密后的Key存入數(shù)據(jù)庫(kù)中。
對(duì)應(yīng)的解密過(guò)程為1)、將從數(shù)據(jù)庫(kù)中讀出的數(shù)據(jù)分解為加密后的敏感數(shù)據(jù)和加密后的對(duì)稱(chēng)密鑰;2)、將從數(shù)據(jù)庫(kù)中讀出的加密后的對(duì)稱(chēng)加密的Key使用對(duì)應(yīng)的RSA私鑰進(jìn)行解密;3)、使用解密后的Key對(duì)從數(shù)據(jù)庫(kù)中讀出加密后的敏感數(shù)據(jù)進(jìn)行解密。
為了方便描述,我們假定有如下應(yīng)用實(shí)例一、代理執(zhí)行環(huán)境的證書(shū)創(chuàng)建證書(shū)的創(chuàng)建及簽署流程如下1.首先使用Keytool為我們自己的CA創(chuàng)建一個(gè)自簽的系統(tǒng)根證書(shū)和私鑰,并將其存放于Keystore文件中。
2.再使用Keytool來(lái)創(chuàng)建其他各個(gè)檢測(cè)管理器證書(shū)的待簽證書(shū)。
3.再使用Keytool來(lái)創(chuàng)建各個(gè)主機(jī)證書(shū)的待簽證書(shū)。
4.使用設(shè)計(jì)的證書(shū)簽發(fā)程序以及根證書(shū)來(lái)簽發(fā)各個(gè)檢測(cè)管理器的證書(shū)。
5.使用設(shè)計(jì)的證書(shū)簽發(fā)程序以及各個(gè)檢測(cè)管理器證書(shū)來(lái)簽發(fā)各個(gè)檢測(cè)管理器管理的目標(biāo)主機(jī)的證書(shū)。
二、代理執(zhí)行環(huán)境的證書(shū)簽署從Keystore中裝入用來(lái)簽署其他證書(shū)的上級(jí)證書(shū)的私鑰和證書(shū)。
1.按照上級(jí)證書(shū)的格式創(chuàng)建一個(gè)證書(shū)模板。
2.將上級(jí)證書(shū)的內(nèi)容保存到該證書(shū)模板中。
3.從Keystore中裝入待簽證書(shū)的證書(shū)以及私鑰。
4.為待簽證書(shū)也創(chuàng)建一個(gè)證書(shū)模板。
5.接下來(lái)設(shè)定新證書(shū)的有效期以及新的序列號(hào)。
6.設(shè)定新證書(shū)的簽發(fā)者,及上級(jí)證書(shū)。
7.使用上級(jí)證書(shū)的私鑰來(lái)簽署該待簽證書(shū)。
8.將新證書(shū)存入Keystore中。
證書(shū)被簽署以后,就可以分發(fā)給各個(gè)主機(jī)。當(dāng)目標(biāo)主機(jī)被訪問(wèn)時(shí),如檢測(cè)管理器發(fā)送來(lái)的移動(dòng)代理要求訪問(wèn)該主機(jī)的數(shù)據(jù)庫(kù)時(shí),就可以要求移動(dòng)代理出示由檢測(cè)管理器簽發(fā)的證書(shū),并進(jìn)行驗(yàn)證。只有驗(yàn)證通過(guò)以后才可以訪問(wèn)數(shù)據(jù)庫(kù)?;蛘弋?dāng)使用安全傳輸信道子系統(tǒng)中內(nèi)嵌的SSL協(xié)議時(shí),通信雙方一般必須交換證書(shū),只有證書(shū)被驗(yàn)證通過(guò)才能建立通信鏈路。
三、代理的簽名由于在密碼實(shí)現(xiàn)程序中已經(jīng)創(chuàng)建大量的處理RSA計(jì)算的類(lèi),所以只需要少量的工作可實(shí)現(xiàn)RSA簽名功能。首先要對(duì)簽名的消息進(jìn)行摘要運(yùn)算,再對(duì)摘要的結(jié)果使用私鑰進(jìn)行簽名。這個(gè)經(jīng)過(guò)加密的結(jié)果就是數(shù)字簽名。要驗(yàn)證簽名,需要使用相應(yīng)的公鑰來(lái)進(jìn)行解密,再與消息的摘要結(jié)果進(jìn)行比較,如果兩者一致,消息就有效。填充字符串,所有的字節(jié)值都是0xff。T是一個(gè)對(duì)于DigestInfo對(duì)象的ASN.1DER編碼。ASN是使用標(biāo)簽來(lái)說(shuō)明所包含內(nèi)容的一種對(duì)二進(jìn)制數(shù)據(jù)進(jìn)行編碼的方式。
簽名的步驟與解密過(guò)程很類(lèi)似1.計(jì)算s1=mdP mod p。
2.計(jì)算s2=mdQ mod q。
3.計(jì)算h=qInv(s1-s2)mod p。
4.計(jì)算s=s2+hq。
5.返回s。
驗(yàn)證的步驟1.m=se mod n2.返回m。
權(quán)利要求
1.一種面向移動(dòng)代理的安全傳輸方法,其特征在于采用復(fù)合加密方法和高效解密方法對(duì)移動(dòng)代理進(jìn)行加/解密,具體如下移動(dòng)代理的鑒權(quán)步驟1).利用本發(fā)明的對(duì)稱(chēng)加密算法對(duì)各個(gè)主機(jī)簽署并分發(fā)安全證書(shū),步驟2).移動(dòng)代理被發(fā)送時(shí),攜帶發(fā)起主機(jī)的安全證書(shū),步驟3).主機(jī)接受來(lái)訪的移動(dòng)代理后,對(duì)其發(fā)起主機(jī)的證書(shū)進(jìn)行鑒定和驗(yàn)證,通過(guò)后,該移動(dòng)代理方可對(duì)本地主機(jī)進(jìn)行資源訪問(wèn)和數(shù)據(jù)操作;移動(dòng)代理的加/解密步驟1).代理發(fā)起方創(chuàng)建一個(gè)移動(dòng)代理,產(chǎn)生一個(gè)對(duì)稱(chēng)加密的密鑰Key步驟2).代理發(fā)起方使用該對(duì)稱(chēng)密鑰Key對(duì)代理關(guān)鍵字段進(jìn)行對(duì)應(yīng)的對(duì)稱(chēng)加密;步驟3).發(fā)起方使用對(duì)應(yīng)的RSA公鑰對(duì)密鑰Key進(jìn)行RSA加密;步驟4).發(fā)起方將加密后的敏感數(shù)據(jù)和加密后的Key存入安全中心中;步驟5).代理移動(dòng)到目的主機(jī);步驟6).代理接收方將從安全中心讀出的數(shù)據(jù)分解為加密后的敏感數(shù)據(jù)和加密后的對(duì)稱(chēng)密鑰;步驟7).代理接收方將從數(shù)據(jù)庫(kù)中讀出的加密后的對(duì)稱(chēng)加密的Key使用改進(jìn)后的對(duì)應(yīng)RSA私鑰進(jìn)行解密;步驟8).使用解密后的Key對(duì)移動(dòng)代理關(guān)鍵字段進(jìn)行解密;步驟9).在目標(biāo)主機(jī)上的任務(wù)完成,則判斷是否需要繼續(xù)移動(dòng)到其他主機(jī)但不包括發(fā)起主機(jī),如果需要?jiǎng)t轉(zhuǎn)步驟1,否則轉(zhuǎn)步驟11;步驟10).代理返回;步驟11).全過(guò)程結(jié)束。
2.根據(jù)權(quán)利要求1所述的一種面向移動(dòng)代理的安全傳輸方法,其特征在于復(fù)合加密方法使用RSA公鑰來(lái)加密會(huì)話密鑰的加密流程為1)、產(chǎn)生一個(gè)對(duì)稱(chēng)加密Blowfish的密鑰Key,2)、使用該對(duì)稱(chēng)密鑰Key對(duì)敏感數(shù)據(jù)進(jìn)行對(duì)應(yīng)的對(duì)稱(chēng)加密,3)、使用對(duì)應(yīng)的RSA公鑰對(duì)密鑰Key進(jìn)行RSA加密,4)、將加密后的敏感數(shù)據(jù)和加密后的Key存入數(shù)據(jù)庫(kù)中。
3.根據(jù)權(quán)利要求1所述的一種面向移動(dòng)代理的安全傳輸方法,其特征在于高效解密方法為1)、將從數(shù)據(jù)庫(kù)中讀出的數(shù)據(jù)分解為加密后的敏感數(shù)據(jù)和加密后的對(duì)稱(chēng)密鑰;2)、將從數(shù)據(jù)庫(kù)中讀出的加密后的對(duì)稱(chēng)加密的Key使用對(duì)應(yīng)的RSA私鑰進(jìn)行解密;3)、使用解密后的Key對(duì)從數(shù)據(jù)庫(kù)中讀出加密后的敏感數(shù)據(jù)進(jìn)行解密。
全文摘要
一種面向移動(dòng)代理的安全傳輸方法主要用于解決移動(dòng)代理的安全問(wèn)題,采用復(fù)合加密方法和高效解密方法對(duì)移動(dòng)代理進(jìn)行加/解密,具體為移動(dòng)代理的鑒權(quán)利用本發(fā)明的對(duì)稱(chēng)加密算法對(duì)各個(gè)主機(jī)簽署并分發(fā)安全證書(shū),移動(dòng)代理被發(fā)送時(shí),攜帶發(fā)起主機(jī)的安全證書(shū),主機(jī)接受來(lái)訪的移動(dòng)代理后,對(duì)其發(fā)起主機(jī)的證書(shū)進(jìn)行鑒定和驗(yàn)證,通過(guò)后,該移動(dòng)代理方可對(duì)本地主機(jī)進(jìn)行資源訪問(wèn)和數(shù)據(jù)操作;移動(dòng)代理的加/解密通過(guò)使用本發(fā)明提出的方法可以避免過(guò)去密碼學(xué)方法的低效性,在不降低安全保護(hù)能力的前提下提高了加解密的速度,可以有效的達(dá)到保護(hù)移動(dòng)代理的目的。
文檔編號(hào)H04L9/00GK1697365SQ20051003796
公開(kāi)日2005年11月16日 申請(qǐng)日期2005年3月4日 優(yōu)先權(quán)日2005年3月4日
發(fā)明者王汝傳, 李捷 申請(qǐng)人:南京郵電學(xué)院