本發(fā)明涉及安全芯片領(lǐng)域,具體地,涉及一種抵抗故障攻擊的防護(hù)方法和裝置。
背景技術(shù):
隨著信息技術(shù)和計算機(jī)技術(shù)的發(fā)展和廣泛應(yīng)用,信息安全越來越受到人們的重視。近年來一些常用的攻擊技術(shù)也趨于成熟,如側(cè)信道攻擊、故障攻擊、物理攻擊等,這些都對芯片的安全防護(hù)提出更高要求。于是,人們越來越關(guān)注芯片的設(shè)計,尤其是芯片中針對各種攻擊的防護(hù)措施。側(cè)信道攻擊主要是利用芯片的功耗、電磁等信息進(jìn)行攻擊,如SPA、DPA、CPA等方法。故障攻擊主要通過一些手段誘導(dǎo)運行過程中的芯片產(chǎn)生錯誤,改變芯片的行為和運行結(jié)果,如DFA等。物理攻擊則是通過對芯片進(jìn)行掀蓋、腐蝕等操作,進(jìn)而通過逆向工程等方法進(jìn)行攻擊。現(xiàn)在比較成熟的芯片硬件的防護(hù)主要是引入噪聲、時鐘擾亂和對密碼模塊加入掩碼等方法。
故障攻擊最重要的操作是需要得到故障注入后的結(jié)果,如果防故障攻擊方法能夠判斷出芯片遭遇了故障攻擊,就可以不輸出結(jié)果,攻擊者也就無法繼續(xù)攻擊。現(xiàn)有抵抗故障攻擊的方法是將兩次運算結(jié)果直接進(jìn)行比較,由于攻擊者可以利用激光等手段攻擊CPU的比較結(jié)果,使得現(xiàn)有方法仍然不能有效抵抗故障攻擊。
技術(shù)實現(xiàn)要素:
本發(fā)明是為了克服現(xiàn)有抵抗故障攻擊的方法仍然不能有效抵抗故障攻擊的缺陷,根據(jù)本發(fā)明的一個方面,提出一種抵抗故障攻擊的防護(hù)方法。
本發(fā)明實施例提供的一種抵抗故障攻擊的防護(hù)方法,包括:獲取第一運算結(jié)果和第二運算結(jié)果,并將第一運算結(jié)果存儲于第一寄存器,將第二運算結(jié)果存儲于第二寄存器;讀取第一存儲器中的第一運算結(jié)果,并將第一運算結(jié)果存儲于第三存儲器;讀取第二存儲器中的第二運算結(jié)果,并將第二運算結(jié)果存儲于第四存儲器;判斷存儲有第一運算結(jié)果的存儲器中的第一運算結(jié) 果與存儲有第二運算結(jié)果的存儲器中的第二運算結(jié)果是否相同,當(dāng)判斷結(jié)果為第一運算結(jié)果與第二運算結(jié)果均相同時,輸出運算結(jié)果。
在上述技術(shù)方案中,該方法還包括:讀取第三存儲器中的第一運算結(jié)果,并將第一運算結(jié)果存儲于第五存儲器;讀取第四存儲器中的第二運算結(jié)果,并將第二運算結(jié)果存儲于第六存儲器。
在上述技術(shù)方案中,判斷存儲有第一運算結(jié)果的存儲器中的第一運算結(jié)果與存儲有第二運算結(jié)果的存儲器中的第二運算結(jié)果是否相同,包括:
判斷第一存儲器中的第一運算結(jié)果與第二存儲器中的第二運算結(jié)果是否相同;判斷第三存儲器中的第一運算結(jié)果與第四存儲器中的第二運算結(jié)果是否相同;或
判斷第一存儲器中的第一運算結(jié)果與第四存儲器中的第二運算結(jié)果是否相同;判斷第三存儲器中的第一運算結(jié)果與第二存儲器中的第二運算結(jié)果是否相同。
在上述技術(shù)方案中,同時執(zhí)行判斷存儲有第一運算結(jié)果的存儲器中的第一運算結(jié)果與存儲有第二運算結(jié)果的存儲器中的第二運算結(jié)果是否相同中的判斷步驟;或
按照先后順序依次執(zhí)行判斷存儲有第一運算結(jié)果的存儲器中的第一運算結(jié)果與存儲有第二運算結(jié)果的存儲器中的第二運算結(jié)果是否相同中的判斷步驟。
本發(fā)明是為了克服現(xiàn)有抵抗故障攻擊的方法仍然不能有效抵抗故障攻擊的缺陷,根據(jù)本發(fā)明的一個方面,提出一種抵抗故障攻擊的防護(hù)裝置。
本發(fā)明實施例提供的一種抵抗故障攻擊的防護(hù)裝置,包括:
預(yù)處理模塊,用于獲取第一運算結(jié)果和第二運算結(jié)果,并將第一運算結(jié)果存儲于第一寄存器,將第二運算結(jié)果存儲于第二寄存器;
多級存儲模塊,用于讀取第一存儲器中的第一運算結(jié)果,并將第一運算結(jié)果存儲于第三存儲器;讀取第二存儲器中的第二運算結(jié)果,并將第二運算結(jié)果存儲于第四存儲器;
多級判斷模塊,用于判斷存儲有第一運算結(jié)果的存儲器中的第一運算結(jié)果與存儲有第二運算結(jié)果的存儲器中的第二運算結(jié)果是否相同,當(dāng)判斷結(jié)果為第一運算結(jié)果與第二運算結(jié)果均相同時,輸出運算結(jié)果。
在上述技術(shù)方案中,多級存儲模塊還用于:讀取第三存儲器中的第一運算結(jié)果,并將第一運算結(jié)果存儲于第五存儲器;讀取第四存儲器中的第二運算結(jié)果,并將第二運算結(jié)果存儲于第六存儲器。
在上述技術(shù)方案中,多級判斷模塊具體用于:
判斷第一存儲器中的第一運算結(jié)果與第二存儲器中的第二運算結(jié)果是否相同;判斷第三存儲器中的第一運算結(jié)果與第四存儲器中的第二運算結(jié)果是否相同;或
判斷第一存儲器中的第一運算結(jié)果與第四存儲器中的第二運算結(jié)果是否相同;判斷第三存儲器中的第一運算結(jié)果與第二存儲器中的第二運算結(jié)果是否相同。
在上述技術(shù)方案中,多級判斷模塊具體用于:
同時執(zhí)行判斷存儲有第一運算結(jié)果的存儲器中的第一運算結(jié)果與存儲有第二運算結(jié)果的存儲器中的第二運算結(jié)果是否相同中的判斷步驟;或
按照先后順序依次執(zhí)行判斷存儲有第一運算結(jié)果的存儲器中的第一運算結(jié)果與存儲有第二運算結(jié)果的存儲器中的第二運算結(jié)果是否相同中的判斷步驟。
本發(fā)明實施例提供的一種抵抗故障攻擊的防護(hù)方法和裝置,采用多級存儲的方式存儲運算結(jié)果,并分別進(jìn)行多次比較判斷,只有在所有判斷結(jié)果均相同時才輸出運算結(jié)果,從而加大了攻擊者的攻擊難度,該方法可以有效抵抗多點的故障攻擊,提高安全性。同時,該裝置不需要增加芯片面積和功耗,抵抗故障攻擊效果顯著。
本發(fā)明的其它特征和優(yōu)點將在隨后的說明書中闡述,并且,部分地從說明書中變得顯而易見,或者通過實施本發(fā)明而了解。本發(fā)明的目的和其他優(yōu)點可通過在所寫的說明書、權(quán)利要求書、以及附圖中所特別指出的結(jié)構(gòu)來實現(xiàn)和獲得。
下面通過附圖和實施例,對本發(fā)明的技術(shù)方案做進(jìn)一步的詳細(xì)描述。
附圖說明
附圖用來提供對本發(fā)明的進(jìn)一步理解,并且構(gòu)成說明書的一部分,與本發(fā)明的實施例一起用于解釋本發(fā)明,并不構(gòu)成對本發(fā)明的限制。在附圖中:
圖1為本發(fā)明實施例中抵抗故障攻擊的防護(hù)方法的流程圖;
圖2為實施例一中抵抗故障攻擊的防護(hù)方法的流程圖;
圖3為實施例一中抵抗故障攻擊的防護(hù)方法的流程示意圖;
圖4為本發(fā)明實施例中抵抗故障攻擊的防護(hù)裝置的結(jié)構(gòu)圖。
具體實施方式
下面結(jié)合附圖,對本發(fā)明的具體實施方式進(jìn)行詳細(xì)描述,但應(yīng)當(dāng)理解本發(fā)明的保護(hù)范圍并不受具體實施方式的限制。
根據(jù)本發(fā)明實施例,提供了一種抵抗故障攻擊的防護(hù)方法,圖1為該方法的流程圖,具體包括:
步驟101:獲取第一運算結(jié)果和第二運算結(jié)果,并將第一運算結(jié)果存儲于第一寄存器,將第二運算結(jié)果存儲于第二寄存器。
其中,上述第一運算結(jié)果和第二運算結(jié)果均為對同一明文進(jìn)行正常加密運算后的結(jié)果,該結(jié)果即為明文加密后的密文。
步驟102:讀取第一存儲器中的第一運算結(jié)果,并將第一運算結(jié)果存儲于第三存儲器;讀取第二存儲器中的第二運算結(jié)果,并將第二運算結(jié)果存儲于第四存儲器。
本發(fā)明實施例中,采用多級存儲的方式存儲運算結(jié)果。其還可以包括第五存儲器和第六存儲器,具體的:讀取第三存儲器中的第一運算結(jié)果,并將第一運算結(jié)果存儲于第五存儲器;讀取第四存儲器中的第二運算結(jié)果,并將第二運算結(jié)果存儲于第六存儲器。存儲的級數(shù)越多,判斷的次數(shù)越多,故障攻擊的難度越大。
步驟103:判斷存儲有第一運算結(jié)果的存儲器中的第一運算結(jié)果與存儲有第二運算結(jié)果的存儲器中的第二運算結(jié)果是否相同,當(dāng)上述判斷結(jié)果為第一運算結(jié)果與第二運算結(jié)果均相同時,輸出運算結(jié)果。
本發(fā)明實施例中,由于采用多級存儲的方式存儲運算結(jié)果,相應(yīng)的可以有多次判斷步驟。具體的,步驟103中的判斷步驟包括兩種判斷方式:順序判斷方式和交叉判斷方式。具體的,在步驟103中:
順序判斷方式為:判斷第一存儲器中的第一運算結(jié)果與第二存儲器中的第二運算結(jié)果是否相同;判斷第三存儲器中的第一運算結(jié)果與第四存儲器中的第二運算結(jié)果是否相同。
交叉判斷方式為:判斷第一存儲器中的第一運算結(jié)果與第四存儲器中的第二運算結(jié)果是否相同;判斷第三存儲器中的第一運算結(jié)果與第二存儲器中的第二運算結(jié)果是否相同。
同時,由于可以存在多次判斷步驟,該多次判斷步驟可以同時進(jìn)行,也可以按照順序依次進(jìn)行判斷。同時執(zhí)行判斷存儲有第一運算結(jié)果的存儲器中的第一運算結(jié)果與存儲有第二運算結(jié)果的存儲器中的第二運算結(jié)果是否相同中的判斷步驟;或按照先后順序依次執(zhí)行判斷存儲有第一運算結(jié)果的存儲器中的第一運算結(jié)果與存儲有第二運算結(jié)果的存儲器中的第二運算結(jié)果是否相同中的判斷步驟。當(dāng)同時執(zhí)行判斷步驟時,攻擊者需要同時攻擊判斷結(jié)果,攻擊手段更難實現(xiàn)。
本發(fā)明實施例中,無論采用哪種判斷方式,只有在第一運算結(jié)果和第二運算結(jié)果均相同時才會輸出運算結(jié)果。以順序判斷方式為例,只有在第一存儲器中的第一運算結(jié)果與第二存儲器中的第二運算結(jié)果相同,而且第三存儲器中的第一運算結(jié)果與第四存儲器中的第二運算結(jié)果相同時,才輸出運算結(jié)果。該運算結(jié)果為加密運算的結(jié)果,具體可以為上述的第一運算結(jié)果或第二運算結(jié)果。
當(dāng)攻擊者采用現(xiàn)有攻擊方法在運算過程中注入故障時,第一寄存器和第二寄存器中存儲的結(jié)果就會不一樣,其中有一個是錯誤的。雖然攻擊者可以利用激光等手段攻擊CPU的第一次判斷結(jié)果,強(qiáng)制讓CPU的比較結(jié)果滿足相等條件,但是因為第一寄存器和第二寄存器的數(shù)據(jù)又被存儲到第三寄存器和第四寄存器中,后兩個寄存器的數(shù)據(jù)和第一寄存器和第二寄存器的數(shù)據(jù)相同。當(dāng)采用本發(fā)明實施例公開的防護(hù)方法時,攻擊者如果想得到輸出結(jié)果就必須繼續(xù)強(qiáng)制改變第二次判斷的結(jié)果,這樣就大大增加了攻擊難度;如果采用三級或三級以上的存儲方式,故障攻擊會更加難以實現(xiàn)。
本發(fā)明實施例提供的一種抵抗故障攻擊的防護(hù)方法,采用多級存儲的方式存儲運算結(jié)果,并分別進(jìn)行多次比較判斷,只有在所有判斷結(jié)果均相同時才輸出運算結(jié)果,從而加大了攻擊者的攻擊難度,該方法可以有效抵抗多點的故障攻擊,提高安全性。同時,該方法不需要增加芯片面積和功耗,抵抗故障攻擊效果顯著。
下面通過一個實施例詳細(xì)介紹該防護(hù)方法的流程。
實施例一
在實施例一中,采用二級存儲的方式,采用順序判斷的方式依次判斷運算結(jié)果是否一致,方法流程參見圖2和圖3所示,具體包括:
步驟201:獲取第一運算結(jié)果和第二運算結(jié)果,并將第一運算結(jié)果存儲于第一寄存器,將第二運算結(jié)果存儲于第二寄存器。
步驟202:讀取第一存儲器中的第一運算結(jié)果,并將第一運算結(jié)果存儲于第三存儲器。
步驟203:讀取第二存儲器中的第二運算結(jié)果,并將第二運算結(jié)果存儲于第四存儲器。
步驟204:判斷第一存儲器中的第一運算結(jié)果與第二存儲器中的第二運算結(jié)果是否相同,當(dāng)運算結(jié)果相同時,繼續(xù)步驟205,否則繼續(xù)步驟207。
步驟205:判斷第三存儲器中的第一運算結(jié)果與第四存儲器中的第二運算結(jié)果是否相同,當(dāng)運算結(jié)果相同時,繼續(xù)步驟206,否則繼續(xù)步驟207。
步驟206:輸出運算結(jié)果。
步驟207:輸出錯誤提示。
在實施例一中,如果同時執(zhí)行判斷步驟,則同時執(zhí)行步驟204和步驟205,當(dāng)二者的判斷結(jié)果均相同時,繼續(xù)步驟206;只要存在一個判斷結(jié)果不相同,則繼續(xù)步驟207。
以上詳細(xì)介紹了該抵抗故障攻擊的防護(hù)方法的詳細(xì)方法流程,該方法也可以通過相應(yīng)的裝置實現(xiàn),下面詳細(xì)介紹該裝置的結(jié)構(gòu)和功能。
本發(fā)明實施例提供的一種抵抗故障攻擊的防護(hù)裝置,參見圖4所示,該裝置包括:預(yù)處理模塊401、多級存儲模塊402和多級判斷模塊。
預(yù)處理模塊401,用于獲取第一運算結(jié)果和第二運算結(jié)果,并將第一運算結(jié)果存儲于第一寄存器,將第二運算結(jié)果存儲于第二寄存器;
多級存儲模塊402,用于讀取第一存儲器中的第一運算結(jié)果,并將第一運算結(jié)果存儲于第三存儲器;讀取第二存儲器中的第二運算結(jié)果,并將第二運算結(jié)果存儲于第四存儲器;
多級判斷模塊403,用于判斷存儲有第一運算結(jié)果的存儲器中的第一運算結(jié)果與存儲有第二運算結(jié)果的存儲器中的第二運算結(jié)果是否相同,當(dāng)判斷結(jié)果為第一運算結(jié)果與第二運算結(jié)果均相同時,輸出運算結(jié)果。
優(yōu)選的,多級存儲模塊402還用于:讀取第三存儲器中的第一運算結(jié)果,并將第一運算結(jié)果存儲于第五存儲器;讀取第四存儲器中的第二運算結(jié)果,并將第二運算結(jié)果存儲于第六存儲器。
優(yōu)選的,多級判斷模塊403具體用于:
判斷第一存儲器中的第一運算結(jié)果與第二存儲器中的第二運算結(jié)果是否相同;判斷第三存儲器中的第一運算結(jié)果與第四存儲器中的第二運算結(jié)果是否相同;或
判斷第一存儲器中的第一運算結(jié)果與第四存儲器中的第二運算結(jié)果是否相同;判斷第三存儲器中的第一運算結(jié)果與第二存儲器中的第二運算結(jié)果是否相同。
優(yōu)選的,多級判斷模塊403具體用于:
同時執(zhí)行判斷存儲有第一運算結(jié)果的存儲器中的第一運算結(jié)果與存儲有第二運算結(jié)果的存儲器中的第二運算結(jié)果是否相同中的判斷步驟;或
按照先后順序依次執(zhí)行判斷存儲有第一運算結(jié)果的存儲器中的第一運算結(jié)果與存儲有第二運算結(jié)果的存儲器中的第二運算結(jié)果是否相同中的判斷步驟。
本發(fā)明實施例提供的一種抵抗故障攻擊的防護(hù)方法和裝置,采用多級存儲的方式存儲運算結(jié)果,并分別進(jìn)行多次比較判斷,只有在所有判斷結(jié)果均相同時才輸出運算結(jié)果,從而加大了攻擊者的攻擊難度,該方法可以有效抵抗多點的故障攻擊,提高安全性。同時,該裝置不需要增加芯片面積和功耗,抵抗故障攻擊效果顯著。
本發(fā)明能有多種不同形式的具體實施方式,上面以圖1-圖4為例結(jié)合附圖對本發(fā)明的技術(shù)方案作舉例說明,這并不意味著本發(fā)明所應(yīng)用的具體實例只能局限在特定的流程或?qū)嵤├Y(jié)構(gòu)中,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)了解,上文所提供的具體實施方案只是多種優(yōu)選用法中的一些示例,任何體現(xiàn)本發(fā)明權(quán)利要求的實施方式均應(yīng)在本發(fā)明技術(shù)方案所要求保護(hù)的范圍之內(nèi)。
最后應(yīng)說明的是:以上所述僅為本發(fā)明的優(yōu)選實施例而已,并不用于限制本發(fā)明,盡管參照前述實施例對本發(fā)明進(jìn)行了詳細(xì)的說明,對于本領(lǐng)域的技術(shù)人員來說,其依然可以對前述各實施例所記載的技術(shù)方案進(jìn)行修改,或者對其中部分技術(shù)特征進(jìn)行等同替換。凡在本發(fā)明的精神和原則之內(nèi), 所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。