CN104717054A - 一种密码实现侧信道安全性快速检测方法 - Google Patents

一种密码实现侧信道安全性快速检测方法 Download PDF

Info

Publication number
CN104717054A
CN104717054A CN201510075958.1A CN201510075958A CN104717054A CN 104717054 A CN104717054 A CN 104717054A CN 201510075958 A CN201510075958 A CN 201510075958A CN 104717054 A CN104717054 A CN 104717054A
Authority
CN
China
Prior art keywords
value
actual leakage
leakage value
key
actual
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.)
Granted
Application number
CN201510075958.1A
Other languages
English (en)
Other versions
CN104717054B (zh
Inventor
周永彬
郑超
郑英显
高旭
李大为
罗鹏
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
COMMERCIAL PASSWORDS INSPECTION CENTER OF STATE CRYPTOGRAPHY ADMINISTRATION
Institute of Information Engineering of CAS
Original Assignee
COMMERCIAL PASSWORDS INSPECTION CENTER OF STATE CRYPTOGRAPHY ADMINISTRATION
Institute of Information Engineering of CAS
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by COMMERCIAL PASSWORDS INSPECTION CENTER OF STATE CRYPTOGRAPHY ADMINISTRATION, Institute of Information Engineering of CAS filed Critical COMMERCIAL PASSWORDS INSPECTION CENTER OF STATE CRYPTOGRAPHY ADMINISTRATION
Priority to CN201510075958.1A priority Critical patent/CN104717054B/zh
Publication of CN104717054A publication Critical patent/CN104717054A/zh
Application granted granted Critical
Publication of CN104717054B publication Critical patent/CN104717054B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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 and Cumulativepartition based Kolmogorov-Smirnov Analysis)针对密码实现的安全性快速检测方法,安全监测用人员可应用该方法对密码设备中的密码实现方案实施侧信道分析,根据是否可以检测到私密信息,判断该设备的安全性,属于信息安全技术领域,主要用于分析信息安全设备相关的密码方案设计与实现。
背景技术
传统的密码分析中,分析人员仅利用密码算法的输入、输出信息恢复密码算法所使用的密钥。恢复密钥的过程中分析人员通常借助密码算法的数学性质。然而,随着电子半导体技术的发展,密码算法在实际应用中往往以硬件逻辑或者软件程序的形式存在于密码设备中,密码设备在运行过程中存在不同形式关于敏感中间值的泄露信息,如能量分析中,通过测量能量迹作为泄露信息,电磁分析中以电磁辐射作为泄露信息。
在侧信道分析中,分析人员可以通过差分能量分析、相关系数能量分析等方法,利用待检测设备中的某个敏感中间值和设备泄露信息之间的线性依赖关系恢复密码所用密钥。然而随着密码设备生产工艺的精细化,密码设备泄露信息与中间值之间的线性关系提取减弱,二者之间更多的出现了一种非线性关系。KSA(Kolmogorov-Smirnov Analysis)是一种基于K-S检测(Kolmogorov-Smirnov Test),通过分析密码设备泄露信息的分布特性,利用密码设备泄露信息与中间值之间的线性关系与非线性关系,恢复出密码设备所使用的密钥的侧信道分析方法。
在统计学领域,K-S检测是一种用于检测两个分布相似性大小的非参数检测方法,既可以用于检测一个经验分布于一个参考分布之间的相似性,也可以检测两个经验分布之间的相似性。令Fn(x)表示样本容量为n时随机变量X的经验累积分布函数,则Fn(x)具有如下形式:
F n ( x ) = 1 n Σ i = 1 n I A i ≤ 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的一种改进,当其作为区分器时,计算公式如下:
V key = k = log 2 ( Π m ∈ M P value ( D KS ( P [ L = l | M ≤ m ] | | P [ L = l ] ) ) ) ,     公式(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中取出对应的实际泄露值组成向量 L ^ = [ l ^ 1 , l ^ 2 , · · · , l ^ j , · · · , l ^ size ( Gt ) ] , L ^ [ j ] = l ^ j = L [ Gt [ j ] ] , j=1,2,…,size(Gt)。
4.2.3计算L两分布K-S检测值,取对数后累加入Score[k]中, Score [ k ] = s k = s k + log ( D KS [ L , L ^ ] ) .
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个元素, SL = sort ( L ^ , L , [ inf , - inf ] ) , N = len ( L ) + len ( L ^ ) + 2 - 1 = len ( SL ) - 1 .
2计算中,分别落入SL相邻两元素所组成区间的元素个数,记为 C ^ , C ^ = [ c ^ 1 , c ^ 2 , &CenterDot; &CenterDot; &CenterDot; , c ^ N ] , c ^ n = len ( { l x | l x &Element; L ^ , l n &le; l x < l n + 1 } ) , l n , l n + 1 &Element; SL , n = 1,2 , &CenterDot; &CenterDot; &CenterDot; , N .
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]), c s ^ n = sum ( [ c ^ 1 , c ^ 2 , &CenterDot; &CenterDot; &CenterDot; , c ^ n ] ) , n=1,2,…,N。
5根据和CmlSum求出和L的经验累积分布函数和CDF, C D ^ F = [ p r ^ 1 , p r ^ 2 , &CenterDot; &CenterDot; &CenterDot; , p r ^ N ] , CDF=[pr1,pr2,···,prN], p r ^ n = c s ^ n / sum ( C ^ ) , prn=csn/sum(C),n=1,2,…,N。
6计算两分布最大差异对应的P-value,并返回, Pvalue ( Max ( abs ( { p r n - p r ^ n | n = 1,2 , &CenterDot; &CenterDot; &CenterDot; N } ) ) ) .
上述“原始方法”中,K-S检测的主要步骤为:查找假设泄露值为某特定值的实际泄露值,合并全部实际泄露值和查找所得实际泄露值并排序,根据排序结果计算实际泄露值的区间分布,根据区间分布获得经验累积分布函数,最后获得MPC-KSA的分析结果。
分析原始方法可知,使用m个实际泄露值和有g个取值的泄露模型,对分组密码算法的一个密钥单位(n位2进制数)分析,耗时主要集中在进行2n·g次查找假设泄露值为某特定值的实际泄露值,以及2n·g次合并全部实际泄露值和查找所得实际泄露值并排序。
发明内容
针对现有技术中存在的技术问题,本发明的目的在于提供一种使用MPC-KSA区分器的密码实现安全性快速检测方法。本发明从减少循环次数、降低计算复杂度的角度出发,给出了一种利用K-S检测过程中两组实际泄露值自身特性快速实现的算法。
由MPC-KSA计算公式 V key = k = log 2 ( &Pi; m &Element; M P value ( D KS ( P [ L = l | M &le; m ] | | P [ L = l ] ) ) ) , 可以发现,在每次所作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: Ct [ Dic [ L ^ [ a ] ] ] = Ct [ Dic [ L [ a ] ^ ] ] + 1 . 就是的第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: Ct [ Dic [ L ^ [ n ] ] ] = Ct [ Dic [ L [ n ] ^ ] ] + 1 , L ^ [ n ] = L [ Gt [ n ] ] n = 1,2 , . . . , size ( Gt )
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 (7)

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值与该待测加密算法的密钥字节数值比较,判断该设定设备上实现该待测加密算法是否安全。
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所述的方法,其特征在于,所述实际泄露值为设定设备上实现待测加密算法产生的能量泄露值或者电磁辐射值。
7.如权利要求1所述的方法,其特征在于,所述密钥猜测值k的取值范围为0~255。
CN201510075958.1A 2015-02-12 2015-02-12 一种密码实现侧信道安全性快速检测方法 Active CN104717054B (zh)

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 true CN104717054A (zh) 2015-06-17
CN104717054B 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)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107104784A (zh) * 2016-02-22 2017-08-29 埃沙尔公司 测试电路对二阶或更高阶侧信道分析的抵抗力的方法
WO2018001123A1 (en) * 2016-06-27 2018-01-04 Huawei Technologies Co., Ltd. Sample size estimator
CN108604981A (zh) * 2015-12-11 2018-09-28 巴黎矿业电信学院 用于估计秘密值的方法和设备
CN109417466A (zh) * 2016-04-01 2019-03-01 巴黎矿业电信学院 机密密钥估算方法与装置
CN110334530A (zh) * 2019-06-26 2019-10-15 上海派拉软件股份有限公司 数据库数值型字段的加密方法
CN110661611A (zh) * 2019-09-24 2020-01-07 北京银联金卡科技有限公司 一种面向侧信道密码能量泄漏信号的检测方法及系统

Citations (4)

* Cited by examiner, † Cited by third party
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算法进行二阶侧信道能量分析方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
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算法进行二阶侧信道能量分析方法

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108604981A (zh) * 2015-12-11 2018-09-28 巴黎矿业电信学院 用于估计秘密值的方法和设备
CN108604981B (zh) * 2015-12-11 2021-12-10 巴黎矿业电信学院 用于估计秘密值的方法和设备
CN107104784A (zh) * 2016-02-22 2017-08-29 埃沙尔公司 测试电路对二阶或更高阶侧信道分析的抵抗力的方法
CN109417466A (zh) * 2016-04-01 2019-03-01 巴黎矿业电信学院 机密密钥估算方法与装置
WO2018001123A1 (en) * 2016-06-27 2018-01-04 Huawei Technologies Co., Ltd. Sample size estimator
US10296628B2 (en) 2016-06-27 2019-05-21 Futurewei Technologies, Inc Sample size estimator
CN110334530A (zh) * 2019-06-26 2019-10-15 上海派拉软件股份有限公司 数据库数值型字段的加密方法
CN110334530B (zh) * 2019-06-26 2020-09-22 上海派拉软件股份有限公司 数据库数值型字段的加密方法
CN110661611A (zh) * 2019-09-24 2020-01-07 北京银联金卡科技有限公司 一种面向侧信道密码能量泄漏信号的检测方法及系统
CN110661611B (zh) * 2019-09-24 2023-04-18 北京银联金卡科技有限公司 一种面向侧信道密码能量泄漏信号的检测方法及系统

Also Published As

Publication number Publication date
CN104717054B (zh) 2017-11-14

Similar Documents

Publication Publication Date Title
CN104717054A (zh) 一种密码实现侧信道安全性快速检测方法
CN103457719B (zh) 一种对sm3密码算法hmac模式的侧信道能量分析方法
CN103679008B (zh) 一种高效的安全芯片功耗攻击测试方法
Gorbenko et al. The set of parameterized k-covers problem
CN103199983B (zh) 侧信道能量分析中的n阶局域能量模型及其应用
CN103532973A (zh) 面向des算法电路的差分功耗攻击测试方法
Sharma et al. A novel derivative free algorithm with seventh order convergence for solving systems of nonlinear equations
CN103530474A (zh) 面向aes算法电路的差分功耗攻击测试方法
CN102124470A (zh) 用于检测差分逻辑保护的加密电路中异常的方法、以及实现所述方法的电路
CN104636319A (zh) 一种文本去重方法和装置
CN103905182A (zh) 基于动态改变中间数据存储位置的抗攻击方法及电路实现
CN103744918A (zh) 基于垂直领域的微博搜索排序方法及系统
CN104469374A (zh) 图像压缩方法
CN105045715A (zh) 基于编程模式和模式匹配的漏洞聚类方法
CN105703896A (zh) 一种检测has-160算法抵御差分故障攻击的方法
CN104967509A (zh) 一种轮输出为算术掩码的zuc序列密码算法掩码防护方法
CN106156615A (zh) 基于类可分性判距的旁路区分器方法及系统
Tong et al. Euler’s method for fractional differential equations
CN103888245A (zh) 一种智能卡的s盒随机化方法和系统
CN104811295A (zh) 一种对具备掩码防护的祖冲之密码算法进行侧信道能量分析方法
CN103186696B (zh) 面向高维非线性软测量模型的辅助变量约简方法
Hu et al. Software implementation of aes-128: Side channel attacks based on power traces decomposition
CN111008673A (zh) 配电网信息物理系统中恶性数据链采集提取方法
CN103268329A (zh) 等离子显示屏制造过程数据挖掘系统
Nandakumar et al. An analogue of Pillai's theorem for continued fraction normality and an application to subsequences

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