本技術實施例涉(she)及(ji)信息安全領(ling)域,尤其涉(she)及(ji)一(yi)種加密算法的白盒化方法、裝置、存儲介質(zhi)及(ji)電子設備。
背景技術:
1、目前網絡與智能(neng)終(zhong)端的(de)(de)普及(ji),各類隱私(si)數(shu)據(ju)在終(zhong)端讀取并(bing)加解密,而(er)終(zhong)端所(suo)處(chu)環境(jing)往往不可控,攻擊者或惡意用(yong)戶可通(tong)過逆向工程等(deng)技(ji)術(shu)獲取算法加解密產生的(de)(de)中間(jian)數(shu)據(ju),進而(er)恢復密鑰(yao),造成數(shu)據(ju)的(de)(de)不安(an)全(quan)性。而(er)為(wei)了防止數(shu)據(ju)泄露,大多(duo)使用(yong)密碼安(an)全(quan)硬(ying)件(jian)解決(jue)方案或tee等(deng)可信(xin)執行環境(jing)技(ji)術(shu),或使用(yong)查(cha)找(zhao)表(biao)(biao)的(de)(de)白(bai)(bai)盒實(shi)現(xian)方式等(deng)。例如,現(xian)有(you)其他(ta)關于(yu)sm4的(de)(de)白(bai)(bai)盒實(shi)現(xian),大多(duo)使用(yong)查(cha)找(zhao)表(biao)(biao)的(de)(de)方式實(shi)現(xian),受存(cun)儲(chu)空(kong)間(jian)限制無法使用(yong)更大的(de)(de)變換。所(suo)以這些解決(jue)方案仍然存(cun)在成本(ben)高、存(cun)儲(chu)空(kong)間(jian)受限、安(an)全(quan)性無法保證的(de)(de)情況(kuang)。
技術實現思路
1、本技術實施例提供一(yi)種加密(mi)算法(fa)的(de)白(bai)盒化方法(fa)、裝置、存(cun)(cun)儲(chu)(chu)介(jie)質(zhi)及電子設備,不需(xu)(xu)(xu)要查(cha)找表,也就是不需(xu)(xu)(xu)要存(cun)(cun)儲(chu)(chu)大(da)量查(cha)找表,只需(xu)(xu)(xu)存(cun)(cun)儲(chu)(chu)相關(guan)方程組系數即可,所需(xu)(xu)(xu)存(cun)(cun)儲(chu)(chu)空間較(jiao)小。
2、第一(yi)方(fang)面,本技術實(shi)施例(li)提(ti)供的一(yi)種加(jia)密(mi)算(suan)法(fa)的白盒化方(fang)法(fa),包括如下步(bu)驟(zou):
3、獲取(qu)白盒(he)密(mi)鑰(yao),所述白盒(he)密(mi)鑰(yao)為嵌入至軟件的多個隱式方程組{f0,f1,…,
4、fi,…,fn-1};
5、依次求解每(mei)一所述隱式方(fang)程組fi(si+1,si)=0,i=0,1,…,n-1,實現(xian)對明文p基(ji)于(yu)第(di)i輪加密獲得的密文si進行第(di)i+1輪加密,獲取(qu)第(di)i+1輪密文
6、si+1;
7、并且(qie),s0=p;第n輪加(jia)密(mi)完(wan)成(cheng)后求解(jie)隱式方程組fn-1(sn,sn-1)=0,獲(huo)得密(mi)文c=sn,n為整數;
8、其(qi)中,每一所述隱式方(fang)程組fi基于(yu)第i輪(lun)加密(mi)的輪(lun)密(mi)鑰rki生成,
9、rki=hash(i,key),i=0,1,…,n-1
10、key為預先設置(zhi)的所(suo)述加密(mi)算法的主密(mi)鑰(yao)。
11、根據該方(fang)法,由(you)于(yu)hash算(suan)法的單向性特(te)點(dian),使(shi)得(de)本方(fang)法可(ke)以確保n輪(lun)(lun)的輪(lun)(lun)密鑰(yao)互不關聯,即通過其(qi)中一個(ge)或(huo)多個(ge)輪(lun)(lun)密鑰(yao)推(tui)出密鑰(yao)key或(huo)其(qi)它輪(lun)(lun)密鑰(yao)計算(suan)不可(ke)行。
12、在(zai)一種(zhong)可能(neng)的設計中,所(suo)述的加密(mi)算法(fa)的白盒(he)化(hua)方(fang)法(fa),其特征在(zai)于,
13、所(suo)述加(jia)密算法為sm4算法;
14、所述明文p分(fen)成多(duo)個(ge)128比特的塊;
15、所述明文(wen)p基于隱式方程組{f0,f1,…,f31},依次(ci)采用f0,f1,…,f31進行(xing)32輪輪加(jia)密生成密文(wen)c;
16、每一隱式方(fang)程(cheng)組fi(xi,xi+1,xi+2,xi+3,xi+4)=0;
17、所述(shu)si+1=xi+4,所述(shu)si為(xi,xi+1,xi+2,xi+3)的函數;
18、所述xi,xi+1,xi+2,xi+3,xi+4均為根據所述明文p劃分而(er)成的(de)128比特的(de)數據塊。
19、根(gen)據該設計(ji),使用每一(yi)輪的輪密鑰生(sheng)成每一(yi)輪的隱(yin)(yin)式(shi)方(fang)(fang)程(cheng)組,通過求解(jie)(jie)隱(yin)(yin)式(shi)方(fang)(fang)程(cheng)組的方(fang)(fang)式(shi)實(shi)現(xian)每一(yi)輪的輪運算,將(jiang)輪運算轉(zhuan)化為(wei)通過求解(jie)(jie)隱(yin)(yin)式(shi)方(fang)(fang)程(cheng)組實(shi)現(xian),存儲(chu)方(fang)(fang)程(cheng)組只需要存儲(chu)方(fang)(fang)程(cheng)組的系數,對方(fang)(fang)程(cheng)組進行仿射編碼變換,不(bu)會增大方(fang)(fang)案所(suo)需的存儲(chu)空間,因(yin)此方(fang)(fang)案只需較(jiao)小的存儲(chu)空間。
20、在一(yi)種(zhong)可能的(de)設計中(zhong),所述(shu)的(de)加密算法的(de)白盒化方法,其特(te)征在于,在所述(shu)隱(yin)式方程(cheng)組{f0,f1,…,f31}中(zhong),每(mei)一(yi)所述(shu)隱(yin)式方程(cheng)組fk(xk,xk+1,xk+2,xk+3,xk+4)有多個方程(cheng),0≤k≤31,且(qie)每(mei)個方程(cheng)形式如下:
21、
22、其中,
23、ak,i,j,vk,j,uk,i,bk∈{0,1},
24、(xi,xi+1,xi+2,xi+3)=(x0,…,x31,x32,…,x63,x64,…,x95,x96,…,x127),
25、xi+4=(y0,y1,…,y31)
26、根據該設計,每輪(lun)的(de)隱式方程(cheng)(cheng)組(zu)(zu)為(wei)半仿(fang)射方程(cheng)(cheng),因此可(ke)以使用(yong)32階仿(fang)射變(bian)換(huan)(huan)或更高(gao)階仿(fang)射變(bian)換(huan)(huan)(在32個方程(cheng)(cheng)的(de)基礎上引入一些隨機方程(cheng)(cheng)組(zu)(zu))仿(fang)射變(bian)換(huan)(huan)對(dui)方程(cheng)(cheng)組(zu)(zu)的(de)變(bian)量(liang)進行編碼變(bian)換(huan)(huan),而(er)存(cun)(cun)儲方程(cheng)(cheng)組(zu)(zu)只需要存(cun)(cun)儲方程(cheng)(cheng)組(zu)(zu)的(de)系數,對(dui)方程(cheng)(cheng)組(zu)(zu)進行仿(fang)射編碼變(bian)換(huan)(huan)后,所需存(cun)(cun)儲空間(jian)幾乎不變(bian),不會增大(da)方案(an)所需的(de)存(cun)(cun)儲空間(jian)。
27、在一種可能的(de)設計(ji)中,所(suo)述的(de)加密(mi)算法的(de)白盒化方法,其(qi)特征在于,
28、每(mei)一所述隱(yin)式(shi)(shi)方(fang)程組fk通過如下方(fang)式(shi)(shi)構建:
29、步驟1,逆(ni)函數的隱式(shi)實現
30、獲(huo)取(qu)有限域上(shang)的逆函(han)數(shu),將(jiang)其轉換(huan)為隱式表示(shi)(shi),所述轉換(huan)為隱式表示(shi)(shi)是對逆函(han)數(shu)y=x-1,尋找函(han)數(shu)u(x,y),使得
31、步驟(zou)2,s盒的隱式(shi)實現方程(cheng)組(zu)
32、將sm4算法中的s盒(he)變換,轉換為以下(xia)n個方程
33、
34、k=1,…,n
35、其中,所述(shu)x為(wei)s盒(he)的輸入,y為(wei)s盒(he)的輸出,所述(shu)n個方(fang)程(cheng)為(wei)關(guan)于(x,y)的半仿射方(fang)程(cheng);
36、b與(yu)c為s盒代數(shu)表達式中的常(chang)數(shu),ak,vk,uk為以矩陣形式表示逆函數(shu)的隱式實現方程(cheng)組的關聯(lian)參數(shu);
37、步驟3,對s盒的隱式實現(xian)方程組(zu)作線性變換(huan),獲取輪函(han)數(shu)的隱式方程組(zu)的實現(xian)
38、對于sm4的輪(lun)函數
39、
40、將其看(kan)作對4個s盒(he)做線(xian)性變換,對s盒(he)的(de)隱(yin)式實(shi)現方程組作線(xian)性變換,獲得關于(yu)sm4輪函數的(de)隱(yin)式實(shi)現。
41、根(gen)據該設(she)計,對4個(ge)s盒(he)做線(xian)性(xing)變(bian)換(huan),可(ke)對s盒(he)的(de)隱式(shi)實(shi)(shi)現(xian)方(fang)程(cheng)組(zu)作線(xian)性(xing)變(bian)換(huan),獲(huo)得關(guan)于sm4輪函數的(de)隱式(shi)實(shi)(shi)現(xian),具(ju)有方(fang)法(fa)簡單容易(yi)實(shi)(shi)現(xian)的(de)特點。
42、在一(yi)種可能(neng)的(de)(de)設計中,所(suo)述的(de)(de)加(jia)密算法(fa)的(de)(de)白盒化方法(fa),其特(te)征在于,所(suo)述方法(fa)還包括對s盒的(de)(de)隱(yin)式方程組作仿射變換,隱(yin)藏方程組所(suo)攜帶的(de)(de)白盒密鑰(yao)信息的(de)(de)步驟。
43、第二方面,本(ben)技(ji)術實(shi)施例還提供一種加密算法的白盒(he)化(hua)裝(zhuang)置(zhi),包(bao)括如下步驟:
44、獲(huo)取單元(yuan),用于獲(huo)取白盒密(mi)鑰,所(suo)述(shu)白盒密(mi)鑰為嵌入(ru)至(zhi)軟(ruan)件(jian)的多個隱式方程組{f0,f1,…,fi,…,fn-1};
45、處(chu)理單(dan)元(yuan),用于(yu)依次求(qiu)解每一所述(shu)隱式方程(cheng)組fi(si+1,si)=0,i=0,1,…,n-1,實(shi)現對(dui)明文(wen)p基于(yu)第(di)i輪(lun)加密獲得的密文(wen)si進行(xing)第(di)i+1輪(lun)加密,獲取第(di)i+1輪(lun)密文(wen)si+1;
46、并(bing)且,s0=p;第n輪(lun)加密完成(cheng)后求解隱(yin)式方程組fn-1(sn,sn-1)=0,獲(huo)得(de)密文c=sn,n為整數;
47、其中,每一所(suo)述隱式方程(cheng)組(zu)fi基于(yu)第i輪加密的輪密鑰rki生(sheng)成,
48、rki=hash(i,key),i=0,1,…,n-1
49、key為(wei)預先設置的(de)所述加(jia)密(mi)算法的(de)主密(mi)鑰。
50、在(zai)一(yi)種可能的(de)設計中,所述加密算法的(de)白盒化(hua)裝置,其(qi)特征在(zai)于,
51、所述加密(mi)算(suan)法為sm4算(suan)法;
52、所述明文(wen)p分成多個128比特的塊;
53、所述明文p基于隱式(shi)方(fang)程組{f0,f1,…,f31},依次采(cai)用f0,f1,…,f31進行32輪(lun)輪(lun)加密生成密文c;
54、每一(yi)隱式(shi)方程(cheng)組fi(xi,xi+1,xi+2,xi+3,xi+4)=0;
55、所(suo)述si+1=xi+4,所(suo)述si為(xi,xi+1,xi+2,xi+3)的函(han)數;
56、所述xi,xi+1,xi+2,xi+3,xi+4均為根據所述明文p劃(hua)分(fen)而(er)成的(de)128比(bi)特的(de)數據塊。
57、在一種(zhong)可(ke)能的設(she)計中,所述(shu)的加(jia)密算法的白(bai)盒化裝置,其特征在于,在所述(shu)隱式方程(cheng)(cheng)組{f0,f1,…,f31}中,每(mei)一所述(shu)隱式方程(cheng)(cheng)組fk(xk,xk+1,xk+2,xk+3,xk+4)有多個(ge)方程(cheng)(cheng),0≤k≤31,且每(mei)個(ge)方程(cheng)(cheng)形式如下:
58、
59、其中,
60、ak,i,j,vk,j,uk,i,bk∈{0,1},
61、(xi,xi+1,xi+2,xi+3)=(x0,…,x31,x32,…,x63,x64,…,x95,x96,…,x127),
62、xi+4=(y0,y1,…,y31)
63、在(zai)一種可能的設計中,所(suo)述(shu)的加(jia)密算法的白盒化裝置,其(qi)特征(zheng)在(zai)于,
64、每(mei)一所述隱式方程組fk通(tong)過如下方式構建:
65、步驟1,逆函(han)數的隱式實現
66、獲取有限域上的逆函(han)數(shu),將其(qi)轉換為(wei)隱式(shi)(shi)表示,所(suo)述轉換為(wei)隱式(shi)(shi)表示是對逆函(han)數(shu)y=x-1,尋找函(han)數(shu)u(x,y),使(shi)得
67、步驟2,獲取(qu)s盒的隱(yin)式實現方程組
68、將sm4算法中(zhong)的s盒變換,轉換為(wei)以下n個方程
69、
70、k=1,…,n
71、其中,所述x為(wei)s盒(he)的(de)輸(shu)入,y為(wei)s盒(he)的(de)輸(shu)出(chu),所述n個(ge)方程為(wei)關于(x,y)的(de)半(ban)仿射方程;
72、b與c為s盒代數(shu)(shu)表達式(shi)(shi)中(zhong)的(de)常(chang)數(shu)(shu),ak,vk,uk為以矩陣形式(shi)(shi)表示逆(ni)函數(shu)(shu)的(de)隱式(shi)(shi)實(shi)現方(fang)程組的(de)關聯參數(shu)(shu);
73、步(bu)驟3,對s盒的(de)隱式實現(xian)方(fang)程組作線(xian)性變(bian)換,獲取輪(lun)函數的(de)隱式方(fang)程組的(de)實現(xian)
74、對(dui)于sm4的輪(lun)函數
75、
76、將其(qi)看作(zuo)(zuo)對4個s盒做線(xian)性變換,對s盒的隱式(shi)實現方程組(zu)作(zuo)(zuo)線(xian)性變換,獲(huo)得關于sm4輪函數(shu)的隱式(shi)實現。
77、在一(yi)種(zhong)可能(neng)的(de)設計中,所述的(de)加(jia)密算法的(de)白盒(he)化裝置,其(qi)特(te)征(zheng)在于,所述方法還包括(kuo)對s盒(he)的(de)隱式方程組作仿射變換,隱藏(zang)方程組所攜帶的(de)白盒(he)密鑰信(xin)息的(de)步驟。
78、第(di)三方(fang)面,本技術實(shi)(shi)施例還提供了一種計算(suan)機(ji)可讀存儲(chu)(chu)介質,所述(shu)計算(suan)機(ji)可讀存儲(chu)(chu)介質內存儲(chu)(chu)有計算(suan)機(ji)程序(xu),所述(shu)計算(suan)機(ji)程序(xu)被處理器執行時(shi),實(shi)(shi)現第(di)一方(fang)面及其任意一種設計的方(fang)法。
79、第(di)四方面(mian),本(ben)技術實(shi)施例還(huan)提供了一種電(dian)子設備(bei),包括(kuo)存儲器(qi)(qi)和(he)處(chu)(chu)理器(qi)(qi),所述(shu)存儲器(qi)(qi)上存儲有(you)可在所述(shu)處(chu)(chu)理器(qi)(qi)上運(yun)行(xing)的計算機程序,當所述(shu)計算機程序被所述(shu)處(chu)(chu)理器(qi)(qi)執(zhi)行(xing)時,使得(de)所述(shu)處(chu)(chu)理器(qi)(qi)實(shi)現第(di)一方面(mian)及(ji)其任意一種設計的方法。
80、第二(er)方面(mian)(mian)至(zhi)第四方面(mian)(mian)及其任意一種設(she)計所帶來(lai)的(de)(de)技術效果可參見第一方面(mian)(mian)對應的(de)(de)設(she)計所帶來(lai)的(de)(de)技術效果,此處(chu)不(bu)再贅述。
81、本技術實(shi)施例對輪函(han)數(shu)的(de)隱(yin)式方(fang)程(cheng)(cheng)組的(de)仿射(she)編碼(ma)階數(shu)沒有限制,即仿射(she)變換(huan)使得攻(gong)擊者恢復仿射(she)變換(huan)的(de)難度更(geng)大(da),從而提供更(geng)高的(de)安全(quan)性;另(ling)外存(cun)(cun)(cun)(cun)儲(chu)(chu)(chu)仿射(she)方(fang)程(cheng)(cheng)組只需要(yao)存(cun)(cun)(cun)(cun)儲(chu)(chu)(chu)相關方(fang)程(cheng)(cheng)組的(de)系數(shu),所需存(cun)(cun)(cun)(cun)儲(chu)(chu)(chu)空(kong)間較小(xiao),且對于這些(xie)方(fang)程(cheng)(cheng)組做仿射(she)編碼(ma)變換(huan)之后存(cun)(cun)(cun)(cun)儲(chu)(chu)(chu)這些(xie)方(fang)程(cheng)(cheng)組的(de)所需存(cun)(cun)(cun)(cun)儲(chu)(chu)(chu)空(kong)間不變。