欢迎光临小豌豆知识网!
当前位置:首页 > 电学技术 > 电通讯技术> 一种HMAC-SM3算法的密钥获取方法、装置、设备和存储介质独创技术21999字

一种HMAC-SM3算法的密钥获取方法、装置、设备和存储介质

2021-02-17 14:33:17

一种HMAC-SM3算法的密钥获取方法、装置、设备和存储介质

  技术领域

  本申请涉及密码算法分析技术领域,尤其涉及一种HMAC-SM3算法的密钥获取方法、装置、设备和存储介质。

  背景技术

  随着信息分析技术的发展,常常需要获取硬件密码电子设备的加密信息,例如密钥信息等。

  现有技术中,对HMAC-SM3算法的密钥获取方法包括:差分能量分析方法,该方法在面对大多数情况时,都可以获取到密钥信息,但是该方法获取到的密钥信息准确率较低。

  因此,提供一种准确率较高的HMAC-SM3算法的密钥获取方法是本领域技术人员亟待解决的技术问题。

  发明内容

  有鉴于此,本申请提供了一种HMAC-SM3算法的密钥获取方法、装置、设备和存储介质,解决了现有针对HMAC-SM3算法的密钥获取准确率较低的技术问题。

  本申请第一方面提供了一种HMAC-SM3算法的密钥获取方法,包括:

  获取HMAC-SM3算法运行时的功率曲线;

  将所述功率曲线输入至预置神经网络模型,得到所述功率曲线对应的运行参数,其中,所述预置神经网络模型为所述功率曲线和所述运行参数的关联关系模型;

  根据所述运行参数计算所述HMAC-SM3算法的哈希值,并根据所述哈希值恢复所述HMAC-SM3算法的密钥。

  可选地,

  所述将所述功率曲线输入至预置神经网络模型,得到所述功率曲线对应的运行参数具体包括:

  根据功率曲线和预置神经网络模型的对应关系,确定获取的各所述功率曲线对应的预置神经网络模型;

  将各所述功率曲线输入至对应的预置神经网络模型,得到各所述功率曲线对应的运行参数。

  可选地,

  所述根据所述运行参数计算所述HMAC-SM3算法的哈希值,并根据所述哈希值恢复所述HMAC-SM3算法的密钥具体包括:

  根据所述运行参数计算用于恢复所述HMAC-SM3算法的密钥的第一散列;

  根据所述第一散列计算用于恢复所述HMAC-SM3算法的密钥的第二散列;

  根据所述第一散列和所述第二散列恢复所述HMAC-SM3算法的密钥。

  本申请第二方面提供了一种HMAC-SM3算法的密钥获取装置,包括:

  获取单元,用于获取HMAC-SM3算法运行时的功率曲线;

  第一运算单元,用于将所述功率曲线输入至预置神经网络模型,得到所述功率曲线对应的运行参数,其中,所述预置神经网络模型为所述功率曲线和所述运行参数的关联关系模型;

  第二运算单元,用于根据所述运行参数计算所述HMAC-SM3算法的哈希值,并根据所述哈希值恢复所述HMAC-SM3算法的密钥。

  可选地,

  所述第一运算单元具体包括:

  获取子单元,用于根据功率曲线和预置神经网络模型的对应关系,确定获取的各所述功率曲线对应的预置神经网络模型;

  运算子单元,用于将各所述功率曲线输入至对应的预置神经网络模型,得到各所述功率曲线对应的运行参数。

  可选地,

  所述第二运算单元具体包括:

  第一恢复子单元,用于根据所述运行参数计算用于恢复所述HMAC-SM3算法的密钥的第一散列;

  第二恢复子单元,用于根据所述第一散列计算用于恢复所述HMAC-SM3算法的密钥的第二散列;

  第三恢复子单元,用于根据所述第一散列和所述第二散列恢复所述HMAC-SM3算法的密钥。

  本申请第三方面提供了一种HMAC-SM3算法的密钥获取设备,包括处理器以及存储器;

  所述存储器用于存储程序代码,并将所述程序代码传输给所述处理器;

  所述处理器用于根据所述程序代码中的指令执行第一方面所述的HMAC-SM3算法的密钥获取方法。

  本申请第四方面提供了一种存储介质,述存储介质用于存储程序代码,所述程序代码用于执行第一方面所述的HMAC-SM3算法的密钥获取方法。

  从以上技术方案可以看出,本申请实施例具有以下优点:

  本申请提供了一种HMAC-SM3算法的密钥获取方法,包括:获取HMAC-SM3算法运行时的功率曲线;将功率曲线输入至预置神经网络模型,得到功率曲线对应的运行参数,其中,预置神经网络模型为功率曲线和运行参数的关联关系模型;根据运行参数计算HMAC-SM3算法的哈希值,并根据哈希值恢复HMAC-SM3算法的密钥。

  本申请中,首先获取HMAC-SM3算法运行时的功率曲线,由于预置神经网络模型为功率曲线和运行参数的关联关系模型,这样当把获取到的功率曲线输入至预置神经网络模型时,便可以得到该功率曲线对应的运行参数,然后根据运行参数可以计算HMAC-SM3算法的哈希值,再接着可以根据所述哈希值恢复所述HMAC-SM3算法的密钥,从而实现了对HMAC-SM3算法的密钥获取,通过神经网络的深度学习方法,恢复出HMAC计算过程中使用的参数,从而推导出正确的密钥,从而解决了现有针对HMAC-SM3算法的密钥获取准确率较低的技术问题。

  附图说明

  图1为SM3算法的原理图;

  图2为SM3算法中函数f的原理图;

  图3为HMAC SM3算法的原理图;

  图4为本申请实施例中一种HMAC-SM3算法的密钥获取方法的实施例一的流程示意图;

  图5为本申请实施例中一种HMAC-SM3算法的密钥获取方法的实施例二的流程示意图;

  图6a为本申请实施例中应用例中δ1,0Byte 3的恢复结果示意图;

  图6b为本申请实施例中应用例中δ1,0Byte 2的恢复结果示意图;

  图6c为本申请实施例中应用例中δ1,0Byte 1的恢复结果示意图;

  图6d为本申请实施例中应用例中δ1,0Byte 0的恢复结果示意图;

  图7a为本申请实施例中应用例中a0Byte 3的恢复结果示意图;

  图7b为本申请实施例中应用例中a0Byte 2的恢复结果示意图;

  图7c为本申请实施例中应用例中a0Byte 1的恢复结果示意图;

  图7d为本申请实施例中应用例中a0Byte 0的恢复结果示意图;

  图8为本申请实施例中一种HMAC-SM3算法的密钥获取装置的实施例的结构示意图。

  具体实施方式

  本申请实施例提供了一种HMAC-SM3算法的密钥获取方法、装置、设备和存储介质,解决了现有针对HMAC-SM3算法的密钥获取准确率较低的技术问题。

  为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

  以便于理解,本申请中首先对HMAC-SM3的原理进行介绍如下:

  SM3算法的原理如图1所示。该函数的输入数据被填充,使得它可以被分成N个512比特的块。每个块将在相同的过程中处理:前一个块通过函数f计算后一个块的新IV,块N的输出是算法的散列结果。

  其中,函数f的原理图如图2所示。函数T将512位输入转换为64个32位字对。在循环期间循环使用中间值(Wi,Wi*),并且每轮的结果用作下一轮的输入。当第64轮完成时,通过将第一轮的输入和最后一轮的输出相加作为函数f的输出来应用最终变换。

  为了解释每个循环,我们通过函数定义循环其中,IVi代表循环i轮的初始向量,是迭代i轮循环后压缩的结果;IVi-1代表循环i-1轮的初始向量,Blocki是填充后的消息分组,f(IVi-1,Blocki)是压缩函数,首先,将8个32位局部变量初始化为a0到h0:

  a0=IVi-1,0;

  b0=IVi-1,1;

  c0=IVi-1,2;

  d0=IVi-1,3;

  e0=IVi-1,4;

  f0=IVi-1,5;

  g0=IVi-1,6;

  h0=IVi-1,7;

  上式中,IVi-1,0、IVi-1,1、IVi-1,2、IVi-1,3、IVi-1,4、IVi-1,5、IVi-1,6、IVi-1,7是IVi-1中的8个32位的局部初始向量,分别被赋值到a0-h0。

  函数f由具有初始状态的32位异或完成:

  

  

  

  

  

  

  

  

  上式中,IVi,0、IVi,1、IVi,2、IVi,3、IVi,4、IVi,5、IVi,6、IVi,7是IVi中的8个32位的局部初始向量,a64到h64均是初始化之后的局部变量。

  HMAC-SM3中HMAC代表密钥哈希消息认证码,是NIST标准。请参阅图3,图3为HMACSM3的结构图。

  HMAC-SM3的过程如下:

  (1)从密钥K导出密钥对(Ki,Ko);

  (2)使用Ki和输入数据计算第一个哈希值:first hash=H(Ki|T),其中T为输入数据;

  (3)使用Ko和第一个哈希值计算HMAC:HMAC=H(Ko|first hash),其中H()是SM3散列函数。

  本申请实施例第一方面提供了一种HMAC-SM3算法的密钥获取方法的实施例。

  请参阅图4,本申请实施例中一种HMAC-SM3算法的密钥获取方法的实施例一的流程示意图,包括:

  步骤401、获取HMAC-SM3算法运行时的功率曲线。

  需要说明的是,对于功率曲线的获取可以是,在微处理器上运行的HMAC-SM3算法,采集算法运行时的功率曲线。

  步骤402、将功率曲线输入至预置神经网络模型,得到功率曲线对应的运行参数,其中,预置神经网络模型为功率曲线和运行参数的关联关系模型。

  需要说明的是,由于预置神经网络模型为功率曲线和运行参数的关联关系模型,在得到功率曲线后,将功率曲线输入至预置神经网络模型便可得到该功率曲线对应的运行参数。

  步骤403、根据运行参数计算HMAC-SM3算法的哈希值,并根据哈希值恢复HMAC-SM3算法的密钥。

  需要说明的是,在得到HMAC-SM3算法运行时的运行参数后,可以根据这些运行参数计算得到设置密钥时使用到的哈希值,然后根据该哈希值可以计算得到密钥。

  本实施例中,首先获取HMAC-SM3算法运行时的功率曲线,由于预置神经网络模型为功率曲线和运行参数的关联关系模型,这样当把获取到的功率曲线输入至预置神经网络模型时,便可以得到该功率曲线对应的运行参数,然后根据运行参数可以计算HMAC-SM3算法的哈希值,再接着可以根据哈希值恢复HMAC-SM3算法的密钥,从而实现了对HMAC-SM3算法的密钥获取,通过神经网络的深度学习方法,恢复出HMAC计算过程中使用的参数,从而推导出正确的密钥,从而解决了现有针对HMAC-SM3算法的密钥获取准确率较低的技术问题。

  以上为本申请实施例提供的一种HMAC-SM3算法的密钥获取方法的实施例一,以下为本申请实施例提供的一种HMAC-SM3算法的密钥获取方法的实施例二。

  请参阅图5,本申请实施例中一种HMAC-SM3算法的密钥获取方法的第二实施例的流程示意图,包括:

  步骤501、获取训练功率曲线和训练功率曲线对应的训练运行参数。

  步骤502、以预置神经网络为训练网络,训练功率曲线为输入参数,训练运行参数为输出结果,对预置神经网络进行训练,得到对应的预置神经网络模型。

  需要说明的是,预置神经网络为预置神经网络模型对应的神经网络。

  当对神经网络进行训练后,得到的预置神经网络模型训练功率曲线和训练运行参数的一个关联关系模型,也就是功率曲线和运行参数的一个关联关系模型,后续在使用该预置神经网络模型时,输入功率曲线便可以得到对应的运行参数。

  步骤503、获取HMAC-SM3算法运行时的功率曲线。

  需要说明的是,步骤503与实施例一中的步骤401的描述相同,具体可以参见上述描述,在此不再赘述。

  步骤504、根据功率曲线和预置神经网络模型的对应关系,确定获取的各功率曲线对应的预置神经网络模型。

  需要说明的是,功率曲线有多个时,各功率曲线对应的预置神经网络模型也不相同。因此,根据功率曲线和预置神经网络模型的对应关系,确定获取的各功率曲线获对应的预置神经网络模型。

  步骤505、将各功率曲线输入至对应的预置神经网络模型,得到各功率曲线对应的运行参数。

  根据上述对HMAC-SM3算法的介绍,本实施例中根据预置神经网络模型和运行功率曲线计算出与哈希值相关的运行参数a0、b0、c0、d0、e0、f0、h0、g0。

  步骤506、根据运行参数计算HMAC-SM3算法的哈希值,并根据哈希值恢复HMAC-SM3算法的密钥。

  本实施例中,在计算得到a0、b0、c0、d0、e0、f0、h0、g0后,可以根据这些参数计算哈希值中的第一个哈希值对应的第一散列,计算出对应的第一个哈希值,再用该第一个哈希值作为明文输入来恢复第二个哈希值对应的第二散列,最终根据这两个散列可以恢复密钥中的密钥对,最终便可得到密钥。

  其中,第一个哈希值对应的散列的计算方法为:先恢复δ1,0,δ2,0,根据δ1,0恢复出a0,再根据δ1,0和a0恢复出b0,再根据δ1,0,a0和b0恢复出c0,最后计算出d0;根据δ2,0恢复出e0,再根据δ2,0和e0恢复出f0,再根据δ2,0,e0和f0恢复出g0,最后计算出h0,得到的a0、b0、c0、d0、e0、f0、h0、g0即为第一个哈希值对应的散列。

  本实施例中,首先获取HMAC-SM3算法运行时的功率曲线,由于预置神经网络模型为功率曲线和运行参数的关联关系模型,这样当把获取到的功率曲线输入至预置神经网络模型时,便可以得到该功率曲线对应的运行参数,然后根据运行参数可以计算HMAC-SM3算法的哈希值,再接着可以根据哈希值恢复HMAC-SM3算法的密钥,从而实现了对HMAC-SM3算法的密钥获取,通过神经网络的深度学习方法,恢复出HMAC计算过程中使用的参数,从而推导出正确的密钥,从而解决了现有针对HMAC-SM3算法的密钥获取准确率较低的技术问题。

  以上为本申请实施例提供的一种HMAC-SM3算法的密钥获取方法的实施例二,以下为本申请实施例提供的一种HMAC-SM3算法的密钥获取方法的应用例。

  本应用例中,在32位微处理器Infineon TC1782上运行HMAC-SM3算法。HMAC-SM3运行时获取运行功率曲线。

  本应用例中收集了两组曲线,A组:带有输入数据的200000条曲线和第一条散列IVHi变化;B组:具有方差输入数据的50000个曲线和固定的第一散列IV Hi。A组用于学习阶段,而B组用于分析阶段。在训练阶段,将A组中的180000个曲线用作训练集,而其余20000个曲线用作验证集以选择最佳网络参数。

  首先恢复δ1,0,此时不是恢复所有32位的δ1,0,而是逐字节恢复δ1,0。在学习率为0.0001,批量大小为200的情况下,我们使用A训练每个模型10个时期。B的分析结果如图6a至图6d所示。其中曲线表示不同字节的预期值。我们可以发现δ1,0中的所有字节都可以恢复,而B中只有几千条曲线。

  随着δ1,0被成功恢复,也逐字节恢复a0,结果如图7a至图7d所示。图中曲线表示不同a0字节的预期值。可以从结果中发现,需要使用B组中的几乎所有曲线来恢复a0的所有四个字节。与δ1,0的结果不同,a0的正确候选者与其他候选者不是很明显。δ1,0的结果比a0的结果更明显,原因是泄漏关于a0的信息的过程是xor操作,而关于δ1,0的泄漏是add操作。

  以上为本申请实施例提供的一种HMAC-SM3算法的密钥获取方法的应用例,以下为本申请实施例提供的一种HMAC-SM3算法的密钥获取装置的实施例。

  请参阅图8,本申请实施例中一种HMAC-SM3算法的密钥获取方法的实施例的结构示意图,包括:

  获取单元801,用于获取HMAC-SM3算法运行时的功率曲线;

  第一运算单元802,用于将功率曲线输入至预置神经网络模型,得到功率曲线对应的运行参数,其中,预置神经网络模型为功率曲线和运行参数的关联关系模型;

  第二运算单元803,用于根据运行参数计算HMAC-SM3算法的哈希值,并根据哈希值恢复HMAC-SM3算法的密钥。

  可选地,

  第一运算单元802具体包括:

  获取子单元,用于根据功率曲线和预置神经网络模型的对应关系,确定获取的各功率曲线对应的预置神经网络模型;

  运算子单元,用于将各功率曲线输入至对应的预置神经网络模型,得到各功率曲线对应的运行参数。

  可选地,

  第二运算单元803具体包括:

  第一恢复子单元,用于根据运行参数计算用于恢复HMAC-SM3算法的密钥的第一散列;

  第二恢复子单元,用于根据第一散列计算用于恢复HMAC-SM3算法的密钥的第二散列;

  第三恢复子单元,用于根据第一散列和第二散列恢复HMAC-SM3算法的密钥。

  本实施例中,首先获取HMAC-SM3算法运行时的功率曲线,由于预置神经网络模型为功率曲线和运行参数的关联关系模型,这样当把获取到的功率曲线输入至预置神经网络模型时,便可以得到该功率曲线对应的运行参数,然后根据运行参数可以计算HMAC-SM3算法的哈希值,再接着可以根据哈希值恢复HMAC-SM3算法的密钥,从而实现了对HMAC-SM3算法的密钥获取,通过神经网络的深度学习方法,恢复出HMAC计算过程中使用的参数,从而推导出正确的密钥,从而解决了现有针对HMAC-SM3算法的密钥获取准确率较低的技术问题。

  本申请实施例还提供了一种HMAC-SM3算法的密钥获取设备,包括处理器以及存储器;存储器用于存储程序代码,并将程序代码传输给处理器;处理器用于根据程序代码中的指令执行实施例一或实施例二的HMAC-SM3算法的密钥获取方法。

  本申请实施例还提供了一种存储介质,存储介质用于存储程序代码,程序代码用于执行实施例一或实施例二的HMAC-SM3算法的密钥获取方法。

  所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的待安装电网网络,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

  在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个待安装电网网络,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

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

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

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

  以上所述,以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。

《一种HMAC-SM3算法的密钥获取方法、装置、设备和存储介质.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式(或pdf格式)