本發(fā)明涉及密碼加密技術(shù),具體涉及一種安全的DES算法的MAC計(jì)算方法及系統(tǒng)。
背景技術(shù):
DES全稱為Data Encryption Standard,即數(shù)據(jù)加密標(biāo)準(zhǔn),是一種使用密鑰加密的塊算法,1977年被美國聯(lián)邦政府的國家標(biāo)準(zhǔn)局確定為聯(lián)邦資料處理標(biāo)準(zhǔn)(FIPS),并授權(quán)在非密級政府通信中使用,隨后該算法在國際上廣泛流傳。
DES算法中涉及到MAC計(jì)算。MAC(Message Authentication Code)即為消息認(rèn)證碼,是密碼學(xué)中通信實(shí)體雙方使用的一種驗(yàn)證機(jī)制,保證消息數(shù)據(jù)完整性的一種工具。其構(gòu)造方法是由M.Bellare提出的,安全性依賴于Hash函數(shù),故也稱帶密鑰的Hash函數(shù)。消息認(rèn)證碼是基于密鑰和消息摘要所獲得的一個值,可用于數(shù)據(jù)源發(fā)認(rèn)證和完整性校驗(yàn)。
采用DES算法的卡片可能受到的攻擊方式多種多樣,攻擊的目的是獲取芯片中的敏感數(shù)據(jù)。在DES算法的MAC計(jì)算過程中有秘鑰直接參與運(yùn)算,雖然最后一塊加密時使用的3DES加密有較高的安全級別,但除了最后一塊的其他塊都使用1DES加密,很容易使用暴力破解獲取秘鑰,一直以來在各類芯片中都是被攻擊的熱點(diǎn),因此需要在充分運(yùn)用已有硬件安全機(jī)制的條件下,合理運(yùn)用軟件手段對DES-MAC計(jì)算中的1DES計(jì)算過程進(jìn)行必要的防護(hù),保證加密運(yùn)算時的數(shù)據(jù)安全。
英飛凌芯片上帶有SCP加密協(xié)處理器,可用于DES加密計(jì)算。目前的DES-MAC計(jì)算過程中,一般直接將秘鑰和待加密數(shù)據(jù)輸入SCP相關(guān)寄存器直接進(jìn)行計(jì)算,中間數(shù)據(jù)以明文方式參與下一輪的數(shù)據(jù)運(yùn)算,沒有軟件保護(hù)措施確保數(shù)據(jù)運(yùn)算的安全性,攻擊者使用常規(guī)的DFA、DPA、CPA等攻擊手段,利用硬件自身的安全缺陷可獲取相關(guān)秘鑰數(shù)據(jù)。
現(xiàn)有的某些安全增強(qiáng)的方案中,為了防止DFA攻擊,利用SCP計(jì)算出密文后,立即對密文做一次解密運(yùn)算,檢查解密結(jié)果和加密運(yùn)算的輸入數(shù)據(jù)是否一致,確保運(yùn)算結(jié)果的正確性。,此種方案在一定程度上可以增加加密過程的安全性,但此種安全保護(hù)方案功能較為單一,保護(hù)強(qiáng)度不足,依然存在其他安全漏洞。
技術(shù)實(shí)現(xiàn)要素:
針對現(xiàn)有技術(shù)中存在的問題,本發(fā)明提供了一種安全的DES算法的MAC計(jì)算方法及系統(tǒng)。該技術(shù)方案針對DES-MAC計(jì)算過程中常用的DFA、DPA、CPA等攻擊方法,對MAC計(jì)算中的潛在漏洞進(jìn)行修補(bǔ),保證加密過程中的數(shù)據(jù)安全。
為達(dá)到上述發(fā)明目的,本發(fā)明的技術(shù)方案如下:
一種安全的DES算法的MAC計(jì)算方法,包括:
(1)將待加密的輸入數(shù)據(jù)分塊;
(2)對非最后一塊所對應(yīng)的輸入數(shù)據(jù)進(jìn)行單DES加密;
(3)對最后一塊所對應(yīng)的輸入數(shù)據(jù)進(jìn)行三DES加密;
(4)輸出最終加密結(jié)果;
上述步驟(2)、(3)中,寫入密鑰或當(dāng)前塊所對應(yīng)的輸入數(shù)據(jù)時,相應(yīng)的明文數(shù)據(jù)分散成為Share_1和Share_2兩部分,通過異或方式寫入。
進(jìn)一步地,上述安全的DES算法的MAC計(jì)算方法,將密鑰或當(dāng)前塊所對應(yīng)的輸入數(shù)據(jù)的明文數(shù)據(jù)分散為Share_1和Share_2的方法為:生成與明文同等長度的隨機(jī)數(shù)據(jù)作為Share_1;將明文數(shù)據(jù)與所述隨機(jī)數(shù)據(jù)進(jìn)行異或操作,作為Share_2。
進(jìn)一步地,上述安全的DES算法的MAC計(jì)算方法,將密鑰或當(dāng)前塊所對應(yīng)的輸入數(shù)據(jù)的明文數(shù)據(jù)分散為Share_1和Share_2的過程為:
設(shè)置循環(huán)控制變量初始為0,滿足循環(huán)條件時進(jìn)行循環(huán)步驟,所述的循環(huán)條件為循環(huán)控制變量小于明文數(shù)據(jù)長度;
循環(huán)步驟包括:產(chǎn)生一個字節(jié)的隨機(jī)數(shù)放入Share_1數(shù)據(jù)組,并將該隨機(jī)數(shù)與明文數(shù)據(jù)中與當(dāng)前循環(huán)控制變量對應(yīng)的數(shù)據(jù)進(jìn)行異或運(yùn)算,生成的結(jié)果放入Share_2數(shù)據(jù)組,循環(huán)控制變量自增1,判斷循環(huán)控制變量是否滿足循環(huán)條件;
當(dāng)循環(huán)控制變量不滿足循環(huán)條件時,Share_1數(shù)據(jù)組作為Share_1,Share_2數(shù)據(jù)組作為Share_2。
進(jìn)一步地,上述安全的DES算法的MAC計(jì)算方法,步驟(2)中,進(jìn)行單DES加密后采用blind模式對加密結(jié)果進(jìn)行掩碼;
SCP寄存器配置為:
SCP_CFG=DEFAULT_SCP_CFG|SCP_CFG_EN_XOR_KEY;
SCP_CTRL=(handle->cipher_mode&0xff00)|FB_MODE_BLD。
進(jìn)一步地,上述安全的DES算法的MAC計(jì)算方法,步驟(2)和(3)中,進(jìn)行單DES加密和三DES加密寫入密鑰或當(dāng)前塊所對應(yīng)的輸入數(shù)據(jù)時,
以直接寫入的方式將相應(yīng)數(shù)據(jù)的Share_1寫入相應(yīng)的寄存器中,配置SCP寄存器為異或?qū)懭肽J?,再以異或的方式將相?yīng)數(shù)據(jù)的Share_2數(shù)據(jù)寫入相應(yīng)的寄存器。
進(jìn)一步地,上述安全的DES算法的MAC計(jì)算方法,步驟(2)中進(jìn)行單DES加密后還進(jìn)行校驗(yàn)步驟;
所述校驗(yàn)步驟包括:
設(shè)置寄存器參數(shù),進(jìn)行正向加密,加密結(jié)束后讀取該正向加密結(jié)果數(shù)據(jù);
設(shè)置寄存器參數(shù),進(jìn)行反向加密,加密結(jié)束后讀取該反向加密結(jié)果數(shù)據(jù);
上述正向加密和反向加密兩次加密,取其中一次加密結(jié)果數(shù)據(jù)與取反后的另一項(xiàng)加密結(jié)果數(shù)據(jù)進(jìn)行比較,若兩次不相同則執(zhí)行異常操作。
進(jìn)一步地,上述安全的DES算法的MAC計(jì)算方法,校驗(yàn)步驟中隨機(jī)選取所述正向加密和反向加密的執(zhí)行順序。
進(jìn)一步地,上述安全的DES算法的MAC計(jì)算方法,校驗(yàn)步驟中,進(jìn)行最后一次加密時,將密鑰寫入相應(yīng)寄存器后抹除相應(yīng)的密鑰數(shù)據(jù)。
進(jìn)一步地,上述安全的DES算法的MAC計(jì)算方法,步驟(2)中,對輸入數(shù)據(jù)進(jìn)行加密時:進(jìn)行多輪加密運(yùn)算,隨機(jī)選取其中一輪采用真實(shí)的輸入數(shù)據(jù)進(jìn)行運(yùn)算,其余幾輪采用偽數(shù)據(jù)進(jìn)行。
此外,本發(fā)明還提供了與上述方法相對應(yīng)的一種安全的DES算法的MAC計(jì)算系統(tǒng),包括:
數(shù)據(jù)預(yù)處理模塊,用于將待加密的輸入數(shù)據(jù)分塊;
第一DES加密模塊,用于以異或方式寫入密鑰和非最后一塊的所對應(yīng)的輸入數(shù)據(jù),進(jìn)行單DES加密;
第二DES加密模塊,用于以異或方式寫入密鑰和最后一塊所對應(yīng)輸入數(shù)據(jù),進(jìn)行三重DES加密;
數(shù)據(jù)分散模塊,用于寫入密鑰或相應(yīng)的輸入數(shù)據(jù)前將相應(yīng)的明文數(shù)據(jù)分散成為Share_1和Share_2兩部分。
進(jìn)一步地,上述安全的DES算法的MAC計(jì)算系統(tǒng),還包括:
校驗(yàn)?zāi)K,用于單DES加密后進(jìn)行加密校驗(yàn);加密校驗(yàn)的方法為:
設(shè)置寄存器參數(shù),進(jìn)行正向加密,加密結(jié)束后讀取該正向加密結(jié)果數(shù)據(jù);
設(shè)置寄存器參數(shù),進(jìn)行反向加密,加密結(jié)束后讀取該反向加密結(jié)果數(shù)據(jù);
上述正向加密和反向加密兩次加密,取其中一次加密結(jié)果數(shù)據(jù)與取反后的另一項(xiàng)加密結(jié)果數(shù)據(jù)進(jìn)行比較,若兩次不相同則執(zhí)行異常操作。
進(jìn)一步地,上述安全的DES算法的MAC計(jì)算系統(tǒng),還包括:
加密控制模塊,用于控制進(jìn)行多輪加密運(yùn)算,隨機(jī)選取其中一輪采用真實(shí)的輸入數(shù)據(jù)進(jìn)行運(yùn)算,其余幾輪采用偽數(shù)據(jù)進(jìn)行。
本發(fā)明具有以下有益效果:
1、本發(fā)明將密鑰分為兩部分,采用異或方式寫入,避免了卡片在進(jìn)行秘鑰輸入過程中可能受到的模板攻擊的難度,增加了擾動攻擊的難度;
2、采用DES的互補(bǔ)模式進(jìn)行校驗(yàn),并使key和key的補(bǔ)碼參與運(yùn)算的順序隨機(jī)分配,保證加密過程的數(shù)據(jù)完整性,增加了卡片抵抗擾動攻擊和側(cè)信道攻擊的能力;
3、采用dummy運(yùn)算,對真實(shí)加密過程進(jìn)行有效掩蓋,增加了功耗分析的難度。
附圖說明
圖1為MAC計(jì)算過程的流程圖。
圖2為本發(fā)明安全的DES算法的MAC計(jì)算方法的明文數(shù)據(jù)分散流程圖。
圖3為本發(fā)明安全的DES算法的MAC計(jì)算方法的三重DES加密過程中密鑰A和密鑰B寫入相應(yīng)寄存器的流程圖。
圖4為本發(fā)明安全的DES算法的MAC計(jì)算方法的進(jìn)行單DES加密后的校驗(yàn)步驟流程圖。
圖5為本發(fā)明安全的DES算法的MAC計(jì)算方法中采用偽數(shù)據(jù)對真實(shí)輸入數(shù)據(jù)進(jìn)行掩蓋的流程圖。
圖6為本發(fā)明安全的DES算法的MAC計(jì)算系統(tǒng)的結(jié)構(gòu)框圖。
具體實(shí)施方式
下面結(jié)合附圖和實(shí)施例對本發(fā)明進(jìn)行詳細(xì)的描述。
如圖1所示,現(xiàn)有技術(shù)的DES算法的MAC計(jì)算方法(本實(shí)例基于IFX77系列芯片),包括以下具體步驟:
(1)將輸入數(shù)據(jù)按照預(yù)設(shè)格式分塊,記錄塊數(shù)I,S101;
本實(shí)施例中以input地址為待加密數(shù)據(jù)首地址,8字節(jié)為一塊,按照input數(shù)據(jù)的長度N將待加密數(shù)據(jù)分為I=(N-1)/8+1塊,最后一塊不足8字節(jié)的按照本領(lǐng)域常規(guī)技術(shù)手段填充。
(2)計(jì)數(shù)器Num初始值設(shè)為0,S102;
(3)判斷Num<I-1,若是則執(zhí)行步驟(4),否則執(zhí)行步驟(5),S103;
(4)寫入密鑰KeyA和當(dāng)前塊所對應(yīng)的輸入數(shù)據(jù),S104;進(jìn)行單DES加密,S105,加密結(jié)果與下一塊所對應(yīng)的輸入數(shù)據(jù)進(jìn)行異或運(yùn)算,并將運(yùn)算結(jié)果作為所述的下一塊所對應(yīng)的輸入數(shù)據(jù),S106,Num自增1,S107;返回步驟S103;
(5)則寫入密鑰KeyA、密鑰KeyB和當(dāng)前塊所對應(yīng)的輸入數(shù)據(jù),S108;進(jìn)行三重DES加密,S109。
上述DES算法的MAC計(jì)算過程中主要包括數(shù)據(jù)分塊、單DES加密、塊連接(將當(dāng)前塊輸出的加密結(jié)果與下一塊的輸入數(shù)據(jù)做異或運(yùn)算后作為所述下一塊的輸入數(shù)據(jù),完成所述當(dāng)前塊和所述下一塊的連接)和三重DES加密步驟,其中除了三重DES加密有較高的安全級別不容易被攻破外,其余流程均需安全保護(hù)。為解決該安全漏洞,本發(fā)明的方法在寫入數(shù)據(jù)時,將待寫入密鑰和當(dāng)前塊所對應(yīng)的輸入數(shù)據(jù)的明文分散成為share_1和share_2兩部分,通過異或方式寫入。
以IFX-M7794芯片為例,如圖2所示,將密鑰或當(dāng)前塊對應(yīng)的輸入數(shù)據(jù)的明文分散為Share_1和Share_2的方法為:生成與明文同等長度的隨機(jī)數(shù)據(jù)作為Share_1部分;將明文數(shù)據(jù)與所述隨機(jī)數(shù)據(jù)進(jìn)行異或操作,作為Share_2部分。具體可采用下述方式:設(shè)置循環(huán)控制變量B初始為0,滿足循環(huán)條件時進(jìn)行循環(huán)步驟,S201;循環(huán)條件為:循環(huán)控制變量B小于明文數(shù)據(jù)長度(num_bytes);循環(huán)步驟包括:產(chǎn)生一個字節(jié)的隨機(jī)數(shù)放入Share_1數(shù)據(jù)組,S202,并將該隨機(jī)數(shù)與明文數(shù)據(jù)中與當(dāng)前循環(huán)控制變量對應(yīng)的數(shù)據(jù)進(jìn)行異或運(yùn)算,生成的結(jié)果放入Share_2數(shù)據(jù)組,循環(huán)控制變量自增1,S203,返回步驟S201判斷循環(huán)控制變量B是否小于明文數(shù)據(jù)長度(num_bytes);
當(dāng)循環(huán)控制變量不滿足循環(huán)條件時,Share_1數(shù)據(jù)組作為Share_1部分,Share_2數(shù)據(jù)組作為Share_2部分。
經(jīng)過上述流程的變換操作,Share_1與Share_2進(jìn)行異或操作可以得到密鑰或當(dāng)前塊所對應(yīng)的輸入數(shù)據(jù)的明文,將寄存器配置為異或?qū)懭敕绞胶?,將通常使用的輸入?shù)據(jù)直接寫入方式替換為異或方式寫入。
進(jìn)一步地,上述步驟(4)中,對進(jìn)行單DES加密時采用blind模式,進(jìn)行單DES加密的SCP寄存器配置為:
SCP_CFG=DEFAULT_SCP_CFG|SCP_CFG_EN_XOR_KEY;
SCP_CTRL=(handle->cipher_mode&0xff00)|FB_MODE_BLD。
經(jīng)過以上配置,SCP將每塊加密后的輸出結(jié)果有效掩蓋,防止中間數(shù)據(jù)以明文數(shù)據(jù)泄露。
本實(shí)施例中以分散方式寫入數(shù)據(jù)的過程以三重加密為例,具體步驟如圖3所示,為:配置SCP寄存器為默認(rèn)值,S301,即直接寫入方式,將密鑰A、密鑰B的Share_1部分以直接寫入的方式寫入到SCP的KeyA和KeyB寄存器中,S302;配置SCP寄存器為SCP_CFG_EN_XOR_KEY模式,S303,即將待寫入數(shù)據(jù)與目的寄存器中已有數(shù)據(jù)進(jìn)行異或并寫入;將密鑰A、密鑰B的share_2部分以異或?qū)懭氲姆绞椒謩e寫入SCP的KeyA和KeyB寄存器,S304。
進(jìn)一步地,進(jìn)行單DES加密后還進(jìn)行校驗(yàn)步驟,包括:設(shè)置寄存器參數(shù),進(jìn)行正向加密,加密結(jié)束后讀取該正向加密結(jié)果數(shù)據(jù);設(shè)置寄存器參數(shù),進(jìn)行反向加密,等待加密結(jié)束后讀取該反向加密結(jié)果數(shù)據(jù);比較兩次加密結(jié)果數(shù)據(jù),比較正向加密結(jié)果數(shù)據(jù)與取反后的反向加密結(jié)果數(shù)據(jù),若兩次不相同則拋出異常。校驗(yàn)步驟中隨機(jī)選取所述正向加密和反向加密的進(jìn)行順序。校驗(yàn)步驟中,進(jìn)行最后一次加密后重新掩碼。
本發(fā)明一個具體實(shí)施例的校驗(yàn)步驟如圖4所示,包括:設(shè)定SCP_CFG寄存器的參數(shù),配置SCP寄存器為異或?qū)懭敕绞剑琒401;隨機(jī)給toggle賦值0或1,S402;將toggle值以異或的方式寫入相應(yīng)寄存器(T0、T1和密鑰寄存器),寫入輸入數(shù)據(jù)至SCP_ENC_DATA寄存器,開始加密,S403;等待加密結(jié)束,讀出加密數(shù)據(jù)data1,S4;配置SCP寄存器為異或?qū)懭敕绞?,S405;反轉(zhuǎn)相應(yīng)寄存器(T0、T1和密鑰寄存器),寫入與步驟S403中相同的輸入數(shù)據(jù)至SCP_ENC_DATA寄存器,開始加密,S406,在第二次加密計(jì)算后,抹除相應(yīng)數(shù)據(jù),進(jìn)行密鑰保護(hù),S407;等待加密結(jié)果,讀出加密結(jié)果Data2,S408;比較Data1和對Data2取反的結(jié)果,若相同則校驗(yàn)通過,若不同則執(zhí)行異常操作,具體操作包括鎖卡、拋出異常和標(biāo)記位累加等。在上述過程中,由于toggle賦值是隨機(jī)賦值的0或1,Data1有可能是正向加密結(jié)果數(shù)據(jù)也有可能是反向加密結(jié)果數(shù)據(jù);但無論如何,Data2均是data1的互補(bǔ)結(jié)果數(shù)據(jù),因此,若正常,則通過將Data2取反后的加密結(jié)果數(shù)據(jù)必定與Data1相同。
寄存器T0和T1的主要用于在輸出加密結(jié)果時對加密結(jié)果進(jìn)行掩碼,防止輸出明文泄露。在對輸入數(shù)據(jù)加密前硬件會自動將T0值與SCP_ENC_DATA中數(shù)據(jù)做異或操作,因此步驟S406中,T0做了反轉(zhuǎn),也相當(dāng)于將inputData進(jìn)行了反轉(zhuǎn)操作。
步驟S406中,反轉(zhuǎn)的具體方法為,對toggle值取反,將取反后的toggle值以異或的方式寫入相應(yīng)數(shù)據(jù)寄存器。在上述步驟中配置SCP_CFG寄存器參數(shù)時,將防止DFA攻擊的回退次數(shù)寄存器設(shè)置為隨機(jī)數(shù),增加功耗分析難度,也即將SCP_CFG寄存器中的DFA_CTR位配置為至少為SCP_CFG_DFA_CTR_MIN(該值為8)的隨機(jī)值N,代表對最后的N輪進(jìn)行兩次運(yùn)算以檢查運(yùn)算的正確性,目的是防止DFA攻擊。互補(bǔ)模式是指:假設(shè)有公式DES(D,K)=C,D為待加密數(shù)據(jù),K為秘鑰,C為加密結(jié)果。如果將D取反為~D,K取反為~K,則必然有DES(~D,~K)=~C。本實(shí)施例中正算、反算兩次計(jì)算過程中,利用toggle值賦值給相應(yīng)寄存器,取得互補(bǔ)的運(yùn)算結(jié)果。在此校驗(yàn)方式中,將正算、反算順序設(shè)置為隨機(jī),達(dá)到掩蓋真實(shí)計(jì)算的目的。密鑰使用完成后立刻掩碼,防止能量泄露。
進(jìn)一步地,每一塊的輸入數(shù)據(jù)加密過程采用dummy模式。主要為在每一塊的加密過程中進(jìn)行多輪加密運(yùn)算,隨機(jī)選取其中一輪采用真實(shí)的輸入數(shù)據(jù)進(jìn)行運(yùn)算,其余幾輪采用偽數(shù)據(jù)進(jìn)行。圖5所示為一具體實(shí)施例流程:設(shè)定運(yùn)算總輪數(shù)N,在N中隨機(jī)確定真實(shí)計(jì)算位置(例如N=5,在不大于5的輪數(shù)隨機(jī)到第3輪為真實(shí)位置(realPosition),則在第3輪使用真實(shí)的輸入數(shù)據(jù)進(jìn)行加密運(yùn)算,其他輪數(shù)采用偽數(shù)據(jù)進(jìn)行偽計(jì)算),設(shè)定循環(huán)控制變量dummyCounter初始值為1,S501;dummyCounter不大于運(yùn)算總輪數(shù)N時進(jìn)入循環(huán)步驟,S502;循環(huán)步驟:判斷當(dāng)前dummyCounter是否為真實(shí)位置,S503,若是,則寫入真實(shí)輸入數(shù)據(jù),S504,若否,則寫入偽輸入數(shù)據(jù),S505,寫入數(shù)(真實(shí)輸入數(shù)據(jù)或?yàn)檩斎霐?shù)據(jù))后對該數(shù)據(jù)進(jìn)行加密,循環(huán)控制變量dummyCounter自增1,S506,返回S502,判斷dummyCounter值是否不大于運(yùn)算總輪數(shù)N。如此能夠?qū)φ鎸?shí)計(jì)算和驗(yàn)算過程進(jìn)行掩蓋,增加通過電磁監(jiān)聽進(jìn)行數(shù)據(jù)分析的復(fù)雜度。
相應(yīng)的,如圖6所示,本具體實(shí)施方式還提供了基于DES算法的MAC計(jì)算過程安全保護(hù)系統(tǒng),包括:
數(shù)據(jù)預(yù)處理模塊,用于將輸入數(shù)據(jù)按照預(yù)設(shè)格式分塊;
塊連接模塊,用于在第一DES加密模塊進(jìn)行單DES加密后,將加密結(jié)果與下一塊的輸入數(shù)據(jù)進(jìn)行異或運(yùn)算,將運(yùn)算結(jié)果作為所述下一塊的輸入數(shù)據(jù);
第一DES加密模塊,用于以異或方式寫入密鑰和非最后一塊的所對應(yīng)的輸入數(shù)據(jù),進(jìn)行單DES加密;
第二DES加密模塊,用于以異或方式寫入密鑰和最后一塊所對應(yīng)輸入數(shù)據(jù),進(jìn)行三重DES加密;
數(shù)據(jù)分散模塊,用于寫入密鑰或相應(yīng)的輸入數(shù)據(jù)前將相應(yīng)的明文數(shù)據(jù)分散成為Share_1和Share_2兩部分。
上述基于DES算法的MAC計(jì)算過程安全保護(hù)系統(tǒng),還包括:
校驗(yàn)?zāi)K,用于單DES加密后進(jìn)行加密校驗(yàn);加密校驗(yàn)的方法為:
設(shè)置寄存器參數(shù),進(jìn)行正向加密,加密結(jié)束后讀取該正向加密結(jié)果數(shù)據(jù);
設(shè)置寄存器參數(shù),進(jìn)行反向加密,加密結(jié)束后讀取該反向加密結(jié)果數(shù)據(jù);
上述正向加密和反向加密兩次加密,取其中一次加密結(jié)果數(shù)據(jù)與取反后的另一項(xiàng)加密結(jié)果數(shù)據(jù)進(jìn)行比較,若兩次不相同則執(zhí)行異常操作,具體操作包括鎖卡、拋出異常和標(biāo)記位累加等。
另外,為進(jìn)一步增加功耗分析的難度,基于DES算法的MAC計(jì)算過程安全保護(hù)系統(tǒng)還包括:
加密控制模塊,用于控制進(jìn)行多輪加密運(yùn)算,隨機(jī)選取其中一輪采用真實(shí)的輸入數(shù)據(jù)進(jìn)行運(yùn)算,其余幾輪采用偽數(shù)據(jù)進(jìn)行。通過上述技術(shù)方案,本專利提供了較為完備的DES-MAC計(jì)算過程的軟硬件保護(hù)策略,達(dá)到了如下效果:
1、將密鑰分為兩部分,采用異或方式寫入,避免了卡片在進(jìn)行秘鑰輸入過程中遭受模板攻擊,大大增加擾動攻擊的難度。
2、采用DES的互補(bǔ)計(jì)算,并使key和key的補(bǔ)碼參與運(yùn)算的順序隨機(jī)分配,保證加密過程的數(shù)據(jù)完整性,增加了卡片抵抗擾動攻擊和電磁信號攻擊的能力。
3、采用dummy運(yùn)算,對真實(shí)加密過程進(jìn)行掩蓋,增加功耗分析的難度。
4、本發(fā)明采用對輸入數(shù)據(jù)進(jìn)行保護(hù),對中間結(jié)果進(jìn)行掩碼保護(hù),對加密流程進(jìn)行掩蓋等辦法,對MAC計(jì)算中的潛在漏洞進(jìn)行修補(bǔ),保證加密過程中的數(shù)據(jù)安全。
顯然,本領(lǐng)域的技術(shù)人員可以對本發(fā)明進(jìn)行各種改動和變型而不脫離本發(fā)明的精神和范圍。這樣,倘若對本發(fā)明的這些修改和變型屬于本發(fā)明權(quán)利要求及其同等技術(shù)的范圍之內(nèi),則本發(fā)明也意圖包含這些改動和變型在內(nèi)。