專利名稱:一種抗des功耗攻擊的增強(qiáng)型mask掩碼方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種增強(qiáng)型MASK掩碼方法,尤其是指一種抗DES (數(shù)據(jù)加密標(biāo)準(zhǔn))功耗攻擊的增強(qiáng)型MASK掩碼方法,屬于信息安全芯片設(shè)計(jì)技術(shù)領(lǐng)域,能夠廣泛應(yīng)用于高度安全性的加密運(yùn)算設(shè)備。
背景技術(shù):
隨著網(wǎng)絡(luò)的不斷普及,社會(huì)信息化程度的日益提高,信息安全的重要性已經(jīng)逐步凸現(xiàn)。加密作為信息安全中一個(gè)最為有力的武器,正在發(fā)揮著重要的作用。DES加密算法在70年代成為加密標(biāo)準(zhǔn)到今天,經(jīng)歷了長(zhǎng)期的考驗(yàn)。任何安全產(chǎn)品或者密碼系統(tǒng)都必須面對(duì)一個(gè)如何防御攻擊和窺測(cè)的問(wèn)題,近些年來(lái),出現(xiàn)了一種新的強(qiáng)有力的攻擊方法,人們稱之為旁路攻擊(SCA)。旁路攻擊是指利用密碼芯片在運(yùn)行過(guò)程中泄露的旁路信息,諸如功耗、時(shí)間、電磁波、以及差錯(cuò)信息等,對(duì)密碼系統(tǒng)進(jìn)行攻擊和窺測(cè)。旁路攻擊已成為信息安全芯片產(chǎn)品的巨大威脅,其危害遠(yuǎn)遠(yuǎn)大于傳統(tǒng)的數(shù)學(xué)分析手段。功耗攻擊是旁路攻擊的其中一種,是指利用密碼芯片執(zhí)行加密運(yùn)算時(shí)消耗的功耗來(lái)對(duì)密鑰進(jìn)行攻擊。芯片在處理不同運(yùn)算的時(shí)候所消耗的功耗是不同的,即使處理同一條指令操作數(shù)不同功耗也是不一樣的,因此對(duì)功耗進(jìn)行分析,即可推算出密鑰來(lái)。功耗攻擊分為簡(jiǎn)單功耗分析攻擊(SPA)和差分功耗分析攻擊(DPA),其中DPA攻擊更有效,應(yīng)用領(lǐng)域更廣泛。DPA攻擊的原理是利用被攻擊設(shè)備在加密過(guò)程中所實(shí)際消耗的功耗與加密算法中間值的相關(guān)性,從而計(jì)算得出密鑰的一種攻擊方法。根據(jù)輸入的明文和猜測(cè)的密鑰,加密算法的中間值總是可以計(jì)算的。MASK掩碼技術(shù)將輸入的明文進(jìn)行掩碼,這樣加密算法的中間值是不可知的,從而達(dá)到抗功耗攻擊的目的。MASK掩碼方法是目前信息安全芯片常用的一種抗功耗攻擊的措施,圖I所示即為DES循環(huán)迭代MASK掩碼技術(shù)算法流程圖。其中,M為輸入的明文,X為隨機(jī)產(chǎn)生的隨機(jī)數(shù)。第一步,明文M與隨機(jī)數(shù)X異或,異或的結(jié)果作為DES運(yùn)算的輸入;此步驟稱為掩碼操作。第二步,將第一步的結(jié)果執(zhí)行DES 16輪加密或解密操作,SBOX使用經(jīng)過(guò)變換的SM-Box,其它運(yùn)算和標(biāo)準(zhǔn)DES運(yùn)算相同;SM-Box的替換見(jiàn)公式(1),其中P—1表示置換P的逆;此步驟稱為循環(huán)迭代操作。第三步,將第二步計(jì)算的結(jié)果再次與隨機(jī)數(shù)X異或,異或的結(jié)果作為最終的結(jié)果輸出;此步驟稱為去掩碼操作;
SM — Box(A) = S-Box(A X2)十 P~l(@iTl32_63)(I)。MASK掩碼技術(shù)從算法層面上使加密芯片的功耗與中間值無(wú)關(guān),然而MASK掩碼算法設(shè)計(jì)人員沒(méi)有考慮分組密碼多次循環(huán)迭代的特性,被掩碼的中間值仍然泄漏了密碼信息,無(wú)法有效的達(dá)到抗功耗攻擊的作用。圖I所示的掩碼算法一般采用圖2所示的硬件結(jié)構(gòu)實(shí)現(xiàn),圖2的硬件結(jié)構(gòu)示意圖僅描述了 DES實(shí)現(xiàn)的主要部分,即每組數(shù)據(jù)右邊32位的處理示意圖。其中,RoundReg是一個(gè)32位的寄存器;Function為一組合電路,實(shí)現(xiàn)擴(kuò)展轉(zhuǎn)換、SBOX替換和置換功能,SBOX替、換用到了輪密碼RoundKey ;RLi為DES運(yùn)算過(guò)程中每組數(shù)據(jù)的左邊32位,RLi與Function的輸出進(jìn)行異或操作得到結(jié)果。在下一個(gè)時(shí)鐘上升沿,該計(jì)算結(jié)果又存儲(chǔ)到了 RoundReg中。然而這種硬件實(shí)現(xiàn)方式,每?jī)奢嗊\(yùn)算之間泄漏了大量的密鑰信息。具體地,記未加MASK的第一輪的中間結(jié)果為RoundRegI,第二輪的中間結(jié)果為RoundReg2 ,加入MASK掩碼的第一輪的中間結(jié)果為MRoundRegl,第二輪的中間結(jié)果為MRoundReg2。由于每輪使用了相同的隨機(jī)數(shù),記64位隨機(jī)數(shù)為X,XR為隨機(jī)數(shù)的低32位,“壬”表示異或操作;所以有下面的關(guān)系成立
MRotmd Regl = Round Regl XR(2);
MRound Re g 2 = Round Reg 2 MS(3);
MRound Re g\ MRound Re g2 = {Round Re g\ XR) (Round Re g 2 XK) (4). MRou^d'B.e g\ AfRoimd Re g2 = Round Re gl Round Re g2 (5)。圖2所示的DES循環(huán)迭代MASK掩碼技術(shù)的硬件實(shí)現(xiàn)結(jié)構(gòu),第一輪的運(yùn)算結(jié)果MRoundRegl保存在寄存器中,下一時(shí)鐘上升沿進(jìn)行的第二輪運(yùn)算結(jié)果MRoundReg2也保存在同一寄存器中,因此泄漏了每?jī)奢喼g的漢明距離。根據(jù)公式(5),也就是泄漏了漢明距離。攻擊者可以很容易地利用兩輪之間的漢明距離得出正確的密鑰信息。所以DES的MASK掩碼技術(shù)采用多次循環(huán)迭代的實(shí)現(xiàn)方式并不能有效的起到抗功耗攻擊的目的。
發(fā)明內(nèi)容
本發(fā)明的目的在于提供一種抗DES功耗攻擊的增強(qiáng)型MASK掩碼方法,能夠有效解決現(xiàn)有技術(shù)中DES循環(huán)迭代MASK掩碼方法在兩輪運(yùn)算之間漢明距離泄漏的問(wèn)題,保證兩輪運(yùn)算之間不再泄漏漢明距離這樣的敏感信息,從而能夠有效防止功耗分析攻擊。為了達(dá)到上述目的,本發(fā)明提供一種抗DES功耗攻擊的增強(qiáng)型MASK掩碼方法,該方法包含以下步驟
步驟I、開(kāi)始兩輪DES運(yùn)算采用流水線運(yùn)算方式實(shí)現(xiàn),計(jì)算電路采用兩塊獨(dú)立互不相關(guān)的第一計(jì)算電路和第二計(jì)算電路實(shí)現(xiàn);每輪的DES運(yùn)算采用MASK掩碼方法進(jìn)行計(jì)算;
步驟2、第三輪至第十四輪的DES運(yùn)算過(guò)程采用隨機(jī)定位邏輯運(yùn)算方式實(shí)現(xiàn);每輪的DES運(yùn)算采用MASK掩碼方法進(jìn)行計(jì)算;
步驟3、最后兩輪DES運(yùn)算采用流水線運(yùn)算方式實(shí)現(xiàn),計(jì)算電路采用另外兩塊獨(dú)立互不相關(guān)的第三計(jì)算電路和第四計(jì)算電路實(shí)現(xiàn);每輪的DES運(yùn)算采用MASK掩碼方法進(jìn)行計(jì)算。
所述的步驟I中,具體包含
步驟I. I、第一輪的輸入在mplain和roundi之間由第一計(jì)算電路的隨機(jī)定位邏輯alloc_enl選擇,其中,mplain表示輸入的明文與隨機(jī)數(shù)掩碼后的結(jié)果,roundi表示DES計(jì) 算過(guò)程中每輪的中間結(jié)果;
由于第一輪的DES運(yùn)算采用流水線運(yùn)算方式實(shí)現(xiàn),因此alloc_enl非使能,值為0,即第一輪的輸入數(shù)據(jù)為mplain,經(jīng)過(guò)第一計(jì)算電路的運(yùn)算,將第一輪的計(jì)算結(jié)果保存在第一寄存器中并輸出;步驟I. 2、第二輪的輸入在第一輪的輸出和ixnmdi之間由第二計(jì)算電路的隨機(jī)定位邏輯alloc_en2選擇,由于第二輪的DES運(yùn)算采用流水線運(yùn)算方式實(shí)現(xiàn),因此alloc_en2非使能,值為O,即第二輪的輸入數(shù)據(jù)為第一輪的輸出數(shù)據(jù),經(jīng)過(guò)第二計(jì)算電路的運(yùn)算,將第二輪的計(jì)算結(jié)果保存在第二寄存器中。所述的步驟2中,每一輪的DES運(yùn)算分別在第一計(jì)算電路、第二計(jì)算電路、第三計(jì)算電路和第四計(jì)算電路中隨機(jī)選擇一塊進(jìn)行,具體包含
步驟2. I、輪數(shù)譯碼電路根據(jù)DES運(yùn)算的當(dāng)前運(yùn)算輪數(shù)round決定整個(gè)隨機(jī)定位電路是否開(kāi)始運(yùn)行;當(dāng)DES運(yùn)算到第三輪至第十四輪運(yùn)算時(shí),輪數(shù)譯碼電路使能整個(gè)隨機(jī)定位電路,同時(shí)產(chǎn)生請(qǐng)求rdn_req,請(qǐng)求產(chǎn)生隨機(jī)數(shù)random ;
其中,所述random是隨機(jī)數(shù),取值為從0到3 ;random為0表示選擇第一計(jì)算電路,random為I表示選擇第二計(jì)算電路,random為2表示選擇第三計(jì)算電路,random為3表示選擇第四計(jì)算電路;
步驟2. 2、根據(jù)所產(chǎn)生的隨機(jī)數(shù)random和當(dāng)前運(yùn)算輪數(shù)round,確定當(dāng)前這輪DES運(yùn)算將采用哪一塊計(jì)算電路,并將該塊計(jì)算電路的alloc_en使能,即置為I ;
步驟2. 3、被確定選中進(jìn)行當(dāng)前這輪DES運(yùn)算的計(jì)算電路,將選擇roundi作為其輸入數(shù)據(jù),并經(jīng)過(guò)計(jì)算將結(jié)果保存在相應(yīng)的寄存器中;若當(dāng)前正在進(jìn)行第三輪的DES運(yùn)算,則應(yīng)直接選擇第二輪的輸出作為其輸入數(shù)據(jù);
步驟2. 4、請(qǐng)求產(chǎn)生下一輪DES運(yùn)算的隨機(jī)數(shù)random,并由比較電路判斷相鄰兩輪DES運(yùn)算所產(chǎn)生的隨機(jī)數(shù)是否相同,如果相同,則必須再次請(qǐng)求產(chǎn)生隨機(jī)數(shù),直至所產(chǎn)生的隨機(jī)數(shù)與前一輪所產(chǎn)生的隨機(jī)數(shù)不同為止;
步驟2. 5、重復(fù)進(jìn)行步驟2. 2 2. 4,直至完成第三輪至第十四輪的DES運(yùn)算。所述的步驟2. 4中,roundi是由隨機(jī)定位策略邏輯電路給出的DES計(jì)算結(jié)果的中間值,由隨機(jī)定位策略邏輯電路根據(jù)隨機(jī)數(shù)寄存器中所保存的前一輪產(chǎn)生的隨機(jī)數(shù)random的值而由相對(duì)應(yīng)的計(jì)算電路的寄存器中得到;所述前一輪產(chǎn)生的隨機(jī)數(shù)random的值表示前一輪DES運(yùn)算是由哪塊相應(yīng)的計(jì)算電路進(jìn)行的,因此前一輪的DES運(yùn)算結(jié)果也就相應(yīng)存儲(chǔ)在該計(jì)算電路的寄存器中。所述的步驟3中,具體包含
步驟3. I、第十五輪的輸入在第十四輪輸出和roundi之間由第三計(jì)算電路的隨機(jī)定位邏輯alloc_en3選擇,由于第十五輪的DES運(yùn)算采用流水線運(yùn)算方式實(shí)現(xiàn),因此alloc_en3非使能,值為0,即第十五輪的輸入數(shù)據(jù)為第十四輪的輸出數(shù)據(jù),經(jīng)過(guò)第三計(jì)算電路的運(yùn)算,最終將第十五輪的計(jì)算結(jié)果保存在第三寄存器中;
步驟3. 2、第十六輪的輸入在第十五輪輸出和roundi之間由第四計(jì)算電路的隨機(jī)定位邏輯alloc_en4選擇,由于第十六輪的DES運(yùn)算采用流水線運(yùn)算方式實(shí)現(xiàn),因此alloc_en4非使能,值為0,即第十六輪的輸入數(shù)據(jù)為第十五輪的輸出數(shù)據(jù),經(jīng)過(guò)第四計(jì)算電路的運(yùn)算,最終將第十六輪的計(jì)算結(jié)果保存在第四寄存器中。本發(fā)明所提供的抗DES功耗攻擊的增強(qiáng)型MASK掩碼方法,與現(xiàn)有技術(shù)相比,具有以下有益效果。首先,每輪DES運(yùn)算均采用了 MASK掩碼技術(shù),保證了每輪中的敏感信息不會(huì)泄漏。其次,在MASK掩碼技術(shù)基礎(chǔ)上采用流水線實(shí)現(xiàn)方式和隨機(jī)定位實(shí)現(xiàn)方式的結(jié)合,保證了每?jī)奢喼g的漢明距離等敏感信息不會(huì)泄漏。再者,由于在MASK掩碼技術(shù)的基礎(chǔ)上、采用了隨機(jī)定位實(shí)現(xiàn)方式,能夠大大減小芯片設(shè)計(jì)面積,降低成本。因此,本發(fā)明在減小芯片設(shè)計(jì)面積的基礎(chǔ)上,可以徹底地解決現(xiàn)有技術(shù)中MASK掩碼方案相鄰兩輪之間漢明距離泄漏的問(wèn)題;不僅可以保證每輪之間的敏感信息不泄漏,同時(shí)保證了相鄰兩輪之間的漢明距離等敏感信息不會(huì)泄漏,有效起到抗功耗攻擊的目的。
圖I是現(xiàn)有技術(shù)中DES循環(huán)迭代MASK掩碼技術(shù)的算法流程 圖2是現(xiàn)有技術(shù)中DES循環(huán)迭代MASK掩碼技術(shù)的硬件結(jié)構(gòu)框 圖3是本發(fā)明的抗DES功耗攻擊的增強(qiáng)型MASK掩碼方法的硬件結(jié)構(gòu)框 圖4是本發(fā)明的抗DES功耗攻擊的增強(qiáng)型MASK掩碼方法中的開(kāi)始兩輪流水線運(yùn)算的硬件結(jié)構(gòu)框 圖5是本發(fā)明的抗DES功耗攻擊的增強(qiáng)型MASK掩碼方法中的最后兩輪流水線運(yùn)算的硬件結(jié)構(gòu)框 圖6是本發(fā)明的抗DES功耗攻擊的增強(qiáng)型MASK掩碼方法中的中間十二輪隨機(jī)定位邏輯運(yùn)算的硬件結(jié)構(gòu)框圖。
具體實(shí)施例方式以下根據(jù)圖3 圖6,具體說(shuō)明本發(fā)明的較佳實(shí)施例。如圖3所示,本發(fā)明所提供的抗DES功耗攻擊的增強(qiáng)型MASK掩碼方法,是在現(xiàn)有的DES循環(huán)迭代MASK掩碼方案的基礎(chǔ)上的改進(jìn),同樣共包含16輪運(yùn)算過(guò)程,具體步驟如下所示
步驟I、開(kāi)始兩輪DES運(yùn)算采用流水線運(yùn)算方式實(shí)現(xiàn),計(jì)算電路采用兩塊獨(dú)立互不相關(guān)的第一計(jì)算電路和第二計(jì)算電路實(shí)現(xiàn);
步驟2、中間十二輪,即第三輪至第十四輪的DES運(yùn)算過(guò)程采用隨機(jī)定位邏輯運(yùn)算方式實(shí)現(xiàn);
步驟3、最后兩輪DES運(yùn)算采用流水線運(yùn)算方式實(shí)現(xiàn),計(jì)算電路采用另外兩塊獨(dú)立互不相關(guān)的第三計(jì)算電路和第四計(jì)算電路實(shí)現(xiàn)。如圖3和圖4所示,步驟I中所述的開(kāi)始兩輪的DES運(yùn)算,每輪的實(shí)現(xiàn)電路仍然采用MASK掩碼方法,只是本發(fā)明中將該前兩輪的循環(huán)迭代實(shí)現(xiàn)方式使用流水線方式替代。具體地,步驟I包含
步驟I. I、第一輪的輸入在mplain和roundi之間由alloc_enl選擇,其中,mplain表示輸入的明文與隨機(jī)數(shù)掩碼后的結(jié)果,roundi表示DES計(jì)算過(guò)程中每輪的中間結(jié)果,alloc_enl表示第一計(jì)算電路的隨機(jī)定位邏輯是否選擇了該輪的電路;
由于第一輪的DES運(yùn)算采用流水線運(yùn)算方式實(shí)現(xiàn),因此alloc_enl非使能,值為0,即第一輪的輸入數(shù)據(jù)肯定是mplain,經(jīng)過(guò)第一計(jì)算電路combi的運(yùn)算,最終將第一輪的計(jì)算結(jié)果保存在第一寄存器rd_regl中并輸出。步驟I. 2、第二輪的輸入在第一輪的輸出和roundi之間由第二計(jì)算電路的隨機(jī)定位邏輯alloc_en2選擇,由于第二輪的DES運(yùn)算采用流水線運(yùn)算方式實(shí)現(xiàn),因此alloc_en2非使能,值為0,即第二輪的輸入數(shù)據(jù)肯定是第一輪的輸出數(shù)據(jù),經(jīng)過(guò)第二計(jì)算電路comb2、的運(yùn)算,最終將第二輪的計(jì)算結(jié)果保存在第二寄存器rd_reg2中。因?yàn)橛?jì)算第一輪DES運(yùn)算的第一計(jì)算電路combi、第一寄存器rd_regl和計(jì)算第二輪DES運(yùn)算的第二計(jì)算電路comb2、第二寄存器rd_reg2完全不同,在后端芯片布局時(shí),甚至可以將這兩塊電路分布設(shè)置在極其鄰近的地方,并且這兩輪計(jì)算之間不可能泄漏漢明距離。由于每輪的電路都采用MASK掩碼技術(shù)實(shí)現(xiàn),所以完全可以保證每輪內(nèi)、每輪間的運(yùn)算都不泄漏密鑰的敏感信息。如圖3和圖6所示,用于進(jìn)行DES運(yùn)算的電路一共有四塊,分別為用于開(kāi)始兩輪DES運(yùn)算的第一計(jì)算電路和第二計(jì)算電路,以及用于最后兩輪DES運(yùn)算的第三計(jì)算電路和第四計(jì)算電路。而中間總共十二輪的運(yùn)算則分別在這四塊計(jì)算電路中隨機(jī)選擇一塊進(jìn)行每輪運(yùn)算,這樣不僅可以減小芯片的面積,而且引入隨機(jī)定位的策略,可以讓功耗攻擊的難度更大。具體地,步驟2包含 步驟2. I、輪數(shù)譯碼電路round_decode根據(jù)DES運(yùn)算的當(dāng)前運(yùn)算輪數(shù)round決定整個(gè)隨機(jī)定位電路是否開(kāi)始運(yùn)行;當(dāng)DES運(yùn)算到中間十二輪時(shí),即在第三輪至第十四輪運(yùn)算時(shí),輪數(shù)譯碼電路round_decode使能整個(gè)隨機(jī)定位電路,同時(shí)產(chǎn)生請(qǐng)求rdn_req,請(qǐng)求產(chǎn)生隨機(jī)數(shù) random ;
其中,所述random是隨機(jī)數(shù),在本發(fā)明中取值為從0到3 ;random為0表示選擇第一計(jì)算電路,random為I表示選擇第二計(jì)算電路,random為2表示選擇第三計(jì)算電路,random為3表示選擇第四計(jì)算電路。所述ixnmd是DES運(yùn)算的當(dāng)前運(yùn)算輪數(shù),表示現(xiàn)在正在進(jìn)行DES第幾輪的運(yùn)算。步驟2. 2、根據(jù)所產(chǎn)生的隨機(jī)數(shù)random和當(dāng)前運(yùn)算輪數(shù)round,確定當(dāng)前這輪運(yùn)算將采用哪一塊計(jì)算電路,并將該塊計(jì)算電路的alloc_en使能,即置為I。例如,假設(shè)在第五輪的DES運(yùn)算過(guò)程中,輸入的隨機(jī)數(shù)random為0,即該第五輪DES運(yùn)算確定采用第一計(jì)算電路,此時(shí)第一計(jì)算電路的隨機(jī)定位邏輯alloc_enl置為I。步驟2. 3、被確定選中進(jìn)行當(dāng)前這輪DES運(yùn)算的計(jì)算電路,將選擇roundi作為其輸入數(shù)據(jù),并經(jīng)過(guò)計(jì)算將結(jié)果保存在相應(yīng)的寄存器中;若當(dāng)前正在進(jìn)行第三輪的DES運(yùn)算,則應(yīng)直接選擇第二輪的輸出作為其輸入數(shù)據(jù)。所述roundi是由隨機(jī)定位策略邏輯電路給出的DES計(jì)算結(jié)果的中間值,由隨機(jī)定位策略邏輯電路roundi_logic根據(jù)隨機(jī)數(shù)寄存器random_reg中所保存的前一輪產(chǎn)生的隨機(jī)數(shù)random的值而由相對(duì)應(yīng)的計(jì)算電路的寄存器中得到。因?yàn)榍耙惠啴a(chǎn)生的隨機(jī)數(shù)random的值直接代表了前一輪DES運(yùn)算是由哪塊計(jì)算電路進(jìn)行的,因此前一輪的DES運(yùn)算結(jié)果也就相應(yīng)存儲(chǔ)在該計(jì)算電路的寄存器中。繼續(xù)以前述例子為例,本步驟中,第一計(jì)算電路將不再選擇mplain作為第五輪的輸入數(shù)據(jù),而是選擇roundi作為第五輪的輸入數(shù)據(jù)。又假設(shè)此時(shí)隨機(jī)數(shù)寄存器random_reg中所保存的隨機(jī)數(shù)random的值為1,則說(shuō)明第四輪的DES運(yùn)算是由第二計(jì)算電路所進(jìn)行的,因此,第四輪的運(yùn)算結(jié)果保存在第二寄存器rd_reg2中。也就是說(shuō),第五輪的DES運(yùn)算輸入數(shù)據(jù)roundi可由第二寄存器rd_reg2中得到,其也就是第四輪DES運(yùn)算的結(jié)果。步驟2. 4、請(qǐng)求產(chǎn)生下一輪DES運(yùn)算的隨機(jī)數(shù)random,并由比較電路compare判斷相鄰兩輪DES運(yùn)算所產(chǎn)生的隨機(jī)數(shù)是否相同,如果相同,則必須再次請(qǐng)求產(chǎn)生隨機(jī)數(shù),直至所產(chǎn)生的隨機(jī)數(shù)random與前一輪所產(chǎn)生的隨機(jī)數(shù)random_reg不同為止。如此是為了保證這中間十二輪的DES運(yùn)算過(guò)程中不會(huì)出現(xiàn)相鄰兩輪選擇同一塊計(jì)算電路的情況發(fā)生,又因?yàn)槊枯喌倪\(yùn)算都采用MASK掩碼技術(shù)實(shí)現(xiàn),繼而做到完全保證每輪內(nèi)、每輪間都不泄漏密鑰的敏感信息。步驟2. 5、重復(fù)進(jìn)行步驟2. 2 2. 4,直至完成第三輪至第十四輪的DES運(yùn)算。如圖3和圖5所示,步驟3中所述的最后兩輪的DES運(yùn)算,每輪的實(shí)現(xiàn)電路仍然采用MASK掩碼方法,只是本發(fā)明中將該最后兩輪的循環(huán)迭代實(shí)現(xiàn)方式使用流水線方式替代。具體地,步驟3包含
步驟3. I、第十五輪的輸入在第十四輪輸出和roundi之間由第三計(jì)算電路的隨機(jī)定位邏輯alloc_en3選擇,由于第十五輪的DES運(yùn)算采用流水線運(yùn)算方式實(shí)現(xiàn),因此alloc_en3非使能,值為0,即第十五輪的輸入數(shù)據(jù)肯定是第十四輪的輸出數(shù)據(jù),經(jīng)過(guò)第三計(jì)算電路comb3的運(yùn)算,最終將第十五輪的計(jì)算結(jié)果保存在第三寄存器rd_reg3中。
步驟3. 2、第十六輪的輸入在第十五輪輸出和ixnmdi之間由第四計(jì)算電路的隨機(jī)定位邏輯alloc_en4選擇,由于第十六輪的DES運(yùn)算采用流水線運(yùn)算方式實(shí)現(xiàn),因此alloc_en4非使能,值為0,即第十六輪的輸入數(shù)據(jù)肯定是第十五輪的輸出數(shù)據(jù),經(jīng)過(guò)第四計(jì)算電路comb4的運(yùn)算,最終將第十六輪的計(jì)算結(jié)果保存在第四寄存器rd_reg4中。因?yàn)橛?jì)算第十五輪DES運(yùn)算的第三計(jì)算電路comb3、第三寄存器rd_reg3和計(jì)算第十六輪DES運(yùn)算的第四計(jì)算電路comb4、第四寄存器rd_reg4完全不同,在后端芯片布局時(shí),甚至可以將這兩塊電路分布設(shè)置在極其鄰近的地方,并且這兩輪計(jì)算之間不可能泄漏漢明距離。由于每輪的電路都采用MASK掩碼技術(shù)實(shí)現(xiàn),所以完全可以保證每輪內(nèi)、每輪間的運(yùn)算都不泄漏密鑰的敏感信息。綜上所述,本發(fā)明所提供的抗DES功耗攻擊的增強(qiáng)型MASK掩碼方法,其是在現(xiàn)有的DES循環(huán)迭代MASK掩碼方案的基礎(chǔ)上,將DES運(yùn)算的開(kāi)始兩輪和最后兩輪采用流水線的方式實(shí)現(xiàn),這四輪的計(jì)算電路分別采用獨(dú)立互不相關(guān)的4塊計(jì)算電路實(shí)現(xiàn),從而保證相鄰兩輪之間的漢明距離等敏感信息不再泄漏。而在DES運(yùn)算的中間十二輪運(yùn)算中,如果也采用流水線方式實(shí)現(xiàn),則將大大增加芯片面積。一旦全部16輪運(yùn)算都采用流水線的方式實(shí)現(xiàn),芯片面積將增加16倍至多,從而大大增加設(shè)計(jì)成本。因此本發(fā)明將中間十二輪運(yùn)算采用隨機(jī)定位邏輯運(yùn)算的方式實(shí)現(xiàn),不僅可以有效防止MASK掩碼后每?jī)奢喼g漢明距離的泄漏,還能夠減小芯片面積,降低芯片設(shè)計(jì)成本。盡管本發(fā)明的內(nèi)容已經(jīng)通過(guò)上述優(yōu)選實(shí)施例作了詳細(xì)介紹,但應(yīng)當(dāng)認(rèn)識(shí)到上述的描述不應(yīng)被認(rèn)為是對(duì)本發(fā)明的限制。在本領(lǐng)域技術(shù)人員閱讀了上述內(nèi)容后,對(duì)于本發(fā)明的多種修改和替代都將是顯而易見(jiàn)的。因此,本發(fā)明的保護(hù)范圍應(yīng)由所附的權(quán)利要求來(lái)限定。
權(quán)利要求
1.一種抗DES功耗攻擊的增強(qiáng)型MASK掩碼方法,其特征在于,該方法包含以下步驟 步驟I、開(kāi)始兩輪DES運(yùn)算采用流水線運(yùn)算方式實(shí)現(xiàn),計(jì)算電路采用兩塊獨(dú)立互不相關(guān)的第一計(jì)算電路和第二計(jì)算電路實(shí)現(xiàn);每輪的DES運(yùn)算采用MASK掩碼方法進(jìn)行計(jì)算; 步驟2、第三輪至第十四輪的DES運(yùn)算過(guò)程采用隨機(jī)定位邏輯運(yùn)算方式實(shí)現(xiàn);每輪的DES運(yùn)算采用MASK掩碼方法進(jìn)行計(jì)算; 步驟3、最后兩輪DES運(yùn)算采用流水線運(yùn)算方式實(shí)現(xiàn),計(jì)算電路采用另外兩塊獨(dú)立互不相關(guān)的第三計(jì)算電路和第四計(jì)算電路實(shí)現(xiàn);每輪的DES運(yùn)算采用MASK掩碼方法進(jìn)行計(jì)算。
2.如權(quán)利要求I所述的抗DES功耗攻擊的增強(qiáng)型MASK掩碼方法,其特征在于,所述的步驟I中,具體包含 步驟I. I、第一輪的輸入在mplain和roundi之間由第一計(jì)算電路的隨機(jī)定位邏輯alloc_enl選擇,其中,mplain表示輸入的明文與隨機(jī)數(shù)掩碼后的結(jié)果,roundi表示DES計(jì)算過(guò)程中每輪的中間結(jié)果; 由于第一輪的DES運(yùn)算采用流水線運(yùn)算方式實(shí)現(xiàn),因此alloc_enl非使能,值為0,即第一輪的輸入數(shù)據(jù)為mplain,經(jīng)過(guò)第一計(jì)算電路的運(yùn)算,將第一輪的計(jì)算結(jié)果保存在第一寄存器中并輸出; 步驟I. 2、第二輪的輸入在第一輪的輸出和ixnmdi之間由第二計(jì)算電路的隨機(jī)定位邏輯alloc_en2選擇,由于第二輪的DES運(yùn)算采用流水線運(yùn)算方式實(shí)現(xiàn),因此alloc_en2非使能,值為0,即第二輪的輸入數(shù)據(jù)為第一輪的輸出數(shù)據(jù),經(jīng)過(guò)第二計(jì)算電路的運(yùn)算,將第二輪的計(jì)算結(jié)果保存在第二寄存器中。
3.如權(quán)利要求2所述的抗DES功耗攻擊的增強(qiáng)型MASK掩碼方法,其特征在于,所述的步驟2中,每一輪的DES運(yùn)算分別在第一計(jì)算電路、第二計(jì)算電路、第三計(jì)算電路和第四計(jì)算電路中隨機(jī)選擇一塊進(jìn)行,具體包含 步驟2. I、輪數(shù)譯碼電路根據(jù)DES運(yùn)算的當(dāng)前運(yùn)算輪數(shù)round決定整個(gè)隨機(jī)定位電路是否開(kāi)始運(yùn)行;iDES運(yùn)算到第三輪至第十四輪運(yùn)算時(shí),輪數(shù)譯碼電路使能整個(gè)隨機(jī)定位電路,同時(shí)產(chǎn)生請(qǐng)求rdn_req,請(qǐng)求產(chǎn)生隨機(jī)數(shù)random ; 其中,所述random是隨機(jī)數(shù),取值為從0到3 ;random為0表示選擇第一計(jì)算電路,random為I表示選擇第二計(jì)算電路,random為2表示選擇第三計(jì)算電路,random為3表示選擇第四計(jì)算電路; 步驟2. 2、根據(jù)所產(chǎn)生的隨機(jī)數(shù)random和當(dāng)前運(yùn)算輪數(shù)round,確定當(dāng)前這輪DES運(yùn)算將采用哪一塊計(jì)算電路,并將該塊計(jì)算電路的alloc_en使能,即置為I ; 步驟2. 3、被確定選中進(jìn)行當(dāng)前這輪DES運(yùn)算的計(jì)算電路,將選擇roundi作為其輸入數(shù)據(jù),并經(jīng)過(guò)計(jì)算將結(jié)果保存在相應(yīng)的寄存器中;若當(dāng)前正在進(jìn)行第三輪的DES運(yùn)算,則應(yīng)直接選擇第二輪的輸出作為其輸入數(shù)據(jù); 步驟2. 4、請(qǐng)求產(chǎn)生下一輪DES運(yùn)算的隨機(jī)數(shù)random,并由比較電路判斷相鄰兩輪DES運(yùn)算所產(chǎn)生的隨機(jī)數(shù)是否相同,如果相同,則必須再次請(qǐng)求產(chǎn)生隨機(jī)數(shù),直至所產(chǎn)生的隨機(jī)數(shù)與前一輪所產(chǎn)生的隨機(jī)數(shù)不同為止; 步驟2. 5、重復(fù)進(jìn)行步驟2. 2 2. 4,直至完成第三輪至第十四輪的DES運(yùn)算。
4.如權(quán)利要求3所述的抗DES功耗攻擊的增強(qiáng)型MASK掩碼方法,其特征在于,所述的步驟2. 4中,roundi是由隨機(jī)定位策略邏輯電路給出的DES計(jì)算結(jié)果的中間值,由隨機(jī)定位策略邏輯電路根據(jù)隨機(jī)數(shù)寄存器中所保存的前一輪產(chǎn)生的隨機(jī)數(shù)random的值而由相對(duì)應(yīng)的計(jì)算電路的寄存器中得到; 所述前一輪產(chǎn)生的隨機(jī)數(shù)random的值表示前一輪DES運(yùn)算是由哪塊相應(yīng)的計(jì)算電路進(jìn)行的,因此前一輪的DES運(yùn)算結(jié)果也就相應(yīng)存儲(chǔ)在該計(jì)算電路的寄存器中。
5.如權(quán)利要求4所述的抗DES功耗攻擊的增強(qiáng)型MASK掩碼方法,其特征在于,所述的步驟3中,具體包含 步驟3. I、第十五輪的輸入在第十四輪輸出和roundi之間由第三計(jì)算電路的隨機(jī)定位邏輯alloc_en3選擇,由于第十五輪的DES運(yùn)算采用流水線運(yùn)算方式實(shí)現(xiàn),因此alloc_en3非使能,值為0,即第十五輪的輸入數(shù)據(jù)為第十四輪的輸出數(shù)據(jù),經(jīng)過(guò)第三計(jì)算電路的運(yùn)算,最終將第十五輪的計(jì)算結(jié)果保存在第三寄存器中; 步驟3. 2、第十六輪的輸入在第十五輪輸出和roundi之間由第四計(jì)算電路的隨機(jī)定位邏輯alloc_en4選擇,由于第十六輪的DES運(yùn)算采用流水線運(yùn)算方式實(shí)現(xiàn),因此alloc_en4非使能,值為0,即第十六輪的輸入數(shù)據(jù)為第十五輪的輸出數(shù)據(jù),經(jīng)過(guò)第四計(jì)算電路的運(yùn)算,最終將第十六輪的計(jì)算結(jié)果保存在第四寄存器中。
全文摘要
本發(fā)明涉及一種抗DES功耗攻擊的增強(qiáng)型MASK掩碼方法,包含步驟1、開(kāi)始兩輪DES運(yùn)算采用流水線運(yùn)算方式實(shí)現(xiàn),計(jì)算電路采用獨(dú)立互不相關(guān)的第一計(jì)算電路和第二計(jì)算電路實(shí)現(xiàn);步驟2、第三輪至第十四輪的DES運(yùn)算過(guò)程采用隨機(jī)定位邏輯運(yùn)算方式實(shí)現(xiàn);步驟3、最后兩輪DES運(yùn)算采用流水線運(yùn)算方式實(shí)現(xiàn),計(jì)算電路采用獨(dú)立互不相關(guān)的第三計(jì)算電路和第四計(jì)算電路實(shí)現(xiàn);步驟1~3中每輪的DES運(yùn)算采用MASK掩碼方法進(jìn)行計(jì)算。本發(fā)明在減小芯片設(shè)計(jì)面積的基礎(chǔ)上,可以徹底地解決現(xiàn)有技術(shù)中MASK掩碼方案相鄰兩輪之間漢明距離泄漏的問(wèn)題;不僅可以保證每輪之間的敏感信息不泄漏,同時(shí)保證了相鄰兩輪之間的漢明距離等敏感信息不會(huì)泄漏,有效起到抗功耗攻擊的目的。
文檔編號(hào)H04L9/06GK102752103SQ20121026119
公開(kāi)日2012年10月24日 申請(qǐng)日期2012年7月26日 優(yōu)先權(quán)日2012年7月26日
發(fā)明者劉紅明, 周玉潔, 朱念好 申請(qǐng)人:上海愛(ài)信諾航芯電子科技有限公司