一种利用dpa曲线极性进行密钥提取的方法及系统的制作方法

文档序号:6606782阅读:164来源:国知局
专利名称:一种利用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日
发明者伍前红, 唐明, 张焕国, 张驭宇, 李渡, 沈菲, 王国熹, 窦青, 高思 申请人:武汉大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1