一種抵抗側(cè)信道攻擊的des掩碼方法
【專利摘要】本發(fā)明提出一種可抵御側(cè)信道攻擊技術(shù)的DES的掩碼方法。該方法通過實現(xiàn)兩路DES,其中一路用于掩碼后數(shù)據(jù)的加解密,另一路用于脫掩值的計算。在DES執(zhí)行流程中,初始IP置換前先進行掩碼,并且16個子輪中再分別引入16個不同的隨機數(shù)進行掩碼,大幅度地消除了功耗與操作數(shù)據(jù)的相關(guān)性,極大地增加了攻擊者利用側(cè)信道手段攻擊DES的代價,因此該方法可廣泛應用于帶有DES安全運算模塊的電子芯片中。
【專利說明】一種抵抗側(cè)信道攻擊的DES掩碼方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及在電子部件中安全地執(zhí)行DES密碼算法的方法,尤其涉及電子部件在執(zhí)行DES算法時抗側(cè)信道攻擊的方法。
【背景技術(shù)】
[0002]1、DES安全漏洞
[0003]Kocher提出的簡單功耗攻擊(simple power analysis, SPA)、差分功耗攻擊(differential power analysis, DPA)對電路實現(xiàn)的密碼構(gòu)成了嚴重威脅。之后又出現(xiàn)了利用簡單電磁攻擊(simple electromagnetic analysis, SEMA),差分電磁攻擊(differential electromagnetic analysis,DEMA)等,這些攻擊方法都統(tǒng)稱為側(cè)信道攻擊(side-channel attacks, SCA)。利用電路模塊執(zhí)行密碼算法過程中泄露出的側(cè)信道信息來攻擊密鑰已經(jīng)成為一種重要的攻擊手段,并且該方法具有攻擊成本低、攻擊成功率高的特點。
[0004]利用DPA、DEMA等手段來攻擊密碼電路,攻擊者不需要了解電路模塊的詳細知識,它僅利用電路執(zhí)行密碼算法中能量消耗與操作數(shù)據(jù)的相關(guān)性,就可以分析出密鑰。而DES算法只進行16輪相同的運算,一方面輪運算中只有簡單的擴展、密鑰加、S盒、P置換,另一方面運算中以6比特為最小分塊,攻擊者通過統(tǒng)計分析,利用遍歷手段很容易驗證出功耗與操作數(shù)據(jù)的關(guān)聯(lián)性,進而能得到密鑰,極大的威脅到電路實現(xiàn)DES的安全性,因此在設計DES電路時一定要增加防護措施。
[0005]2、DES常見防護技術(shù)
[0006]針對側(cè)信道攻擊,主要的防御手段有:①增加噪聲、引入隨機延遲,增加噪聲、引入隨機延遲可增加曲線對齊的難度。但是,如果引入延遲較小,攻擊者進行些簡單的處理依然可以把功耗曲線對齊,如果引入延遲較大,那么必然降低該模塊的性能,另外該方法對頻域攻擊的防御效果不理想;②隱藏功耗信息,電路級對功耗信息進行隱藏也是一種有效手段,如采用WDDL實現(xiàn)密碼算法,攻擊者采集到的功耗曲線比較平滑,差異很小,所以攻擊者攻擊代價巨大,但這種技術(shù)需要重新設計基本單元庫,或者利用基本單元庫搭建具有雙軌模式的模塊電路,這樣增加了設計難度,并且可移植性較差,一旦更換工藝,需要重新設計;③對數(shù)據(jù)進行隨機掩碼,對數(shù)據(jù)進行隨機掩碼,可消除猜測中間值與功耗的相關(guān)性,從根本上可避免利用側(cè)信道手段進行攻擊。
[0007]國內(nèi)外有不少學者都在研究DES的掩碼技術(shù)。對于DES掩碼,由于IP、E、P運算都是線性運算,容易采用布爾掩碼,但是對于S盒,采用布爾掩碼就很難脫掩,文獻[Mehd1-Laurent Akkar, Christophe Giraud.An Implementation of DES and AES,Secureagainst Some Attacks.CHES2001,LNCS2162, p309_318,2001]提到了一種掩 S 盒的方法,但實際上這種S盒掩碼效果并不好,仔細分析,該掩碼方法本質(zhì)上并沒掩。文獻[F.-X.Standaert, G.Rouvroy, and J.-J.Quisquater.FPGA Implementations of the DES andTriple-DES Masked Against Power Analysis Attacks, in proceedings of FPL2006,August2006, Madrid, Spain]提到了另一種掩碼方式,通過預計算和存儲,可以有效的實現(xiàn)掩碼,但是該方法只利用了一個隨機數(shù)進行掩碼,雖然減弱了真實中間值與側(cè)信道信息的關(guān)系,但是多輪的中間值依然或多或少地泄露一些信息,安全強度稍弱,另外該文獻并未明確給出掩碼盒或掩碼盒的計算方法。
【發(fā)明內(nèi)容】
[0008]本發(fā)明為避免上述現(xiàn)有技術(shù)的不足提出了一種抵御側(cè)信道攻擊的DES方法,本方法通過在DES執(zhí)行過程中增加多層布爾掩碼來抵御側(cè)信道攻擊。使用該方法,性能損失小、側(cè)信道泄露的信息與操作數(shù)據(jù)之間的關(guān)聯(lián)性完全消除,防御性能好,且易于實現(xiàn)。
[0009]1.本發(fā)明給出了掩碼盒的計算方法.[0010]DES中的初始置換IP、初始置換的逆置換IP'擴展E、置換P運算都是線性運算,用隨機數(shù)進行布爾掩碼既容易加掩也容易脫掩,而S盒是非線性運算,采用布爾掩碼,脫掩較為困難,所以本發(fā)明中需單獨有一路計算脫掩值。
[0011]脫掩值的計算:以DES的第一個S盒為例,假設輸入S盒的真實值為m,輸出為Sbox (m),掩碼的隨機數(shù)為r,在掩碼的DES方案中,輸入S盒的值變?yōu)閙' = m十r,S盒輸出為Sbox(m'),另一路需計算出r',使Sbox(m')十r' = Sbox(m)。本發(fā)明中r'是查找SM盒得到的,SM盒的輸入是m'和r,實現(xiàn)時可先將SM盒可預計算好。SM盒的預計算方法:遍歷 m'、r 使得SMbox(m,, r) = Sbox(m')十 Sbox(m' ? r)。
[0012]2.本發(fā)明在DES算法流程中利用多個隨機數(shù)進行多層掩碼.[0013]隨著攻擊技術(shù)的發(fā)展,二階側(cè)信道攻擊技術(shù)就可以攻破帶一重掩碼的DES算法。傳統(tǒng)的掩碼都是引入了一個隨機數(shù)進行掩碼。本發(fā)明為抵御二階側(cè)信道攻擊,采取了多重掩碼,在初始IP置換前引入一個隨機數(shù)進行掩碼,在后續(xù)的子輪運算中又分別引入不同的隨機數(shù),這樣一共有多重掩碼,大大增加二階側(cè)信道攻擊的難度。另外,在整個子輪運算中,任意一步都是掩碼的中間值,沒有任何真實中間值信息的泄露,只在最后的IF1之后才進行脫掩,使攻擊者無法通過統(tǒng)計分析的方式得到功耗與操作數(shù)的關(guān)聯(lián)性。
【專利附圖】
【附圖說明】
[0014]圖1掩碼DES的流程圖
[0015]圖中標號及符號說明如下:
[0016]M:待加密的明文;
[0017]IP:DES中的初始置換運算;
[0018]IP—1:DES中的初始置換的逆置換運算;
[0019]E =DES中的擴展函數(shù);
[0020]?:異或運算;
[0021]P:DES中的置換函數(shù);
[0022]Sbox:DES中的原始S盒運算;
[0023]SMbox:DES的掩碼S盒運算
[0024] Subkeyi:DES中的輪子密鑰;
[0025]ML' 1:DES中第i輪中間值的左比特,是掩碼后的值;[0026]MR' 1:DES中第i輪中間值的右比特,是掩碼后的值;
[0027]r:掩碼DES中的隨機數(shù),用于掩碼;
[0028]rLi =DES中第i輪掩碼的隨機數(shù),是左比特;
[0029]rRi =DES中第i輪掩碼的隨機數(shù),是右比特;
[0030]tLj =DES中第i輪掩碼新生成的隨機數(shù),是左比特;
[0031]tRj =DES中第i輪掩碼新生成的隨機數(shù),是右比特;
[0032]C1:掩碼的密文;
[0033]S:用于脫密文掩碼的隨機數(shù);
[0034]C:密文,SP加密結(jié)果;
【具體實施方式】
[0035]本發(fā)明中的方法,可以全部采用硬件實現(xiàn),也可以全部用軟件實現(xiàn),也可以采用軟、硬件結(jié)合的方式來實現(xiàn)。下面介紹【具體實施方式】。
[0036]本方法需要兩路DES運算路徑,其中一路用于掩碼后的明文加密(密文解密)計算,另一路用于脫掩碼的計算,兩路DES最好采用并行方式進行計算,另外DES的輪子密鑰依然按照原始DES的方式進行編排。
[0037]I)外部輸入數(shù)據(jù)M,模塊啟動,先用隨機數(shù)r進行掩碼比特M’ = M十r,將M'輸入左邊一路DES模塊,將r輸入右邊一路DES模塊,用于掩碼計算。
[0038]2)將掩碼后的數(shù)據(jù)W進行初始IP置換,同時將隨機數(shù)r進行初始IP置換。
[0039]3)左邊一路,將初始置換后的中間值按照DES原始流程分為ML'。、MR'。,同時,右邊一路將初始IP置換后的隨機數(shù)分為!"Lc^rRtl,然后進入DES的子輪運算。
[0040]4)子輪運算:
[0041 ] ①按照原始DES流程,左邊一路對MR' ^進行擴展運算E (MR/ ^1),右邊一路對rRi進行擴展運算EO^Rh)。
[0042]②左邊一路進行密鑰加運算,即計算Xl = E(MRVi)十subkeyM。
[0043]③左邊一路將Xl進行S盒運算,得到中間值X2=Sbox(Xl);右邊一路將X1、EO^1)都進行掩碼的SM盒運算,得到中間值YZ=SMbox(XLEO^1)),其中掩碼的SMi盒不同于原始DES的S盒。
[0044]④左邊一路對X2進行置換運算,得到X3=P (X2);右邊一路對Y2進行置換運算,得到 Y3=P (Y2)。
[0045]⑤子輪中再用隨機數(shù)叫及隨機數(shù)tRi進行掩碼,左邊一路計算MR、= MR^1十十X3,MlZi = MRV1十tLi;右邊一路計算rRj = rLj_!十 tRj ? Y3,TLi = ? ILi。[0046]5)按照步驟4)完成DES剩下的輪運算。
[0047]6)對輪運算的結(jié)果進行IP逆置換IP—1,左邊一路計算C' =IF1 (ML^ 16,MR' 16),右邊一路計算 S=IP-1 CrL16, rR16)。
[0048]7)脫掩,計算C = C'十S,得到正確的運算結(jié)果C。
【權(quán)利要求】
1.一種抵抗側(cè)信道攻擊的DES掩碼方法,其特征在于:在一次DES加密或解密中,采用兩路計算路徑,其中一路對掩碼值進行加密或解密,另一路用于脫掩值的計算,且引入多個隨機數(shù)進行掩碼,使每路加密或解密路徑中所有的中間結(jié)果與DES標準算法中間結(jié)果均不同,最后再還原為DES標準的結(jié)果。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于步驟如下: 1)外部輸入數(shù)據(jù)M,先用隨機數(shù)r進行掩碼比特M'=M十r,將M'輸入左邊一路DES模塊,將r輸入右邊一路DES模塊,用于掩碼計算; 2)左邊一路將掩碼后的數(shù)據(jù)M,進行初始IP置換,同時右邊一路將隨機數(shù)r進行初始IP置換; 3)左邊一路,將初始置換后的中間值按照DES原始流程分為ML'q、MR'。,同時,右邊一路將初始IP置換后的隨機數(shù)分為!"Lc^rRtl,然后進入DES的子輪運算; 4)對子輪運算的結(jié)果進行IP逆置換IP'左邊一路計算C'=IP-HML' 16,MR' 16),右邊一路計算 S=IP-1 (rL16, rR16); 5)脫掩,計算C= C'十S,得到標準的運算結(jié)果C ; 其中:M為待加密的明文;IP為DES中的初始置換運算;IP_i為DES中的初始置換的逆置換運算;e Sdes中的擴展函 數(shù);?:為異或運算;p Sdes中的置換函數(shù);sbox為des中的原始S盒運算;SMbox為DES的掩碼S盒運算AUbkeyi為DES中的輪子密鑰;ML' i為DES中第i輪中間值的左比特,是掩碼后的值;MR' i為DES中第i輪中間值的右比特,是掩碼后的值;r為掩碼DES中的隨機數(shù),用于掩碼;rLi SDES中第i輪掩碼的隨機數(shù),是左比特;rRj為DES中第i輪掩碼的隨機數(shù),是右比特ALi為DES中第i輪掩碼新生成的隨機數(shù),是左比特ARiSDES中第i輪掩碼新生成的隨機數(shù),是右比特;C'為掩碼的密文4為用于脫密文掩碼的隨機數(shù);C為密文,即加密結(jié)果。
3.根據(jù)權(quán)利要求2所述的方法,其特征在于子輪運算步驟如下: ①按照原始DES流程,左邊一路對MR'進行擴展運算E (MR' ^1),右邊一路對rR^進行擴展運算E O,I≤i≤16 ; ②左邊一路進行密鑰加運算,即計算Xl= E(MR^1)十subkeyi_1; ③左邊一路進行S盒運算,得到中間值X2=Sbox(Xl);右邊一路將X1、EO^1)都進行掩碼SMbox盒運算,得到中間值Y2=SMbox (XI,E(FRiJ),其中掩碼的盒是進; ④左邊一路對X2進行置換運算,得到X3=P(X2);右邊一路對Y2進行置換運算,得到Y(jié)3=P(Y2); ⑤子輪中再用隨機數(shù)叫及隨機數(shù)tRi進行掩碼,左邊一路計算 MR、= MRV1 十 tRi 十 X3,ML'; = MRVietLi;右邊一路計算rRj = rLj.1 十 tRj ? Y3,rLj = rRj.!十 Hi; ⑥按照步驟①-⑤完成DES剩下輪運算。
4.根據(jù)權(quán)利要求3所述的方法,其特征在于所述步驟③中的預計算SM盒方法為:遍歷掩碼明文m'及掩碼隨機數(shù)r,計算SMbox(m', r) = Sbox(m')十Sbox(m'十r),其中Sbox為對應的DES的S盒。
5.根據(jù)權(quán)利要求3所述的方法, 其特征在于:所述步驟⑤中所述掩碼方法為:在每個子輪運算中都需要重新生成不同的隨機數(shù)tLptRp然后分別計算MR'i = MRV1十tRi十X3,ML/j = MR'i_i ? tLj及rRj = rLj ? tRj ? Y3,rL; = rR;_1 ? tL; o
6.根據(jù)權(quán)利要求2所述的方法,其特征在于:所述步驟5)中所述的脫掩方法:在IP—1運算之后進行脫掩C = IP-1CML^6, MR^6)十IP-1CrL16JR16),但不限于此,亦可在IP—1之前進行脫掩,然后再進行IP—1運算,即C = IP-HML、十rL16, MR716十rR16)。
【文檔編號】H04L9/06GK103647638SQ201310636901
【公開日】2014年3月19日 申請日期:2013年12月3日 優(yōu)先權(quán)日:2013年12月3日
【發(fā)明者】冀利剛, 陳波濤 申請人:北京中電華大電子設計有限責任公司