專利名稱:一種利用dpa曲線極性進行密鑰提取的方法及系統的制作方法
技術領域:
本發明涉及信息安全技術領域,尤其涉及一種利用DPA曲線極性進行密鑰提取的 方法及系統。
背景技術:
現今計算機的廣泛應用,給我們帶來了巨大的社會、經濟效益,但同時也暴露了計 算機信息安全方面的脆弱性,而其中密碼是信息安全的關鍵所在。通過對密碼進行分析,可 以得到通信雙方的通信內容,從而竊取別人的隱私等。因此,一個好的密碼算法,需要有較 好的抗攻擊性。相較傳統意義上的密碼分析,旁路式攻擊(Side Channel Attack, SCA)是針對密 碼體制具體實現來獲得有用的信息。其中包括TA、DPA、DFA、SPA等多種旁路式攻擊。這類攻 擊較之其他的攻擊方式,具有更隱蔽、更快速的特點。自提出以來,對很多密碼系統的安全 性構成了嚴重的威脅,而其中的能量攻擊(PowerAttack,PA)以其容易實施、復雜度低等特 點成為研究的熱點。在參考文獻1中,Paul Kocher首先提出了利用不同指令消耗能量不同 來推測處理器正在執行的指令,從而獲取信息的簡單功耗攻擊(Simple Power Analysis, SPA);進而提出了利用功耗與運算數據的相關性攻擊的差分功耗攻擊(Differential Power Analysis, DPA)。在Paul Kocher提出的原始DPA攻擊中,利用DPA差分所得的功耗曲線是否有峰 值來判斷是否猜測到了部分正確的密鑰,而所得到的峰值的大小、極性并沒有利用。而這里 所提出的極性DPA攻擊是對原始DPA攻擊進行的改良。我們試圖利用DPA峰值的極性,以 降低原始DPA攻擊的復雜度,從而更容易完成對密碼的分析,得到正確密鑰。參考文獻 1 “〈Differential Power Analysis》,Paul Kocher, Joshua Jae, and Benjamin JunDifferential Power Analysis. Crypto99
發明內容
針對上述存在的技術問題,本發明的目的是提供一種利用DPA曲線極性進行密鑰 提取的方法及系統,利用DPA分析中曲線的正負極性,進行加密算法中密鑰的分析與提取, 本方法可用于對硬件加密設備或系統中已有密鑰的提取,并可用于對硬件設備物理安全性 的評價。為達到上述目的,本發明采用如下的技術方案一種利用DPA曲線極性進行密鑰提取的方法,包括測試要攻擊的芯片,獲得AES在該芯片上的具體實現情況下,每個bit產生DPA峰 值的極性,獲得攻擊位置每個bit的DPA峰值極性;利用明文,對加密過程的中間狀態進行劃分,得出峰值極性;通過原始DPA極性數組與攻擊DPA極性數組進行異或,從而得到密鑰。所述測試要攻擊的芯片,獲得AES在該芯片上的具體實現情況下,每個bit產生DPA峰值的極性,獲得攻擊位置每個bit的DPA峰值極性的步驟進一步包括以下子步驟①密鑰寄存器清零或已知密鑰值K ;②生成隨機明文,利用芯片加密,記錄功耗曲線組Ρ[1. . Μ] [1. . N]其中,N為功耗曲線上的采樣點數,M為功耗曲線條數,每條曲線上有N個采樣點, 一共記錄M組功耗曲線;③由于1[/’][127:0]=戶/0^[/][127:0] 尺[127:0];已知?1£011[幻和 Κ[127:0]相當
于已知X[i] [127:0],利用X[i] [j]做劃分,得到曲線集合Pl {P[i] [1. · N] |X[i] [j] = 1}和 P0{P[i][l..N] |X[i][j] =0},其中,X表示加密過程的中間狀態,i表示使用的明文-功耗 分組,j表示攻擊的bit ;其中Plain表示明文,K表示密鑰,X表示加密過程的中間狀態。④計算ADj,獲得bitj對應的DPA曲線以及峰值的極性,其中ADj表示第j bit DPA攻擊所得到的DPA峰值;⑤重復步驟③、④,得到全部128bit峰值極性,記做原始DPA極性數組 pole[127:0]。所述利用明文,對加密過程的中間狀態進行劃分,得出峰值極性的步驟進一步包 括以下子步驟①生成隨機明文,利用芯片加密,記錄功耗曲線組Ρ[1. .Μ] [1..N]其中,N為功耗曲線上的采樣點數,M為功耗曲線條數,每條曲線上有N個采樣點, 一共記錄M組功耗曲線;②由于;^'][127:0]= /^切|7]|127:0押火[127:0]油于卩1£011 已知,利用 Plain [j] 做劃分,得到曲線集合 PO {P [i] [1. · N] I Plain [i] [j] = 0}和 PO {P [i] [1. · N] | Plain [i] [j] =0},其中,X表示加密過程的中間狀態,i表示使用的明文-功耗分組,j表示攻擊的bit ;③計算ADj_P,獲得bitj對應的DPA曲線以及峰值的極性,ADj_P表示用Plain 劃分得到的ADj ;④重復步驟③、④,得到全部128bit峰值極性,記做pOle_AttaCk[127:0]其中, pole_Attack表示攻擊DPA極性數組。所述通過原始DPA極性數組與攻擊DPA極性數組進行異或,具體為直接用poleΘ pole—Attack,獲得密鑰。一種利用DPA曲線極性進行密鑰提取的系統,包括第一模塊,用于測試要攻擊的芯片,獲得AES在該芯片上的具體實現情況下,每個 bit產生DPA峰值的極性,獲得攻擊位置每個bit的DPA峰值極性;第二模塊,用于利用明文,對加密過程的中間狀態進行劃分,得出峰值極性;第三模塊,用于通過原始DPA極性數組與攻擊DPA極性數組進行異或,從而得到密 鑰。所述第一模塊進一步包括以下子模塊①密鑰寄存器清零或已知密鑰值K的子模塊;②生成隨機明文,利用芯片加密,記錄功耗曲線組Ρ[1. .Μ] [1..N]的子模塊其中,N為功耗曲線上的采樣點數,M為功耗曲線條數,每條曲線上有N個采樣點, 一共記錄M組功耗曲線;③由于1[/][127:0]二/^加[/][127:0] 夂[127:0];已知 Plain[i]和 K[127:0]相當于已知X[i] [127:0],利用X[i] [j]做劃分,得到曲線集合Pl {P[i] [1. · N] |X[i] [j] = 1}和 P0{P[i][l..N]|X[i][j] =0}的子模塊,其中,X表示加密過程的中間狀態,i表示使用的 明文-功耗分組,j表示攻擊的bit ;④計算ADj,獲得bitj對應的DPA曲線以及峰值的極性的子模塊,其中ADj表示 第j bitDPA攻擊所得到的DPA峰值;⑤重復子模塊③、④,得到全部128bit峰值極性,記做原始DPA極性數組 pole[127:0]的子模塊。所述第二模塊進一步包括以下子模塊①生成隨機明文,利用芯片加密,記錄功耗曲線組Ρ[1. .Μ] [1..N]的子模塊其中,N為功耗曲線上的采樣點數,M為功耗曲線條數,每條曲線上有N個采樣點, 一共記錄M組功耗曲線;②由于Χ[/][127:0] = Ρ/α/φ·][127:0]十耵 127:0];由于 Plain 已知,利用 Plain [j] 做劃分,得到曲線集合 PO {P [i] [1. · N] I Plain [i] [j] = 0}和 PO {P [i] [1. · N] | Plain [i] [j] =0}的子模塊,其中,X表示加密過程的中間狀態,i表示使用的明文-功耗分組,j表示攻 擊的bit③計算Δ D j_P,獲得bit j對應的DPA曲線以及峰值的極性的子模塊,ADj_P表示 用Plain劃分得到的ADj.④重復子模塊③、④,得到全部128bit峰值極性,記做pOle_AttaCk[127:0]的子 模塊其中,pole_Attack表示攻擊DPA極性數組。所述第三模塊中通過原始DPA極性數組與攻擊DPA極性數組進行異或,具體為直接用pole十pole — Attack ,獲得密鑰。本發明具有以下優點和積極效果1)通過改良原始DPA攻擊方法,利用DPA攻擊中的峰值的極性,在提取原始DPA極 性的基礎上,完成極性DPA極性的提取,并將兩者進行異或操作,從而進行密鑰提取;2)當加密算法第一步為異或時,密鑰提取時,對密碼算法細節可以未知,實現細節 可以未知;3)與原始DPA攻擊相比,本發明提出的方法在時間復雜度上有明顯的改善。
圖1是本發明提出的利用DPA曲線極性進行密鑰提取的方法的流程圖。
具體實施例方式下面以具體實施例結合附圖對本發明作進一步說明在Paul Kocher提出的原始DPA攻擊中,首先在每次加密過程中使用數字示波器 記錄下加密芯片的功耗曲線,并記下N個采樣點,更換明文,一共記錄M組功耗曲線,再選擇 一個D函數對采集的樣本進行劃分,根據劃分,計算差分功耗曲線,得到AD,找到能是AD 最大的Ki值,即可獲得正確的密鑰。而在這里使用的極性DPA攻擊,先完成原始DPA攻擊, 將得到的明文Plain與猜測的密鑰K進行異或,再利用明文Plain進行劃分得到AD_P,即可得到bit」對應的0 々曲線以及峰值的極性,從而獲得密鑰。據此,具體的步驟如下參見圖1所示的利用DPA曲線極性進行密鑰提取的方法的流程圖,包括三個步 驟1、原始極性采集階段測試要攻擊的芯片,獲得AES在該芯片上的具體實現情況 下,每個bit產生DPA峰值的極性,獲得攻擊位置每個bit的DPA峰值極性。具體來說,采 用以以下步驟實現①密鑰寄存器清零或已知密鑰值K,必要時可通過燒毀密鑰寄存器的方式清零;②生成隨機明文,利用芯片加密,記錄功耗曲線組Ρ[1. .Μ] [1..N]每條曲線上有N個采樣點,一共記錄M組功耗曲線③由于1[/][127:0] = /^坷0[127:0] 火[127:0];已知?1£011[土]和 K[127:0]相當
于已知X[i] [127:0],利用X[i] [j]做劃分,得到曲線集合Pl {P[i] [1. · N] |X[i] [j] = 1}和 PO {P [i] [1..N] |X[i] [j] = 0}(這里i表示使用的明文_功耗分組,j表示攻擊的bit)④計算ADj,即可得bitj對應的DPA曲線以及峰值的極性⑤重復③④,得到全部128bit峰值極性,記做pole [127:0]2、攻擊極性采集階段利用明文,對加密過程的中間狀態進 行劃分,得出峰值極性。該階段密鑰寄存器里的密鑰是要攻擊的密鑰, XW[127 0] = ΡΙαιη[ ][\2 0]十即27 0]。由于已知明文,可以利用Plain代替X劃分,得出峰值極性。具體來說,采用以下 步驟實現①生成隨機明文,利用芯片加密,記錄功耗曲線組Ρ[1. .Μ] [1..N]每條曲線上有N個采樣點,一共記錄M組功耗曲線②由于Z[/][127:0]= Pto>z[/][127:0]十火[127:0];由于 Plain 已知,利用 Plain [j] 做劃分,得到曲線集合 PO {P [i] [1. · N] I Plain [i] [j] = 0}和 PO {P [i] [1. · N] | Plain [i] [j] =0}(這里i表示使用的明文_功耗分組,j表示攻擊的bit)③計算ADj_P (用Plain劃分得到的ADj),即可得bitj對應的DPA曲線以及峰 值的極性④重復③④,得到全部128bit峰值極性,記做pole_AttaCk[127:0]3、獲取密鑰階段通過原始DPA極性數組與攻擊DPA極性數組進行異或,從而得到 密鑰。直接用十;JtocA即可得密鑰。下表為上述過程使用的符號說明 P[1..M][1..N]功耗曲線組i:功耗曲線編號(指針/e[l,M])j:受攻擊bit編號(指針j e [1,128])Dj(Ki5Ci)選擇函數D的值,用于做劃分ADj 第j bit DPA攻擊所得到的DPA峰 值P(0 t時刻電路的瞬間功耗m電路中邏輯門的個數k邏輯門指針,ADj_P用Plain劃分得到的pole·.原始DPA極性數組pole — Attack 攻擊DPA極性數組,艮P 用明文劃分的DPA極性數組下面對本發明提出的方法與原始DPA攻擊對比 上述實例用來解釋說明本發明,而不是對本發明進行限制,在本發明的精神和權 利要求的保護范圍內,對本發明做出任何的修改和改變,都落入本發明的保護范圍。
權利要求
一種利用DPA曲線極性進行密鑰提取的方法,其特征在于,包括以下步驟測試要攻擊的芯片,獲得AES在該芯片上的具體實現情況下,每個bit產生DPA峰值的極性,獲得攻擊位置每個bit的DPA峰值極性;利用明文,對加密過程的中間狀態進行劃分,得出峰值極性;通過原始DPA極性數組與攻擊DPA極性數組進行異或,從而得到密鑰。
2.根據權利要求1所述的利用DPA曲線極性進行密鑰提取的方法,其特征在于所述測試要攻擊的芯片,獲得AES在該芯片上的具體實現情況下,每個bit產生DPA峰 值的極性,獲得攻擊位置每個bit的DPA峰值極性的步驟進一步包括以下子步驟①密鑰寄存器清零或已知密鑰值K;②生成隨機明文,利用芯片加密,記錄功耗曲線組Ρ[1.. Μ] [1. . N]其中,N為功耗曲線上的采樣點數,M為功耗曲線條數,每條曲線上有N個采樣點,一共 記錄M組功耗曲線;③由于鄧氾27 0] Plain\i}[\21 0]十尺[127 0];已知 Plain [i]和 K [127 0]相當于 已知 X[i][127:0],利用 X[i][j]做劃分,得到曲線集合 Pl{P[i][l..N]|X[i][j] = 1}和 P0{P[i][l..N] |X[i][j] =0},其中,X表示加密過程的中間狀態,i表示使用的明文-功耗 分組,j表示攻擊的bit,Plain為明文,K表示密鑰。④計算ADj,獲得bitj對應的DPA曲線以及峰值的極性,其中ADj表示第jbit DPA 攻擊所得到的DPA峰值;⑤重復步驟③、④,得到全部128bit峰值極性,記做原始DPA極性數組Po1 e [ 127 0]。
3.根據權利要求1所述的利用DPA曲線極性進行密鑰提取的方法,其特征在于所述利用明文,對加密過程的中間狀態進行劃分,得出峰值極性的步驟進一步包括以 下子步驟①生成隨機明文,利用芯片加密,記錄功耗曲線組ρ[1.. Μ] [1. . N]其中,N為功耗曲線上的采樣點數,M為功耗曲線條數,每條曲線上有N個采樣點,一共 記錄M組功耗曲線;②由于0] = Plain[i}[\21 0]Θ 尤[127 0]油于 Plain 已知,利用 Plain [j]做劃 分,得到曲線集合 P0{P[i][l..N] Plain[i][j] = 0}和 PO {P [i] [1. . N] Plain[i] [j]= 0},其中,X表示加密過程的中間狀態,i表示使用的明文_功耗分組,j表示攻擊的bit ;③計算ΔDj_P,獲得bit」對應的0 々曲線以及峰值的極性,Δ Dj_P表示用Plain劃分 得到的ADj ;④重復步驟③、④,得到全部128bit峰值極性,記做pOle_Attack[127:0]其中,p0le_Attack表示攻擊DPA極性數組。
4.根據權利要求2或3所述的利用DPA曲線極性進行密鑰提取的方法,其特 征在于所述通過原始DPA極性數組與攻擊DPA極性數組進行異或,具體為直接用 pole 十 pole 一 Attack,獲得密鑰。
5.一種利用DPA曲線極性進行密鑰提取的系統,其特征在于,包括第一模塊,用于測試要攻擊的芯片,獲得AES在該芯片上的具體實現情況下,每個bit 產生DPA峰值的極性,獲得攻擊位置每個bit的DPA峰值極性;第二模塊,用于利用明文,對加密過程的中間狀態進行劃分,得出峰值極性;第三模塊,用于通過原始DPA極性數組與攻擊DPA極性數組進行異或,從而得到密鑰。
6.根據權利要求5所述的利用DPA曲線極性進行密鑰提取的系統,其特征在于,所述第 一模塊進一步包括以下子模塊①密鑰寄存器清零或已知密鑰值K的子模塊;②生成隨機明文,利用芯片加密,記錄功耗曲線組Ρ[1..Μ] [1..N]的子模塊其中,N為功耗曲線上的采樣點數,M為功耗曲線條數,每條曲線上有N個采樣點,一共 記錄M組功耗曲線;③由于耶][127 0] = Plain\i}[\21 0]十尤[127 0];已知 Plain [i]和 K [127 0]相當于 已知 X[i][127:0],利用 X[i][j]做劃分,得到曲線集合 Pl{P[i][l..N]|X[i][j] = 1}和 P0{P[i][l..N]|X[i][j] =0}的子模塊,其中,X表示加密過程的中間狀態,i表示使用的 明文-功耗分組,j表示攻擊的bit ;④計算ADj,獲得bitj對應的DPA曲線以及峰值的極性的子模塊,其中ADj表示第j bitDPA攻擊所得到的DPA峰值;⑤重復子模塊③、④,得到全部128bit峰值極性,記做原始DPA極性數組pole[127:0] 的子模塊。
7.根據權利要求5所述的利用DPA曲線極性進行密鑰提取的系統,其特征在于,所述第 二模塊進一步包括以下子模塊①生成隨機明文,利用芯片加密,記錄功耗曲線組Ρ[1..Μ] [1..N]的子模塊其中,N為功耗曲線上的采樣點數,M為功耗曲線條數,每條曲線上有N個采樣點,一共 記錄M組功耗曲線;②由于jr[/]〖127 0] = ΡΙα η[ ][ΙΠ 0]十夂[127 0];由于 Plain 已知,利用 Plain [j]做劃 分,得到曲線集合 PO {P [i] [1..N] Plain [i] [j] = 0}和 P0{P[i] [1. . N] Plain [i] [j] = 0} 的子模塊,其中,X表示加密過程的中間狀態,i表示使用的明文-功耗分組,j表示攻擊的 bit ;③計算ADj_P,獲得bitj對應的DPA曲線以及峰值的極性的子模塊,ADj_P表示用 Plain劃分得到的ADj ;④重復子模塊③、④,得到全部128bit峰值極性,記做pOle_Attack[127:0]的子模塊 其中,p0le_Attack表示攻擊DPA極性數組。
8.根據權利要求6或7所述的利用DPA曲線極性進行密鑰提取的系統,其特征在于 所述第三模塊中通過原始DPA極性數組與攻擊DPA極性數組進行異或,具體為直接用pole Θ pole — Attack ,獲得密鑰。
全文摘要
本發明涉及信息安全技術領域,尤其涉及一種利用DPA曲線極性進行密鑰提取的方法。本發明包括測試要攻擊的芯片,獲得AES在該芯片上的具體實現情況下,每個bit產生DPA峰值的極性,獲得攻擊位置每個bit的DPA峰值極性,利用明文,對加密過程的中間狀態進行劃分,得出峰值極性,通過原始DPA極性數組與攻擊DPA極性數組進行異或,從而得到密鑰。本發明通過改良原始DPA攻擊方法,利用DPA攻擊中的峰值的極性,在提取原始DPA極性的基礎上,完成極性DPA極性的提取,并將兩者進行異或操作,從而進行密鑰提取,與原始DPA攻擊相比,本發明提出的方法在時間復雜度上有明顯的改善。
文檔編號G06F21/00GK101908111SQ20101023990
公開日2010年12月8日 申請日期2010年7月26日 優先權日2010年7月26日
發明者伍前紅, 唐明, 張煥國, 張馭宇, 李渡, 沈菲, 王國熹, 竇青, 高思 申請人:武漢大學