白盒加密算法在移動Agent的復(fù)合服務(wù)中的應(yīng)用

針對基于移動Agent的服務(wù)復(fù)合的脆弱性,今天我給大家一種用于移動Agent復(fù)合服務(wù)的白盒加密算法。這種加密算法通過引入有限域上的分塊矩陣乘法和帶輸入輸出變換的安全加法器,將密鑰隱藏在一系列的數(shù)據(jù)表中,由此來實現(xiàn)基于加密函數(shù)的安全數(shù)據(jù)文件加密,能夠應(yīng)對白盒攻擊環(huán)境下密鑰泄漏的安全風(fēng)險。這種加密算法代碼體積較小,適合于移動Agent在非固定式服務(wù)復(fù)合時使用。

一、白盒攻擊環(huán)境下的安全風(fēng)險分析

白盒攻擊環(huán)境(white2boxattackcontext,WBAC)是指攻擊者擁有適應(yīng)性選擇明文攻擊的條件,且對加密軟件及其運行環(huán)境擁有完全的控制權(quán)。例如,對程序運行的二進(jìn)制追蹤、讀取內(nèi)存中的密鑰和程序執(zhí)行的中間結(jié)果、對軟件進(jìn)行任意的靜態(tài)分析,以及通過改變子計算的結(jié)果來進(jìn)行攝動分析,等等。

白盒加密算法在移動Agent的復(fù)合服務(wù)中的應(yīng)用

移動Agent由于移動性和自治性,是實現(xiàn)探索式和半固定式的服務(wù)復(fù)合的有力工具。但是,安全問題卻成為目前制約其應(yīng)用的最大障礙。比如,在很多的實際應(yīng)用中,由于Agent運行的物理環(huán)境受到他人的控制,處于白盒攻擊環(huán)境之中,用于加密的密鑰不能夠由Agent來攜帶。以圖1所示的復(fù)合服務(wù)為例,這是一個典型的存在非信任關(guān)系和利益沖突的白盒攻擊環(huán)境。在詢價操作中,每個供應(yīng)商的報價都應(yīng)對其他的供應(yīng)商保密,這就要求進(jìn)行服務(wù)復(fù)合的移動Agent能夠在白盒攻擊環(huán)境下安全地加密計算且不泄漏密鑰。

針對此類脆弱性,可以將安全需求抽象為對基于加密函數(shù)計算的需求:服務(wù)A有計算函數(shù)f的算法,服務(wù)B有數(shù)據(jù)x且愿意幫助服務(wù)A計算出f(x),但A不希望B知道f,而且B在計算時也無須與A交互。

從軟件實現(xiàn)的角度,則應(yīng)針對此類脆弱性引入混淆變換。其實質(zhì)是提供了一種轉(zhuǎn)換機(jī)制,使轉(zhuǎn)換后的程序(或其反編譯結(jié)果)難以被理解,但具有相同的可觀測行為。

基于對安全需求的分析?,F(xiàn)提出一種白盒加密算法以控制復(fù)合服務(wù)的安全風(fēng)險。該加密算法實現(xiàn)了對加密函數(shù)的加密計算,也可視為對加密函數(shù)代碼混淆變換的產(chǎn)物,具有較小的體積和較快的計算速度。加密算法代碼隨Agent移動時,占用帶寬較小,且可以在瘦客戶端上高效運行。

二、白盒加密算法

1、Khazad對稱加密算法

Khazad是一個有64位對稱塊的加密算法,密鑰長度為128位,是新歐洲密碼標(biāo)準(zhǔn)的候選方案之一。

Khazad是一個迭代對合的塊加密算法,由一系列依賴于密鑰的輪變換操作組成。這些操作的對象都是64bit(比特)的數(shù)據(jù)塊(可以視為GF(2的8次方)8中的元素),稱為加密的“狀態(tài)”。其輪變換涉及如下三個層:

(1)非線性層

函數(shù)γ:GF(28)8→GF(28)8可以看作對自變量中所有字節(jié)并行應(yīng)用非線性置換盒S:GF(28)→GF(28),x|→S[x]所得,即γ(a)=bΖbi=S[ai],0≤i≤7。S的設(shè)計原則之一是要求S為對合變換,即?x∈GF(28),S[S[x]]=x。顯然,γ也是對合變換。

(2)線性擴(kuò)散層

線性擴(kuò)散層的實質(zhì)是線性變換,其對應(yīng)的變換θ定義如下:

白盒加密算法在移動Agent的復(fù)合服務(wù)中的應(yīng)用

容易驗證,H是對稱陣,也是酉陣,所以,θ是對合變換。

(3)密鑰作用層

密鑰作用層對應(yīng)的函數(shù)為σ[k]:GF(28)8→GF(28)8,σ[k]利用密鑰k∈GF(28)8,對輸入執(zhí)行如下操作:

白盒加密算法在移動Agent的復(fù)合服務(wù)中的應(yīng)用

將上述三層疊加起來,可得輪函數(shù):

白盒加密算法在移動Agent的復(fù)合服務(wù)中的應(yīng)用

令R為加密算法的輪數(shù)(標(biāo)準(zhǔn)值R=8),對密鑰K即有:

白盒加密算法在移動Agent的復(fù)合服務(wù)中的應(yīng)用

三、基于移動Agent的復(fù)合服務(wù)的白盒加密算法

此處給出一種基于移動Agent的復(fù)合服務(wù)的白盒加密算法。該加密算法通過引入有限域上的分塊矩陣乘法和帶輸入輸出變換的安全加法器,將密鑰隱藏在一系列的數(shù)據(jù)表中,實現(xiàn)了基于加密函數(shù)的安全數(shù)據(jù)文件加密,能夠應(yīng)對白盒攻擊環(huán)境下密鑰泄漏的安全風(fēng)險。

記H=(hi,j)∈GF(28)8×8,則:

白盒加密算法在移動Agent的復(fù)合服務(wù)中的應(yīng)用

對b=aH,設(shè)a=(a1,…,a8),b=(b1,…,b8),顯然有:

白盒加密算法在移動Agent的復(fù)合服務(wù)中的應(yīng)用

其中:

白盒加密算法在移動Agent的復(fù)合服務(wù)中的應(yīng)用

由以上的分析,令θi為線性擴(kuò)散層的一部分。定義如下:

白盒加密算法在移動Agent的復(fù)合服務(wù)中的應(yīng)用

顯然,將θ1,θ2,…,θ8組合起來,就可以得到線性變換θ。

令第r輪的第i個輪輸出變換為τr,i.τr,i在白盒加密算法的實現(xiàn)中被定義為2個4bit置換的組合,這2個置換依次記作τ1r,i和τ2r,i。

令第r輪的第i個輪中間變換為πr,i.πr,i也在白盒加密算法的實現(xiàn)中被定義為16個4bit置換的組合,這16個置換依次記作π1r,i,…,π16r,i。

定義白盒子輪函數(shù)如下:

白盒加密算法在移動Agent的復(fù)合服務(wù)中的應(yīng)用

在實現(xiàn)中,每個函數(shù)ρW[r,i,K]被定義為1張8bit輸入64bit輸出的表,記此類表為A型表。

為將白盒子輪函數(shù)的輸出疊加起來得到白盒輪函數(shù),令:

白盒加密算法在移動Agent的復(fù)合服務(wù)中的應(yīng)用

如果直接計算GF(28)8上的加法,將導(dǎo)致運算中間結(jié)果的泄漏,破壞安全性.所以,ψW應(yīng)當(dāng)通過多次應(yīng)用圖2所示的結(jié)構(gòu)來實現(xiàn)加法.其中,相鄰的輸入置換和輸出置換對應(yīng)互為逆變換.圖2所示的運算組件構(gòu)成一個函數(shù),在實現(xiàn)中定義為1張8bit輸入、4bit輸出的表。

白盒加密算法在移動Agent的復(fù)合服務(wù)中的應(yīng)用

進(jìn)一步,可以按照圖3中所示的方式定義函數(shù)φW[r,j]:GF(28)8→GF(28),r=0,1,…,8,j=1,…,8.實際上,φW[r,j]由兩個如圖3中所示的結(jié)構(gòu)組成.在實現(xiàn)中,每個φW[r,j]按照圖3所示的方式被定義為15張8bit輸入、4bit輸出的表,記此類表為B型表。

白盒加密算法在移動Agent的復(fù)合服務(wù)中的應(yīng)用

設(shè)τr為τr,1,…,τr,8的組合,πr為πr,1,…,πr,8的組合,可得白盒Khazad加密函數(shù)KK,W[K]=τ8.θ。KK[K].τ0-1;可得白盒Khazad加密函數(shù)的逆運算為白盒Khazad解密函數(shù)K-1K,W[K]=τ0.KK[K]-1.θ.τ-18。顯然,I=K-1K,W[K].KK,W[K。

白盒AES(advancedencryptionstandard,高級加密標(biāo)準(zhǔn))加密器可以看作對AES加密器混淆變換的結(jié)果,符合混淆變換的定義。這里給出的白盒加密算法雖然不能嚴(yán)格符合混淆變換的定義,但并不影響應(yīng)用;給出的白盒Khazad加密算法的輸出與原始的Khazad加密算法的輸出是不同的,但是通過原始的Khazad解密算法,容易得到本加密算法對應(yīng)的解密算法。

如果移動Agent復(fù)合的某個服務(wù)需要使用其他服務(wù)加密計算的結(jié)果,則可以選用以下兩種方法之一:

(1)事先對密鑰協(xié)商使用密鑰交換技術(shù),密鑰交換的具體算法可根據(jù)需要選用。

(2)調(diào)用公共的可信任的安全服務(wù)中有關(guān)解密的方法。公共安全服務(wù)的解密方法所使用的密鑰由生成白盒加密器的服務(wù)提供,而公共安全服務(wù)是否提供解密結(jié)果,則可由加密者提供的安全策略來決定。

四、加密算法分析和比較

1、加密算法的安全性

Chow,Eisen和Johnson等人給出了白盒多樣性和白盒模糊性的概念,對白盒密碼術(shù)的安全性進(jìn)行初步分析。密鑰空間為密碼學(xué)算法的安全性評估提供了一個上界。類似地,如果編碼“加密”了實現(xiàn)的步驟,統(tǒng)計可能的編碼步驟也可以用于度量白盒密碼的安全性。這稱之為白盒多樣性。某一類型的表的多樣性即指其對應(yīng)的可能的不同構(gòu)造的數(shù)量。這一度量體現(xiàn)了實現(xiàn)的可變性。另一個更為重要的度量則是白盒模糊性。某一類型的表的白盒模糊性即指其中確定的某個表的可能的不同構(gòu)造的數(shù)量。這一度量體現(xiàn)了某個表的具體解釋的多樣性。遺憾的是,白盒模糊性自提出以來,尚未發(fā)現(xiàn)有效的計算方法。

對于A型表,輪輸出變換有(24!)×(24!)種構(gòu)造方法,輪中間變換有(24!)16種構(gòu)造方法,輪密鑰有264種可能,其白盒多樣性為(24!)2×(24!)16×264=(16!)18×264。

對于B型表,2個輸入置換各有(24!)種構(gòu)造方法,1個輸出置換有(24!)種構(gòu)造方法,其白盒多樣性為(24!)2×(24!)=(16!)3>2130。

根據(jù)上述計算,加密算法的白盒多樣性小于白盒AES加密算法,但其數(shù)值仍足以提供較好的安全性。

Billet,Gilbert和Ech2Chatbi給出了一種從白盒AES的實現(xiàn)中提取密鑰的方法,但SyncroSoft已經(jīng)改進(jìn)了設(shè)計并能夠抵抗這種攻擊。Jacob,Boneh和Felten提出了一種通過注入故障來對白盒AES(dataencryptionstandard,數(shù)據(jù)加密標(biāo)準(zhǔn))攻擊的方法,但他們在同一篇論文中給出了相應(yīng)的對策,且該方法不適用于對本加密算法攻擊。Wyseur,Michiels和Gorissen等通過對一個混淆后的輪進(jìn)行差分分析,從白盒DES的實現(xiàn)中提取密鑰。但是,因為白盒DES引入了兩個額外的變換,這一方法并不能破解白盒DES加密的結(jié)果,同時,由于對T變換做了一些限制,不具有廣泛應(yīng)用的價值,也不能實現(xiàn)對本算法的攻擊.Goubin,Masereel和Quisquater最近提出了一種新的攻擊方法,能夠攻擊現(xiàn)有的各種白盒DES實現(xiàn)方法,包括Link和Neumann提供的改進(jìn)后的實現(xiàn)方法。

這一方法使用C語言編程實現(xiàn)后,進(jìn)行了攻擊測試,取得了較好的攻擊效果.由于DES和AES在設(shè)計上有相當(dāng)大的差異,白盒DES的實現(xiàn)方法與白盒AES的實現(xiàn)方法也有明顯的不同,該方法不適合于攻擊白盒AES,也不適合于攻擊本加密算法。

將白盒Khazad加密器用于保護(hù)移動Agent的有限時間黑盒,看來是可行的,至少目前沒有發(fā)現(xiàn)可以在較短時間內(nèi)對其有效攻擊的方法,且其中兩種表的白盒多樣性數(shù)值相當(dāng)大。

2、代碼體積和時間復(fù)雜度及比較

白盒AES加密算法的輸出與原始的AES算法的輸出是相同的。這是本加密算法和白盒AES的不同之處。本做法有利于減小加密器的體積。給出的白盒加密算法的實現(xiàn)體積分析如下:每一輪需要8個A型表,總共需要8×8個A型表。每個A型表需要28×64bit=28×8byte(字節(jié))=211byte,總共為8×8×211byte=217byte=128kb。每一輪需要8個φW[r,j]函數(shù),每個φW[r,j]函數(shù)需要15個B型表,總共需要8×8×15個B型表。每個B型表需要28×4bit=27byte,總共為120kb??傮w積為248kb,即253952byte,僅為白盒AES所需的770048byte的33%,更適用于移動Agent。

根據(jù)上面的分析,還可以求出每次加密運算需要的查表操作次數(shù)。由于白盒加密算法唯一的計算就是查表,比較表1和表2中給出的查表次數(shù)數(shù)據(jù),使用白盒AES(1次)加密128bit數(shù)據(jù),較之使用本算法(2次,每次64bit)加密128bit所要的查表計算次數(shù)多50%以上,由此即可估計出本算法的運算速度較白盒AES方法快。在查表時,耗費的時間與最終查出的具體內(nèi)容無關(guān),所以,只需針對每一種表格的所有可能輸入進(jìn)行實驗即可。下面兩個表格給出的實測耗時,就是對所有可能輸入消耗的時間計算的算術(shù)平均值。從實測數(shù)據(jù)也可以看出,本加密算法的使用對實際系統(tǒng)影響較小。由于Web服務(wù)和移動Agent平臺大多使用Java語言開發(fā),故使用Java編寫測試程序,運行環(huán)境為JDK1.5,測試所用計算機(jī)的CPU為奔騰1.73G。

白盒加密算法在移動Agent的復(fù)合服務(wù)中的應(yīng)用

根據(jù)實驗結(jié)果可知,在如前所述的實驗環(huán)境中使用白盒AES加密算法,每加密128bit數(shù)據(jù),約需17.5ns,而本加密算法只需約10.7ns。

本加密算法的解密算法與Khazad的解密算法非常相似,使用時不會對系統(tǒng)的性能帶來顯著影響。

3、其他相關(guān)工作比較

目前,關(guān)于混淆變換的研究成果,均未給出對于對稱加密方法的安全混淆;而基于加密函數(shù)計算的研究均未給出加密“對稱加密算法”的方法。

小知識之瘦客戶端

瘦客戶端(Thin Client)指的是在客戶端-服務(wù)器網(wǎng)絡(luò)體系中的一個基本無需應(yīng)用程序的計算機(jī)終端。 它通過一些協(xié)議和服務(wù)器通信,進(jìn)而接入局域網(wǎng)。作為應(yīng)用程序平臺的Internet的到來為企業(yè)應(yīng)用程序提供了一個全新的領(lǐng)域:一個基于Internet/intranet的應(yīng)用程序運用一個只包含一個瀏覽器的瘦客戶端。這個瀏覽器負(fù)責(zé)解釋、顯示和處理應(yīng)用程序的圖形用戶界面(GUI)和它的數(shù)據(jù)。這樣的一個應(yīng)用程序只需要被安裝在一個Web服務(wù)器上,用戶可以自動接收升級。一個解決方案只需要部署一次,甚至對成千的用戶也是如此,這種想法的確很吸引人,尤其是Internet技術(shù)幫我們緩解了一些傳統(tǒng)的應(yīng)用程序的障礙,比如防火墻和對多平臺的支持。