保護(hù)密碼設(shè)備對抗實(shí)現(xiàn)攻擊的制作方法
【技術(shù)領(lǐng)域】
[0001]本公開描述了用于保護(hù)密碼設(shè)備的方法和集成電路,并且具體地,描述了用于保護(hù)密碼設(shè)備對抗實(shí)現(xiàn)攻擊的方法。
【背景技術(shù)】
[0002]智能設(shè)備,尤其是具有低功率要求的智能設(shè)備(通常被稱作無源智能設(shè)備)被廣泛用于認(rèn)證和訪問控制。這樣的設(shè)備的示例包括作為射頻識別(RFID)標(biāo)簽的子集的非接觸智能卡。這樣的無源智能設(shè)備通常使用專用集成電路(ASIC)。
[0003]考慮到無源智能設(shè)備在安全關(guān)鍵應(yīng)用中的應(yīng)用,使用密碼術(shù)來認(rèn)證正在使用的無源智能設(shè)備。相反地,由于對無源智能設(shè)備可以保存或允許訪問的信息的渴求,它們也是惡意的試圖使用的興趣所在。
[0004]大量的時間和努力花費(fèi)在了對安全集成電路(1C,例如智能卡)中的邊信道對策的實(shí)現(xiàn)和分析。邊信道攻擊是以根據(jù)密碼系統(tǒng)的物理信息獲得的信息為基礎(chǔ)的任何攻擊。這樣的攻擊不同于軟件強(qiáng)力攻擊或者加密算法中的開發(fā)或弱點(diǎn)。邊信道攻擊通常檢查系統(tǒng)的內(nèi)部操作(例如系統(tǒng)汲取的功率、電磁(EM)輻射或其它‘邊信道’)來確定模式和實(shí)現(xiàn)步驟。一種這樣的已知邊信道攻擊是差分功耗分析(DPA)。這可以包括惡意用戶研究設(shè)備使用期間功率使用的痕跡,并且利用統(tǒng)計分析來確定加密算法的特征。
[0005]隨著當(dāng)前可用的標(biāo)準(zhǔn)化算法和協(xié)議的使用(像是在銀行業(yè)務(wù)或電子政務(wù)中使用的算法和協(xié)議),針對差分功耗分析(DPA)(以及差分故障攻擊)的攻擊情形是存在的,導(dǎo)致設(shè)備實(shí)現(xiàn)受這樣的邊信道攻擊威脅的協(xié)議(例如,由于始終以相同的(主)密鑰來加密變化的輸入,系統(tǒng)的功率簽名中的變化僅取決于或一般取決于加密算法的變化)。
[0006]對這種攻擊的一種解決方案是使用密鑰更新(re-keying)方法。在這樣的方法中,會話密鑰從主密鑰導(dǎo)出,隨后將該會話密鑰用于實(shí)際操作。該會話密鑰有規(guī)律地變化,以減少針對具體的(主)密鑰可以從設(shè)備獲取的功率痕跡的量。
[0007]該密鑰更新的特殊實(shí)例已經(jīng)應(yīng)用在CIPURSE協(xié)議中。在該方法中,通過使用隨機(jī)輸入以及更容易進(jìn)行保護(hù)以對抗實(shí)現(xiàn)攻擊的函數(shù)(稱作NLM(非線性映射)),使用主密鑰導(dǎo)出中間會話密鑰。然后,該中間會話密鑰與主密鑰一起使用,以得到所使用的會話密鑰(參見參考US2010316217A1)。上述對這樣的DPA攻擊的解決方案依靠雙方之間的隨機(jī)數(shù)協(xié)定。這樣的方法防止驗證先前交易。具體地,在沒有隨機(jī)數(shù)的情況下不可能重復(fù)會話。
[0008]相對新的研究領(lǐng)域是泄露彈性密碼術(shù)。在泄露彈性(LR)中尋求避免典型的DPA情形,在典型的DPA情形中,可以以針對每個執(zhí)行的改變的輸入,逐組塊地(即以組塊為單位,例如逐字節(jié)地)攻擊分組密碼的密鑰。在LR方法中,多次執(zhí)行分組密碼,其中僅逐組塊地(例如,每次1個比特)來使用完整的輸入向量并且將其復(fù)制到分組密碼的整個輸入狀態(tài)。在每個迭代中,下一個輸入組塊被用作輸入(再次地,復(fù)制到整個狀態(tài))。這限制了數(shù)據(jù)復(fù)雜性,即可以用于攻擊的痕跡的數(shù)量,并且在不同密鑰組塊的邊信道信息之間創(chuàng)建依從性。然而,由于針對每個密鑰有N > 1個痕跡,對手仍然可以應(yīng)用DPA攻擊。
[0009]總的來說,在沒有實(shí)現(xiàn)重大對策且不需要詳細(xì)的邊信道調(diào)查的低成本1C上執(zhí)行對稱密碼安全服務(wù)時仍然存在問題。以下公開旨在處理這些問題。
【發(fā)明內(nèi)容】
[0010]根據(jù)本發(fā)明的第一方案,提供了用于保護(hù)密碼設(shè)備對抗邊信道攻擊的方法,該方法包括:
[0011]從密碼設(shè)備的存儲器獲得密鑰;
[0012]向加密模塊提供密鑰和恒定的數(shù)據(jù)比特輸入;
[0013]使用加密模塊導(dǎo)出加密數(shù)據(jù)比特的輸出;
[0014]向密鑰更新模塊提供輸出、密鑰和輸入向量;以及
[0015]使用所述密鑰更新模塊基于輸入向量的至少一部分來修改密鑰以導(dǎo)出更新的密鑰。
[0016]以這種方式使用密鑰減少或去除了下層加密模塊中對攻擊對策的需求,并且還防止了詳細(xì)的邊信道調(diào)查。因為使用了密鑰更新技術(shù),不能使用已更新密鑰來通過邊信道攻擊來導(dǎo)出原始的主密鑰。密鑰更新模塊所應(yīng)用的變換需要知道原始主密鑰,因為它們使用根據(jù)輸入向量和密鑰導(dǎo)出的加密模塊輸出。此外,因為向加密模塊的(明文)輸入是恒定的,僅可獲得單個功率痕跡。這提供了對抗邊信道攻擊(例如DPA,其試圖將統(tǒng)計分析應(yīng)用到密碼過程和算法的功率管理痕跡)的安全性。
[0017]在本公開的實(shí)施例中,方法還包括以下步驟:向加密模塊提供已更新密鑰和恒定輸入;以及使用加密模塊導(dǎo)出已更新輸出。
[0018]這樣的實(shí)施例通過提供已根據(jù)已更新密鑰和所提供的輸入向量導(dǎo)出的已更新輸出來提高已更新密鑰的安全性。因為已更新輸出使用已更新密鑰而不是原始的主密鑰來進(jìn)行加密,保護(hù)了原始的主密鑰的安全性。
[0019]此外,該方法還可以包括以下步驟:向密鑰更新模塊提供已更新輸出、已更新密鑰和輸入向量;以及使用所述密鑰更新模塊基于輸入向量的至少第二部分來修改已更新密鑰。通過進(jìn)一步修改已更新密鑰,該步驟從主密鑰中發(fā)展出進(jìn)一步更新的密鑰。
[0020]輸入向量可以包括兩個或兩個以上部分。因此,這樣的方法步驟可以針對輸入向量的每個部分進(jìn)行重復(fù)。具體地,以下步驟可以迭代多次,其次數(shù)等于輸入向量的部分的數(shù)量:向加密模塊提供已更新密鑰和恒定輸入;以及使用加密模塊導(dǎo)出已更新輸出,并且向密鑰更新模塊提供已更新輸出、已更新密鑰和輸入向量;以及使用密鑰更新模塊來更新已更新密鑰。
[0021]換言之,可逐組塊地(即以組塊為單位,例如以字節(jié)或比特為單位)提供輸入向量。例如,針對長度為128比特的輸入向量,該輸入向量可被看做包括64個部分或組塊,每個部分長2比特。然后可以借助偽隨機(jī)函數(shù)來導(dǎo)出偽隨機(jī)輸出。因此,密鑰更新模塊可被看做是擔(dān)當(dāng)偽隨機(jī)函數(shù)步驟,基于輸入向量的至少部分的值來處理輸入向量和密鑰以導(dǎo)出偽隨機(jī)輸出(例如已更新密鑰)。在該考慮中,輸入向量和密鑰是偽隨機(jī)函數(shù)的輸入。
[0022]在實(shí)施例中,可以提供一個或多個附加輸入向量。然后可以針對每個附加輸入向量,使用偽隨機(jī)函數(shù)來導(dǎo)出偽隨機(jī)輸出。然后可以將每個偽隨機(jī)輸出級聯(lián)以形成更大的偽隨機(jī)輸出。
[0023]輸入向量的部分可以包括至少比特串的值。此外或備選地,輸入向量的部分可以是輸入向量的至少1個比特的值。因此,密鑰更新模塊可以基于輸入向量的比特值來導(dǎo)出已更新密鑰。密鑰更新模塊可以進(jìn)行動作,以應(yīng)用所限定的密鑰更新協(xié)議來根據(jù)輸入向量的比特的值來修改密鑰或已更新密鑰。例如,針對比特0的0比特值可以指示密鑰更新函數(shù)將密鑰的所選擇的比特向右循環(huán)1個比特位置。相反地,針對比特0的比特值1可以指示密鑰更新函數(shù)將密鑰的同一比特或其它比特向右循環(huán)2個比特位置。根據(jù)可用于更新函數(shù)的算法,可以有其它排列。
[0024]如上所述,基于輸入向量的比特的值,密鑰更新模塊可以使用壓縮、展開或排列操作中的一個或多個來變換或修改密鑰或先前更新的密鑰。
[0025]利用迭代增加了原始獲得的密鑰(稱作主密鑰)與已更新密鑰之間依從性的復(fù)雜性,因此使得更難以導(dǎo)出密鑰樹中較高的密鑰。這進(jìn)而借助差分故障分析阻礙了密鑰恢復(fù),特別是針對原始獲得的主密鑰而言。此外,因為每個密鑰只使用相同的輸入(即,向每個加密模塊提供的輸入是恒定的),每個密鑰迭代的功率痕跡是相同的,并且因此每個密鑰的功率測量對于上述差分功耗分析攻擊是有彈性的。
[0026]在一些示例中,密鑰更新模塊可以將輸出的值或者已更新輸出循環(huán)多個比特。例如,比特的數(shù)量可以取決于輸入向量的至少一部分的值。
[0027]備選地或附加地,已更新密鑰可以是密鑰或先前已更新密鑰的至少一部分與已更新輸出的至少一部分的