本發(fā)明涉及信息安全領(lǐng)域中保護方法,具體地說,涉及的是在不安全的軟件運行環(huán)境中進行安全加解密的基于隨機置換的白盒密碼的加密方法。
背景技術(shù):
隨著科學(xué)技術(shù)的發(fā)展,人們對電腦技術(shù)的研究更加地全面,對機密信息的探測途徑越來越多。對于密碼算法而言,傳統(tǒng)僅局限于通信信道中信息的截取與分析已經(jīng)無法滿足攻擊者的需求,他們已經(jīng)逐漸開始將目標定位于密碼算法的運行平臺(如個人電腦、服務(wù)器等),通過越來越先進的技術(shù)對算法運行時的內(nèi)部狀態(tài)進行觀測、改動等操作,從而獲取機密信息,破壞密碼算法所要保護的機密性、完整性、不可否認性等。
這樣的攻擊方式被稱之為白盒攻擊。傳統(tǒng)的密碼算法在這樣的攻擊環(huán)境的平臺上運行毫無安全性可言,因此需要研究開發(fā)出一種新的密碼技術(shù),能夠在不可信任平臺上運行時保證所需的安全性,達到更高級別信息安全的目的。
白盒密碼即是這樣一種密碼技術(shù),通過結(jié)合代數(shù)、概率、混淆、軟件保護、信息隱藏等知識,研究如何設(shè)計安全的白盒密碼算法和白盒攻擊環(huán)境下密碼算法的安全評估;用于保護密碼算法及其相關(guān)軟件在不可信任環(huán)境下的安全執(zhí)行;白盒密碼是對傳統(tǒng)黑盒密碼安全概念的一次顛覆,它將更加全面地保護機密信息。
白盒密碼可以應(yīng)用到任何在不可信任的運行平臺上執(zhí)行的密碼方案,因此其應(yīng)用前景非常的廣泛,可以應(yīng)用于數(shù)字內(nèi)容的安全發(fā)行,為內(nèi)容創(chuàng)作者和提供者的數(shù)字資產(chǎn)提供防止盜竊或濫用的安全保護;可以應(yīng)用于無線自組網(wǎng)絡(luò)、云計算等的安全計算,為不可信任終端處理機密信息提供防觀測、防篡改、防竊取等服務(wù);可以應(yīng)用于軟件保護,破壞軟件設(shè)計的原有的結(jié)構(gòu)從而防止逆向工程等等。
目前白盒密碼的設(shè)計大體分為兩大類:對已有的分組密碼設(shè)計白盒實現(xiàn)方案,新的白盒密碼算法。
在對已有的分組密碼設(shè)計白盒實現(xiàn)方案方面,主要有Chow等人在2002年提出的AES的白盒加密[1]和DES的白盒加密實現(xiàn)[2]。但是這兩種方案都陸續(xù)被攻破,即在有效的時間復(fù)雜度內(nèi)將AES或DES的加密密鑰恢復(fù)出來。
2009年,肖雅瑩等改進了Chow等人的白盒AES方案,提出了一種新的白盒AES實現(xiàn)方案[3]。但是在2013年,該方案被證明可以以232的復(fù)雜度恢復(fù)密鑰。
同年,肖雅瑩等提出了SMS4白盒實現(xiàn)算法[4],但在2013年,林婷婷等人對其進行分析,以低于247的時間復(fù)雜度恢復(fù)出密鑰。
2010年,Karroumi等人提出了基于雙重密碼的白盒AES[5],但此方案依舊被攻破。
而另一種設(shè)計白盒AES的方法是Bringer等人[6]在2006年提出,但在2010年攻破。
在新的白盒密碼算法方面,2014年,Alex Biryukov等人[7]提出了基于ASASA結(jié)構(gòu)的白盒密碼方案的構(gòu)造方法,但也在2015年被攻破。2015年,一種稱為Sapce-hard cipher[8]的白盒密碼方案也被提出,但其占用內(nèi)存空間過大,在實現(xiàn)效率上并不占有優(yōu)勢。
綜上所述,在白盒密碼的技術(shù)實現(xiàn)方面,到目前為止還未有公認的安全的且實現(xiàn)效率較高的白盒密碼方案出現(xiàn),因此,設(shè)計能夠抵抗白盒攻擊的安全有效的密碼算法迫在眉睫,是目前保證網(wǎng)絡(luò)安全的一個重要手段。
參考文獻:
[1]Stanley Chow,Philip A.Eisen,Harold Johnson,and Paul C.van Oorschot.White-Box Cryptography and an AES Implementation.In Proceedings of the 9th International Workshop on Selected Areas in Cryptography(SAC 2002),volume2595of Lecture Notes in Computer Science,pages 250–270.Springer,2002.
[2]Stanley Chow,Philip A.Eisen,Harold Johnson,and Paul C.van Oorschot.A white-box DES implementation for DRM applications.In Proceedings of the ACM Workshop on Security and Privacy in Digital Rights Management(DRM 2002).
[3]Yaying Xiao and Xuejia Lai.A secure implementation of white-box AES.In 2ndInternational Conference on Computer Science and its Applications(CSA 2009),pages 1-6.IEEE,2009.
[4]肖雅瑩,來學(xué)嘉.白盒密碼及SMS4算法的白盒實現(xiàn).裴定一,楊波.密碼學(xué)進展:中國密碼學(xué)會2009年會論文集.USA:Science Press USA Inc.,2009:24-34.
[5]Mohamed Karroumi.Protecting White-Box AES with Dual Ciphers.In Kyung Hyune Rhee and DaeHunNyang,editors,ICISC,volume 6829of Lecture Notes in Computer Science,pages 278-291.Springer,2010.
[6]Bringer J,Chabanne H,Dottax E.White Box Cryptography:Another Attempt[J].IACR Cryptology ePrint Archive,2006,2006:468.
[7]Biryukov A,Bouillaguet C,Khovratovich D.Cryptographic schemes based on the ASASA structure:Black-box,white-box,and public-key[M]//Advances in Cryptology–ASIACRYPT 2014.Springer Berlin Heidelberg,2014:63-84.
[8]Bogdanov A,Isobe T.White-box cryp-tography revisited:Space-hard ci-phers[C]//Proceedings of the 22nd ACM SIGSAC Conference on Computer and Communications Security.ACM,2015:1058-1069.
技術(shù)實現(xiàn)要素:
針對上述現(xiàn)有技術(shù)的不足,本發(fā)明的目的在于提出一種基于隨機置換的白盒密碼的加密方法,用于在白盒攻擊環(huán)境中保證加解密算法的順利進行,對機密信息進行最完善的保護。
本發(fā)明的技術(shù)解決方案如下:
一種基于隨機置換的白盒密碼的加密方法,該方法包括如下步驟:
步驟1、輸入混淆函數(shù)P;
步驟2、隨機置換S;
步驟3、輸出混淆函數(shù)Q;
所述的隨機置換S是指將n比特的所有串看作是一個集合,從這個集合映至自身的雙射稱為一個置換,從n比特到n比特的所有置換中隨機選取一個,即單一隨機置換。
所述的隨機置換S是由k個隨機選擇的單一隨機置換S1,S2,......,Sk并行排列而成,即并行隨機置換。
所述的隨機置換S是由多層并行隨機置換構(gòu)成,每層并行隨機置換的單一隨機置換Si的輸出是下一層并行隨機置換的單一隨機置換Si的輸入,即復(fù)合層隨機置換。
所述的隨機置換S是各單一隨機置換Si的輸出之間進行加、減、乘、除等運算后而成,即運算隨機置換。
所述的隨機置換S是單一隨機置換與運算隨機置換的任一結(jié)合,即迭代隨機置換。
與現(xiàn)有技術(shù)相比,本發(fā)明的有益效果是:針對現(xiàn)有白盒密碼方案容易被攻擊者恢復(fù)密鑰或者提取整個代碼的缺憾,使用了隨機置換作為整個加密方案的主要部件,白盒攻擊者除了能夠觀測到查找表以外不能獲得更多其它的信息,能夠保證該加密方案不會由于遭受到白盒攻擊而被攻擊者恢復(fù)整個加密,即復(fù)制出一個具有相同加密功能的算法;從而保證了在不可信任終端運行加密算法的安全性。
附圖說明
圖1為本發(fā)明基于隨機置換的白盒密碼的加密方法的流程圖;
圖2為防止代碼提取的方法流程圖;
圖3為本發(fā)明實施例并行隨機置換的示意圖;
圖4為本發(fā)明實施例多個隨機置換的組合構(gòu)造示意圖;
圖5為本發(fā)明實施例多層隨機置換的示意圖;
圖6為本發(fā)明實施例運算隨機置換的示意圖;
圖7為本發(fā)明實施例迭代隨機置換的示意圖;
圖8為本發(fā)明實施例迭代隨機置換的引入隨機值示意圖。
具體實施方式
下面結(jié)合附圖和實施例對本發(fā)明作進一步的詳細說明。
請先參閱圖1,圖1為本發(fā)明基于隨機置換的白盒密碼的加密方法的流程圖,如圖所示,一種基于隨機置換的白盒密碼的加密方法,包括輸入混淆函數(shù)P、隨機置換S、以及輸出混淆函數(shù)Q三步驟。其中,S是一個隨機置換,將n比特的所有串看作是一個集合,從這個集合映至自身的雙射稱為一個置換。從n比特到n比特的所有置換中隨機選取一個,即為隨機置換。P和Q是兩個單射,它們可以是線性的也可以是非線性的。
設(shè)輸入為x,x經(jīng)過P-S-Q的作用后,得到的輸出是y。將所有可能的輸入x和它們經(jīng)過P-S-Q的作用后得到的相應(yīng)的y做成一張查找表,在進行加密時就通過對這個表的查找來進行。輸入長度n是可選的,可以是n=8、n=16等等。
通常情況下,為了防止加密軟件被直接拷貝并使用在其它平臺上,在加密方案中,即為了防止整個查找表被提取出來(稱之為代碼提取,即code lifting)在其他的設(shè)備上使用,需要將P-1和Q-1嵌入到查找表所在設(shè)備的其余部件中,使得真實的明文X需要經(jīng)過P-1的處理后才能進入我們的方案中完成加密,而真實的密文Y則是y經(jīng)過Q-1的處理后的輸出,如圖2所示。
然而,對于這里的P-1和Q-1是如何嵌入到其他部件中并不是本發(fā)明所考慮內(nèi)容,不予詳細討論。在以下的描述中,將默認所有的算法的輸入輸出均要經(jīng)過P-1和Q-1的處理,而不再格外強調(diào)。
本發(fā)明利用了隨機置換作為主要的加密部件。由于n比特的隨機置換有2n!種,要在2n!種隨機置換中確定本發(fā)明使用的是哪一個隨機置換的概率是1/(2n!)。當(dāng)n≥4時,此概率小到幾乎可以忽略,即攻擊者能夠從通過觀察加密方案的執(zhí)行來確定使用的是哪一個置換的概率可以忽略。因此,本發(fā)明防止了其中所使用的置換被攻擊者確定,從而保證了攻擊者除了查找表以外不能獲得其它更多的信息。
除了上述的基本結(jié)構(gòu),還可以擴展為更多的形式。由于并不考慮P、Q的設(shè)計,因此這里的擴展所指的是隨機置換層S層的不同實現(xiàn)方式。
實施例1:
S層由多個隨機置換S1,S2,......,Sk經(jīng)過簡單的并行排列來代替,如圖3所示,這里S1,S2,......,Sk為k個隨機選擇的置換,令它們的輸入長度為t1,t2,......,tk,這里t1,t2,......,tk可以不同。假設(shè),S層的輸入為I,將I按照長度t1,t2,......,tk劃分為k個分塊,第一個分塊I1由S1進行置換,得到結(jié)果O1;第二個分塊I2由S2進行置換,得到結(jié)果O2,以此類推,最后將k個結(jié)果串聯(lián)起來,O1||O2||......||Ok即為S層的輸出。
實施例2:
S層由多個小的隨機置換Si經(jīng)過多種方式組合構(gòu)造完成,即下圖所示虛線框中的構(gòu)造,虛線框中的Si的組合構(gòu)造按照如圖4所示:
i)Si可以有多個,也可以只有一個。當(dāng)Si只有一個時,這時不存在多個Si組合構(gòu)造的情況,即為圖1的基本結(jié)構(gòu)。
ii)Si可以進行多次的交換位置的操作。即是說,S1,S2,......,Sk的輸出O=O1||O2||......||Ok將作為Sj1,Sj2,......,Sjk的輸入,這里j1,j2,......,jk為1,2,......,k的全排;而Sj1,Sj2,......,Sjk的輸出又將作為St1,St2,......,Stk的輸入,這里t1,t2,......,tk為1,2,......,k的另一個全排,以此類推,S1,S2,......,Sk的位置交換可以進行多次,如圖5所示,多層隨機置換。
iii)在ii)中每一層所使用的隨機置換可以是不同的,但需要保證上一層的輸出長度與下一層的輸入長度相同。
iv)各個隨機置換Si的輸出之間可以進行任意的加法、乘法等運算,如圖6所示。
v)可以引入其它的變換,將Si的輸出作為其他變換的輸入,或者將Si作為其他變換的一部分。其他的變換是指除隨機置換以外的任意變換,如線性變換、指數(shù)變換等等。如圖7所示,M即是一個線性變換,Sk則用來替代了Feistel結(jié)構(gòu)中的輪函數(shù)F。同理,還可以將其他已知的密碼結(jié)構(gòu)引入,例如AES、SMS4等,用隨機置換Si代替它們的S盒。
vi)可以在虛線框中的任何一個變換中加入隨機選擇數(shù)值,從而增加虛線框所表示的整個變換的隨機性。在圖7的示例中加入隨機值r1和r2作為示例,如圖8所示。
vii)完成一輪對Si的處理后,可以進行多輪迭代,如圖5所示。多輪迭代可以將所使用的隨機置換進一步地混淆。
viii)虛線框外輸入長度與輸出長度一致。
最后所應(yīng)說明的是,以上實施例僅用以說明本發(fā)明的技術(shù)方案而非限制,盡管參照較佳實施例對本發(fā)明進行了詳細說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解,可以對發(fā)明的技術(shù)方案進行修改或者等同替換,而不脫離本發(fā)明技術(shù)方案的精神和范圍,其均應(yīng)涵蓋在本發(fā)明的權(quán)利要求范圍當(dāng)中。