具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
有关本发明的前述及其他技术内容、特点及功效,在以下配合参考图式的较佳实施例的详细说明中将可清楚呈现。通过具体实施方式的说明,当可对本发明为达成预定目的所采取的技术手段及功效得以更加深入且具体的了解,然而所附图式仅是提供参考与说明之用,并非用来对本发明加以限制。
本发明所揭示的是一种针对密码算法的混合去噪功耗分析方法,图1为本发明优选的一种实施例针对密码算法的混合去噪功耗分析方法的总体流程图,如图1所示,所述功耗分析方法的步骤包括:
步骤1)、选择密码算法明文与密钥的函数例如S盒或者轮密钥加的输出值作为中间值,向运行密码算法的加密设备输入明文,采集加密时的功耗信号数据;
其中,所述中间值会用于构建功耗矩阵,应当为明文与密钥的函数值或者密文与密钥的函数值,所以本实施例可以选取像S盒或者轮密钥加的输出这些类似的密码算法的中间输出作为中间值;当然在本发明进行具体实施时,可以不限于这两种密码算法,本领域技术人员可以根据实际需要选择合适的密码算法的中间输出作为实际中间。
向运行有密码算法的加密设备输入明文后,加密设备将会对这个输入明文加密,此时将会有一些能量、电磁辐射等的侧信道泄露。因此本发明可以利用示波器或者ChipWhisperer功耗分析平台的功耗捕获板来获取加密算法在进行加密运算时运行密码算法的设备泄露的功耗信号。
下面我们来详述一下ChipWhisperer功耗分析平台的测量原理,CPU执行不同指令的时候会有不同的功耗特征,这是因为不同的指令触发的半导体数量不同,有的指令还会访问内存、缓存等等,有的复杂的指令需要的时钟周期(Clock Cycles)还会比别的指令要长,各种各样的因素会导致不同的指令执行的时候会产生不同的功耗特征。
ChipWhisperer可以通过功耗测量接口,检测目标芯片的VCC供电线路上的电压变化,电压减少得越多,说明当前CPU的功耗越大。通过高精度的采样功耗变化,我们可以画出CPU的功耗变化图,从而寻找可以泄露CPU运行信息的相关信号特征,然后加以利用。
步骤2)、对所获得的功耗信号数据使用低通滤波,经验模态分解以及小波阈值的混合去噪方法对功耗信号数据进行预处理,得到降噪之后的功耗信号数据;
传统的功耗分析方法一般是使用小波变换去噪、卡尔曼滤波等单一的去噪方法进行处理,但是这些单一的功耗信号去噪方法对与噪声的抑制效果对功耗分析的准确率提升有限;因此本发明在此提供了包括低通滤波,经验模态分解以及小波阈值的混合去噪方法对功耗信号数据进行预处理,减少了噪声影响,能够提高功耗攻击效率,通过功耗分析的方式进行密码设备的安全性评测可以有效地帮助密码设备的生产者以及使用者了解密码设备的安全性以及安全漏洞的情况,能帮助使用者规避被攻击的风险,帮助生产者改善密码设备的安全性。
如图2所示,在所述步骤2)对所获得的功耗信号数据使用低通滤波,经验模态分解以及小波阈值的混合去噪方法对功耗信号数据进行预处理,得到降噪之后的功耗信号数据的过程包括:
步骤2-1、在运行密码算法的设备的运算芯片GND引脚处串联一个电阻,使用示波器或者ChipWhisperer捕获板采集到泄露的功耗信号曲线,得到原始信号函数g(t);
步骤2-2、对原始信号函数进行低通滤波,过滤掉信号中的高频噪声,得到滤波后的新的信号函数s(t),低通滤波可以采用I型切比雪夫滤波方法,其幅度与频率的关系可用公式表达为:
其中,n为切比雪夫低通滤波器的阶数,ε是通带波纹的大小,是小于1的正数,ω0是截止频率,Tn表示切比雪夫多项式。
切比雪夫多项式的定义为:
其中cosh为双曲余弦函数,定义为:
步骤2-3、找出功耗信号函数s(t)上的全部局部极大值和局部极小值,使用三次样条插值函数求出上下包络线u+(t)和u-(t),取上下包络线的均值即平均值函数a1(t)为:
步骤2-4、将功耗信号函数s(t)减去平均值函数a1(t);求第一个信号分量h1(t),其表达式为:
h1(t)=s(t)-a1(t)
步骤2-5、判断所述信号分量函数是否满足本征模态函数(IMF)的条件,确定所述信号分量函数为IMF分量;
判断信号分量函数h1(t)是否满足本征模态函数(IMF)的条件,如满足则h1(t)即为所需要的第一个IMF分量,记为c1(t);
如不满足则让s(t)=h1(t)并重复执行步骤2-1到2-3i次直至获得的信号分量函数hi(t)满足本征模态函数(IMF)的条件,此时的第一个IMF分量仍然记为c1(t);
其中,判断是否满足本征模态函数(IMF)的条件为:
(1)函数在整个时间范围内,局部极值点和过零点的数目必须相等;
(2)在任意时刻点,局部最大值的上包络线和下包络线平均必须为零。
步骤2-6、将第一个满足IMF条件的信号分量从原始函数总分离出来,其表达公式为:
m1(t)=s(t)-h1(t)
并令原始信号函数s(t)等于m1(t)作为新的原始信号函数重复步骤2-3至步骤2-6直至得到的本征模态函数不可再分。
步骤2-7、对含有噪声的高频IMF分量函数进行小波软阈值去噪,提取出有用的特征信息,其表达式为:
其中,h'j,k(t)表示经过阈值去噪后的小波系数,j为当前小波分解的层数,j的取值为1到n,n表示小波分解的层数;k是系数的次序,k的取值为1和2。
将提取出的特征信息与含有有用信息的低频IMF分量以及残差进行重构,其表达式为:
x(t)=h1(t)+h2(t)+…+hn(t)+R
其中,hi(t)表示第i个处理过的IMF分量,i=1,2,3,…,n;R表示残差。
步骤3)、使用预处理之后的功耗信号数据构建实际功耗矩阵,并计算假设中间值,得到假设的功耗矩阵;
如图3所示,所述步骤3)包含的具体步骤如下:
步骤3-1:根据采集的功耗曲线构建实际功耗矩阵,每条功耗数据为实际功耗矩阵中的一行,其中根据迭代轮次r,每轮选取一个采样点,则每条数据有r个采样点,按时间将矩阵中每条功耗数据的r个采样点对齐,就得到了n×r的实际功耗矩阵X;
步骤3-2:利用S盒的输出结果,计算假设中间值,其计算方法如下:
[Vi,j]n×m=SBOX(Pi,kj)i=1,2,…,n;j=1,2,…,m
其中,[Vi,j]n×m表示大小为n×m的假设中间值矩阵,Vi,j表示第i行第j列的假设中间值,该假设中间值可以为一个二进制编码序列;k为假设的密钥且k=(k1,k2,…,km),m为假设密钥的位数,P为输入的明文且P=(P1,P2,…Pn),n为明文数量,SBOX(Pi,kj)是S盒函数;
步骤3-3:根据假设中间值,构建假设功耗矩阵,为了使功耗分析的效率和准确都提高,本方法提出了基于传统方法中汉明重量模型进行改进的转换距离模型,由于实际情况下,CMOS逻辑电路中0转换为1和1转换为0产生的功耗不同,因此本方法提出了更准确的功耗模型,设置了功耗差别系数β,其表达为:
β=(Power0→1-Power1→0)/Power0→1
其中,Power0→1表示电路中0转换为1的功耗,Power1→0表示电路中1转换为0的功耗。
而转换距离功耗模型表示为:
[Hi,i]n×m=βHW(Vi,j(0→1))+(1-β)HW(Vi,j(1→0))
其中,Vi,j(0→1)是假设中间值0转换为1的功耗,Vi,j(1→0)是假设中间值1转换为0的功耗,HW()是汉明重量模型计算函数。
举个例子,假设V3,2表示一个字节的8位二进制数,表示为10111001,那么在为了计算出假设中间值V3,2的假设功耗值H3,2时,就需要对这8位二进制数中的跳变位进行翻转,假设跳变位为第2位和第4位,那么就需要采用汉明重量模型计算函数计算出第2位和第4位的功耗转换距离,并按照功耗差别系数计算出这8位二进制数所对应的假设功耗值;其中,跳变位是由于计算假设中间值时,S盒函数对输入的明文进行翻转跳变。
步骤4)、计算多组实际功耗矩阵与假设功耗矩阵之间的相关系数,并分析得到正确的密钥;
如图4所示,所述步骤4)包括的步骤如下:
步骤4-1:计算实际功耗矩阵如假设功耗矩阵的相关系数,计算时选用皮尔逊相关系数进行计算,其计算相关系数矩阵的公式如下:
其中,[R
i,j]
m×p表示大小为m×p的系数矩阵,R
i,j表示第i行第j列的系数;H
z,i表示假设功耗矩阵H的第z行第i列的假设功耗值;i=1,2,…,m;j=1,2,…,p;
是假设功耗矩阵H的列向量的算术平均,
为实际功耗矩阵X的列向量的算数平均;X
z,i表示实际功耗矩阵H的第z行第i列的实际功耗值;m为可能的密钥的数量,p表示每条功耗曲线数据的采样点数。
步骤4-2:分析相关系数,得到猜测密钥。
其中,对于相关系数矩阵,每一行对应于一个假设密钥,首先找出每一行相关系数的最大值,得到一个字节密钥对应的m个最大的相关系数,选取m个最大相关系数值中最大的那一个对应的密钥值作为最佳密钥候选值,也即为本字节的猜测密钥,其他字节也采用相同的方法。
图5是本发明实施例中一种针对密码算法的混合去噪功耗分析终端的结构示意图,本发明的功耗分析方法可以但不限于应用于如图5所示的终端,所述终端例如可以但不限于计算机、服务器、平板电脑、个人数字助理(英文:Personal Digital Assistant,缩写:PDA)、移动互联网设备(英文:Mobile Internet Device,缩写:MID)等可进行数据处理和数据存储的设备,本发明对此不作任何限制。
如图5所示,所述终端包括一个或多个(图中仅示出一个)处理器510和一个或多个(图中仅示出一个)存储器530,操作系统531和可执行程序532;以及输入输出接口540和内存储器550;这些组件通过一条或多条通讯总线/信号线相互通讯。
具体的,如图5所示,所述终端包括通过系统总线520连接的处理器510、存储器530、内存储器550及输入输出接口540。其中,所述存储器530存储有操作系统531以及可执行程序532,该可执行程序532用于实现本发明实施例中提供的适用于本发明的针对密码算法的混合去噪功耗分析方法。该处理器510用于提供计算和控制能力,支撑整个计算机设备的运行。计算机设备中的内存储器550为存储器530中的操作系统531及可执行程序532的运行提供环境,输入输出接口540用于与外界进行网络或者其他设备通信。
本领域技术人员可以理解,图5中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的终端的限定,具体地终端可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
该处理器510可以是中央处理器(central processing unit,CPU),网络处理器(network processor,NP)或者CPU和NP的组合。
该处理器510还可以进一步包括硬件芯片。上述硬件芯片可以是专用集成电路(application-specific integrated circuit,ASIC),可编程逻辑器件(programmablelogic device,PLD)或其组合。上述PLD可以是复杂可编程逻辑器件(complexprogrammable logic device,CPLD),现场可编程逻辑门阵列(field-programmable gatearray,FPGA),通用阵列逻辑(generic array logic,GAL)或其任意组合。
该存储器530还可以包括易失性存储器(volatile memory),例如随机存取存储器(random-access memory,RAM);存储器也可以包括非易失性存储器(non-volatilememory),例如快闪存储器(flash memory),硬盘(hard disk drive,HDD)或固态硬盘(solid-state drive,SSD);存储器还可以包括上述种类的存储器的组合。
可选地,该存储器还用于存储程序指令。该处理器可以调用该存储器存储的程序指令,实现如本发明第一实施例、第二实施例所示的方法。
该总线可以是外设部件互连标准(peripheral component interconnect,简称PCI)总线或扩展工业标准结构(extended industry standard architecture,简称EISA)总线等。该总线可以分为地址总线、数据总线、控制总线等。为便于表示,图5中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
可以理解的是,图5所示的终端结构仅为示意,所述分析终端还可以包括比图5所示更多或者更少的组件,或者具有与如图5所示不同的配置,图5中所示的各组件可以采用硬件、软件或者其组合实现。
在上述实施例的基础上,本实施例中各个模块具体包括:
存储器530,用于存储可执行程序532的代码数据;
处理器510,用于调用所述存储器530中的所述可执行程序532,执行的步骤包括:
选择密码算法的S盒或者轮密钥加的输出值作为中间值,向运行密码算法的加密设备输入明文,采集加密时的功耗信号数据;
对所获得的功耗信号数据使用混合去噪方法低通滤波,经验模态分解以及小波阈值的混合去噪方法进行预处理,得到降噪后的功耗信号数据;
使用降噪后的功耗信号数据构建实际功耗矩阵,并计算假设中间值,得到假设的功耗矩阵;
计算多组实际功耗矩阵与假设功耗矩阵之间的相关系数,并分析得到正确的密钥。
在一些更为具体的实施例中,所述处理器还可以执行的步骤包括:
步骤2-1、从运行密码算法的加密设备中采集功耗信号数据,得到原始信号函数;
步骤2-2、对原始信号函数进行低通滤波得到功耗信号函数;
步骤2-3、找出所述功耗信号函数上所有的局部极大值和局部极小值,使用三次样条函数获得上下包络线并求出上下包络线的平均值函数;
步骤2-4、将所述功耗信号函数减去所述平均值函数,得到信号分量函数;
步骤2-5、判断所述信号分量函数是否满足本征模态函数(IMF)的条件,确定所述信号分量函数为IMF分量;
步骤2-6、用所述功耗信号函数减去所述本征模态分量得到一个信号函数,让所述功耗信号函数等于所述信号函数,重复上述步骤,得到n个IMF分量直至第n个IMF分量不可再分时进入步骤2-7;
步骤2-7、对含有噪声的高频IMF分量进行小波阈值去噪处理,将特征信息提取出来,并对特征信息与低频IMF分量及残差进行重构,得到去噪之后的功耗信号。
步骤3-1:根据采集的功耗曲线构建实际功耗矩阵,每条功耗数据为实际功耗矩阵中的一行,其中根据迭代轮次r,每轮选取一个采样点,则每条数据有r个采样点,按时间将矩阵中每条功耗数据的r个采样点对齐,就得到了n×r的实际功耗矩阵X;
步骤3-2:利用S盒的输出结果,计算假设中间值;
步骤3-3:根据假设中间值,构建假设功耗矩阵;
步骤4-1:计算实际功耗矩阵如假设功耗矩阵的相关系数,计算时选用皮尔逊相关系数进行计算;
步骤4-2:分析相关系数,得到猜测密钥。
可以理解的是,本发明中的针对密码算法的混合去噪分析方法及终端的特征可以相互引用,为了节省篇幅,本发明不再对其一一例举。
在本发明的描述中,需要理解的是,术语“同轴”、“底部”、“一端”、“顶部”、“中部”、“另一端”、“上”、“一侧”、“顶部”、“内”、“外”、“前部”、“中央”、“两端”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。
在本发明中,除非另有明确的规定和限定,术语“安装”、“设置”、“连接”、“固定”、“旋转”等术语应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或成一体;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通或两个元件的相互作用关系,除非另有明确的限定,对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本发明中的具体含义。
尽管已经示出和描述了本发明的实施例,对于本领域的普通技术人员而言,可以理解在不脱离本发明的原理和精神的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由所附权利要求及其等同物限定。