本發(fā)明總體上涉及計(jì)算系統(tǒng)中的數(shù)據(jù)安全,并且具體地涉及用于保護(hù)密碼運(yùn)算的方法、系統(tǒng)和計(jì)算機(jī)程序產(chǎn)品。
背景技術(shù):
存在不同類型的密碼算法,其用于加密和解密數(shù)據(jù)、用于認(rèn)證或簽名。密碼算法使用秘密密鑰(secretkey)并且是基于應(yīng)用于待加密數(shù)據(jù)塊的不同狀態(tài)的一系列多個(gè)運(yùn)算的,且提供加密后的數(shù)據(jù)塊。
然而,加密算法可能會受到打算訪問秘密密鑰的“攻擊”。
特別地,對嵌入式系統(tǒng)的故障攻擊已經(jīng)變成了現(xiàn)實(shí)的威脅。故障攻擊導(dǎo)致目標(biāo)系統(tǒng)的層級處的異常條件或缺陷,因而導(dǎo)致目標(biāo)系統(tǒng)的失效。如果故障攻擊不會導(dǎo)致攻擊者對目標(biāo)系統(tǒng)的完全控制,則所述故障攻擊可能會改變目標(biāo)系統(tǒng)的操作。例如,故障攻擊可以通過攻擊者實(shí)現(xiàn)通過利用激光器、通過改變電源電壓、通過改變外部時(shí)鐘或其它方法來干擾目標(biāo)系統(tǒng)??赡苠e(cuò)誤的結(jié)果會顯露出目標(biāo)保密數(shù)據(jù)的信息,例如密碼密鑰。
存在以侵犯諸如rsa(rivest,shamir,&adleman)密碼算法的秘密密鑰的機(jī)密性為目的的故障攻擊。密碼算法提供了加密算法和對應(yīng)的解密算法。加密算法(類似地,解密算法)包括一系列的線性和/或非線性運(yùn)算,每個(gè)運(yùn)算應(yīng)用于原始數(shù)據(jù)(例如,報(bào)文(message))的塊的狀態(tài)。
存在應(yīng)對這種針對rsa的故障攻擊的措施,例如fr2884088或us5991415a。然而,該解決方案特定于rsa且不能應(yīng)用于任何密碼算法,諸如例如先進(jìn)加密標(biāo)準(zhǔn)(aes),其據(jù)知易于受到故障攻擊,如gillespiret和jean-jacquesquisquater等人于2003年在ches發(fā)表的“adifferentialfaultattacktechniqueagainstspnstructures,withapplicationtotheaesandkhazad”所披露的。
因此,需要對于能夠保護(hù)任何密碼算法以應(yīng)對故障攻擊的改進(jìn)的方法、系統(tǒng)、計(jì)算機(jī)程序。
技術(shù)實(shí)現(xiàn)要素:
提供了一種用于執(zhí)行密碼方案的運(yùn)算的設(shè)備,該運(yùn)算應(yīng)用于原始數(shù)據(jù)的數(shù)據(jù)塊的給定狀態(tài),該運(yùn)算被限定在基礎(chǔ)環(huán)內(nèi),所述基礎(chǔ)環(huán)對應(yīng)于起始環(huán)除以由所述起始環(huán)的至少一個(gè)元素生成的基礎(chǔ)理想所得到的商數(shù)。該設(shè)備包括:
-第一執(zhí)行單元,其被配置成在至少一個(gè)參考環(huán)內(nèi)從自所述數(shù)據(jù)塊的所述當(dāng)前狀態(tài)所導(dǎo)出的狀態(tài)執(zhí)行運(yùn)算,這為每個(gè)參考環(huán)提供了參考值,每個(gè)參考環(huán)是所述起始環(huán)除以參考理想所得到的商數(shù),以及
-第二執(zhí)行單元,其被配置成在與一個(gè)或多個(gè)參考環(huán)相對應(yīng)的至少一個(gè)擴(kuò)展環(huán)內(nèi)從自所述數(shù)據(jù)塊的所述當(dāng)前狀態(tài)所導(dǎo)出的所述狀態(tài)執(zhí)行運(yùn)算,這為每個(gè)擴(kuò)展環(huán)提供了至少一個(gè)擴(kuò)展值,與一個(gè)或多個(gè)參考環(huán)相對應(yīng)的每個(gè)擴(kuò)展環(huán)是所述起始環(huán)除以所述基礎(chǔ)理想與所述一個(gè)或多個(gè)對應(yīng)的參考環(huán)的參考理想之積所得到的商數(shù)。
所述設(shè)備進(jìn)一步被配置成,取決于在為每個(gè)參考環(huán)所獲得的參考值與為與所述參考環(huán)相對應(yīng)的擴(kuò)展環(huán)所獲得的擴(kuò)展值之間的條件的驗(yàn)證,根據(jù)參考值和/或擴(kuò)展值中的至少一個(gè)來確定所述運(yùn)算的結(jié)果。
該設(shè)備還可以包括狀態(tài)更新單元,其被配置成:
-選擇所述基礎(chǔ)理想中的所述參考環(huán)的一組元素;
-根據(jù)所述選定元素來更新所述數(shù)據(jù)塊的當(dāng)前狀態(tài),這提供了從所述數(shù)據(jù)塊的當(dāng)前狀態(tài)所導(dǎo)出的狀態(tài)。
在一些實(shí)施例中,第二執(zhí)行單元被配置成:
-在所述擴(kuò)展環(huán)內(nèi)從自所述數(shù)據(jù)塊的當(dāng)前狀態(tài)所導(dǎo)出的所述狀態(tài)執(zhí)行所述運(yùn)算,這為每個(gè)擴(kuò)展環(huán)提供了中間值;
-將從所述擴(kuò)展環(huán)內(nèi)的運(yùn)算的執(zhí)行所得到的中間值的每個(gè)字節(jié)映射到與所述參考環(huán)相關(guān)聯(lián)的參考環(huán)的元素,這提供了與所述參考環(huán)相對應(yīng)的擴(kuò)展值,
所述條件包括每個(gè)參考值與對應(yīng)于所述參考環(huán)的擴(kuò)展值之間的比較。
如果每個(gè)參考值匹配與所述參考環(huán)相對應(yīng)的每個(gè)擴(kuò)展值,則所述條件可被驗(yàn)證,所述運(yùn)算的結(jié)果取決于對于每個(gè)參考值對所述條件的驗(yàn)證。
所述第一執(zhí)行單元可被配置成在至少兩個(gè)參考環(huán)內(nèi)執(zhí)行所述運(yùn)算,并且所述第二執(zhí)行單元被配置成在取決于全部參考環(huán)的唯一擴(kuò)展環(huán)內(nèi)執(zhí)行所述運(yùn)算,所述設(shè)備進(jìn)一步被配置成將crt變換應(yīng)用于由所述第一執(zhí)行單元確定的全部參考值,這提供了與所述一組參考環(huán)有關(guān)的參考參數(shù),所述條件包括判定與一組參考環(huán)有關(guān)的參考參數(shù)是否等于與對于由所述至少兩個(gè)參考環(huán)的參考理想的乘積所表示的理想中的擴(kuò)展環(huán)所獲得的擴(kuò)展值相對應(yīng)的元素。
在一些實(shí)施例中,所述第一執(zhí)行單元可以被配置成在至少兩個(gè)參考環(huán)內(nèi)執(zhí)行所述運(yùn)算,并且所述第二執(zhí)行單元被配置成在至少兩個(gè)擴(kuò)展環(huán)內(nèi)執(zhí)行所述運(yùn)算,每個(gè)擴(kuò)展環(huán)取決于一組參考環(huán),所述設(shè)備還包括將符合中國余數(shù)定理的變換應(yīng)用于由所述第一執(zhí)行單元確定的每個(gè)參考值,這提供了與每一組所述參考環(huán)有關(guān)的共同參考參數(shù)。對于作為在取決于給定的一組參考環(huán)的擴(kuò)展環(huán)中執(zhí)行運(yùn)算的結(jié)果而獲得的每個(gè)擴(kuò)展值,所述設(shè)備還可以被配置成:將擴(kuò)展值的每個(gè)字節(jié)映射到除以所述一組參考環(huán)中的每個(gè)參考環(huán)的參考理想的乘積求商的環(huán)的元素,這提供了共同擴(kuò)展參數(shù),其中所述條件包括將與給定的一組參考環(huán)有關(guān)的每個(gè)共同參考參數(shù)與對于取決于所述一組參考環(huán)的擴(kuò)展環(huán)所獲得的共同擴(kuò)展參數(shù)進(jìn)行比較。
在一些實(shí)施例中,所述設(shè)備可進(jìn)一步被配置成,對于至少一個(gè)擴(kuò)展值,響應(yīng)于對所述條件的驗(yàn)證,將所述至少一個(gè)擴(kuò)展值的每個(gè)字節(jié)映射到所述基礎(chǔ)環(huán)的元素,這提供了與所述至少一個(gè)擴(kuò)展值對應(yīng)的映射值。
可替代地,所述設(shè)備可進(jìn)一步被配置成檢查輔助條件,所述輔助條件包括將所述映射值中的至少一些與所述參考值進(jìn)行比較,所述設(shè)備被配置成,如果至少一個(gè)所述映射值不同于參考值,則觸發(fā)所述密碼方案的所述運(yùn)算的終止。
所述設(shè)備可被配置成,如果所述輔助條件被驗(yàn)證,則返回所述映射值中的一個(gè)作為運(yùn)算結(jié)果。
所述第一執(zhí)行單元可被配置成在多個(gè)參考環(huán)內(nèi)執(zhí)行所述運(yùn)算,這提供了一組參考值,而所述第二執(zhí)行單元被配置成在與一個(gè)或多個(gè)參考環(huán)相對應(yīng)的唯一擴(kuò)展環(huán)內(nèi)執(zhí)行所述運(yùn)算。
還提供了一種用于執(zhí)行密碼方案的系統(tǒng),密碼方案包括使用至少一個(gè)秘密密鑰對原始數(shù)據(jù)的給定數(shù)據(jù)塊進(jìn)行的一組相繼的運(yùn)算,該系統(tǒng)包括根據(jù)任一前述權(quán)利要求的運(yùn)算執(zhí)行設(shè)備,所述運(yùn)算執(zhí)行設(shè)備被配置成保護(hù)所述密碼方案的至少一個(gè)運(yùn)算。
所述運(yùn)算執(zhí)行設(shè)備可應(yīng)用于所述密碼方案的每個(gè)運(yùn)算。
所述密碼方案可以包括多輪,并且所述運(yùn)算執(zhí)行設(shè)備可被應(yīng)用于保護(hù)至少一輪的至少一個(gè)運(yùn)算。
所述密碼方案可以是先進(jìn)加密標(biāo)準(zhǔn)方案,所述先進(jìn)加密標(biāo)準(zhǔn)方案包括在每輪的第一非線性取代運(yùn)算以及相繼的運(yùn)算,所述非線性取代運(yùn)算根據(jù)查找表來將所述數(shù)據(jù)塊的每個(gè)字節(jié)用另一字節(jié)替代。
所述相繼的運(yùn)算可以包括在每輪的最終組合運(yùn)算,所述組合運(yùn)算利用逐位xor算子將數(shù)據(jù)塊的狀態(tài)的每個(gè)字節(jié)與輪密鑰的塊組合,而所述運(yùn)算執(zhí)行設(shè)備可以僅應(yīng)用于所述最終組合運(yùn)算至少一輪。
還提供一種執(zhí)行密碼方案的運(yùn)算的方法,所述運(yùn)算應(yīng)用于原始數(shù)據(jù)的數(shù)據(jù)塊的給定狀態(tài),所述運(yùn)算限定在基礎(chǔ)環(huán)內(nèi),所述基礎(chǔ)環(huán)對應(yīng)于起始環(huán)除以由所述起始環(huán)的至少一個(gè)元素生成的基礎(chǔ)理想所得到的商數(shù),所述方法包括:在至少一個(gè)參考環(huán)內(nèi)從自所述數(shù)據(jù)塊的所述當(dāng)前狀態(tài)所導(dǎo)出的狀態(tài)執(zhí)行運(yùn)算,這為每個(gè)參考環(huán)提供了參考值,并且在與一個(gè)或多個(gè)參考環(huán)相對應(yīng)的至少一個(gè)擴(kuò)展環(huán)內(nèi)從自所述數(shù)據(jù)塊的所述當(dāng)前狀態(tài)所導(dǎo)出的狀態(tài)執(zhí)行運(yùn)算,這為每個(gè)擴(kuò)展環(huán)提供了至少一個(gè)擴(kuò)展值,每個(gè)參考環(huán)是所述起始環(huán)除以參考理想所得到的商數(shù),并且與一個(gè)或多個(gè)參考環(huán)相對應(yīng)的每個(gè)擴(kuò)展環(huán)是起始環(huán)除以所述基礎(chǔ)理想與所述一個(gè)或多個(gè)對應(yīng)的參考環(huán)的參考理想之積所得到的商數(shù),所述方法還包括:取決于在為每個(gè)參考環(huán)所獲得的參考值與為與所述參考環(huán)相對應(yīng)的擴(kuò)展環(huán)所獲得的擴(kuò)展值之間的條件的驗(yàn)證,根據(jù)參考值和/或擴(kuò)展值中的至少一個(gè)來確定所述運(yùn)算的結(jié)果。
還提供一種用于執(zhí)行密碼方案的運(yùn)算的計(jì)算機(jī)程序產(chǎn)品,所述運(yùn)算應(yīng)用于原始數(shù)據(jù)的數(shù)據(jù)塊的給定狀態(tài),所述運(yùn)算被限定在基礎(chǔ)環(huán)內(nèi),所述基礎(chǔ)環(huán)對應(yīng)于起始環(huán)除以由所述起始環(huán)的至少一個(gè)元素生成的基礎(chǔ)理想所得到的商數(shù),所述計(jì)算機(jī)程序產(chǎn)品包括:
-非暫態(tài)計(jì)算機(jī)可讀存儲介質(zhì);以及
-存儲在所述非暫態(tài)計(jì)算機(jī)可讀存儲介質(zhì)上的指令,當(dāng)通過處理器執(zhí)行時(shí),所述指令使所述處理器:在至少一個(gè)參考環(huán)內(nèi)從自所述數(shù)據(jù)塊的所述當(dāng)前狀態(tài)所導(dǎo)出的狀態(tài)執(zhí)行運(yùn)算,這為每個(gè)參考環(huán)提供了參考值,并且在與一個(gè)或多個(gè)參考環(huán)對應(yīng)的至少一個(gè)擴(kuò)展環(huán)內(nèi)從自所述數(shù)據(jù)塊的所述當(dāng)前狀態(tài)所導(dǎo)出的狀態(tài)執(zhí)行運(yùn)算,這為每個(gè)擴(kuò)展環(huán)提供了至少一個(gè)擴(kuò)展值,每個(gè)參考環(huán)是所述起始環(huán)除以參考理想所得到的商數(shù),并且與一個(gè)或多個(gè)參考環(huán)相對應(yīng)的每個(gè)擴(kuò)展環(huán)是所述起始環(huán)除以基礎(chǔ)理想與所述一個(gè)或多個(gè)對應(yīng)的參考環(huán)的參考理想之積所得到的商數(shù),所述計(jì)算機(jī)產(chǎn)品程序進(jìn)一步使得,取決于在為每個(gè)參考環(huán)所獲得的參考值與為與所述參考環(huán)相對應(yīng)的擴(kuò)展環(huán)所獲得的擴(kuò)展值之間的條件的驗(yàn)證,根據(jù)參考值和/或擴(kuò)展值中的至少一個(gè)來確定至少所述運(yùn)算的結(jié)果。
本發(fā)明的實(shí)施例因此允許在故障攻擊導(dǎo)致失效、不當(dāng)運(yùn)算或數(shù)據(jù)的改動之前檢測故障攻擊。
在考察附圖和詳細(xì)說明時(shí),本發(fā)明的進(jìn)一步的優(yōu)點(diǎn)對于技術(shù)人員變得清晰。目的在于,任何附加的優(yōu)點(diǎn)并入本文。
附圖說明
附圖并入該說明書且構(gòu)成該說明書的部分,附圖圖示說明了本發(fā)明的各個(gè)實(shí)施例,并且連同上文給出的發(fā)明內(nèi)容和下面給出的具體實(shí)施方式一起,用來解釋本發(fā)明的實(shí)施例。
圖1圖示出根據(jù)一些實(shí)施例的密碼系統(tǒng),該密碼系統(tǒng)包括實(shí)現(xiàn)密碼方案的密碼處理單元。
圖2表示密碼方案的相繼的數(shù)學(xué)運(yùn)算。
圖3是描繪根據(jù)某些實(shí)施例的運(yùn)算保護(hù)方法的流程圖。
圖4是描繪保護(hù)方法的條件步驟的本發(fā)明的實(shí)施例的流程圖。
圖5是保護(hù)方法的條件步驟的可替代實(shí)施例的流程圖。
圖6是描繪根據(jù)一個(gè)實(shí)施例的更新保護(hù)方法的數(shù)據(jù)塊的當(dāng)前狀態(tài)的步驟的流程圖。
圖7是描繪根據(jù)實(shí)施例的包括輔助條件的保護(hù)方法的流程圖。
圖8是描繪根據(jù)某些實(shí)施例的包括在一個(gè)擴(kuò)展環(huán)中的運(yùn)算的執(zhí)行以及在多個(gè)參考環(huán)內(nèi)的運(yùn)算的執(zhí)行的實(shí)施例的流程圖。
圖9是描繪運(yùn)算保護(hù)方法的示范性的實(shí)施例的流程圖。
圖10是描繪本發(fā)明在aes密碼方案的一些運(yùn)算中的示范性的應(yīng)用的流程圖。
圖11表示aes方案的字節(jié)取代(subbytes)運(yùn)算。
圖12表示aes方案的行移位(shiftrows)運(yùn)算。
圖13表示aes方案的列混淆(mixcolumns)運(yùn)算。
圖14表示aes方案的輪密鑰加(addroundkey)運(yùn)算。
圖15是示出了根據(jù)一個(gè)實(shí)施例的本發(fā)明在aes密碼方案的一個(gè)運(yùn)算中的示范性的應(yīng)用的流程圖。
具體實(shí)施方式
本發(fā)明的實(shí)施例提供了根據(jù)其中會發(fā)生一組密碼運(yùn)算的應(yīng)用系統(tǒng)的功能來對數(shù)據(jù)執(zhí)行一組密碼運(yùn)算的改進(jìn)的方法和系統(tǒng)。應(yīng)用系統(tǒng)可以是嵌入式系統(tǒng),例如實(shí)現(xiàn)密碼運(yùn)算來保護(hù)數(shù)據(jù)的智能卡。
圖1圖示出系統(tǒng)100,該系統(tǒng)100包括實(shí)現(xiàn)密碼方案1(例如加密方案、解密方案或簽名方案)的密碼處理單元10(也稱為密碼系統(tǒng)),使用至少一個(gè)秘密密鑰k來保護(hù)進(jìn)入數(shù)據(jù)(incomingdata)的數(shù)據(jù)部分(下文也稱為數(shù)據(jù)塊)。進(jìn)入數(shù)據(jù)可以是例如包括n個(gè)數(shù)據(jù)塊的二進(jìn)制數(shù)據(jù)(對于加密方案稱為“明文”),每個(gè)塊是進(jìn)入的二進(jìn)制數(shù)據(jù)的k位字。作為加密方案1所定義的運(yùn)算的執(zhí)行的結(jié)果,密碼系統(tǒng)100輸出受保護(hù)的數(shù)據(jù)塊(對于加密方案稱為“密文”)。
如本文所使用的,“密鑰”或“秘密密鑰”是指用來實(shí)現(xiàn)密碼運(yùn)算的參數(shù)。每個(gè)密鑰可以是任意位大小。密碼方案包括一組相繼的運(yùn)算,每個(gè)運(yùn)算執(zhí)行于在給定起始環(huán)中的數(shù)據(jù)塊2的當(dāng)前狀態(tài)。密碼方案1可以包括例如對稱密鑰密碼函數(shù)如aes方案(先進(jìn)加密標(biāo)準(zhǔn)),不對稱密鑰密碼函數(shù)、哈希函數(shù),等等。
密碼處理單元10可以包括利用密鑰對數(shù)據(jù)塊2執(zhí)行一輪或多輪的一組相繼的運(yùn)算(例如,對明文的加密運(yùn)算和/或?qū)γ芪牡慕饷苓\(yùn)算)的邏輯。密鑰可以由密鑰存儲單元(未示出)來提供。相繼的運(yùn)算4的結(jié)果可以加載到結(jié)果存儲單元內(nèi)。
為利于理解本發(fā)明的一些實(shí)施例,一些要素和符號的定義提供如下:
-環(huán)(ring)表示具有輔助二進(jìn)制運(yùn)算(secondbinaryoperation)的通信群,輔助二進(jìn)制運(yùn)算是關(guān)聯(lián)的、分布于群運(yùn)算之上且具有身份元素。通常,兩個(gè)群運(yùn)算是加和乘。例如,具有群運(yùn)算+,×的整數(shù)環(huán)
-域(field)是一種環(huán),其非零元素在乘下形成了可交換群。例如,
-有限域是指具有有限數(shù)量元素的域。由于大小為n的所有域是同構(gòu)的,所以具有n個(gè)元素的域通常標(biāo)記為
-環(huán)a的理想i是a的子群,其通過乘法是穩(wěn)定的:對于i中的每個(gè)元素x以及a中的每個(gè)元素a,ax∈i。例如,在環(huán)
-兩個(gè)理想i,j的乘積,標(biāo)記為ij,是所有元素xy生成的理想,其中x∈i且y∈j??紤]a的理想i,以及a,b∈a,如果a-b∈i,,則a和b對i取模相等。
-商環(huán)a/i是a對i取模的元素。如果a和b對i取模相等,則a和b由a/i中的同一元素表示。
-如本文所使用的,將a或b映射到a/i中的同一元素的運(yùn)算稱為a”模歸約(a″modularreduction)。元素a對理想i取模的模歸約因此將指代包含將a映射到a/i中的元素的運(yùn)算。在下面對本發(fā)明的一些實(shí)施例的說明中,表達(dá)“歸約值”或“映射值”將用來指代模歸約的結(jié)果;
-當(dāng)環(huán)a是整數(shù)環(huán)
-當(dāng)a是具有元素?cái)?shù)量pm的有限域時(shí),其中p是素?cái)?shù),且i是多項(xiàng)式p的倍數(shù)的理想,標(biāo)記為(p),則a/i(a除以i求商數(shù))由小于p的次數(shù)(degree)的多項(xiàng)式域a中的系數(shù)表示。元素a對理想的運(yùn)算模歸約包括返回a除以p的余數(shù)。
-
–如果1可以寫為元素i和j的組合,則兩個(gè)理想i,j是所述互素?cái)?shù)。例如,在
此外,如本文所使用的:
–起始環(huán),記為a,與對數(shù)據(jù)塊的密碼運(yùn)算有關(guān),是指為密碼運(yùn)算所定義的環(huán);
–基礎(chǔ)環(huán),記為a/j,是指所述起始環(huán)除以由所述起始環(huán)的至少一個(gè)元素生成的基礎(chǔ)理想j所得到的商數(shù);
參考環(huán),記為a/ik,是指所述起始環(huán)除以參考理想ik所得到的商數(shù),k是整數(shù);
擴(kuò)展環(huán),記為a/jik1ik2…ikn,是指起始環(huán)除以基礎(chǔ)理想ik1ik2…ikn和參考理想j之積所得到的商數(shù);
擴(kuò)展值,記為cr,k1k2…kn,是指在擴(kuò)展環(huán)中運(yùn)行的密碼運(yùn)算的結(jié)果;
參考值,記為ck,是指在參考環(huán)a/ik中運(yùn)行的密碼運(yùn)算的結(jié)果。
根據(jù)本發(fā)明的方案,密碼系統(tǒng)100還包括運(yùn)算執(zhí)行設(shè)備12,其用于在給定的基礎(chǔ)環(huán)內(nèi)執(zhí)行密碼方案1的至少一個(gè)運(yùn)算。該運(yùn)算執(zhí)行設(shè)備12可以包括:第一執(zhí)行單元120,其用于在至少一個(gè)參考環(huán)內(nèi)從自數(shù)據(jù)塊的當(dāng)前狀態(tài)m所導(dǎo)出的數(shù)據(jù)塊的狀態(tài)m’執(zhí)行運(yùn)算;以及第二執(zhí)行單元122,其用于在至少一個(gè)擴(kuò)展環(huán)內(nèi)且通過檢查如下之間的條件來執(zhí)行運(yùn)算:
-從在一個(gè)或多個(gè)參考環(huán)內(nèi)執(zhí)行的運(yùn)算的結(jié)果所導(dǎo)出的至少一個(gè)值,以及-從在一個(gè)或多個(gè)擴(kuò)展環(huán)內(nèi)執(zhí)行的運(yùn)算的結(jié)果所導(dǎo)出的至少一個(gè)值。
如果條件未被驗(yàn)證,則檢測到故障攻擊,并且終止單元14可以終止密碼處理單元10對運(yùn)算的執(zhí)行。另外,可以觸發(fā)警告或者可以通知錯(cuò)誤。
如果條件被驗(yàn)證,則密碼處理單元10對運(yùn)算的執(zhí)行繼續(xù)。運(yùn)算的結(jié)果是在參考環(huán)內(nèi)執(zhí)行和/在擴(kuò)展環(huán)內(nèi)執(zhí)行的。
另外,可以觸發(fā)警告或者可以通知錯(cuò)誤。
運(yùn)算執(zhí)行設(shè)備12還可以包括狀態(tài)更新單元123,其被配置成根據(jù)基礎(chǔ)理想j中選定的元素來更新數(shù)據(jù)塊的當(dāng)前狀態(tài)。
本發(fā)明的實(shí)施例因此允許在故障攻擊導(dǎo)致失效或不當(dāng)運(yùn)算或數(shù)據(jù)的改動之前,對通過故障攻擊所觸發(fā)的組件或系統(tǒng)級處的異常條件或缺陷的檢測。
如圖2中所示,給定報(bào)文的密碼保護(hù)通常是通過將一個(gè)或多個(gè)相繼的數(shù)學(xué)運(yùn)算應(yīng)用于該報(bào)文來實(shí)現(xiàn),運(yùn)算是至少一個(gè)秘密密鑰的函數(shù)且定義在環(huán)a中。
常規(guī)的密碼處理方法開始于數(shù)據(jù)塊的初始狀態(tài)m0的接收(200)。
在步驟202中,輪索引i被初始化。對于每輪i(204),在給定的環(huán)內(nèi)執(zhí)行一組相繼的運(yùn)算(步驟206至210)。這包括,在步驟206中,在給定環(huán)內(nèi)對數(shù)據(jù)塊的初始狀態(tài)m0運(yùn)行第一運(yùn)算,這提供了數(shù)據(jù)塊的新狀態(tài)m0(1)。在步驟208中,隨后在給定環(huán)中對報(bào)文的新狀態(tài)m0(1)運(yùn)行下一運(yùn)算(運(yùn)算2),這提供了報(bào)文的新狀態(tài)m1(1)。當(dāng)已經(jīng)執(zhí)行了最后一輪時(shí),在步驟216中返回運(yùn)算結(jié)果。
其余的運(yùn)算j類似地對報(bào)文的每個(gè)狀態(tài)mj(1)執(zhí)行,直至運(yùn)行了最后的運(yùn)算p(步驟210),其提供了當(dāng)前輪的數(shù)據(jù)塊的最終狀態(tài)mp-1(1)。如果密碼方案包括多輪相繼的運(yùn)算,則基于前一輪i-1所獲得的數(shù)據(jù)塊的最終狀態(tài)mp-1(i-1),對于每一輪i將步驟206至212迭代。
為克服常規(guī)密碼處理方法對故障攻擊的脆弱性,提供了一種以保護(hù)運(yùn)算免于故障攻擊的方式來執(zhí)行由密碼方案在起始環(huán)內(nèi)定義的一組相繼的數(shù)學(xué)運(yùn)算中的至少一個(gè)運(yùn)算的方法(運(yùn)算執(zhí)行方法在下文中還稱為“運(yùn)算保護(hù)方法”)。
圖3是描繪根據(jù)一些實(shí)施例的運(yùn)算保護(hù)方法的流程圖。
運(yùn)算保護(hù)方法可應(yīng)用于僅一個(gè)運(yùn)算,應(yīng)用于全部運(yùn)算,或者應(yīng)用于由加密方案在起始環(huán)a內(nèi)定義的一組相繼的運(yùn)算中的一組選定運(yùn)算。所保護(hù)的運(yùn)算的數(shù)量可取決于密碼方案本身和/或所要求的保護(hù)的級別f。此外,運(yùn)算保護(hù)方法可應(yīng)用于僅一輪或者應(yīng)用于多輪,取決于本發(fā)明的應(yīng)用和/或與攻擊有關(guān)的標(biāo)準(zhǔn),例如被標(biāo)識為能被攻擊者定為目標(biāo)的值。例如,在aes中,攻擊者通常將在最后一輪中引入故障或者在最后一輪的前一輪中引入故障。因此,在該示例中,該保護(hù)方法至少應(yīng)用于最后兩輪。
運(yùn)算保護(hù)方法應(yīng)用于一組相繼的運(yùn)算的每個(gè)目標(biāo)運(yùn)算,目標(biāo)運(yùn)算被限定在基礎(chǔ)環(huán)內(nèi),所述基礎(chǔ)環(huán)對應(yīng)于起始環(huán)a除以基礎(chǔ)理想j所得到的商數(shù)。運(yùn)算保護(hù)方法開始于在步驟300中接收數(shù)據(jù)塊(例如,報(bào)文的塊)的當(dāng)前狀態(tài)。報(bào)文的狀態(tài)可由于先前運(yùn)算而經(jīng)歷多次改變(無論是否受保護(hù))。
在步驟302中,可以修正數(shù)據(jù)塊的當(dāng)前狀態(tài)m,例如通過從當(dāng)前狀態(tài)導(dǎo)出修正后狀態(tài)m’。
在步驟304中,要保護(hù)的運(yùn)算在每個(gè)參考環(huán)a/ik內(nèi)執(zhí)行(303),這提供了與參考環(huán)a/ik內(nèi)的運(yùn)算的執(zhí)行結(jié)果相對應(yīng)的參考值ck。每個(gè)參考環(huán)代表了起始環(huán)a除以參考理想ik所得到的商數(shù)。
在步驟307中,要保護(hù)的運(yùn)算進(jìn)一步在一組擴(kuò)展環(huán)a/(jik1ik2…ikn中的每個(gè)擴(kuò)展環(huán)內(nèi)執(zhí)行(306),每個(gè)擴(kuò)展環(huán)取決于一個(gè)或多個(gè)擴(kuò)展環(huán)a/ik1,a/ik2,…,a/in,這為每個(gè)擴(kuò)展環(huán)a/jik1ik2…ikn提供了中間擴(kuò)展值cr,k1k2…kn(數(shù)n小于或等于參考環(huán)數(shù))。與一個(gè)或多個(gè)參考環(huán)a/ik1,a/ik2,…,a/in對應(yīng)的每個(gè)擴(kuò)展環(huán)a/jik1ik2…ikn表示起始環(huán)a除以基礎(chǔ)理想j與對應(yīng)的參考環(huán)的參考理想ik1,ik1,…,ikn之積所得到的商數(shù)。
在步驟312中,判定在從一個(gè)或多個(gè)參考值ck所導(dǎo)出的參考參數(shù)與從對應(yīng)的擴(kuò)展值cr,k1k2…kn所導(dǎo)出的擴(kuò)展參數(shù)之間的條件是否滿足。
如本文所使用的,如果擴(kuò)展環(huán)是起始環(huán)a除以基礎(chǔ)理想和與包含特定參考環(huán)的所述參考環(huán)相關(guān)聯(lián)的一個(gè)或多個(gè)參考理想之積所得到的商數(shù),則擴(kuò)展環(huán)被稱為“對應(yīng)于”或“取決于”該特定參考環(huán)。
在一個(gè)實(shí)施例中,條件步驟312可以包括,對于每個(gè)參考環(huán)a/ik(框310),在作為在該參考環(huán)內(nèi)執(zhí)行運(yùn)算的結(jié)果所獲得的參考值ck與從作為在擴(kuò)展環(huán)內(nèi)執(zhí)行運(yùn)算的結(jié)果而獲得的中間擴(kuò)展值cr,k1k2…kn(索引ki之一等于k)所導(dǎo)出的擴(kuò)展參數(shù)之間的比較取決于所考慮的參考環(huán)a/ik。
如果對于至少一個(gè)參考環(huán)不滿足該條件,則在步驟314中,檢測到對運(yùn)算的故障攻擊,并且可以終止密碼方案的運(yùn)算的執(zhí)行。另外,可以將報(bào)告通知給監(jiān)視系統(tǒng)100的運(yùn)算的監(jiān)視設(shè)備。
如果對于每個(gè)參考環(huán)滿足該條件,則在步驟318中運(yùn)算值m”可以根據(jù)參考值ck和/或中間擴(kuò)展值cr,k1k2…kn來確定。運(yùn)算值m”可以存儲為數(shù)據(jù)塊的新的當(dāng)前狀態(tài),以便用于密碼方案的下一運(yùn)算的執(zhí)行或者密碼方案的下一輪。否則,如果已經(jīng)運(yùn)行了密碼方案的全部運(yùn)算和輪,則運(yùn)算值可以返回給用戶。
這允許結(jié)果完整性的高度確保。此外,安全參數(shù)與參考理想iki的大小有關(guān)(典型地,故障檢測概率等于1-1/|iki|,iki的大小通常是素?cái)?shù))。
如此所獲得的保護(hù)可與諸如物理傳感器或更高級檢查(如果報(bào)文被加密且然后解密,則通過檢查初始報(bào)文來驗(yàn)證計(jì)算…)的其它保護(hù)解決方案互補(bǔ)。
圖4是描繪了本發(fā)明的實(shí)施例的流程圖,其中根據(jù)對于每個(gè)中間擴(kuò)展值所計(jì)算的擴(kuò)展參數(shù)來確定條件步驟。圖4的流程圖的主要步驟類似于圖3的流程圖,但是運(yùn)算保護(hù)方法還包括如下步驟:對于每個(gè)中間擴(kuò)展值cr,k1k2…kn,將中間擴(kuò)展值的每個(gè)字節(jié)對每個(gè)參考理想ik1,ik2,…,ikn歸約取模以獲得每個(gè)參考環(huán)的一組擴(kuò)展值c’k1,c’k2,…,和c’kn(即,對于每個(gè)參考環(huán)iki,中間擴(kuò)展值的每個(gè)字節(jié)映射到參考環(huán)iki的一個(gè)元素,這對于包括與中間擴(kuò)展值的字節(jié)相對應(yīng)的映射字節(jié)的每個(gè)參考環(huán)提供了映射值,所述一組擴(kuò)展值c’k1,c’k2,…,和c’kn包括映射值)。
此外,在這樣的實(shí)施例中,在步驟312中,擴(kuò)展參數(shù)是從根據(jù)在取決于參考環(huán)a/iki的擴(kuò)展環(huán)內(nèi)執(zhí)行運(yùn)算所獲得的每個(gè)擴(kuò)展值c’k導(dǎo)出的。更具體地,對于每個(gè)參考環(huán)a/iki,在步驟312中,判定作為在參考環(huán)a/iki中執(zhí)行運(yùn)算的結(jié)果而獲得的參考值cki與從根據(jù)在取決于參考環(huán)a/iki的每個(gè)擴(kuò)展環(huán)內(nèi)執(zhí)行307運(yùn)算和歸約步驟308所獲得的擴(kuò)展值c’ki所導(dǎo)出的擴(kuò)展參數(shù)之間的條件是否滿足。
圖5是描繪根據(jù)一個(gè)特定實(shí)施例的條件步驟312的流程圖。在該實(shí)施例中,對于每個(gè)參考環(huán)a/iki(500),條件步驟包括:將作為在參考環(huán)a/iki內(nèi)執(zhí)行運(yùn)算的結(jié)果而獲得的參考值cki與根據(jù)在取決于參考環(huán)a/iki的擴(kuò)展環(huán)內(nèi)的運(yùn)算執(zhí)行步驟307和歸約步驟308所獲得的每個(gè)擴(kuò)展值c’ki的比較(502)。每個(gè)參考環(huán)內(nèi)的每個(gè)擴(kuò)展值c’ki因此被用作諸如擴(kuò)展參數(shù)。在一個(gè)實(shí)施例中,該條件可以包括:將參考值cki和每個(gè)擴(kuò)展值c’ki比較,如果值cki和值c’ki相等則滿足該條件(504)。對于每個(gè)參考環(huán),步驟312可以迭代與取決于參考環(huán)的擴(kuò)展環(huán)的數(shù)量一樣多的次數(shù)。
圖6是描繪根據(jù)一個(gè)實(shí)施例的更新數(shù)據(jù)塊的當(dāng)前狀態(tài)的步驟(圖3和圖4中的步驟302)的流程圖。
在步驟600中,選定參考環(huán)的一組k個(gè)元素。該選定可以隨機(jī)地執(zhí)行。
在步驟602中,根據(jù)在基礎(chǔ)理想j中選定的k元素更新數(shù)據(jù)塊的當(dāng)前狀態(tài),這修正了數(shù)據(jù)塊的當(dāng)前狀態(tài)。
在一些情況下,在沒有修正輸入報(bào)務(wù)塊的情況下,執(zhí)行的運(yùn)算可能不足夠復(fù)雜。結(jié)果,可能不會檢測到錯(cuò)誤。例如,如果m=0,則在每個(gè)參考環(huán)和每個(gè)起始環(huán)內(nèi)數(shù)據(jù)塊m將等于0。
優(yōu)選地,當(dāng)前狀態(tài)的更新可以隨機(jī)地執(zhí)行,以添加針對諸如dpa的一些邊信道分析的保護(hù)。
更新數(shù)據(jù)塊的當(dāng)前狀態(tài)的這一步驟可以利用對j歸約取模(reductionmoduloj)來執(zhí)行。所述k個(gè)元素可以根據(jù)不同的選擇標(biāo)準(zhǔn)在基礎(chǔ)j中選定。特別地,可以在基礎(chǔ)j中隨機(jī)地選定所述k個(gè)元素。還可以隨機(jī)地預(yù)先計(jì)算這k個(gè)元素??商娲?,k個(gè)元素可以是常數(shù)。
應(yīng)當(dāng)注意,基礎(chǔ)理想j中的k個(gè)元素的隨機(jī)選擇允許添加針對諸如dpa的一些邊信道分析的保護(hù)。
例如,密碼方案是aes,保護(hù)方法可在環(huán)
(p)={p,…,xp,x2p,…,(x+1)p,(x+1)2p,…}
在該aes示范性應(yīng)用中,步驟500可以包括:隨機(jī)選擇k個(gè)多項(xiàng)式ri來使報(bào)文隨機(jī)化,并且步驟502可以包括將數(shù)據(jù)塊的當(dāng)前狀態(tài)mi的每個(gè)位i添加到pri中,其中pri是多項(xiàng)式二進(jìn)制乘法。
在每個(gè)參考環(huán)a/ik內(nèi)的擴(kuò)展值c’k從取決于參考環(huán)a/ik的擴(kuò)展環(huán)內(nèi)的運(yùn)算的執(zhí)行(步驟307)和歸約步驟(步驟308)來計(jì)算的實(shí)施例中,運(yùn)算保護(hù)方法可以包括:在步驟318返回運(yùn)算值之前,如果條件步驟312的全部迭代成功,則檢查與參考值和每個(gè)參考環(huán)c’k的擴(kuò)展值有關(guān)的輔助條件。
圖7是描繪根據(jù)該實(shí)施例的包括輔助條件的保護(hù)方法的流程圖。
圖7的流程圖的步驟類似于圖4的流程圖的步驟,但是運(yùn)算保護(hù)方法還包括:如果步驟312的主要條件對于全部參考值滿足,則步驟319包括,對于每個(gè)擴(kuò)展值,每個(gè)參考環(huán)c’k的擴(kuò)展值的每個(gè)字節(jié)對基礎(chǔ)理想j歸約取模,這提供了c”k(即,每個(gè)參考環(huán)c’k的擴(kuò)展值的每個(gè)字節(jié)映射到基礎(chǔ)環(huán)j的元素,如此獲得的映射值提供擴(kuò)展值c”k)。
可以在步驟321中檢查輔助條件。步驟321可以包括:判定與參考環(huán)相對應(yīng)地獲得的歸約后擴(kuò)展值c”k是否相等。如果至少一個(gè)歸約后擴(kuò)展值c”k不同于其它歸約后擴(kuò)展值,則檢測到錯(cuò)誤,其可以代表故障攻擊,并且運(yùn)算的執(zhí)行在步驟322中終止,類似于步驟314。否則(即,全部的歸約后擴(kuò)展值c”k相等),則在步驟324中返回運(yùn)算結(jié)果,類似于圖4的步驟318。
在一個(gè)實(shí)施例中,運(yùn)算保護(hù)方法可以包括:在步驟307中僅在一個(gè)擴(kuò)展環(huán)內(nèi)執(zhí)行運(yùn)算,以及在一組參考環(huán)內(nèi)執(zhí)行運(yùn)算。
圖8是描繪根據(jù)一些實(shí)施例在一個(gè)擴(kuò)展環(huán)內(nèi)執(zhí)行運(yùn)算以及在多個(gè)參考環(huán)內(nèi)執(zhí)行運(yùn)算的這樣的實(shí)施例的流程圖。步驟800、802、804、805、806分別類似于圖3的步驟300、302、304、305和306。步驟811類似于圖4的步驟307。
然而,在步驟810中,中國余數(shù)定理(crt)變換可以應(yīng)用于作為在n個(gè)參考環(huán)a/i1,…,a/ik,..a/in內(nèi)的每個(gè)參考環(huán)內(nèi)執(zhí)行運(yùn)算的結(jié)果而獲得的n個(gè)參考值c1,…,ck,…cn,這提供了從n個(gè)參考值所導(dǎo)出的唯一值,下文稱為參考參數(shù)。
在步驟812中,條件包括參考參數(shù)與作為在唯一擴(kuò)展環(huán)a/ji1i2…in內(nèi)執(zhí)行運(yùn)算的結(jié)果而獲得的唯一擴(kuò)展值cr,1,2,…,n之間的比較(步驟811)。
因此,執(zhí)行條件步驟812的唯一迭代。特別地,該條件可以包括:判定擴(kuò)展值cr,1,2,…,n是否等于參考參數(shù)c1,…,n,并且如果為否,則終止步驟814中的如之前關(guān)于圖3的步驟318所描述的密碼方案的運(yùn)算。否則,如果條件滿足(cr,1,2,…,n=c1,…,n),則擴(kuò)展值的每個(gè)字節(jié)或參考參數(shù)可以對基礎(chǔ)理想j歸約取模(即,擴(kuò)展值的每個(gè)字節(jié)或參考參數(shù)可以映射到基礎(chǔ)環(huán)j的元素,這提供了由對應(yīng)于擴(kuò)展值的字節(jié)或參考參數(shù)的映射字節(jié)所形成的映射值),并且歸約值(對應(yīng)于映射值)可以作為步驟816中的運(yùn)算結(jié)果m”返回??梢曰跀?shù)據(jù)塊的狀態(tài)m”來繼續(xù)進(jìn)行其余的密碼運(yùn)算或輪的執(zhí)行,同時(shí)確保沒有對運(yùn)算執(zhí)行的故障攻擊。
crt(中國余數(shù)定理)變換假設(shè),如果i,j是a中的兩個(gè)互素?cái)?shù)理想,則在商環(huán)a/(ij)與a/i×a/j之間存在同構(gòu)。也即,對于對(a,b),其中a∈a/i且b∈a/j,在a/(ij)中存在唯一對應(yīng)元素。相互地,對于任意元素x∈a/(ij),在對應(yīng)于x的a/i×a/j中存在唯一元素對。中國余數(shù)定理還可以歸納成多個(gè)理想逐對互素?cái)?shù)。
步驟810具體地使用crt變換a/i1×a/i2×…×a/in→a/(i1…in)來從(c1,c2,…cn)∈a/i1×a/i2×…×a/in確定c1,…,n∈a/(i1…in)。
這包括定義i1,…,k∈i1…ik,使得對于某ik+1∈ik+1,i1,…,k+ik+1=1。可以利用擴(kuò)展歐幾里德算法來計(jì)算它們。這還包括定義x1,…,k元素驗(yàn)證:
-x1,…,k=c1modi1
-x1,…,k=ckmodik
尋求值c1,…,n∈a/(i1…in)將被獲得作為c1,…,n=x1,…,n。
x1,…,n可以根據(jù)crt遞歸地構(gòu)造如下:
1-開始時(shí),x1被設(shè)定為等于c1(x1=c1)。
2-x2則被設(shè)定為等于x2=x1+(c2-x1)i1modi1i2。
3-x1,…,k,k+1則由x1,…,k構(gòu)造:
x1,…,k,k+1=x1,…,k+(ck+1-x1,…k,k,k+1)i1,…,kmodi1…ikik+1
則對于k+1=n(c1,…,n=x1,…,n-1,n)獲得c1,…,n。
圖9是示出運(yùn)算保護(hù)方法的另一示范性實(shí)施例的流程圖,該運(yùn)算保護(hù)方法包括在一組擴(kuò)展環(huán)內(nèi)執(zhí)行運(yùn)算以及在一組參考環(huán)內(nèi)執(zhí)行運(yùn)算,每個(gè)擴(kuò)展環(huán)a/jikiikj是起始環(huán)a除以基礎(chǔ)理想j與兩個(gè)參考環(huán)a/iki和a/ikj的參考理想iki,ikj之積所得到的商數(shù)。步驟900、902、904、905、906分別類似于圖4的步驟300、302、304、305和306。步驟907和908類似于圖4的步驟307和308。
在每個(gè)參考環(huán)a/ik內(nèi)的運(yùn)算的執(zhí)行(步驟904,905)提供了參考值ck。在步驟910中,crt應(yīng)用于作為每個(gè)參考環(huán)a/iki和a/ikj內(nèi)的運(yùn)算的執(zhí)行的結(jié)果而獲得的一組參考值對{cki,ckj},這對于參考環(huán){a/iki,a/ikj}對提供了唯一參考值ckikj,下文稱為對參考參數(shù)。
對于每對參考環(huán){a/iki,a/ikj},在取決于參考環(huán)a/iki和a/ikj的每個(gè)參考環(huán)a/jikiikj內(nèi)進(jìn)一步執(zhí)行運(yùn)算(步驟908),這提供了中間擴(kuò)展值。在步驟909中,如此獲得的擴(kuò)展值cr,ki,kj的每個(gè)字節(jié)對乘積ikiikj歸約取模,這對于每個(gè)擴(kuò)展環(huán)提供了對擴(kuò)展值c’ki,kj(即,擴(kuò)展值cr,ki,kj的每個(gè)字節(jié)映射到環(huán)由參考理想的乘積ikiikj求商的環(huán)a/ikiikj的元素,這提供了包括與擴(kuò)展值的字節(jié)相對應(yīng)的映射字節(jié)的映射值,映射值形成對擴(kuò)展值c’ki,kj)。
對于每對參考環(huán){a/iki,a/ikj}迭代條件步驟912。對于每對參考環(huán){a/iki,a/ikj},步驟912包括檢查包括對參考參數(shù)ckikj與作為在擴(kuò)展環(huán)a/jikiikj內(nèi)的運(yùn)算(步驟908)和歸約步驟909的執(zhí)行的結(jié)果而獲得的對應(yīng)的對擴(kuò)展值ckikj之間的比較的條件。
特別地,該條件可以包括:判定對擴(kuò)展值c′kikj是否等于對參考參數(shù)ckikj,并且如果為否,則終止步驟914中的密碼方案的運(yùn)算,如之前所述的。否則,如果條件滿足(c′kikj=ckikj),則參考值的每個(gè)字節(jié)或參考參數(shù)可以對基礎(chǔ)理想j歸約取模(即,擴(kuò)展值的每個(gè)字節(jié)或參考參數(shù)映射到基礎(chǔ)環(huán)j的元素,這提供了與擴(kuò)展值的字節(jié)相對應(yīng)的映射字節(jié)所形成的映射值),并且歸約值(對應(yīng)于映射值)可以作為步驟916中的運(yùn)算結(jié)果m”返回,如關(guān)于圖3所描述的,從而繼續(xù)執(zhí)行其余的密碼運(yùn)算或輪。
在步驟910中所應(yīng)用的crt運(yùn)算是crt變換a/iki,a/ij→a/(ikiikj)。
根據(jù)該crt變換運(yùn)算,如果iki和ikj是互素?cái)?shù),則存在i∈iki和j∈ikj而使得i+j=1。從(cki,ckj)∈a/iki×,a/ikj中獲得元素ckikj∈a/(ikiikj)。換句話說,可以確定ckikj∈a/(ikiikj)而使得ckikj=ckimodiki且ckikj=ckjmodikj
這包括使用例如擴(kuò)展歐幾里德算法來找到元素i,j。這些元素還可以預(yù)先計(jì)算出且被存儲。
ckikj則設(shè)定為x=ckij+ckiimodikiikj。
可替代地,ckikj還可以計(jì)算為ckikj=(cki-ckj)j+ckjmodikiikj。這樣,僅須計(jì)算j。
雖然圖9的實(shí)施例已經(jīng)參考其中在三個(gè)參考環(huán)內(nèi)以及在兩個(gè)擴(kuò)展環(huán)(每個(gè)擴(kuò)展環(huán)取決于一對參考環(huán))內(nèi)執(zhí)行運(yùn)算的示例來說明以利于理解實(shí)施例,更一般地,該實(shí)施例可用于在如下中執(zhí)行運(yùn)算:
-任意數(shù)量的參考環(huán)(904),以及
-在至少兩個(gè)擴(kuò)展環(huán)內(nèi)(907),每個(gè)擴(kuò)展環(huán)取決于一組參考環(huán)。
根據(jù)該實(shí)施例,運(yùn)算保護(hù)方法可以包括:
-將crt變換(910)應(yīng)用于作為在對應(yīng)于一個(gè)擴(kuò)展環(huán)的每組參考環(huán)內(nèi)執(zhí)行運(yùn)算的結(jié)果而獲得的參考值,這提供了與每一組所述參考環(huán)有關(guān)的共同參考參數(shù),
-對于作為在取決于給定組參考環(huán)的一個(gè)擴(kuò)展環(huán)內(nèi)執(zhí)行運(yùn)算的結(jié)果而獲得的每個(gè)擴(kuò)展值,將擴(kuò)展值的每個(gè)字節(jié)對一組參考環(huán)中的每個(gè)參考環(huán)的參考理想的乘積歸約取模(908),提供了共同擴(kuò)展參數(shù)。
條件步驟(912)則可以包括與給定的一組參考環(huán)有關(guān)的每個(gè)共同參考參數(shù)與為取決于該組參考環(huán)的擴(kuò)展環(huán)所獲得的共同擴(kuò)展參數(shù)之間的比較。
即使不限于對稱密碼方案,本發(fā)明具有在對稱密碼方案中(相同的關(guān)鍵詞用于加密和解密,與公鑰密碼系統(tǒng)不同)以及尤其是對于aes密碼方案保護(hù)密碼運(yùn)算來應(yīng)對故障攻擊的特別的優(yōu)點(diǎn)。
圖10是示出了本發(fā)明示例性應(yīng)用于aes密碼方案的一些運(yùn)算的流程圖。圖10的流程圖類似于圖2的流程圖,但是根據(jù)保護(hù)方法來保護(hù)一些aes運(yùn)算。
先進(jìn)加密標(biāo)準(zhǔn)(aes)是2001年標(biāo)準(zhǔn)化的對稱加密方案的規(guī)范。
aes密碼方案包括對128位數(shù)據(jù)塊(或報(bào)文)執(zhí)行一組相繼的運(yùn)算的輪(或重復(fù))。其支持三種不同的密鑰長度,并且輪數(shù)對于每個(gè)密鑰長度是固定的:
-對于128位密鑰,輪數(shù)是10
-對于192位密鑰,輪數(shù)是12
-對于256位密鑰,輪數(shù)是14
aes密碼方案包括在4x4字節(jié)的矩陣所表示的128位塊上運(yùn)算的4不不同的運(yùn)算:
-字節(jié)取代運(yùn)算,據(jù)此,數(shù)據(jù)塊的當(dāng)前狀態(tài)的每個(gè)字節(jié)由固定的8位查找表s中的其輸入項(xiàng)(bij=s(aij))來替代,如圖11所示。
-行移位運(yùn)算,據(jù)此,數(shù)據(jù)塊的當(dāng)前狀態(tài)的每行中的字節(jié)循環(huán)地向左移位,每個(gè)字節(jié)移位的位置數(shù)對于每行來說是不同的,如圖12所示。
-列混淆運(yùn)算,據(jù)此,數(shù)據(jù)塊的當(dāng)前狀態(tài)的每列乘以固定多項(xiàng)式c(x),如圖13所示,以及
-輪密鑰加運(yùn)算,據(jù)此,利用xor運(yùn)算,將報(bào)文的當(dāng)前狀態(tài)的每個(gè)字節(jié)與輪的子密鑰(roundsubkey)的一個(gè)字節(jié)組合,如圖14所示。
aes使用每個(gè)數(shù)據(jù)塊中所包含的二進(jìn)制值表示成多項(xiàng)式的環(huán)
在域
p=a0+a1x+a2x2+…+am-1xn-1+anxn
其中a0,a1,…,an是
商環(huán)
這意味著,對于
一個(gè)性質(zhì)是,如果p是不可約的,則
如果
aes密碼方案的大部分運(yùn)算(字節(jié)取代、列混淆和輪密鑰加)具體地被限定在稱為rijndael有限域的基礎(chǔ)域上并且記為
在圖10的實(shí)施例中,對于每輪,運(yùn)算保護(hù)方法應(yīng)用于以下運(yùn)算中的每一個(gè):
-行移位運(yùn)算(步驟925);
-列混淆運(yùn)算(步驟926),以及
-輪密鑰加運(yùn)算(步驟927)。
字節(jié)取代運(yùn)算(923)的執(zhí)行可以根據(jù)rijndael有限域中的常規(guī)方法來執(zhí)行。
可替代地,運(yùn)算保護(hù)方法可在一輪期間內(nèi)、全部輪內(nèi)或者選定數(shù)量的輪內(nèi)應(yīng)用于僅一些先前的運(yùn)算。
圖15是示出對應(yīng)于圖3的實(shí)施例的、本發(fā)明示范性應(yīng)用于aes密碼方案的一個(gè)運(yùn)算的流程圖。為利于理解本申請,將使用與圖3所使用的附圖標(biāo)記相似的附圖標(biāo)記,但是圖15的流程圖對應(yīng)于特定的實(shí)施例和應(yīng)用。
在下面的說明中,q是次數(shù)為k的
在步驟302中,次數(shù)為k的隨機(jī)多項(xiàng)式的數(shù)量被選定(例如,16個(gè)隨機(jī)多項(xiàng)式)。這包括選擇長度為k的隨機(jī)位串。每個(gè)位表示多項(xiàng)式的系數(shù)。使用隨機(jī)多項(xiàng)式允許針對邊信道攻擊來進(jìn)行保護(hù)。為了僅針對故障攻擊進(jìn)行保護(hù),可以可替代地從rom加載常數(shù)多項(xiàng)式。
選項(xiàng)的多項(xiàng)式ri用于隨機(jī)化報(bào)文。利用多項(xiàng)式二進(jìn)制乘法,報(bào)文mi的每個(gè)字節(jié)與pri相加,這提供了報(bào)文的修正狀態(tài)。
在步驟304中,aes運(yùn)算運(yùn)行于每個(gè)參考環(huán)
在步驟307中,在每個(gè)擴(kuò)展環(huán)
在步驟308中,對于每個(gè)擴(kuò)展環(huán)
每個(gè)歸約結(jié)果
在步驟312中,對于參考環(huán)
如果對于每個(gè)參考值
否則,如果在步驟312中判定出至少一個(gè)參考值
應(yīng)當(dāng)注意的是,圖12的流程圖的以上描述對應(yīng)于僅有一個(gè)參考環(huán)和一個(gè)擴(kuò)展環(huán)的運(yùn)算保護(hù)方法的簡化的實(shí)施例。技術(shù)人員易于理解的是,aes應(yīng)用不限于該實(shí)施例,還適用于使用多個(gè)多項(xiàng)式q1,…,qn作為參考理想的多個(gè)參考環(huán)的使用,以及適用于取決于如結(jié)合圖3、圖4、圖5、圖6、圖7、圖8和圖9所描述的一個(gè)或多個(gè)參考環(huán)的多個(gè)擴(kuò)展環(huán)。
雖然已經(jīng)通過對各個(gè)示例的說明闡明了本發(fā)明的實(shí)施例,以及雖然非常詳細(xì)地描述了這些實(shí)施例,申請人的意圖不是將隨附權(quán)利要求的范圍限制或以任何方式限定到這些細(xì)節(jié)。因此,本發(fā)明在其更寬泛的方面不限于所圖示和描述的具體的細(xì)節(jié)、代表性的方法和示例性的示例。特別地,運(yùn)算保護(hù)方法可在一輪或多輪期間應(yīng)用以執(zhí)行同一密碼方案(也稱為密碼算法)的一個(gè)或多個(gè)運(yùn)算。進(jìn)一步,本發(fā)明可應(yīng)用于任何對稱或不對稱的密碼方案。而且,運(yùn)算保護(hù)方法可使用從一個(gè)或多個(gè)參考環(huán)的參考值所導(dǎo)出的參考參數(shù)與從對應(yīng)的擴(kuò)展環(huán)導(dǎo)出的擴(kuò)展參數(shù)之間的任意條件312。而且,技術(shù)人員將易于理解的是,在擴(kuò)展環(huán)內(nèi)執(zhí)行所考慮的運(yùn)算的步驟(306-309)可以相對于在參考環(huán)內(nèi)執(zhí)行所考慮的運(yùn)算的步驟依照任意順序來實(shí)現(xiàn)(303-305),而無關(guān)于用來指代這些步驟的附圖標(biāo)記。例如,在擴(kuò)展環(huán)內(nèi)執(zhí)行所考慮的運(yùn)算的步驟(306-309)可以與執(zhí)行參考環(huán)內(nèi)的所考慮的運(yùn)算的步驟(303-305)同時(shí)實(shí)現(xiàn),在其之前實(shí)現(xiàn)或者在其之后實(shí)現(xiàn)。