專利名稱:基于異步式安全調(diào)用的編譯方法
技術(shù)領(lǐng)域:
本發(fā)明屬于異步式安全調(diào)用服務(Secure asynchronous service)技術(shù)領(lǐng)域,具體涉及一種將具有安全隱患的異步式調(diào)用模式優(yōu)化成為高效安全的異步式調(diào)用模式的編譯方法。
背景技術(shù):
面向服務的體系結(jié)構(gòu)(Service Oriental Architecture)是一種松散耦合的中間件模型。隨著Web Service技術(shù)的發(fā)展,特別是Ajax技術(shù)、JavaScript模塊化程序設計,此類異步式服務應用為SOA模型提出了更高的要求,尤其是異步式調(diào)用模型的效率和安全性。
異步式服務是通過調(diào)用發(fā)起者、服務端程序和回調(diào)訪問對象這三者來完成的,由于異步式調(diào)用過程需要通過回調(diào)過程修改網(wǎng)絡構(gòu)件的屬性,比如移動手機通過網(wǎng)絡服務購買股票,然后返回帳號與密碼,通過銀行修改數(shù)據(jù)的過程,因此調(diào)用過程的處理更為復雜。一方面,由于對于某網(wǎng)絡節(jié)點的調(diào)用會通過回調(diào)改變另一網(wǎng)絡節(jié)點的屬性狀態(tài),另一方面,異步式網(wǎng)絡調(diào)用邏輯過程通常是由一系列節(jié)點組成的具有相關(guān)性的調(diào)用隊列,必須解決多節(jié)點數(shù)據(jù)高效安全回調(diào)邏輯。
異步式調(diào)用方法的基本特征是首先由服務請求者發(fā)起異步網(wǎng)絡服務調(diào)用的請求,然后由服務器完成運算,再返回運算結(jié)果,通過回調(diào)Callback函數(shù)修改其他網(wǎng)絡節(jié)點中對象的屬性。然而這種調(diào)用是松散的耦合方式,即調(diào)用方不需要等待調(diào)用者將結(jié)果返回,在調(diào)用后可以立即執(zhí)行后續(xù)函數(shù)操作,由于回調(diào)函數(shù)同時也能影響網(wǎng)絡中的對象,因此異步式調(diào)用的安全性非常低。傳統(tǒng)方法通常將異步式調(diào)用進行密鑰加密解密(數(shù)字證書)的方式認證,但是對于現(xiàn)有的商業(yè)邏輯,通常有一系列異步式調(diào)用組合而成,如果每次異步式調(diào)用都進行數(shù)字證書的認證,將大幅度降低調(diào)用的效率和可靠性。
由于異步式模型的服務都是松散耦合狀態(tài),因此要保證服務對象在每個時間片都是安全可靠的,必須建立對異步式調(diào)用的過程進行建模,再設計相應的安全優(yōu)化算法。
發(fā)明內(nèi)容
本發(fā)明的目的提供一種基于異步式安全調(diào)用的優(yōu)化編譯方法,該方法通過建立異步式服務調(diào)用的模型與針對該模型的級聯(lián)式安全調(diào)用優(yōu)化算法,利用異步式服務調(diào)用的拓撲環(huán)狀結(jié)構(gòu)來提高異步式服務調(diào)用的安全性和效率。
本發(fā)明解決該技術(shù)問題所采用的技術(shù)方案如下 一種基于異步式安全調(diào)用的編譯方法,首先從異步式調(diào)用節(jié)點集合中選擇具有相關(guān)的調(diào)用序列,將該序列集合組合成為一個安全調(diào)用域,再通過密鑰來控制域內(nèi)外部的數(shù)據(jù)交互,以達到保證異步式調(diào)用序列的效率和安全性,它包括下列步驟 步驟A將網(wǎng)絡構(gòu)件通過服務域的方式劃分為若干個網(wǎng)絡服務區(qū)域模型; 步驟B針對不同服務域的異步式調(diào)用進行異步式消息公鑰認證,產(chǎn)生具有安全認證的程序塊; 步驟C采用編譯掃描算法分析步驟B程序塊中的級聯(lián)式異步調(diào)用分析P1……Pn調(diào)用序列中與發(fā)起調(diào)用節(jié)點P1具有相同服務域的節(jié)點Pi,相鄰兩個屬于同一服務域節(jié)點之間的調(diào)用序列即為級聯(lián)式異步調(diào)用程序塊。
所述異步式消息公鑰認證的過程為 調(diào)用發(fā)起構(gòu)件P將公鑰與異步式請求一起發(fā)送給提供服務的服務器S,同時將私鑰發(fā)送回調(diào)構(gòu)件Q所在的服務域; 當服務器S完成服務運算后,用公鑰將服務結(jié)果加密后,通過回調(diào)函數(shù)處理網(wǎng)絡構(gòu)件Q; 構(gòu)件Q所屬的服務域用私鑰對回調(diào)數(shù)據(jù)的合法性進行驗證,若該數(shù)據(jù)合法則修改服務域中構(gòu)件的屬性。
進一步的,對具有級聯(lián)式異步調(diào)用標識的程序塊采用安全序列重構(gòu)算法進行優(yōu)化。所述安全序列重構(gòu)算法的基本過程為掃描第一次異步式服務調(diào)用代碼,對數(shù)據(jù)進行加密運算后嵌入數(shù)字水印signature,并且將私鑰發(fā)送給域服務器的守護進程;掃描最后一次回調(diào)函數(shù),在數(shù)據(jù)接受后,調(diào)用服務器守護進程,使用私鑰對接受的數(shù)據(jù)進行數(shù)字簽名認證。
根據(jù)構(gòu)件所屬的服務域,異步式調(diào)用方式分為以下三種類型 1、同域調(diào)用屬于同一個域的構(gòu)件元素通過網(wǎng)絡服務改變對方的屬性,用符號SAsy表示; d∈Do,SAsy∈d.Asy(SAsy.sc∈d)∧(SAsy.dc∈d) 2、異域調(diào)用構(gòu)件元素通過網(wǎng)絡服務回調(diào)改變另外一個服務域的構(gòu)件屬性,該語義表現(xiàn)服務域之間的交互邏輯,用符號DDAsy表示; d∈Do,DAsy∈d.Asy(DAsy.sc∈d)∧(DAsy.dc∈d′)∧(d≠d′) 3、異域回調(diào)服務回調(diào)需要解決多個服務域之間的邏輯交互過程,因此異域調(diào)用就是一次服務回調(diào)影響多個服務域構(gòu)件屬性的邏輯交互過程,用符號DCAsy表示; d∈Do,DCAsy∈d.Asyd,d′∈Do,(d.Co∩DCAsy.DC≠)∧ (d′.Co∩DCAsy.DC≠)∧(d≠d′) 以下對異步式消息公鑰認證、級聯(lián)式異步調(diào)用和安全序列重構(gòu)算法進行詳細闡述 異步式消息公鑰認證(Asynchronous Message Host Key Authentication,AMHKA)模型的基本邏輯算法是調(diào)用發(fā)起者Pi將公鑰Kpublic與異步式請求R一起發(fā)送給提供服務的節(jié)點Ps,同時將私鑰Kprivate傳給回調(diào)構(gòu)件所在的服務域;當節(jié)點Ps完成服務的運算后,用公鑰Kpublic將服務結(jié)果加密后,回調(diào)網(wǎng)絡構(gòu)件Pj;構(gòu)件Pj所在的服務域D首先使用Pi發(fā)送的私鑰Kprivate解密,認證回調(diào)數(shù)據(jù)的合法性,若該數(shù)據(jù)合法,則接受回調(diào)請求改變服務域中構(gòu)件Pj的屬性。AMHKA邏輯算法的形式化描述如圖1a所示,AMHKA調(diào)用算法邏輯圖如圖1b所示。
網(wǎng)絡節(jié)點的級聯(lián)式調(diào)用是通過一組互為接口的異步式服務調(diào)用組成,該服務的初始化調(diào)用節(jié)點和終止回調(diào)節(jié)點屬于同一服務域,即Pi節(jié)點調(diào)用服務Si設置Pj節(jié)點的屬性,Pj節(jié)點調(diào)用服務Sj設置Pk節(jié)點的屬性,其中Pi和Pk屬于同一服務域。DDAsy表示異域調(diào)用,即構(gòu)件元素通過網(wǎng)絡服務回調(diào)改變另外一個服務域的構(gòu)件屬性,是服務域之間的交互邏輯。
定義.在論域S中,若異步式調(diào)用滿足下面條件 p1,p2,...,pn+1∈S.Co,s1,s2,...,sn∈S.Sv,DDAsy(p1,s1,p2)∧DDAsy(p2,s2,p3) ∧...∧DDAsy(pn,sn,pn+1)Domain(p1)=Domain(pn+1) 掃描的終止節(jié)點選擇算法是選擇第一個與起始節(jié)點位于相同服務域的節(jié)點,即即存在調(diào)用序列p1→p2→...→pi→...→pj→...→pn,并且p1,pi,pj,pn都屬于同一服務域(i<j),則取p1→p2→...→pi,pi→...→pj,pj→...→pn為三個級聯(lián)式異步調(diào)用,而不是p1→p2→...→pi→...→pj。
則稱該調(diào)用為級聯(lián)式異步調(diào)用,記做DepAsy;若其中異步式調(diào)用次數(shù)為n,稱為n次級聯(lián)異步調(diào)用,記做DepAsy(n)。
以減少加解密數(shù)字簽名的過程為目標,對級聯(lián)式異步調(diào)用進行重構(gòu)。該安全序列重構(gòu)算法的步驟第一次異步式調(diào)用仍然由發(fā)起調(diào)用的節(jié)點P1調(diào)用服務S1,加密并嵌入數(shù)字簽名signature發(fā)送給服務端,當服務節(jié)點執(zhí)行完服務后,回調(diào)節(jié)點P2,此時無須節(jié)點P2所在的服務域?qū)?shù)字簽名進行驗證,只是將signature傳遞到P2;再次由P2節(jié)點發(fā)起第二次異步式調(diào)用,P2同樣對signature不進行處理,將signature傳遞到S2,此后的n-2次調(diào)用都只是將加密的數(shù)字簽名發(fā)送到下一個節(jié)點,直到最后一次異步式調(diào)用,當Sn回調(diào)Pn+1時,根據(jù)級聯(lián)式異步調(diào)用的定義,P1和Pn+1屬于同一服務域,此時服務域用P1的私鑰對signature進行驗證,如果驗證通過則更改Pn+1的屬性,若無效則此次級聯(lián)式異步調(diào)用失敗。該安全序列重構(gòu)算法的邏輯語義如圖2a,級聯(lián)異步調(diào)用優(yōu)化算法邏輯圖如圖2b所示。
本發(fā)明的有益效果是將具有相關(guān)性的異步式調(diào)用進行體系結(jié)構(gòu)方式的耦合,通過集合體的方式將具有統(tǒng)一服務區(qū)域的異步式調(diào)用作為一個整體原子進行安全性的控制,從而提高了異步式調(diào)用的安全性和調(diào)用效率。特別是針對互聯(lián)網(wǎng)的Ajax模型,給B/S結(jié)構(gòu)的復雜網(wǎng)絡應用帶來更高的可用性以及安全性。
圖1a為AMHKA邏輯算法的形式化描述; 圖1b為AMHKA調(diào)用算法邏輯圖; 圖2a為安全序列重構(gòu)算法邏輯語義描述; 圖2b為級聯(lián)異步調(diào)用優(yōu)化算法邏輯圖。
圖3為級聯(lián)式異步調(diào)用掃描的環(huán)分解示意圖; 圖4為AMHKA算法性能損失對比圖; 圖5為安全級聯(lián)調(diào)用優(yōu)化效率比較圖。
具體實施例方式 下面,結(jié)合附圖和具體實例對本發(fā)明作進一步描述。
本實施例的異步式安全調(diào)用的優(yōu)化編譯方法包括如下步驟 1、根據(jù)程序中構(gòu)件的拓撲邏輯將網(wǎng)絡劃分為若干個網(wǎng)絡服務區(qū)域模型; 2、分析程序代碼,將其中具有異步式調(diào)用的代碼邏輯加上RSA算法(公鑰私鑰對)安全認證; 3、對步驟2后的安全認證程序塊進行掃描,標注級聯(lián)式異步調(diào)用代碼塊,即級聯(lián)式異步調(diào)用分析; 4、對步驟3的標注程序塊進行安全序列重構(gòu)。
具體如下 第一步、劃分網(wǎng)絡服務域 根據(jù)網(wǎng)絡構(gòu)件的功能邏輯,將屬于同一邏輯的構(gòu)件劃分屬于一個服務域; 第二步、異步式調(diào)用的安全化 異步式調(diào)用的發(fā)起方進行加密操作,回調(diào)方進行解密操作,使用RSA算法; 第三步、級聯(lián)式異步調(diào)用分析 在進行優(yōu)化之前,首先要分析確定程序段中的級聯(lián)式異步式調(diào)用。所謂級聯(lián)式異步式調(diào)用就是由若干個異步調(diào)用組合而成的一個調(diào)用序列,前一次調(diào)用的輸出結(jié)果是后一次的調(diào)用輸入數(shù)據(jù),而且第一次創(chuàng)建調(diào)用的構(gòu)件和最后一次回調(diào)的構(gòu)件屬于同一個服務域。
該掃描過程的基本思想是盡可能的發(fā)現(xiàn)更多的級聯(lián)式異步調(diào)用。通常掃描開始后,首先確定程序段的第一個異步式初始化構(gòu)件p,在其調(diào)用序列過程只要發(fā)現(xiàn)第n次的回調(diào)構(gòu)件q與p屬于同一個服務域,就將p->k1->k2->…kn->q的序列作為一個級聯(lián)式異步調(diào)用標注出來;如圖3,若p、q、m、n都屬于一個服務域Domain S,掃描分析后則會將環(huán)Z分解為最小單位,如I,J,K三個級聯(lián)式異步調(diào)用環(huán)。
第四步、安全序列重構(gòu) 當分析出全部的級聯(lián)異步式調(diào)用后,針對每個級聯(lián)異步調(diào)用,進行調(diào)用的安全序列重構(gòu)(即安全序列調(diào)用算法),過程如下掃描第一次異步式服務調(diào)用代碼p,對數(shù)據(jù)進行加密運算后嵌入數(shù)字水印signature,并且將私鑰發(fā)送給域服務器的守護進程;掃描最后一次回調(diào)函數(shù),在數(shù)據(jù)接受后,調(diào)用服務器守護進程,將接受的數(shù)據(jù)使用私鑰進行數(shù)字簽名認證,若成功才能執(zhí)行后續(xù)程序,若失敗則退出。
為了驗證該優(yōu)化編譯方法的性能,我們在浙江移動公司的城域網(wǎng)管理系統(tǒng)作了如下測試(測試數(shù)據(jù)圖的縱坐標表示網(wǎng)絡構(gòu)件調(diào)用的周期,單位為毫秒) 實驗例一.AMHKA算法調(diào)用效率 移動城域網(wǎng)的電路建立邏輯是時隙異步式調(diào)用,通過它測試AMHKA算法的性能損失,實驗比較了異步式調(diào)用、AMHKA異步調(diào)用算法的性能比率。
我們選取了十個節(jié)點測試了建立端口下屬時隙的異步式調(diào)用過程,經(jīng)過效率測試,發(fā)現(xiàn)十個測試節(jié)點的算法性能的損失分別23.8%,16.9%,22.1%,19.5%,15.9%,18.5%,18.8%,17.2%,20.1%,19.4%,其平均損失為19.2%,如圖4。因此,AMHKA算法的數(shù)字簽名認證帶來的SOA系統(tǒng)的性能損失還是比較明顯的。
實驗例二.級聯(lián)式調(diào)用優(yōu)化測試 測試基于級聯(lián)式調(diào)用優(yōu)化算法對異步式系統(tǒng)性能的提升,以電路鏈路環(huán)作為參考模型作為測試對象。移動電路的拓撲結(jié)構(gòu)80%為環(huán)狀模型,因此電路節(jié)點進行路由邏輯都是級聯(lián)式調(diào)用模式。分別挑選20個樣本電路環(huán)分別針對優(yōu)化前后進行性能效率的測試,測試結(jié)果如圖5??梢妰?yōu)化后級聯(lián)優(yōu)化調(diào)用過程只需在初始化和最終回調(diào)進行安全認證,而優(yōu)化的效率與異步式調(diào)用的節(jié)點數(shù)有關(guān),效率改善分別為18.1%,13.5%,17.2%,14.3%,19.1%,17.1%,16.8%,18.2%,18.8%,14.5%,其平均值為16.8%。
若忽略數(shù)據(jù)在網(wǎng)絡中的傳輸時間,發(fā)起異步式調(diào)用的周期為Tinvoke,數(shù)據(jù)簽名加密的周期為Tenc,異步式服務周期為Ts,數(shù)字簽名認證的周期為Tdec,則異步式調(diào)用周期 Tasy=Tinvoke+Tenc+Ts+Tdec n級聯(lián)式異步調(diào)用周期為 而優(yōu)化后級聯(lián)異步調(diào)用周期為 性能提高為 分析實驗數(shù)據(jù),雖然AMHKA算法給異步式調(diào)用帶來的性能損失為20%左右,而對于級聯(lián)式異步式調(diào)用的優(yōu)化提高平均值為16%,基本改善了AMHKA算法的損失。理想狀態(tài)下,隨著節(jié)點數(shù)量的增加,基本可以忽略第一次和最后一次安全調(diào)用帶來的性能損失。但在實際情況下,由于一條電路的組成節(jié)點數(shù)量不會超過20個(實驗中測試的級聯(lián)調(diào)用的節(jié)點數(shù)量平均為12個節(jié)點),而且節(jié)點之間傳輸數(shù)據(jù)所需時間不同,節(jié)點數(shù)增加同樣導致傳輸時間增加,因此無法完全抵消AMHKA算法帶來的性能損失,經(jīng)過實驗測試,最佳情況下可以將性能損失控制在4.6%左右。
權(quán)利要求
1.一種基于異步式安全調(diào)用的編譯方法,其特征是從異步式調(diào)用節(jié)點集合中選擇具有相關(guān)的調(diào)用序列,將該序列集合組合成為一個安全調(diào)用域,通過密鑰來控制域內(nèi)外部的數(shù)據(jù)交互,以達到保證異步式調(diào)用序列的效率和安全性,它包括下列步驟
步驟A將網(wǎng)絡構(gòu)件通過服務域的方式劃分為若干個網(wǎng)絡服務區(qū)域模型;
步驟B針對不同服務域的異步式調(diào)用進行異步式消息公鑰認證,產(chǎn)生具有安全認證的程序塊;
步驟C采用編譯掃描算法分析步驟B程序塊中的級聯(lián)式異步調(diào)用分析P1……Pn調(diào)用序列中與發(fā)起調(diào)用節(jié)點P1具有相同服務域的節(jié)點Pi,相鄰兩個屬于同一服務域節(jié)點之間的調(diào)用序列即為級聯(lián)式異步調(diào)用程序塊。
2.根據(jù)權(quán)利要求1所述的基于異步式安全調(diào)用的編譯方法,其特征在于異步式消息公鑰認證的過程為
調(diào)用發(fā)起構(gòu)件P將公鑰與異步式請求一起發(fā)送給提供服務的服務器S,同時將私鑰發(fā)送回調(diào)構(gòu)件Q所在的服務域;
當服務器S完成服務運算后,用公鑰將服務結(jié)果加密后,通過回調(diào)函數(shù)處理網(wǎng)絡構(gòu)件Q;
構(gòu)件Q所屬的服務域用私鑰對回調(diào)數(shù)據(jù)的合法性進行驗證,若該數(shù)據(jù)合法則修改服務域中構(gòu)件的屬性。
3.根據(jù)權(quán)利要求1或2所述的基于異步式安全調(diào)用的編譯方法,其特征在于還包括如下步驟對步驟C分析得到的級聯(lián)式異步調(diào)用程序塊采用安全序列重構(gòu)算法進行優(yōu)化。
4.根據(jù)權(quán)利要求3所述的基于異步式安全調(diào)用的編譯方法,其特征在于所述安全序列重構(gòu)算法的基本過程為掃描第一次異步式服務調(diào)用代碼,對數(shù)據(jù)進行加密運算后嵌入數(shù)字水印signature,并將私鑰發(fā)送給域服務器的守護進程;掃描最后一次回調(diào)函數(shù),在數(shù)據(jù)接受后,調(diào)用服務器守護進程,使用私鑰對接受的數(shù)據(jù)進行數(shù)字簽名認證。
5.根據(jù)權(quán)利要求1或2所述的基于異步式安全調(diào)用的編譯方法,其特征在于根據(jù)構(gòu)件所屬的服務域,異步式調(diào)用方式包括同域調(diào)用、異域調(diào)用和異域回調(diào)中的至少一種類型。
6.根據(jù)權(quán)利要求4所述的基于異步式安全調(diào)用的編譯方法,其特征在于根據(jù)構(gòu)件所屬的服務域,異步式調(diào)用方式包括同域調(diào)用、異域調(diào)用和異域回調(diào)中的至少一種類型。
全文摘要
本發(fā)明提供了一種基于異步式安全調(diào)用的優(yōu)化編譯方法,該方法首先從異步式調(diào)用節(jié)點集合中選擇具有相關(guān)的調(diào)用序列,將該序列集合組合成為一個安全調(diào)用域,再通過密鑰來控制域內(nèi)外部的數(shù)據(jù)交互,以達到保證異步式調(diào)用序列的效率和安全性。本發(fā)明通過建立異步式服務調(diào)用的模型,將具有相關(guān)性的異步式調(diào)用進行體系結(jié)構(gòu)方式的耦合,通過集合體的方式將具有統(tǒng)一服務區(qū)域的異步式調(diào)用作為一個整體原子進行安全性的控制,提高了異步式調(diào)用的安全性和調(diào)用效率。
文檔編號H04L9/32GK101179384SQ20071015716
公開日2008年5月14日 申請日期2007年11月23日 優(yōu)先權(quán)日2007年11月23日
發(fā)明者陽 李, 卿 吳 申請人:杭州師范大學, 陽 李