CN104717054B - 一种密码实现侧信道安全性快速检测方法 - Google Patents
一种密码实现侧信道安全性快速检测方法 Download PDFInfo
- Publication number
- CN104717054B CN104717054B CN201510075958.1A CN201510075958A CN104717054B CN 104717054 B CN104717054 B CN 104717054B CN 201510075958 A CN201510075958 A CN 201510075958A CN 104717054 B CN104717054 B CN 104717054B
- Authority
- CN
- China
- Prior art keywords
- value
- key
- actual leakage
- values
- leakage value
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 49
- 239000013598 vector Substances 0.000 claims abstract description 29
- 238000001514 detection method Methods 0.000 claims abstract description 23
- 238000005265 energy consumption Methods 0.000 claims abstract 5
- 238000005315 distribution function Methods 0.000 claims description 36
- 230000001186 cumulative effect Effects 0.000 claims description 33
- 230000005670 electromagnetic radiation Effects 0.000 claims description 3
- 238000000605 extraction Methods 0.000 abstract description 2
- 238000009826 distribution Methods 0.000 description 19
- 238000004458 analytical method Methods 0.000 description 14
- 238000004364 calculation method Methods 0.000 description 9
- 238000012163 sequencing technique Methods 0.000 description 7
- 230000001174 ascending effect Effects 0.000 description 4
- 238000001276 Kolmogorov–Smirnov test Methods 0.000 description 3
- 238000005457 optimization Methods 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000003556 assay Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000008092 positive effect Effects 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 239000004576 sand Substances 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000009897 systematic effect Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
Landscapes
- Complex Calculations (AREA)
- Storage Device Security (AREA)
Abstract
本发明公开了一种密码实现侧信道安全性快速检测方法。本方法为:1)计算实际泄露值向量L的函数CDF,以及下标字典Dic;2)对每一明文,计算其与每一密钥猜测值k对应的假设能耗p,根据p和k值将该明文的序号归入到一下标分组G中第k+1行第p+1列中;3)对于每一密钥猜测值k,从G中提取集合假设能耗非空的实际泄露值能量迹下标分组元素,然后将对应实际泄露值组成向量,根据Dic计算对应的函数CDFt;然后根据CDF与CDFt的最大差异对应的假设机率确定k的得分;4)将得分最小值对应的k值与加密算法的密钥字节数值比较,判断该设备上实现该加密算法是否安全。本发明可快速检测设备上实现所测加密算法的安全性。
Description
技术领域
本发明提出了一种侧信道区分器MPC-KSA(Multiplication of P-values andCumulative partition based Kolmogorov-Smirnov Analysis)针对密码实现的安全性快速检测方法,安全监测用人员可应用该方法对密码设备中的密码实现方案实施侧信道分析,根据是否可以检测到私密信息,判断该设备的安全性,属于信息安全技术领域,主要用于分析信息安全设备相关的密码方案设计与实现。
背景技术
传统的密码分析中,分析人员仅利用密码算法的输入、输出信息恢复密码算法所使用的密钥。恢复密钥的过程中分析人员通常借助密码算法的数学性质。然而,随着电子半导体技术的发展,密码算法在实际应用中往往以硬件逻辑或者软件程序的形式存在于密码设备中,密码设备在运行过程中存在不同形式关于敏感中间值的泄露信息,如能量分析中,通过测量能量迹作为泄露信息,电磁分析中以电磁辐射作为泄露信息。
在侧信道分析中,分析人员可以通过差分能量分析、相关系数能量分析等方法,利用待检测设备中的某个敏感中间值和设备泄露信息之间的线性依赖关系恢复密码所用密钥。然而随着密码设备生产工艺的精细化,密码设备泄露信息与中间值之间的线性关系提取减弱,二者之间更多的出现了一种非线性关系。KSA(Kolmogorov-Smirnov Analysis)是一种基于K-S检测(Kolmogorov-Smirnov Test),通过分析密码设备泄露信息的分布特性,利用密码设备泄露信息与中间值之间的线性关系与非线性关系,恢复出密码设备所使用的密钥的侧信道分析方法。
在统计学领域,K-S检测是一种用于检测两个分布相似性大小的非参数检测方法,既可以用于检测一个经验分布于一个参考分布之间的相似性,也可以检测两个经验分布之间的相似性。令Fn(x)表示样本容量为n时随机变量X的经验累积分布函数,则Fn(x)具有如下形式:
公式(1)
其中,为指示函数。当Ai≤x时,指示函数取值为1,否则为0。对于经验累积分布函数Fn(x)与参考分布函数F(x)进行K-S检测的公式如下:
Dn=supx|Fn(x)-F(x)|, 公式(2)
其中,supx为经验累积分布函数Fn(x)与参考分布函数F(x)的最大距离。一般认为,Dn的值越小,经验累积分布函数Fn(x)与参考分布函数F(x)相似性越大;反之,经验累积分布函数Fn(x)与参考分布函数F(x)的相似性越小。同样,对于两个经验累积分布函数F1,m(X)和F2,n(X)进行K-S检测的公式如下:
Dm,n=supx|F1,m(x)-F2,n(x)|, 公式(3)
其中,m与n分别表示计算两个经验累积分布函数所使用的样本数量。一般认为,Dm,n的值越小,两个经验累积分布函数F1,m(x),F2,n(x)越相似;反之,两个经验累积分布函数F1,m(x),F2,n(x)差异越大。
KSA中,分析人员获得一组由同一密钥加密不同的自行选定明文的泄露信息,称之为实际泄露值,该泄露值可以是能量值,也可以是电磁辐射值,于是分析人员可以根据猜测密钥计算出中间值,然后分析人员可以将中间值根据模型映射为假设泄露值,根据假设泄露值对实际泄露值进行分组,分析人员将中间值所对应假设泄露值相同的实际泄露值分在同一组中。对实际泄露值分组后,分析人员需要使用每个分组内的实际泄露值计算出一个经验累积分布函数。同时,分析人员需要使用全部的实际泄露值计算出一个经验累积分布函数。分析人员认为,当密钥猜测正确时,由各个分组内实际泄露值所得经验累积分布函数与全部的实际泄露值所计算经验累积分布函数相似性较低。由此,对每一个密钥猜测所作KSA如下公式:
Vk=key=Em∈M(DKS(Pr[L=l|M=m]||Pr[L=l])) 公式(4)
其中,L表示密码设备实际泄露值的随机变量,l表示分析人员具体测得的实际泄露值,M表示假设泄露值的随机变量,m表示通过根据假设密钥k所计算出的中间值根据泄露模型映射为假设泄露值。用P表示分析人员使用实际泄露值数据计算出来的经验累积分布函数,以DKS表示对两分布所做的K-S检测,E表示某个随机变量的数学期望,Vkey=k表示当假设密钥为k时,所作KSA得到的检测值。由此,Vkey=k最小的假设密钥为正确密钥。
由此,可以利用KSA作为对假设密钥猜测是否正确的区分器,Vkey=k是对假设密钥k的区分器输出值。
MPC-KSA是对KSA的一种改进,当其作为区分器时,计算公式如下:
公式(5)
分析人员首先计算由通过M≤m选取的部分实际泄露值计算得到经验累积分布函数与由全部实际泄露值计算得到经验累积分布函数之间的最大距离。其次,分析人员取假设机率(Pvalue),将m取不同值时计算得到的Pvalue值相乘,并为保证不出现数值障碍对其求对数,得到最终的区分器值输出值。MPC-KSA中,分析人员认为使得区分器输出值最小的密钥猜测即为密码设备所用密钥。
通常针对分组密码算法,MPC-KSA利用运算过程实际泄露值中某一个特定时间的点的实际泄露值,分析密钥某一选定字节,实现可采用如下方法(本发明称之为“原始方法”):
描述符号:[a,b,…,n]表示程序语言中的数组,如:L=[l1,l2,…,ln],L是一个数组,L[i]表示其中第i个元素,即L[1]为第一个元素l1,L[n]为最后一个元素ln。
输入:通过某一特定密码设备使用同一密钥加密m个不同明文,采集加密过程获得的某一个特定时间的点的实际泄露值向量L=[l1,l2,…,li,…,lm],i=1,2,…,m,L是一个一维数组,每个数值是加密不同明文的实际泄露值;每个实际泄露值所对应加密的明文集合{Msgi|i=1,2,···,m},即对Msgi加密时产生的泄露值为li;加密过程计算中间值的算法A(Msg,k),Msg表示明文信息,k表示加密密钥的一个字节;中间值映射为假设泄露值的函数P(x),假设该函数有g个不同的取值{0,1,···,g-1}。
输出:所分析字节密钥值keyByte
流程:
1加载实际泄露值向量L=[l1,l2,…,li,…,lm],i=1,2,…,m和明文信息{Msgi|i=1,2,···,m}。
2设置Score=[s1,s2,···,sj,···,s256],Score[j]=sj=0,j=1,2,···,256。
3对每个明文Msgi,i=1,2,···,m及密钥猜测值kj,根据A(Msg,k)和P(x)计算假设泄露值AsmL
kj=j-1,i=1,2,…,m;j=1,2,…,256。
4对于每一个k(从1到256)重复步骤4.1到4.2。
4.1设置实际泄露值下标集合Gt为空,Gt={}。
4.2对每一个假设泄露值函数P(x)的取值p=1,2,···,g步骤4.2.1到4.2.3。
4.2.1遍历AsmL[k]=[ak+1,1,ak+1,2,···,ak+1,m]查找其中取值为i的实际泄露值下标记为
Gi,并将其归入Gt中,Gi={idx|ak+1,idx=pi},Gt=Gi∪Gt,如果Gi为空跳至3.2。
4.2.2取出Gt中的实际泄露值下标,根据该下标从L中取出对应的实际泄露值组成向量j=1,2,…,size(Gt)。
4.2.3计算L两分布K-S检测值,取对数后累加入Score[k]中,
5找出Score的最小值,其对应密钥为推测密钥keyByte,返回keyByte,keyByte=Kidx-1,Score[Kidx]=min([s1,s2,···,s256]),j=1,2,···,256。如果推测出的密钥字节数值keyByte和密码设备中密钥字节数值相吻合,则证明改设备是不安全的。
计算两分布的K-S检测值步骤如下(参照matlab实现):
1将L和[inf,-inf]连接成一个向量后不去重作升序排序,记为SL,包含N+1个元素,
2计算中,分别落入SL相邻两元素所组成区间的元素个数,记为
3计算L中,分别落入SL相邻两元素所组成区间的元素个数,记为C,C=[c1,c2,…,cN],cn=len({lx|lx∈L,ln≤lx<ln+1}),ln,ln+1∈SL,n=1,2,…,N。
4对和C分别积累求和得到和CmlSum,CmlSum=[cs1,cs2,···,csN],csn=sum([c1,c2,···,cn]),n=1,2,…,N。
5根据和CmlSum求出和L的经验累积分布函数和CDF,CDF=[pr1,pr2,···,prN],prn=csn/sum(C),n=1,2,…,N。
6计算两分布最大差异对应的P-value,并返回,
上述“原始方法”中,K-S检测的主要步骤为:查找假设泄露值为某特定值的实际泄露值,合并全部实际泄露值和查找所得实际泄露值并排序,根据排序结果计算实际泄露值的区间分布,根据区间分布获得经验累积分布函数,最后获得MPC-KSA的分析结果。
分析原始方法可知,使用m个实际泄露值和有g个取值的泄露模型,对分组密码算法的一个密钥单位(n位2进制数)分析,耗时主要集中在进行2n·g次查找假设泄露值为某特定值的实际泄露值,以及2n·g次合并全部实际泄露值和查找所得实际泄露值并排序。
发明内容
针对现有技术中存在的技术问题,本发明的目的在于提供一种使用MPC-KSA区分器的密码实现安全性快速检测方法。本发明从减少循环次数、降低计算复杂度的角度出发,给出了一种利用K-S检测过程中两组实际泄露值自身特性快速实现的算法。
由MPC-KSA计算公式可以发现,在每次所作K-S检测时,均是由全部实际泄露值和选取的部分实际泄露值作对比,那么可以只计算一次全部实际泄露值的分布,每次全部实际泄露值与选取的部分实际泄露值作对比时,直接使用即可。
更重要的是,所作K-S检测的两组实际泄露值,存在包含关系,即全部的实际泄露值包含假设泄露值小于m的实际泄露值。于是原始方法中在每次合并排序后的全部的实际泄露值和查找所得部分实际泄露值,实际上都可以根据全部实际泄露值的排序得到,且耗时远小于排序耗时。而得到全部实际泄露值和查找所得部分实际泄露值合并后的排序序列,是为了确定计算区间分布所用区间。因为全部实际泄露值包含查找所得部分实际泄露值,用全部实际泄露值排序后所得区间与全部实际泄露值和查找所得部分实际泄露值合并后的所得区间是功能上等价的。于是,在步骤1加载实际泄露值后即对其进行排序,增加一步用于计算全部实际泄露值L的分布的操作。同时需要对K-S检测原始实现做适当的修改,以适应直接可以应用L的分布进行计算。
根据K-S检测原始实现的描述,所计算的处于某一区间的值个数,实际上是计算每个取值不同的数值的个数,而所获得经验累积分布函数,即是将此计数值按照由小到大的顺序将此计数值累计相加之后除以总数获得的。于是,MPC-KSA中所使用的K-S检测方法,可以拆解为两部分操作,一是对每个不同的实际泄露值取值的计数操作,二是利用该计数值的按照从小到大累加后获得经验累积分布函数,并找出分布最大差异。
基于MPC-KSA中所作K-S检测的两组实际泄露值,存在包含关系这一性质,可以针对MPC-KSA的K-S检测使用如下方式实现,主要有两个阶段:一个是预备阶段,另一个是分析阶段。预备阶段计算出全部的实际泄露值向量L的经验累积分布函数在每个泄露数值处的取值,以及记录这些泄露数值的排序位置;分析阶段即可直接利用准备好的排序位置和全部实际泄露值向量L的经验累积分布函数,直接进行K-S检测。
输入:全部实际泄露值构成的向量L和选取的多组部分实际泄露值构成的向量
输出:K-S检测的P-value值。
预备阶段流程
1获得升序序列Ordered_L=sort(L)。
2计算L中的不同取值的计数个数,并根据排序结果得到经验累积分布函数CDF。
其中第二步计数过程和计算CDF使用一个通过Hash函数实现的字典,其可根据给定的关键字以近似于O(1)的时间复杂度找到对应的数值结果,步骤2由以下步骤具体实现:
2.1设置字典Dic,初始下标为idx=0,键Lk=Ordered_L[1],计数值为C=1,
2.2对i=2,3,…,m,如果Lk=Ordered_L[i]则C=C+1;否则在Dic中加入键为Lk,值为idx的一个键值对,同时CDF[idx]=C/m,并更新Lk=Ordered_L[i],idx=idx+1;完成对每个i的遍历后,在Dic中加入键为Lk,值为idx的一个键值对Dic.Add(Lk,idx)。
至此获得了经验累积分布函数CDF,以及为后续进行K-S检测所用的下标字典Dic。
分析阶段流程
1对于每一个要与L进行K-S检测的并假设长度为Num,即 a=1,2,…,Num:计算中的不同取值的出现次数,并根据排序结果得到经验累积分布函数CDFt,具体如下:
1.1令Ct=[0,0,···,0]。
1.2对a=1,2,···,Num: 就是的第i个值。
1.3令CDFt[1]=Ct[1]/Num对每个ci=2,3,···,size(CDF)执行CDFt[ci]=CDFt[ci-1]+Ct[ci]/Num。
2计算两分布最大差异对应的P-value,则最终的K-S检测结果为Pvalue(|max(CDF[ci]-CDFt[ci])|),ci=1,···,size(CDF)。
同时,原始方法中4.2.1的遍历查找操作,可以利用另外一种实现方法。原始方法中得出假设泄露值之后,使用二维数组AsmL记录假设泄露值,再根据记录的值,查找在某个密钥假设下的得到某个假设泄露值的实际泄露值有哪些。实际上可以不记录数值,而是直接根据假设泄露值对实际泄露值分组,从而获得实际泄露值下标分组,即先建立起一个二维数组,每个数组的元素是一个集合,表示在某个密钥假设下的得到某个假设泄露值的实际泄露值,当一个明文根据某个密钥假设计算得到一个假设泄露值时,直接将其对应的实际泄露值下标归入该密钥和该假设泄露值对应的那个集合,这样可以省去4.2.1的查找操作,同时不增加时间空间复杂度。
基于上述计算原理,本发明提出了利用所作K-S检测的两组泄露信息存在包含关系这一重要性质,本发明实现快速MPC-KSA的方法如下:
输入:通过某一特定密码设备使用同一密钥加密m个不同明文,采集加密过程获得的某一个特定时间的点的实际泄露值向量L=[l1,l2,…,li,…,lm],i=1,2,…,m,L是一个一维数组,每个数值是加密不同明文的实际泄露值;每个实际泄露值所对应加密的明文集合{Msgi|i=1,2,···,m},即对Msgi加密时产生的泄露值为li;加密过程计算中间值的算法A(Msg,k),Msg表示明文信息,k表示加密密钥的一个字节;中间值映射为假设泄露值的函数P(x),假设该函数有g个不同的取值{0,1,···,g-1}。
输出:所分析字节密钥值keyByte
流程:
1加载实际泄露值向量L=[l1,l2,…,li,…,lm],i=1,2,…,m和明文信息{Msgi|i=1,2,···,m}。
2对实际泄露值L进行排序,获得升序序列Ordered_L=sort(L)。
3计算L中的不同取值的计数个数,并根据Ordered_L得到经验累积分布函数CDF以及下标字典Dic。
4设置二维数组G[256][g],每个数组元素都是一个集合。
5按照实际泄露值向量中泄露值排列的顺序,对应到每个明文Msgi,i=1,2,···,m及密钥猜测值kj(取值遍历0到255),根据计算中间值的算法A(Msg,k)和假设泄露函数P(x)(取值为0到g-1),计算假设泄露值为P(A(Msgi,kj)),并将i归入G中第kj+1行第P(A(Msgi,kj))+1列中的集合即G[kj+1][P(A(Msgi,kj))+1]中,于是可得到泄露信息下标分组G。
6设置Score=[s1,s2,···,sj,···,s256],sj=0,j=1,2,···,256。
7对于每一个k(从0到255)重复步骤7.1到7.2。
7.1设置实际泄露值下标集合Gt为空。
7.2对每一个假设泄露函数P(x)的取值p=0,1,···,g-1,重复步骤7.2.1到7.2.4。
7.2.1取实际泄露值下标分组G[k+1][p+1],如果不为空,则将其归入Gt中,否则返回至7.2。
7.2.2设置计数向量Ct=[0,0,···,0],根据每个Gt中的下标值从L中取出实际泄露值组成向量根据Dic查找到每个实际泄露值对应在计数向量Ct对应的下标位置,对该下标位置的Ct加1:
7.2.3根据计数向量Ct,通过累计求和并除以总数,计算经验累积分布函数CDFt。
7.2.4计算两分布最大差异对应的P-value,取对数后累加入Score[k]中,sk+1=sk+1+log(Pvalue(|max(CDF[ic]-CDFt[ic])|)),ic=1,2,···,size(CDF)。
8找出Score的最小值,其对应密钥为推测密钥keyByte,返回keyByte。如果推测出的密钥字节数值keyByte和密码设备中密钥字节数值相吻合,则证明该设备上实现所测试加密算法是不安全的。
与现有技术相比,本发明的积极效果为:
本发明对密码实现使用MPC-KSA的分析速度具有显著提高;由表1可以看出,本发明的分析速度的提升效果随着使用实际泄露值个数的增加而愈加明显。
附图说明
图1MPC-KSA快速实现方法流程图;
图2两种方法对不同规模的泄露信息计算所耗时间对比图。
具体实施方式
下面结合附图对本发明进行进一步详细描述。本发明的MPC-KSA快速实现方法流程如图1所示。
输入:通过某一特定密码设备使用同一密钥加密m个不同明文,采集加密过程获得的某一个特定时间的点的实际泄露值向量L=[l1,l2,…,li,…,lm],i=1,2,…,m,L是一个一维数组,每个数值是加密不同明文的实际泄露值;每个实际泄露值所对应加密的明文集合{Msgi|i=1,2,···,m},即对Msgi加密时产生的泄露值为li;加密过程计算中间值的算法A(Msg,k),Msg表示明文信息,k表示加密密钥的一个字节;中间值映射为假设泄露值的函数P(x),假设该函数有g个不同的取值{0,1,···,g-1}。
输出:所分析字节密钥值keyByte
流程:
1加载实际泄露值向量L=[l1,l2,…,li,…,lm],i=1,2,…,m和明文信息{Msgi|i=1,2,···,m}。
并对泄露L进行排序,获得升序序列Ordered_L=sort(L)。
2定义字典Dic,设置初始下标为idx=0,键Lk=Ordered_L[1],CDF为一个向量记录L的经验累积分布。
3对i=2,3,···,m:如果Lk!=Ordered_L[i]则在Dic中加入键为Lk,值为idx的一个键值对Dic.Add(Lk,idx),同时CDF[idx]=i/m,并更新Lk=Ordered_L[i],idx=idx+1;完成对每个i的遍历后,在Dic中加入键为Lk,值为idx的一个键值对Dic.Add(Lk,idx);至此获得了全部实际泄露值的经验累积分布函数CDF,以及为后续进行K-S检测所用的下标字典Dic。
4设置二维数组G[256][g],每个数组元素都是一个集合。
5对每个明文Msgi,i=1,2,···,m及每个密钥猜测值kj(取值遍历0到255),根据计算中间值的算法A(Msg,k)和假设泄露函数P(x)(取值为0到g-1),计算假设泄露值为P(A(Msgi,kj)),后将i归入G中第kj+1行第P(A(Msgi,kj))+1列中的集合即G[kj+1][P(A(Msgi,kj))+1]中,于是可得到实际泄露值下标分组G。
G[k+1][x+1]=Gk,x={i|P(A(Msgi,k))=x,i∈(1,2,…,m}},k=0,1,…,255。
6设置Score=[s1,s2,···,sj,···,s256],sj=0,j=1,2,···,256。
7对于每一个k(从0到255)重复步骤7.1到7.2。
7.1设置实际泄露值下标集合Gt为空,Gt={}。
7.2对每一个假设泄露函数P(x)的取值p=0,1,···,g-1,重复步骤7.2.1到7.2.4。
7.2.1取实际泄露值下标分组G[k+1][p+1],如果不为空,则将其归入Gt中,Gt=G[k+1][p+1]∪Gt,len=size(Gt);否则返回至7.2。
7.2.2Ct=[0,0,···,0],对n=1,2,···,len:Ct[Dic[L[Gt[n]]]]=Ct[Dic[L[Gt[n]]]]+1。
7.2.3令CDFt[1]=Ct[1]/len对ic=2,3,···,size(CDF)执行CDFt[ic]=CDFt[ic-1]+Ct[ic]/len。
7.2.4计算两分布最大差异对应的P-value,取对数后累加入Score[k]中,sk+1=sk+1+log(Pvalue(|max(CDF[ic]-CDFt[ic])|)),ic=1,2,···,size(CDF)。
8找出Score的最小值,其对应密钥为推测密钥keyByte,返回keyByte,keyByte=Kidx-1,Score[Kidx]=min([s1,s2,···,sj,···,s256]),j=1,2,···,256。如果推测出的密钥字节数值keyByte和密码设备中密钥字节数值相吻合,则证明该设备上实现所测试加密算法是不安全的。
为了说明新的优化方法计算效率的提高情况,现在MacBook Air(MC965CH/A)机器(基本配置为:CPU为Intel Core i5 2557M 1.7GHz,RAM为4.0GB)上使用DPAContest(www.dpacontest.org)V2阶段的能量泄露信息,选取不同条数能量迹针对AES-RSM实现进行MPC-KSA获取其中的16字节密钥,实验结果如表1所示。
表1、两种方法消耗时间对比情况(单位:秒)
由表1的对比可以看出,“优化方法”比“原始方法”的计算效率有了大幅的提升。并随着使用的能量迹增多,加速比增加,并保持在25左右。由此可以看出,优化方法利用了MPC-KSA过程中所作K-S检测的两组泄露信息存在包含关系这一性质,所做出的性能提升是非常明显的。
Claims (6)
1.一种密码实现侧信道安全性快速检测方法,其步骤为:
1)加载实际泄露值向量L,并计算该实际泄露值向量L的经验累积分布函数CDF;在设定设备上运行待测加密算法对每一明文加密时产生该实际泄露值向量L中的一个实际泄露值;其中,所述实际泄露值为设定设备上实现待测加密算法产生的能量泄露值或者电磁辐射值;
2)按照步骤1)所述实际泄露值的排列顺序对每一明文Msg进行计算,即计算当前明文Msg与每一密钥猜测值k对应的假设能耗p,然后根据p和k值将该明文的序号归入到一实际泄露值下标分组G中第k+1行第p+1列中;
3)对于每一密钥猜测值k,从该实际泄露值下标分组G中提取假设能耗非空的实际泄露值下标分组元素G[k+1][p+1],然后根据所提取元素从该实际泄露值向量L中提取对应实际泄露值组成实际泄露值向量计算该实际泄露值向量对应的经验累积分布函数CDFt;然后根据经验累积分布函数CDF与CDFt的最大差异对应的假设机率P-value确定当前密钥猜测值k的得分Score[k+1];
4)将步骤3)中所有得分的最小值对应的k值与该待测加密算法的密钥字节数值比较,找出Score的最小值,其对应密钥为推测密钥keyByte,返回keyByte,如果推测出的密钥字节数值keyByte和密码设备中密钥字节数值相吻合,则证明该设备是不安全的。
2.如权利要求1所述的方法,其特征在于,计算所述经验累积分布函数CDF的方法为:
21)首先对实际泄露值向量L进行排序,Ordered_L[i]为排序后第i个实际泄露值的序号;
22)设置一字典Dic,初始下标为idx=0,键Lk=Ordered_L[1],计数值为C=1;
23)对i=2,3,…,size(L):如果Lk=Ordered_L[i],则C=C+1;否则在字典Dic中加入键为Lk,值为idx的一个键值对,同时CDF[idx]=C/m,并更新Lk=Ordered_L[i],idx=idx+1;完成对每个i的遍历后,在Dic中加入键为Lk,值为idx的一个键值对Dic.Add(Lk,idx)。
3.如权利要求2所述的方法,其特征在于,计算所述经验累积分布函数CDFt的方法为:
31)初始化一数组Ct=[0,0,…,0]),
32)对a=1,2,…,Num:计算
33)令CDFt[1]=Ct[1]/Num;对于ci=2,3,…,size(CDF),执行CDFt[ci]=CDFt[ci-1]+Ct[ci]/Num。
4.如权利要求1或2或3所述的方法,其特征在于,得到所述实际泄露值向量的方法为:
41)设置实际泄露值下标集合Gt并初始化为空;
42)对所述实际泄露值下标分组G中每一所述假设能耗p的取值,执行步骤43);
43)取实际泄露值下标分组G[k+1][p+1],如果不为空,则将其归入Gt中,如果G[k+1][p+1]为空,则返回步骤42);
44)取出Gt中对应的实际泄露值组成实际泄露值向量
5.如权利要求1或2或3所述的方法,其特征在于,所述假设能耗p的计算方法为:p=P(A(Msg,k)),和P(x)为泄露值函数,A(Msg,k)为加密过程计算中间值的算法。
6.如权利要求1所述的方法,其特征在于,所述密钥猜测值k的取值范围为0~255。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510075958.1A CN104717054B (zh) | 2015-02-12 | 2015-02-12 | 一种密码实现侧信道安全性快速检测方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510075958.1A CN104717054B (zh) | 2015-02-12 | 2015-02-12 | 一种密码实现侧信道安全性快速检测方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104717054A CN104717054A (zh) | 2015-06-17 |
CN104717054B true CN104717054B (zh) | 2017-11-14 |
Family
ID=53416052
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510075958.1A Active CN104717054B (zh) | 2015-02-12 | 2015-02-12 | 一种密码实现侧信道安全性快速检测方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104717054B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP3179668B1 (en) * | 2015-12-11 | 2019-05-22 | Institut Mines-Télécom | Methods and devices for estimating secret values |
EP3208788B1 (en) * | 2016-02-22 | 2020-06-03 | Eshard | Method of protecting a circuit against a side-channel analysis |
EP3226460A1 (en) * | 2016-04-01 | 2017-10-04 | Institut Mines-Telecom | Secret key estimation methods and devices |
US10296628B2 (en) | 2016-06-27 | 2019-05-21 | Futurewei Technologies, Inc | Sample size estimator |
CN110334530B (zh) * | 2019-06-26 | 2020-09-22 | 上海派拉软件股份有限公司 | 数据库数值型字段的加密方法 |
CN110661611B (zh) * | 2019-09-24 | 2023-04-18 | 北京银联金卡科技有限公司 | 一种面向侧信道密码能量泄漏信号的检测方法及系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2008026621A1 (fr) * | 2006-09-01 | 2008-03-06 | Sony Corporation | Dispositif de codage, procédé de codage et programme informatique |
CN103199983A (zh) * | 2013-01-31 | 2013-07-10 | 国家密码管理局商用密码检测中心 | 侧信道能量分析中的n阶局域能量模型及其应用 |
CN103227717A (zh) * | 2013-01-25 | 2013-07-31 | 国家密码管理局商用密码检测中心 | 选择轮密钥异或输入进行sm4密码算法侧信道能量分析的应用 |
CN103647637A (zh) * | 2013-11-19 | 2014-03-19 | 国家密码管理局商用密码检测中心 | 一种对简单掩码的sm4算法进行二阶侧信道能量分析方法 |
-
2015
- 2015-02-12 CN CN201510075958.1A patent/CN104717054B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2008026621A1 (fr) * | 2006-09-01 | 2008-03-06 | Sony Corporation | Dispositif de codage, procédé de codage et programme informatique |
CN103227717A (zh) * | 2013-01-25 | 2013-07-31 | 国家密码管理局商用密码检测中心 | 选择轮密钥异或输入进行sm4密码算法侧信道能量分析的应用 |
CN103199983A (zh) * | 2013-01-31 | 2013-07-10 | 国家密码管理局商用密码检测中心 | 侧信道能量分析中的n阶局域能量模型及其应用 |
CN103647637A (zh) * | 2013-11-19 | 2014-03-19 | 国家密码管理局商用密码检测中心 | 一种对简单掩码的sm4算法进行二阶侧信道能量分析方法 |
Also Published As
Publication number | Publication date |
---|---|
CN104717054A (zh) | 2015-06-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104717054B (zh) | 一种密码实现侧信道安全性快速检测方法 | |
CN109359439B (zh) | 软件检测方法、装置、设备及存储介质 | |
CN107104784A (zh) | 测试电路对二阶或更高阶侧信道分析的抵抗力的方法 | |
CN110460425B (zh) | 一种面向侧信道密码能量泄漏信号的攻击方法及系统 | |
CN103560877B (zh) | 攻击密钥的方法及装置 | |
CN104836666A (zh) | 一种针对sm2解密算法的能量分析攻击的方法 | |
CN105389486B (zh) | 一种基于鼠标行为的认证方法 | |
CN108199832B (zh) | 一种cloc认证加密算法抵御差分故障攻击的检测方法 | |
CN107368592B (zh) | 一种用于网络安全报告的文本特征模型建模方法及装置 | |
CN104639310B (zh) | 一种检测sha‑1算法抵御差分故障攻击的方法 | |
Batina et al. | Poster: Recovering the input of neural networks via single shot side-channel attacks | |
CN106874762A (zh) | 基于api依赖关系图的安卓恶意代码检测方法 | |
CN104811295A (zh) | 一种对具备掩码防护的祖冲之密码算法进行侧信道能量分析方法 | |
Sýs et al. | The Efficient Randomness Testing using Boolean Functions. | |
US11995191B2 (en) | Side-channel attack on HMAC-SHA-2 and associated testing | |
CN105703896A (zh) | 一种检测has-160算法抵御差分故障攻击的方法 | |
CN106156615B (zh) | 基于类可分性判距的旁路区分器方法及系统 | |
CN104811297A (zh) | 针对RSA之M-ary实现模乘余数输入侧信道攻击 | |
Ahmed et al. | Design of Lightweight Cryptography based Deep Learning Model for Side Channel Attacks | |
CN106936561A (zh) | 一种侧信道攻击防护能力评估方法和系统 | |
CN113438067B (zh) | 一种压缩密钥猜测空间的侧信道攻击方法 | |
CN111211886B (zh) | 针对sm2解密算法的能量分析检测方法 | |
Liu et al. | A pca based svm hardware trojan detection approach | |
CN106375082B (zh) | 一种伪随机数产生方法 | |
Zhao et al. | An Optimization for Differential Power Analysis Based on Time Series Verification |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |