本發(fā)明屬于密碼算法防護技術(shù)領(lǐng)域,具體地說,尤其涉及一種RC4硬件電路掩碼防護方法及系統(tǒng)。
背景技術(shù):
當今世界,以Internet為代表的計算機網(wǎng)絡得到了迅速的發(fā)展和廣泛的應用,基于計算機網(wǎng)絡的電子商務、電子政務、電子金融蓬勃發(fā)展,因此,網(wǎng)絡安全、信息安全就成了人們關(guān)心的問題,眾多加密算法也運蘊而生。其中,RC4以其實現(xiàn)容易、加密速度快、良好的隨機性和抵抗各種分析的能力,在眾多領(lǐng)域的安全模塊得到了廣泛的應用。
在國際著名的安全協(xié)議標準SSL/TLS(安全套接字協(xié)議/傳輸層安全協(xié)議)中,利用RC4算法保護互聯(lián)網(wǎng)傳輸中的保密性。在作為IEEE802.ll無線局域網(wǎng)標準的WEP協(xié)議中,利用RC4算法進行數(shù)據(jù)間的加密。同時,RC4算法也被集成于Microsoft Windows、Lotus Notes、Apple AOCE、Oracle Secure SQL等應用中,還包括TLS(傳輸層協(xié)議)、微軟PPTP的微軟辦公,并應用于Adobe Acrobat,其它很多應用領(lǐng)域也使用該算法。
隨著計算機網(wǎng)絡的普及,傳統(tǒng)的RC4軟件加密方法已經(jīng)越來越不能滿足日常的需求,其局限性也逐漸暴露出來。在很多計算機信息安全系統(tǒng)中,RC4的硬件加密手段被應用到設備中來提高密碼運算速度和系統(tǒng)的安全性。
技術(shù)實現(xiàn)要素:
本發(fā)明提供了一種一種RC4硬件電路掩碼防護方法及系統(tǒng),用于抵抗功耗攻擊,特別是針對RC4的模板攻擊。
根據(jù)本發(fā)明的一個方面,提供了一種RC4硬件電路掩碼防護方法,包括:
輸入密鑰和S盒分組步驟,將輸入密鑰和S盒各分為相同數(shù)量的分組,并同時向輸入密鑰和S盒的各分組引入隨機數(shù),其中,輸入密鑰和S盒分組后各部分 之和與不帶防護的輸入密鑰和S盒的內(nèi)容相同;
S盒初始置換步驟,根據(jù)分組輸入密鑰分別對分組S盒進行初始置換;
密鑰流生成步驟,對初始置換后的分組S盒分別進行再次置換,并以再次置換后的各分組S盒之和為新索引,所述新索引指向的S盒的內(nèi)容為輸出密鑰流。
根據(jù)本發(fā)明的一個實施例,將輸入密鑰和S盒各分為2組:K1密鑰組和K2密鑰組,S1盒組和S2盒組。
根據(jù)本發(fā)明的一個實施例,S盒初始置換步驟進一步包括:
設置初始第一索引j1=0,初始第二索引j2=0;
對初始第一索引、各遍歷的對應索引S1盒組內(nèi)容以及K1密鑰組內(nèi)容之和取模得到更新的第一索引,對初始第二索引、各遍歷的對應索引S2盒組內(nèi)容以及K2密鑰組內(nèi)容之和取模得到更新的第二索引;
將更新的第一索引和第二索引取和,并根據(jù)取和值分別對S1盒組和S2盒組進行初始置換。
根據(jù)本發(fā)明的一個實施例,密鑰流生成步驟進一步包括:
設置初始第一索引j1=0,初始第二索引j2=0;
對初始第一索引和各遍歷的對應索引初始置換后的S1盒組內(nèi)容之和取模得到更新的第一索引,對初始第二索引和各遍歷的對應索引初始置換后的S2盒組內(nèi)容之和取模得到更新的第二索引;
將更新的第一索引和第二索引取和,并根據(jù)取和值分別對S1盒組和S2盒組進行再次置換;
根據(jù)再次置換后的各分組S盒內(nèi)容之和為新索引,所述新索引指向的S盒的內(nèi)容為輸出密鑰流。
根據(jù)本發(fā)明的一個實施例,將輸入密鑰和S盒各分為相同數(shù)量的分組進一步包括:
初始化輸入密鑰和S盒,
S盒分組:初始化S1盒組,其中初始化值為n,利用同一索引下的S1值,初始化S2盒組,使S1和S2的和為沒被分開的同一索引S盒的值;
輸入密鑰分組:初始化K1密鑰組,利用同一索引下的K1密鑰值,初始化K2密鑰組,使K1和K2的和為同一索引值模上輸入密鑰的長度值下的輸入密鑰值。
根據(jù)本發(fā)明的另一個方面,還提供了一種RC4硬件電路掩碼防護系統(tǒng),包括:
輸入密鑰和S盒分組模塊,將輸入密鑰和S盒各分為相同數(shù)量的分組,并同時向輸入密鑰和S盒的各分組引入隨機數(shù),其中,輸入密鑰和S盒分組后各部分之和與不帶防護的輸入密鑰和S盒的內(nèi)容相同;
S盒初始置換模塊,根據(jù)分組輸入密鑰分別對分組S盒進行初始置換;
密鑰流生成模塊,對初始置換后的分組S盒分別進行再次置換,并以再次置換后的各分組S盒之和為新索引,所述新索引指向的S盒的內(nèi)容為輸出密鑰流。
根據(jù)本發(fā)明的一個實施例,在輸入密鑰和S盒分組模塊中,將輸入密鑰和S盒各分為2組:K1密鑰組和K2密鑰組,S1盒組和S2盒組。
根據(jù)本發(fā)明的一個實施例,S盒初始置換模塊進一步包括:
第一初始索引設置單元,設置初始第一索引j1=0,初始第二索引j2=0;
第一索引更新單元,對初始第一索引、各遍歷的S1盒組內(nèi)容以及K1密鑰組內(nèi)容之和取模得到更新的第一索引,對初始第二索引、各遍歷的S2盒組內(nèi)容以及K2密鑰組內(nèi)容之和取模得到更新的第二索引;
S盒初始置換單元,將更新的第一索引和第二索引取和,并根據(jù)取和值分別對S1盒組和S2盒組進行初始置換。
根據(jù)本發(fā)明的一個實施例,密鑰流生成模塊進一步包括:
第二初始索引設置單元,設置初始第一索引j1=0,初始第二索引j2=0;
第二索引更新單元,對初始第一索引和各遍歷的初始置換后的S1盒組內(nèi)容之和取模得到更新的第一索引,對初始第二索引和各遍歷的初始置換后的S2盒組內(nèi)容之和取模得到更新的第二索引;
S盒再次置換單元,將更新的第一索引和第二索引取和,并根據(jù)取和值分別對S1盒組和S2盒組進行再次置換;
密鑰流生成單元,根據(jù)再次置換后的各分組S盒內(nèi)容之和為新索引,所述新索引指向的S盒的內(nèi)容為輸出密鑰流。
根據(jù)本發(fā)明的一個實施例,輸入密鑰和S盒分組模塊進一步包括:
初始化輸入密鑰和S盒,
S盒分組:初始化S1盒組,其中初始化值為n,利用同一索引下的S1值,初始化S2盒組,使S1和S2的和為沒被分開的同一索引S盒的值;
輸入密鑰分組:初始化K1密鑰組,利用同一索引下的K1密鑰值,初始化 K2密鑰組,使K1和K2的和為同一索引值模上輸入密鑰的長度值下的輸入密鑰值。
本發(fā)明的有益效果:
本發(fā)明采用算法級防御措施,引用隨機數(shù)作為掩碼,來達到抗功耗攻擊,特別是針對RC4的模板攻擊。
本發(fā)明的其它特征和優(yōu)點將在隨后的說明書中闡述,并且,部分地從說明書中變得顯而易見,或者通過實施本發(fā)明而了解。本發(fā)明的目的和其他優(yōu)點可通過在說明書、權(quán)利要求書以及附圖中所特別指出的結(jié)構(gòu)來實現(xiàn)和獲得。
附圖說明
為了更清楚地說明本發(fā)明實施例中的技術(shù)方案,下面將對實施例描述中所需要的附圖做簡單的介紹:
圖1是RC4算法的邏輯結(jié)構(gòu)圖;
圖2是根據(jù)本發(fā)明的一個實施例的方法流程圖;
圖3是根據(jù)本發(fā)明的一個實施例的RC4硬件電路的掩碼方案的電路防護方案結(jié)構(gòu)圖。
具體實施方式
以下將結(jié)合附圖及實施例來詳細說明本發(fā)明的實施方式,借此對本發(fā)明如何應用技術(shù)手段來解決技術(shù)問題,并達成技術(shù)效果的實現(xiàn)過程能充分理解并據(jù)以實施。需要說明的是,只要不構(gòu)成沖突,本發(fā)明中的各個實施例以及各實施例中的各個特征可以相互結(jié)合,所形成的技術(shù)方案均在本發(fā)明的保護范圍之內(nèi)。
傳統(tǒng)的對密碼的攻擊都是從數(shù)學角度,利用數(shù)學理論分析,來尋找破解算法的方法,所依賴的信息有明文輸入、密文輸出,但并沒有考慮密碼算法所運行的場合。實際使用中,密碼算法的實現(xiàn)必定依賴一定的硬件或軟件平臺,這些信息包括運行密碼設備時所泄露的能量消耗、算法運行時間、電磁輻射等,稱為側(cè)信道信息。通過側(cè)信道信息的分析,來實現(xiàn)對密碼算法密鑰的破解就是側(cè)信道攻擊。根據(jù)側(cè)信道信息的不同,可以分為功耗攻擊、故障攻擊、時間攻擊等。
其中,功耗攻擊的基礎(chǔ)思想是芯片運算所產(chǎn)生的功耗和所運算的數(shù)據(jù)存在聯(lián)系,因為密碼芯片的底層為晶體管級的邏輯門,不同操作數(shù)所引起的門的反轉(zhuǎn)等 電路負載不同,這些晶體管的充放電過程所消耗的能量因而包含操作數(shù)的一些信息,通過對芯片運行的功耗信息的進行精確地采集測量,并對這些功耗信息進行某些處理,可破解出密鑰。
針對功耗攻擊的防御,最根本的思想是使功耗和運算的數(shù)據(jù)無關(guān)。目前,對于硬件電路抗功耗攻擊的具體措施可以分為三種。第一種是系統(tǒng)級防御措施,主要引入噪聲、冗余操作等。第二種是算法級防御措施,通過更改算法的結(jié)構(gòu),引入隨機數(shù),使得運算數(shù)據(jù)不僅僅包含密鑰信息,還包含隨機信息,這樣采集獲得功耗數(shù)據(jù)也包含了隨機信息,因而無法進行功耗攻擊機,算法級的防御措施的代表是掩碼技術(shù),掩碼技術(shù)對算法結(jié)構(gòu)進行修改,在計算機中,隨機數(shù)通常應用于明文,這樣加密的中間值和結(jié)果都帶有隨性。第三種是電路級防御措施,它是從底層的邏輯單元入手,通過涉及特定的原件保證其能量消耗獨立于設備中的數(shù)據(jù)。
本發(fā)明采用算法級防御措施,引用隨機數(shù)作為掩碼,來達到抗功耗攻擊,特別是針對RC4的模板攻擊。其中模板攻擊是功耗攻擊的一種,模板攻擊方法的思想是根據(jù)不同總體的統(tǒng)計特征來推斷新樣本的歸屬問題,及統(tǒng)計學中的判別分析問題,前提是掌握和攻擊設備相同或類似的設備。
現(xiàn)有技術(shù)中,RC4算法分為S盒的初始置換(KSA)、密鑰流的生成(PRGA)兩個部分,具體流程為:首先對256個S盒分別賦予初值1、2、3……255,引入輸入密鑰K(它的典型長度為8到40個字節(jié),理論長度為1到255字節(jié)),更新索引j,它有三部分組成:初始j,從0到255遍歷的i,和輸入密鑰K,對每個S盒進行初始置換一次。接著繼續(xù)更新索引j,這時它僅由兩部分組成,初始j和循環(huán)從0到255遍歷的i,不斷對每個S盒置換,并將每次置換的兩個S盒之和作為新的索引t,該索引t指向的S盒作為輸出密鑰流key輸出,如此不斷輸出key,如圖1所示為RC4算法的邏輯結(jié)構(gòu)圖。該算法的偽代碼如下:
Algorithm 1.RC4 Key Scheduling Algorithm(KSA)
1:for i=0→255do
2:S[i]:=i
3:end for
4:j:=0,for i=0→255do
5:j:=(j+S[i]+K[i mod Klength])mod 256
6:swap values of S[i]and S[j]
7:end for
Algorithm 2.RC4 Pseudo-Random Generation Algorithm(PRGA)
1:i:=0,j:=0
2:while GeneratingOutput do
3:i:=(i+1)mod 256,j:=(j+S[i])mod 256
4:swap values of S[i]and S[j]
5:key:=S[(S[i]+S[j])mod 256]
6output key
7:end while
雖然RC4的算法中與輸入密鑰相關(guān)的部分只在S盒的初始化(KSA)中,但同時密鑰流輸出(PRGA)算法中S盒的初始狀態(tài)與輸入密鑰K有關(guān)。所以為了減少輸入密鑰K信息的泄露,同時為了保護S盒,在本發(fā)明中,分別給輸入密鑰K和S盒引入隨機數(shù),將輸入密鑰K和S盒都相應的分成若干分組,它們各自的各部分之和與不帶防護的輸入密鑰K和S盒的內(nèi)容一致,從而保護了S盒和輸入密鑰K。
如圖2所示為根據(jù)本發(fā)明的一個實施例的方法流程圖,以下參考圖1來對本發(fā)明進行詳細說明。
首先是步驟S110輸入密鑰和S盒分組步驟,將輸入密鑰和S盒各分為相同數(shù)量的分組,并同時向輸入密鑰和S盒的各分組引入隨機數(shù),其中,輸入密鑰和S盒分組后各部分之和與不帶防護的輸入密鑰和S盒的內(nèi)容相同。
此處的若干分組包括多種數(shù)量的分組,本發(fā)明中以將輸入密鑰和S盒各分為兩個分組為例來進行說明,但不限于此。將輸入密鑰K相應的分成兩部分K1、K2,S盒相應的分成兩部分S1、S2,它們各自的兩部分之和與不帶防護的輸入密鑰K和S盒的內(nèi)容一致,從而保護了S盒和輸入密鑰K。其中,輸入密鑰為預先設定,S盒中初始狀態(tài)數(shù)據(jù)設置與現(xiàn)有技術(shù)相同此處不加詳述。
具體的,初始化輸入密鑰和S盒,可以采用現(xiàn)有技術(shù)。然后進行S盒分組和輸入密鑰分組。其中,在對S盒分組時,首先初始化S1盒組,其中初始化值為n,利用同一索引下的S1值,初始化S2盒組,使S1和S2的和為沒被分開的同一索引S盒的值;輸入密鑰分組時,初始化K1密鑰組,利用同一索引下的K1密鑰值,初始化K2密鑰組,使K1和K2的和為同一索引值模上輸入密鑰的長度值下的輸入密鑰值。
例如,初始化S盒時,是將0、1、2、3…….255等256個值依次賦予給256個S盒,同樣對于分開后的S盒S1、S2初始賦值時必須保證同一索引下的S1和 S2的值之和與原始算法中沒被分開的S盒的值一樣,比如第10個S盒的初始賦值是9,那么S1[10]+S2[10]=S[10]=9,其它S盒都必須滿足類似的關(guān)系,只是256個S盒中每個S盒的值在不斷變化,取值范圍仍在0到255間,S1、S2同樣也是這樣。給S1中的每個S盒,比如S1[0]、S1[1]…….等,初始賦值的n是隨機數(shù),并不特定為某個值,同樣對K1的各個值也是如此。
接著是步驟S120S盒初始置換步驟,根據(jù)分組輸入密鑰分別對分組S盒進行初始置換。
具體的,在將輸入密鑰K分成兩部分K1、K2,S分成兩部分S1、S2時,首先,設定兩個分組的初始索引均為:初始第一索引j1=0,初始第二索引j2=0;對初始第一索引、各遍歷的對應索引S1盒組內(nèi)容和K1密鑰組內(nèi)容之和取模得到更新的第一索引,同理得到更新的第二索引;將更新的第一索引和第二索引取和分別對S1盒組和S2盒組進行置換處理。如以下程序所示:
1:for i=0→255 do
2:S1[i]:=n mod256,S2[i]:=(i-n mod256)mod256
3:K1[i]:=m mod256,
4:K2[i]:=(K[i mod klength]-m mod256)mod256
5:end for
6:j1:=0,j2:=0
7:for i=0→255do
8:j1:=(j1+S1[i]+K1[i])mod 256
9:j2:=(j2+S2[i]+K2[i])mod 256
10:j:=j1+j2
11:swap values of S1[i]and S1[j]
12:swap values of S2[i]and S2[j]
13:end for
最后是步驟S130密鑰流生成步驟,對初始置換后的分組S盒分別進行再次置換,并以再次置換后的各分組S盒之和為新索引,新索引指向的S盒的內(nèi)容為輸出密鑰流。
具體的,首先設置初始第一索引j1=0,初始第二索引j2=0;對初始第一索引、各遍歷的對應索引初始置換后的S1盒組內(nèi)容之和取模得到更新的第一索引,對初始第二索引、各遍歷的對應索引初始置換后的S2盒組內(nèi)容之和取模得到更新的第二索引;將更新的第一索引和第二索引取和,并根據(jù)取和值分別對S1盒 組和S2盒組進行再次置換;根據(jù)再次置換后的各分組S盒內(nèi)容之和為新索引,所述新索引指向的S盒的內(nèi)容為輸出密鑰流。如以下程序所示:
Algorithm 4.MaskedRC4 Pseudo-Random Generation Algorithm(PRGA1)
1:i:=0,j1:=0,j2:=0
2:while GeneratingOutput do
3:i:=(i+1)mod 256
4:j1:=(j1+S1[i])mod 256,j2:=(j2+S2[i])mod 256
5:j:=j1+j2
6:swap values of S1[i]and S1[j]
7:swap values of S2[i]and S2[j]
8:key:=S[(S1[i]+S1[j]+S2[i]+S2[j])mod 256]
9:output key
10:end while
本發(fā)明采用算法級防御措施,引用隨機數(shù)作為掩碼,來達到抗功耗攻擊,特別是針對RC4的模板攻擊。
根據(jù)本發(fā)明的另一個方面,還提供了一種RC4硬件電路掩碼防護系統(tǒng),該系統(tǒng)包括輸入密鑰和S盒分組模塊、S盒初始置換模塊和密鑰流生成模塊。
其中,輸入密鑰和S盒分組模塊將輸入密鑰和S盒各分為相同數(shù)量的分組,并同時向輸入密鑰和S盒的各分組引入隨機數(shù),其中,輸入密鑰和S盒分組后各部分之和與不帶防護的輸入密鑰和S盒的內(nèi)容相同;S盒初始置換模塊根據(jù)分組輸入密鑰分別對分組S盒進行初始置換;密鑰流生成模塊對初始置換后的分組S盒分別進行再次置換,并以再次置換后的各分組S盒之和為新索引,新索引指向的S盒的內(nèi)容為輸出密鑰流。
根據(jù)本發(fā)明的一個實施例,在輸入密鑰和S盒分組模塊中,將輸入密鑰和S盒各分為2組:K1密鑰組和K2密鑰組,S1盒組和S2盒組。
根據(jù)本發(fā)明的一個實施例,S盒初始置換模塊進一步包括第一初始索引設置單元、第一索引更新單元和S盒初始置換單元。其中,第一初始索引設置單元用于設置初始第一索引j1=0,初始第二索引j2=0;第一索引更新單元用于對初始第一索引、各遍歷的S1盒組內(nèi)容和K1密鑰組內(nèi)容之和取模得到更新的第一索引,對初始第二索引、各遍歷的S2盒組內(nèi)容和K2密鑰組內(nèi)容之和取模得到更新的第二索引;S盒初始置換單元用于將更新的第一索引和第二索引取和,并根據(jù)取和值分別對S1盒組和S2盒組進行初始置換。
根據(jù)本發(fā)明的一個實施例,密鑰流生成模塊進一步包括第二初始索引設置單元、第二索引更新單元、S盒再次置換單元和S盒再次置換單元。其中,第二初始索引設置單元用于設置初始第一索引j1=0,初始第二索引j2=0;第二索引更新單元用于對初始第一索引、各遍歷的初始置換后的S1盒組內(nèi)容之和取模得到更新的第一索引,對初始第二索引、各遍歷的初始置換后的S2盒組內(nèi)容之和取模得到更新的第二索引;S盒再次置換單元用于將更新的第一索引和第二索引取和,并根據(jù)取和值分別對S1盒組和S2盒組進行再次置換;密鑰流生成單元用于根據(jù)再次置換后的各分組S盒內(nèi)容之和為新索引,新索引指向的S盒的內(nèi)容為輸出密鑰流。
根據(jù)本發(fā)明的一個實施例,輸入密鑰和S盒分組模塊進一步包括S盒分組單元和輸入密鑰分組單元。其中,S盒分組單元用于初始化S1盒組,其中初始化值為n,利用同一索引下的S1值,初始化S2盒組,使S1和S2的和為n;輸入密鑰分組單元用于初始化K1密鑰組,利用同一索引下的K1密鑰組值,初始化K2密鑰組,使K1和K2的和為同一索引值模上輸入密鑰的長度值下的輸入密鑰值。
如圖3所示為根據(jù)本發(fā)明的一個實施例的RC4硬件電路的掩碼方案的電路模塊,其由六部分組成:1.1、1.2和1.3依次分別為存儲明文字節(jié)和密文字節(jié)的寄存器RegPC、分開的兩個S盒的RegS1S2、被分開的輸入密鑰K的RegK1K2,
它們?yōu)槿齻€2×256Reg。2為用來存儲輸入密鑰K的RegK,它為一個1×256Reg。3為用來產(chǎn)生時鐘信號等控制信號的控制器CTR。4為用來產(chǎn)生密鑰流key的計算模塊CC。5為用來生成隨機數(shù)來計算S1或S2、K1或K2的隨機數(shù)發(fā)生器RNG。6為用來初始化兩個S盒S1和S2的計數(shù)器CNT。
在該電路模塊工作時,控制器CTR產(chǎn)生的時鐘等控制信號控制其它部件工作。當明文填充到寄存器RegPC中后,計數(shù)器CNT開始計數(shù),并初始化RegS1S2的S1、S2中的一個,假如為S1,初始化為n(0到255),同時RNG產(chǎn)生隨機數(shù)m1,利用同一索引下的S1的值,初始化S2,使S1與S2的和為n。同樣在控制器CTR產(chǎn)生的時鐘等控制信號下,將輸入密鑰存儲到RegK中,利用計數(shù)器CNT初始化RegK1K2的K1、K2中的一個,假如為K1,同時RNG產(chǎn)生隨機數(shù)m2,利用同一索引下的K1的值,初始化K2,使K1與K2的和為同一索引下的K值。在運算部件CC的作用下,通過計算RegS1S2的S1、S2、RegK1K2的K1、K2的值產(chǎn)生密鑰流key,它與明文異和后得到密文。這樣保證RegS1S2的S1、S2,RegS1S2的K1、K2的隨機性,同時算法的輸出結(jié)果不被改變,從而保護了輸入密鑰K和 S盒。
雖然本發(fā)明所公開的實施方式如上,但所述的內(nèi)容只是為了便于理解本發(fā)明而采用的實施方式,并非用以限定本發(fā)明。任何本發(fā)明所屬技術(shù)領(lǐng)域內(nèi)的技術(shù)人員,在不脫離本發(fā)明所公開的精神和范圍的前提下,可以在實施的形式上及細節(jié)上作任何的修改與變化,但本發(fā)明的專利保護范圍,仍須以所附的權(quán)利要求書所界定的范圍為準。