掌桥专利:专业的专利平台
掌桥专利
首页

侧信道能量分析方法、装置、存储介质及电子设备

文献发布时间:2023-06-19 11:26:00


侧信道能量分析方法、装置、存储介质及电子设备

技术领域

本发明涉及信息安全技术领域,特别地涉及一种侧信道能量分析方法、装置、存储介质及电子设备。

背景技术

现代密码学算法为信息化时代的信息安全提供了重要保障。密码学算法通过精心的设计和广泛严谨的论证,理论上的安全性有充分的保障。然而信息化社会,密码算法需要在各样的设备中通过物理实现方可发挥其作用。专用密码芯片以及单片设备为密码算法的实现提供了主要的载体。密码算法的实现方案决定着实现的安全性。

自从1996年能量分析技术被首次提出和应用,侧信道能量攻击技术便开始受到了越来越多的研究。该技术通过对密码设备工作时产生的能量信息分析处理,从而获取密码算法的秘密信息。目前已有的简单能量攻击、差分能量攻击、相关能量攻击、模板攻击等能量分析技术均已展现出了较强的攻击能力,但均有着一定的局限性,比如对攻击者要求较高,需要掌握与攻击设备类似的设备并需要较好的能量模型、对能量模型与真实能量泄漏之间的关系有相应的要求、信息利用不充分等,这些问题限制了能量分析技术的运用。

发明内容

针对上述现有技术中的问题,本申请提出了一种侧信道能量分析方法、装置、存储介质及电子设备,能够减少对攻击设备、能量模型的依赖,具有较高的普适性和较小的计算开销。

为达到上述目的,本发明的技术方案是这样实现的:

第一方面,本发明实施例提供了一种侧信道能量分析方法,所述方法包括:

对随机选取的多条明文分别进行预设加密操作;

采集所述加密操作过程中产生的与每条所述明文对应的加密能量迹;其中,每条所述加密能量迹具有T个采样点;

循环执行以下步骤,直至获取所述加密操作的整体密钥,其中,所述整体密钥具有a个字节:

生成所述整体密钥中第f个字节的多个密钥假设值;其中,1≤f≤a;

选取每条所述加密能量迹的第o个采样点对应的部分能量迹,获得第o个采样点的能量迹集合;其中,1≤o≤T;

基于所述多个密钥假设值和所述第o个采样点的能量迹集合,计算出与每个所述密钥假设值对应的基尼不纯度指数;

基于所述基尼不纯度指数,从所述多个密钥假设值中选取一个密钥假设值作为所述整体密钥中第f个字节的密钥值。

优选地,所述基于所述多个密钥假设值和所述第o个采样点的能量迹集合,计算出与每个所述密钥假设值对应的基尼不纯度指数,包括:

采用无监督聚类算法将所述第o个采样点的能量迹集合聚类成X个类型;其中,X预先设定;

对于每个所述密钥假设值,执行以下步骤:

基于该密钥假设值和获取的明文值集合,将所述X个类型中的所述第o个采样点的能量迹集合划分成V个子集;其中,X=V;

基于所述V个子集和所述X个类型,计算与该密钥假设值对应的基尼不纯度指数。

优选地,所述基于该密钥假设值和获取的明文值集合,将所述X个类型中的所述第o个采样点的能量迹集合划分成V个子集,包括:

基于该密钥假设值在所述整体密钥中所处的字节位置,选取每条所述明文中与所述字节位置对应位置处的部分明文,获得所述明文值集合;

基于该密钥假设值和所述明文值集合,获得目标函数的输出值;其中,所述目标函数为预先设置的非单射函数;

基于所述目标函数的输出值,将所述X个类型中的所述第o个采样点的能量迹集合划分成V个子集。

优选地,当所述加密操作采用分组密码算法加密时,所述目标函数为S盒的输出。

优选地,所述基于所述V个子集和所述X个类型,计算与该密钥假设值对应的基尼不纯度指数,包括:

基于每个所述子集中能量迹来自每个所述类型的概率,计算每个所述子集的基尼值;

基于每个所述子集的基尼值,计算与该密钥假设值对应的基尼不纯度指数。

优选地,采用以下表达式计算每个所述子集的基尼值:

其中,D

采用以下表达式计算与该密钥假设值对应的基尼不纯度指数:

其中,Gini_index(D(o),k

优选地,所述基于所述基尼不纯度指数,从所述多个密钥假设值中选取一个密钥假设值作为所述整体密钥中第f个字节的密钥值,包括:

采用以下表达式从所述多个密钥假设值中选取一个密钥假设值作为所述整体密钥中第f个字节的密钥值:

其中,k

第二方面,本发明实施例提供了一种侧信道能量分析装置,所述装置包括:

加密单元,用于对随机选取的多条明文分别进行预设加密操作;

采集单元,用于采集所述加密操作过程中产生的与每条所述明文对应的加密能量迹;其中,每条所述加密能量迹具有T个采样点;

密钥获取单元,用于循环执行以下步骤,直至获取所述加密操作的整体密钥,

其中,所述整体密钥具有a个字节:

生成所述整体密钥中第f个字节的多个密钥假设值;其中,1≤f≤a;

选取每条所述加密能量迹的第o个采样点对应的部分能量迹,获得第o个采样点的能量迹集合;其中,1≤o≤T;

基于所述多个密钥假设值和所述第o个采样点的能量迹集合,计算出与每个所述密钥假设值对应的基尼不纯度指数;

基于所述基尼不纯度指数,从所述多个密钥假设值中选取一个密钥假设值作为所述整体密钥中第f个字节的密钥值。

第三方面,本发明实施例提供了一种存储介质,所述存储介质上存储有程序代码,所述程序代码被处理器执行时,实现如上述实施例中任一项所述的侧信道能量分析方法。

第四方面,本发明实施例提供了一种电子设备,所述电子设备包括存储器、处理器,所述存储器上存储有可在所述处理器上运行的程序代码,所述程序代码被所述处理器执行时,实现如上述实施例中任一项所述的侧信道能量分析方法。

本发明实施例提供的一种侧信道能量分析方法、装置、存储介质及电子设备,对随机选取的多条明文分别进行预设加密操作,并采集所述加密操作过程中产生的与每条明文对应的加密能量迹;基于多个密钥假设值和每条加密能量迹中第o个采样点的能量迹集合,计算出与每个密钥假设值对应的基尼不纯度指数,基于该基尼不纯度指数,从多个密钥假设值中选取一个密钥假设值作为所述加密操作的整体密钥中某个字节的密钥值。可见,本发明将决策分类中的基尼不纯度指数引入到了侧信道能量分析中,基于基尼不纯度指数来选取合适的密钥假设值,与现有技术相比,本发明只需获取加密能量迹,对攻击者没有严格的限制和要求,即能够减少对攻击设备、能量模型的依赖,从而具有较高的普适性和较小的计算开销。实践表明,本发明在任何简单或复杂能量泄露情形下,在不同的假设泄露模型下,均有着较好的攻击效果。

附图说明

通过结合附图阅读下文示例性实施例的详细描述可更好地理解本发明公开的范围。其中所包括的附图是:

图1为本发明实施例的方法流程图;

图2为本发明实施例中某一密钥假设值及某一采样点下的基尼不纯度指数的计算流程示意图;

图3为本发明实施例的装置结构图。

具体实施方式

为了使本发明的目的、技术方案和优点更加清楚,以下将结合附图及实施例来详细说明本发明的实施方法,借此对本发明如何应用技术手段来解决技术问题,并达成技术效果的实现过程能充分理解并据以实施。

在下面的描述中阐述了很多具体细节以便于充分理解本发明,但是,本发明还可以采用其他不同于在此描述的其他方式来实施,因此,本发明的保护范围并不受下面公开的具体实施例的限制。

根据本发明的实施例,提供了一种侧信道能量分析方法,本方法是一种基于基尼不纯度指数区分器的新型侧信道能量分析技术——基尼不纯度指数分析。表1中所示的算法1展示了该基尼不纯度指数分析算法的整个流程,一般来说侧信道分析技术均会采取分而治之的策略来降低计算复杂度,即每次攻击仅获取部分密钥值,反复多次获取全部密钥值,因此算法1每次的输出结果也是部分密钥值,比如1个字节的密钥值。

表1

上述表1中,算法的第1步是随机选择N条明文({P

算法的第2步是对N条随机明文执行N次加密操作,通过示波器等设备可以获取N条加密能量迹,且根据设定的采样频率,每条加密能量迹将包含T个采样点(

算法的第3步是产生多个密钥假设值,用k={k

算法的第4步是根据选择的部分攻击密钥值的所处字节位置,选取对应字节位置处的部分明文值,例如,如果选择的部分攻击密钥值为整体密钥的第f个字节,那么对应的部分明文值也应该为全部随机明文的第f个字节的值。即p={p

算法的第5步是根据上述不同的部分明文值和密钥假设值计算目标函数

算法的第6步是基尼不纯度指数区分器,用来计算不同密钥假设值下不同能量迹采样点所对应的的基尼不纯度指数值。这也是该算法的核心步骤。最终的输出将根据不同的密钥假设值和能量迹采样点计算出的基尼不纯度指数,选择出最具可能性的正确的密钥假设值,即

基于上述算法,如图1和表1所示,本实施例所述的方法包括:

步骤S101,对随机选取的多条明文分别进行预设加密操作;

本实施例中,所述多条明文随机选取,例如,随机选取N条明文,{P

如表1中的算法第2步所示,对上述N条随机明文分别执行N次预设加密操作,所述预设加密操作是指,采用预设密钥和预设加密算法来执行加密操作。在加密操作执行的过程中,会产生相应的加密能量,因此,可通过采集该加密能量来分析加密操作的信息,例如,加密操作所使用的密钥等信息。

步骤S102,采集所述加密操作过程中产生的与每条所述明文对应的加密能量迹;其中,每条所述加密能量迹具有T个采样点;

本实施例中,可通过示波器等设备来采集步骤S101中所述的加密能量,该加密能量反映到示波器中,即为N条加密能量迹,每条所述加密能量迹对应一条明文。根据示波器实际设定的采样频率,每条加密能量迹具有T个采样点。

如表1中的算法第2步所示,

步骤S103,循环执行步骤S1031~步骤S1034,直至获取所述加密操作的整体密钥,其中,所述整体密钥具有a个字节:

步骤S1031,生成所述整体密钥中第f个字节的多个密钥假设值;其中,1≤f≤a;

本实施例中,每次攻击仅获取1字节的密钥值,因此,每次只针对1字节的密钥值生成该字节所有可能的密钥假设值,即本实施例采用穷举的方式生成某个字节的所有可能的密钥假设值。

例如,针对所述整体密钥中第f个字节,由于1个字节是8bit,因此穷举生成的密钥假设值包括:0、1、2、……、255,一共有256个密钥假设值。

如表1中的算法第3步所示,生成的某个字节的多个密钥假设值可以用向量k={k

步骤S1032,选取每条所述加密能量迹的第o个采样点对应的部分能量迹,获得第o个采样点的能量迹集合;其中,1≤o≤T;

本实施例中,基于实际设定的采样频率,在每条加密能量迹的相同的采样点处选取对应的部分能量迹,能够获得该采样点处的能量迹集合,如图2所示。第o个采样点的能量迹集合用D(o)或

即,选取N条能量迹

步骤S1033,基于所述多个密钥假设值和所述第o个采样点的能量迹集合,计算出与每个所述密钥假设值对应的基尼不纯度指数;

本实施例中,所述基于所述多个密钥假设值和所述第o个采样点的能量迹集合,计算出与每个所述密钥假设值对应的基尼不纯度指数,包括:

步骤一,采用无监督聚类算法将所述第o个采样点的能量迹集合聚类成X个类型;其中,X预先设定;

具体地,如图2所示,使用无监督聚类k-means方法将第o个采样点的能量迹集合D(o)聚类成X个类型(Type 1-Type X),其中,X由攻击者预先自行设定。本实施例中,X的值与上述算法第5步中所述的目标函数中间值(即目标函数的输出值)的取值数V相等。该目标函数中间值的取值数V由加密算法决定,若选择的目标函数的输出为1个字节,即256个可能的值,则V=256。通过这一步,集合D(o)中的N个值,被聚类成了X个类型,不同的类型可以由不同颜色的实心圆表示。

步骤二,对于每个所述密钥假设值,执行以下步骤:

基于该密钥假设值和获取的明文值集合,将所述X个类型中的所述第o个采样点的能量迹集合划分成V个子集;其中,X=V;基于所述V个子集和所述X个类型,计算与该密钥假设值对应的基尼不纯度指数。

本实施例中,上述基于该密钥假设值和获取的明文值集合,将所述X个类型中的所述第o个采样点的能量迹集合划分成V个子集,包括:

基于该密钥假设值在所述整体密钥中所处的字节位置,选取每条所述明文中与所述字节位置对应位置处的部分明文,获得所述明文值集合;基于该密钥假设值和所述明文值集合,获得目标函数的输出值;其中,所述目标函数为预先设置的非单射函数;基于所述目标函数的输出值,将所述X个类型中的所述第o个采样点的能量迹集合划分成V个子集。其中,当所述加密操作采用分组密码算法加密时,所述目标函数为S盒的输出。

具体地,如表1中的算法第4步所示,基于当前密钥假设值在加密操作所采用的整体密钥中所处的字节位置,选取每条明文中与上述字节位置对应位置处的部分明文。即,如果当前密钥假设值为整体密钥的第f个字节,那么对应的部分明文也应该为每条随机明文的第f个字节的值,通过选取获得的明文值集合可以用p={p

基于当前密钥假设值k

这里的V表示目标函数中间值的取值数,即上述划分的子集的个数,且X=V。如图2所示,图中第三步每一个圆圈表示一个子集D

最后根据子集划分和聚类类型,计算出在当前密钥假设、当前采样点下对应的基尼不纯度指数值Gini_Index(D(o),k

具体地,上述基于所述V个子集和所述X个类型,计算与该密钥假设值对应的基尼不纯度指数,包括:

基于每个所述子集中能量迹来自每个所述类型的概率,计算每个所述子集的基尼值;基于每个所述子集的基尼值,计算与该密钥假设值对应的基尼不纯度指数。

本实施例中,采用以下表达式计算每个所述子集的基尼值:

其中,D

本实施例中,采用以下表达式计算与该密钥假设值对应的基尼不纯度指数:

其中,Gini_index(D(o),k

步骤S1034,基于所述基尼不纯度指数,从所述多个密钥假设值中选取一个密钥假设值作为所述整体密钥中第f个字节的密钥值。

本实施例中,采用以下表达式从所述多个密钥假设值中选取一个密钥假设值作为所述整体密钥中第f个字节的密钥值:

其中,k

需要说明的是,上述计算过程中的k

需要说明的是,经过上述步骤S1031~步骤S1034,获得的只是加密操作所采用的密钥的一部分,即一个字节的密钥值。循环执行上述步骤,才能获得加密操作的整体密钥。

以下详细说明采用基尼不纯度指数来获得密钥值的计算原理:

首先给出基尼值及基尼不纯度指数的定义与公式。某一数据集D的基尼值反映了从数据集D中随机选择两个样本,这两个样本来自不同类别的概率,即:

其中,n表示数据集D中样本的类别数,p

基尼不纯度指数用于判别分类的质量。对于一个数据集D,若使用某一属性k对其进行划分,并可以得到数据集D在属性k下的基尼不纯度指数:

其中,D

如图2所示,每一个子集中均有来自不同类型的样本,若想求得最终的基尼不纯度指数值,需要先计算每一个子集D

其中,p

最小的基尼不纯度指数,对应了最优的划分属性,也可以转变为最大的1-Gini_index,其对应了最优的划分属性,即:

由此便可以的得到最优的密钥假设值及最优的采样点位置。

需要明确的是,本实施例中目标函数的选择必须为一个非单射函数,否则所有的密钥假设值都会产生相同的划分结果,即产生相同的基尼不纯度指数值。

本发明实施例提供的一种侧信道能量分析方法,对随机选取的多条明文分别进行预设加密操作,并采集所述加密操作过程中产生的与每条明文对应的加密能量迹;基于多个密钥假设值和每条加密能量迹中第o个采样点的能量迹集合,计算出与每个密钥假设值对应的基尼不纯度指数,基于该基尼不纯度指数,从多个密钥假设值中选取一个密钥假设值作为所述加密操作的整体密钥中某个字节的密钥值。可见,本发明将决策分类中的基尼不纯度指数引入到了侧信道能量分析中,基于基尼不纯度指数来选取合适的密钥假设值,与现有技术相比,本发明只需获取加密能量迹,对攻击者没有严格的限制和要求,即能够减少对攻击设备、能量模型的依赖,使攻击者无需掌握与被攻击设备类似的设备且无需对功耗泄露模型有完美的估计和要求。本方法在增加侧信道能量分析普适性的同时,产生了更小的额外计算开销。

此外,本实施例将无监督学习方法引入侧信道能量分析技术中,可以更加充分地利用能量信息。实践表明,本发明在任何简单或复杂能量泄露情形下,在不同的假设泄露模型下,均有着较好的攻击效果。

与上述方法实施例相对应地,本发明还提供一种侧信道能量分析装置,如图3所示,所述装置包括:

加密单元201,用于对随机选取的多条明文分别进行预设加密操作;

采集单元202,用于采集所述加密操作过程中产生的与每条所述明文对应的加密能量迹;其中,每条所述加密能量迹具有T个采样点;

密钥获取单元203,用于循环执行以下步骤,直至获取所述加密操作的整体密钥,其中,所述整体密钥具有a个字节:

生成所述整体密钥中第f个字节的多个密钥假设值;其中,1≤f≤a;

选取每条所述加密能量迹的第o个采样点对应的部分能量迹,获得第o个采样点的能量迹集合;其中,1≤o≤T;

基于所述多个密钥假设值和所述第o个采样点的能量迹集合,计算出与每个所述密钥假设值对应的基尼不纯度指数;

基于所述基尼不纯度指数,从所述多个密钥假设值中选取一个密钥假设值作为所述整体密钥中第f个字节的密钥值。

本实施例中,所述基于所述多个密钥假设值和所述第o个采样点的能量迹集合,计算出与每个所述密钥假设值对应的基尼不纯度指数,包括:

采用无监督聚类算法将所述第o个采样点的能量迹集合聚类成X个类型;其中,X预先设定;

对于每个所述密钥假设值,执行以下步骤:

基于该密钥假设值和获取的明文值集合,将所述X个类型中的所述第o个采样点的能量迹集合划分成V个子集;其中,X=V;

基于所述V个子集和所述X个类型,计算与该密钥假设值对应的基尼不纯度指数。

本实施例中,所述基于该密钥假设值和获取的明文值集合,将所述X个类型中的所述第o个采样点的能量迹集合划分成V个子集,包括:

基于该密钥假设值在所述整体密钥中所处的字节位置,选取每条所述明文中与所述字节位置对应位置处的部分明文,获得所述明文值集合;

基于该密钥假设值和所述明文值集合,获得目标函数的输出值;其中,所述目标函数为预先设置的非单射函数;

基于所述目标函数的输出值,将所述X个类型中的所述第o个采样点的能量迹集合划分成V个子集。

本实施例中,当所述加密操作采用分组密码算法加密时,所述目标函数为S盒的输出。

本实施例中,所述基于所述V个子集和所述X个类型,计算与该密钥假设值对应的基尼不纯度指数,包括:

基于每个所述子集中能量迹来自每个所述类型的概率,计算每个所述子集的基尼值;

基于每个所述子集的基尼值,计算与该密钥假设值对应的基尼不纯度指数。

本实施例中,采用以下表达式计算每个所述子集的基尼值:

其中,D

本实施例中,采用以下表达式计算与该密钥假设值对应的基尼不纯度指数:

其中,Gini_index(D(o),k

本实施例中,所述基于所述基尼不纯度指数,从所述多个密钥假设值中选取一个密钥假设值作为所述整体密钥中第f个字节的密钥值,包括:

采用以下表达式从所述多个密钥假设值中选取一个密钥假设值作为所述整体密钥中第f个字节的密钥值:

其中,k

上述装置的工作原理、工作流程等涉及具体实施方式的内容可参见本发明所提供的侧信道能量分析方法的具体实施方式,此处不再对相同的技术内容进行详细描述。

根据本发明的实施例,还提供了一种存储介质,所述存储介质上存储有程序代码,所述程序代码被处理器执行时,实现如上述实施例任一项所述的侧信道能量分析方法。

该方法的具体内容可参见本发明所提供的侧信道能量分析方法的具体实施方式,此处不再对相同的技术内容进行详细描述。

根据本发明的实施例,还提供了一种电子设备,所述电子设备包括存储器、处理器,所述存储器上存储有可在所述处理器上运行的程序代码,所述程序代码被所述处理器执行时,实现如上述实施例任一项所述的侧信道能量分析方法。

该方法的具体内容可参见本发明所提供的侧信道能量分析方法的具体实施方式,此处不再对相同的技术内容进行详细描述。

本发明实施例提供的一种侧信道能量分析方法、装置、存储介质及电子设备,对随机选取的多条明文分别进行预设加密操作,并采集所述加密操作过程中产生的与每条明文对应的加密能量迹;基于多个密钥假设值和每条加密能量迹中第o个采样点的能量迹集合,计算出与每个密钥假设值对应的基尼不纯度指数,基于该基尼不纯度指数,从多个密钥假设值中选取一个密钥假设值作为所述加密操作的整体密钥中某个字节的密钥值。可见,本发明将决策分类中的基尼不纯度指数引入到了侧信道能量分析中,基于基尼不纯度指数来选取合适的密钥假设值,与现有技术相比,本发明只需获取加密能量迹,对攻击者没有严格的限制和要求,即能够减少对攻击设备、能量模型的依赖,从而具有较高的普适性和较小的计算开销。实践表明,本发明在任何简单或复杂能量泄露情形下,在不同的假设泄露模型下,均有着较好的攻击效果。

本发明实施例可用于分析和评估密码算法实现的安全性。基尼不纯度指数在现有技术中被用于决策树分类中,用于判别分类的质量。本发明首次将决策分类中的基尼不纯度指数用于侧信道能量分析中,将基尼不纯度指数作为能量分析的区分器。且本发明所提供的技术方案,能够充分利用可得到的能量信息(即能量迹),提升侧信道能量分析中的信息利用程度,同时对攻击者没有严格的限制和要求。

在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。

作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本发明实施例方案的目的。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以是两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台电子设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。

虽然本发明所公开的实施方式如上,但所述的内容只是为了便于理解本发明而采用的实施方式,并非用以限定本发明。任何本发明所属技术领域内的技术人员,在不脱离本发明所公开的精神和范围的前提下,可以在实施的形式上及细节上作任何的修改与变化,但本发明的保护范围,仍须以所附的权利要求书所界定的范围为准。

相关技术
  • 侧信道能量分析方法、装置、存储介质及电子设备
  • 一种HMAC-SM3密码算法的侧信道能量分析方法及装置
技术分类

06120112922950