盡可能一樣的,W致攻擊者不能夠從信息特征中找出它們之間的相關性。
[0038] 采用本發明的方法,當芯片進行密碼運算潛在受到SCA攻擊和DFA攻擊的軟件或 硬件密碼設備運行公鑰體制時,在需要對秘密密鑰或保密參數進行NAF計算的情況下,本 發明能夠有效性抵抗故障攻擊、側信道分析和模板攻擊。同時還能根據應用需求,設計與系 統相匹配的效率和安全性。
[0039] 本發明適用于芯片中的硬件和軟件實現的安全算法,特別適用于應用密碼安全芯 片的金融卡、交通卡等等。
[0040] 本發明的其他優點,目的和特征將部分地在隨后的描述中闡明,并且對本領域普 通技術人員來說,部分內容將在審查下列內容時變得清楚,或者可W由本發明的實踐而得 知。利用在書面描述及其權利要求W及附圖中具體指出的結構,可W實現和達到本發明的 目的和其他優點。
【附圖說明】
[0041] 下面結合附圖與【具體實施方式】對本發明作進一步詳細的說明:
[0042] 圖1是所述芯片中的安全的NAF實現方法流程圖;
[0043] 圖2是所述芯片中安全的NAF實現方法的功耗圖;
[0044] 圖3是芯片中的傳統的NAF設計方法的功耗圖。
【具體實施方式】
[004引為了便于表述,本實例暫定Kd為占空比為1/20的隨機數,非相鄰表示型的窗口 w 為4。
[004引如圖1所示,所述芯片中安全的NAF實現方法,當潛在受到SCA攻擊和DFA攻擊的 軟件或硬件密碼設備運行公鑰體制時,在需要對秘密密鑰或保密參數進行NAF計算的情況 下,具體執行如下步驟(其中,Ki代表輸出參數,K代表輸入參數):
[0047] 第一步,輸入需要表示成非相鄰表示型的數據的地址K,K的非相鄰表示型的輸出 地址Ki。
[0048] 第二步,產生一個隨機數Kd和1/20占空比的隨機序列RandomBit。所述的隨機數 Kd從本質上來看跟數據K是沒有任何分別的。
[0049] 第Η步,判斷數據K是否為0,為0則轉到第四步,返回計數值i,程序結束,否則執 行W下操作:
[0050] a、如果Kd最低比特為1,則執行下列偽操作S1,S1的具體操作如下所示。回到第 Η步。
[0054] b、否則如果數據Κ的最低比特為1,則執行下列真操作S2, S2的具體操作如下所 示。回到第Η步。
[0058] C、否則執行下列真操作與偽操作的結合S3, S3的具體操作如下所示。回到第Η 步。
[0062] 所述芯片中安全的NAF實現方法,具有W下優點:
[0063] 第一,為了保證代碼保持一致性,需要S1,S2和S3 Η個操作內容所執行的匯編指 令完全一樣,所消耗的指令周期也完全一樣,送就使得該方法無論是放在任何不同的存儲 介質之間復制數據,例如在SRAM(靜態隨機存儲器)之間復制數據或者從EEPR0M(帶電可 擦可編程只讀存儲器)到SRAM之間復制數據,顯而易見,該方法的Η個執行階段所消耗的 時間都應該是一樣的。
[0064] 第二,由于送一過程中所有的代碼雖然邏輯不同,但是代碼是相同的,所W它們的 能耗表現基本是一樣。由于代碼完全相同,而且功耗特征的體現主要是由處理器的基本操 作單元引起的,簡而言之就是從指令執行單元體現出來的,從而使得送Η個執行階段所表 現出來的功耗特征應該都是類似的。
[0065] 第Η,引入了隨機數Kd因素,即Kd不作為真正的結果但是會直接影響整個程序運 行時體現出來的信息特征,從而使得攻擊者難W判斷真假功耗特征,有效抵抗了 SCA攻擊。
[0066] 第四,引入了占空比可調的隨機比特序列RandomBit,RandomBit的是安全性和效 率性的關鍵指標,占空比過高或過低都會降低安全性,選擇合適的占空比,可根據實際應用 調節RandomBit的占空比讓程序的效率和安全性達到最佳狀態。
[0067] 將上述實施方式應用到單片機芯片中采集到的功耗如圖2所示,從圖2不難看出 整個NAF的運算過程都是非常整齊平均的。
[0068] 與本發明形成鮮明對比的是,去掉Kd和RandomBit的影響后,上述實施方式應用 到單片機芯片中采集到的功耗如圖3所示,從圖3不難看出整個NAF的運算過程中,數據K 的比特1和比特0非常明顯。倘若波形經過精必處理之后,破解數據K將變得輕而易舉。
[0069] 綜上所述,本發明在芯片中需要對數據進行非相鄰表示型計算時,能夠做到時間 上保持一致、功耗上保持一致,且由于加入了隨機性因子,從而擾亂了偽操作插入的時間, 使得攻擊者進行DFA攻擊試驗時無法確定真假操作,進行SPA攻擊試驗時也無法找到明顯 的功耗特征。與傳統方法相比,本發明滿足了抵御SCA和DFA等等攻擊手段,安全性有了質 的飛躍。
[0070] W上所述僅為本發明的【具體實施方式】和實施例,本發明保護范圍并不局限于此。
【主權項】
1. 一種芯片中安全的非相鄰表示型實現方法,其特征在于,包括如下步驟: 步驟1,讀取需要進行NAF計算的數據K和用于偽造數據K的隨機數Kd W及隨機比特 序列 RandomBit ; 步驟2,當K〉0,重復執行W下操作,其中Kdi為臨時變量,ki和i為輸出變量: 曰、如果RandomBit最低比特為1,則執行下列偽操作Sl ; Sl的核必運算如下: Kdi ^ Kd mod 2",Kd ^ Kd-Kdi, RandomBit Randombit/2, b、 否則如果K的最低比特為1,則執行下列真操作S2 ; S2的核必運算如下: k, mod 2*, K^K-k,,c、 否則執行下列真操作與偽操作的結合S3 ; S3的核必運算如下: Kdi ^ Kd mod 2",Kd ^ Kd-Kdi,步驟3,輸出ki和i。2. 如權利要求1所述的方法,其特征在于;所述的用于偽造數據K的隨機數Kd,包括任 意在運算執行時所表現出來的信息特征上與數據K的信息特征相似的數據。3. 如權利要求1所述的方法,其特征在于:步驟1中所述的隨機比特序列RandomBit, 包括任意占空比可控的隨機比特序列。4. 如權利要求1所述的方法,其特征在于:步驟2中所述的偽操作SI,除了其核必運算 Kdi ^ Kd mod 2",Kd ^ Kd-Kdi 和 RandomBit ^ Randombit/2 W外,包括任意在運算執行時 能夠達到與操作S2的信息特征相似的操作。5. 如權利要求1所述的方法,其特征在于:步驟2中所述的真操作與偽操作的結合S3, 除了其核必運算ki ^ K mod 2",K ^ K-ki和!:.W外,包括任意在運算執行時能 夠達到與操作S2的信息特征相似的操作。
【專利摘要】本發明公開了一種芯片中安全的非相鄰表示型實現方法,包括在智能卡或非智能卡芯片上,在硬件或軟件上需要對數據K進行NAF計算時,通過對運算過程插入適量的偽操作,使得攻擊者在功耗上不能夠有效地分辨出運算數據對功耗的影響,從而抵御了側信道攻擊;同時,通過隨機數打亂了插入偽操作的時機,使得攻擊者不能夠準確地對故障注入點進行判斷和分析,從而抵御了故障注入攻擊。本發明能夠有效抵御側信道攻擊和故障注入攻擊,提高芯片的安全性。本發明適用于芯片中的硬件和軟件實現的安全算法,特別適用于應用密碼安全芯片的金融卡、交通卡等等。
【IPC分類】H04L9/30, H04L9/32
【公開號】CN105656629
【申請號】
【發明人】吳江源, 馬博, 顧星遠, 陳海連
【申請人】上海華虹集成電路有限責任公司
【公開日】2016年6月8日
【申請日】2014年11月25日