1.一种压缩密钥猜测空间的侧信道攻击方法,其特征在于,包括如下步骤:步骤1:随机产生大量明文并使用加密算法进行加密运算,通过汉明重量模型模拟算法加密过程产生的功耗,并构建仿真功耗曲线集;
步骤2:采用对单个字节密钥的高4bit进行分析的方法,使用辅助攻击点进行差分功耗攻击,得到4bit密钥差分值分布情况;
步骤3:对所有猜测密钥的差分值分布情况进行分析,筛选出两个与真实密钥最相关的值;
步骤4:围绕着步骤3所筛选出的两个值,构造密钥候选区间;
步骤5:基于密钥候选区间,使用主要攻击点进行攻击找出正确密钥。
2.根据权利要求1所述的一种压缩密钥猜测空间的侧信道攻击方法,其特征在于:步骤
1包括如下步骤:
步骤1.1:选取所攻击的加密算法的轮密钥加、字节替换两个攻击点,在轮密钥加处的密钥区分度低,选用该点来构造密钥候选区间,在字节替换这一点密钥区分度高,选用该点用于恢复最终密钥,因此划分轮密钥加为辅助攻击点,字节替换为主要攻击点;
步骤1.2:随机生成大量16字节的明文mi,在密钥固定为k的情况下进行第一轮加密,对分别经过2个不同功耗点后产生的所有加密中间值进行保存;
步骤1.3:重复步骤1.2,直至在2个功耗点处分别获得N个中间值后,进行步骤1.4;
步骤1.4:通过功耗模型将两个攻击点处的中间值映射为能量消耗值,并保存于不同集合T1,T2,其中T1对应在轮密钥加这一攻击点的能量消耗值,T2对应在字节替换这一功耗点的能量消耗值,即:
其中HW()为汉明重量计算算法,SubByte()为AES算法字节替换运算。
3.根据权利要求2所述的一种压缩密钥猜测空间的侧信道攻击方法,其特征在于:所述的步骤1.4中,所述的功耗模型为汉明重量模型,对于被处理的加密数据,计算当前字节的汉明重量,是将字节转为比特后判断其含有1的个数,1的个数即为汉明重量。
4.根据权利要求3所述的一种压缩密钥猜测空间的侧信道攻击方法,其特征在于:步骤
2中使用辅助攻击点进行攻击包括如下步骤:步骤2.1:将16字节密钥分成16个部分来分别进行攻击,设当前攻击的密钥为第b个,b初始值为1,对第b个字节密钥的前4个bit位进行穷举,密钥猜测空间为2^4,猜测范围为0‑
15;
步骤2.2:将所有猜测的高4bit密钥kn与所有明文mi的高4bit进行轮密钥加运算,得到经过轮密钥加操作后的4bit中间值Vi,n;
步骤2.3:将得到的中间值Vi,n,按照以下区分函数D进行分类,分成S0,S1两类并记录其对应消耗的能量值;
S0={T1|D=0},S1={T1|D=1}步骤2.4:对集合S0,S1中所有数据取算术平均值,并将集合S0得到的算术平均值与集合S1得到的算术平均值作差,取最终结果的绝对值作为差分值△t;将猜测密钥的值作为横坐标,猜测密钥对应的差分值作为纵坐标,绘制折线图,由此得到代表该字节高4bit差分值分布情况的折线图;
其中|S0|表示集合S0所含的元素个数,|S1|表示集合S1所含的元素个数。
5.根据权利要求4所述的一种压缩密钥猜测空间的侧信道攻击方法,其特征在于:步骤
3中使用筛选候选密钥包括如下步骤:步骤3.1:根据得到的差分折线图,找出图中按差分值排序最大的4个点用于密钥候选分析,其中每个点横坐标对应的是猜测密钥值,纵坐标对应的是差分值;
步骤3.2:在选取的4个点中,根据以下规则来选取其中2个点作为和密钥信息最相关的两个点:
1)每两个点的坐标信息相加,如果只有1组数据横坐标的值相加为15,则选取该组数据;
2)每两个点的坐标信息相加,如果有2组数据横坐标的值相加为15,则取纵坐标相加较大的一组数据;
3)每两个点的坐标信息相加,如果没有数据横坐标的值相加为15,则选取纵坐标最大的两点。
6.根据权利要求5所述的一种压缩密钥猜测空间的侧信道攻击方法,其特征在于:步骤
4中构造密钥候选区间包括如下步骤:步骤4.1:以步骤3取出的两个点为p1和p2,构造密钥候选区间C1为p1x×16~p1x×16+15构造密钥候选区间C2为p2x×16~p2x×16+15,其中p1x为p1的横坐标值,p2x为p2横坐标值,区间C1,C2如下:
C1:{x|16p1x≤x≤16p1x+15}C2:{x|16p2x≤x≤16p2x+15}。
7.根据权利要求1所述的一种压缩密钥猜测空间的侧信道攻击方法,其特征在于:步骤
5中基于密钥候选区间,使用主要攻击点进行攻击。包括如下步骤:步骤5.1:基于密钥候选区间选择单字节密钥kn′作为猜测对象,将猜测的单字节密钥kn′与所有明文第b个字节mi进行加密,得到经过轮密钥加、字节替换操作后的中间值V′i,n′:步骤5.2:在字节替换这一功耗点,以中间值V′i,n′的第一个bit位是0还是1为依据,将原始的功耗曲线基于函数D′区分为S′0,S′1两类并记录其明文mi对应消耗的能量值,区分函数D′如下:
S′0={T2|D′=0},S′1={T2|D′=1}步骤5.3:对S′0,S′1中所有数据取算术平均值,并将集合S′0得到的算术平均值与集合S′1得到的算术平均值作差,取最终结果的绝对值作为差分值Δt′;将猜测密钥的值作为横坐标,猜测密钥对应的差分值作为纵坐标,绘制折线图,由此得到差分折线图,找出差分折线图纵坐标最大的点,该点所对应的横坐标即为密钥的正确值;
其中|S′0|表示集合S′0所含的元素个数,|S′1|表示集合S′1所含的元素个数;
步骤5.4:重复步骤2.1至5.3,对密钥其他字节进行分析;每完成一个字节密钥的分析,令b=b+1,直至b=16为止;将每次得到的1字节大小密钥按顺序拼凑成完整的16字节密钥。