一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

交换网络和跳转算法指令化的侧信道攻击抵抗方法及系统与流程

2021-10-24 08:32:00 来源:中国专利 TAG:信道 抵抗 攻击 跳转 指令


1.本发明涉及侧信道攻击抵抗技术领域,特别是涉及交换网络和跳转算法指令化的侧信道攻击抵抗方法及系统。


背景技术:

2.本部分的陈述仅仅是提到了与本发明相关的背景技术,并不必然构成现有技术。
3.侧信道攻击(side channel attack)又称侧信道密码分析,由美国密码学家p.c.kocher于上世纪九十年代末期提出,是一种针对密码实现(包括密码芯片、密码模块、密码系统等)的攻击方法。侧信道攻击所用的侧信息(side channel information)指除了攻击者通过除主通信信道以外的途径获取到的关于密码实现运行状态相关的信息,典型的侧信息包括密码实现运行过程中的能量消耗、电磁辐射、运行时间等信息。
4.侧信道攻击本质是利用密码实现运行过程中产生的依赖于密钥的侧信息来实施密钥恢复攻击的,因此防御对策的核心就是减弱甚至消除这种侧信息与数据之间的直接依赖性。
5.侧信道攻击常见防御对策可以分为掩码对策和隐藏对策两种。
6.掩码对策借助秘密共享和多方安全计算,通过引入随机数来消除侧信息与数据的依赖性来增强抵抗侧信道攻击的能力;掩码对策易于在密码算法级进行构造,更易于实现,但除了密钥之外还需要很多随机数,并且随机数生成代价过高。
7.隐藏对策采用平均化“0”和“1”对应侧信息的差别来降低通过侧信息区分对应数据的可能性,即降低数据的可区分度来抵抗侧信道攻击。隐藏对策通常只能在硬件层进行实现,需要改变硬件实现结构,因而较难实现。而且隐藏对策对硬件进行干预,如果攻击者知道了具体的干预方法,就可以有针对性的进行破解。


技术实现要素:

8.为了解决现有技术的不足,本发明提供了交换网络和跳转算法指令化的侧信道攻击抵抗方法及系统;通过产生随机数来减弱,混淆侧信息来抵抗侧信道攻击。
9.第一方面,本发明提供了交换网络和跳转算法指令化的侧信道攻击抵抗方法;
10.交换网络和跳转算法指令化的侧信道攻击抵抗方法,包括:
11.在n个待保护代码段运行前,基于随机数和switching networks交换网络算法,将cpu的n个寄存器里的值随机打乱;所述随机数,是基于lfsr算法产生的;
12.在n个待保护代码段运行时,基于初始地址、已经被打乱值的n个寄存器和待保护代码段的指令条数,采用随机跳转算法,将cpu运行地址随机跳转到一个待保护代码段的入口地址继续执行;
13.经过switching networks交换网络算法的多次随机打乱和随机跳转算法的多次随机跳转,混淆产生的侧信息,以实现抗侧信道攻击。
14.第二方面,本发明提供了交换网络和跳转算法指令化的侧信道攻击抵抗系统;
15.交换网络和跳转算法指令化的侧信道攻击抵抗系统,包括:
16.随机打乱模块,其被配置为:在n个待保护代码段运行前,基于随机数和switching networks交换网络算法,将cpu的n个寄存器里的值随机打乱;所述随机数,是基于lfsr算法产生的;
17.随机跳转模块,其被配置为:在n个待保护代码段运行时,基于初始地址、已经被打乱值的n个寄存器和待保护代码段的指令条数,采用随机跳转算法,将cpu运行地址随机跳转到一个待保护代码段的入口地址继续执行;
18.重复模块,其被配置为:经过switching networks交换网络算法的多次随机打乱和随机跳转算法的多次随机跳转,混淆产生的侧信息,以实现抗侧信道攻击。
19.与现有技术相比,本发明的有益效果是:
20.先用lfsr算法产生随机数,供switching networks交换网络算法进行随机交换,并将其用硬件描述语言verilog实现。经过多次随机交换,能够减弱数据运行过程可能产生的侧信息,增加噪声,抵抗侧信道攻击。
21.通过指令集扩展的方法,将switching networks交换网络算法和基于switching networks交换网络算法的随机跳转算法固化为两类专用指令,可以方便快捷地使用这两类算法。每当需要使用时,只需通过两条指令来完成。这种方法相对于传统的算法实现,有着良好的效率和可维护性。同时通过硬件实现比起软件实现,大大减少了算法运行的时序周期,提高了效率。
22.本发明附加方面的优点将在下面的描述中部分给出,或通过本发明的实践了解到。
附图说明
23.构成本发明的一部分的说明书附图用来提供对本发明的进一步理解,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。
24.图1为第一个实施例的shuffle交换规则;
25.图2为第一个实施例的lfsr产生随机数图解。
具体实施方式
26.应该指出,以下详细说明都是示例性的,旨在对本发明提供进一步的说明。除非另有指明,本文使用的所有技术和科学术语具有与本发明所属技术领域的普通技术人员通常理解的相同含义。
27.需要注意的是,这里所使用的术语仅是为了描述具体实施方式,而非意图限制根据本发明的示例性实施方式。如在这里所使用的,除非上下文另外明确指出,否则单数形式也意图包括复数形式,此外,还应当理解的是,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
28.在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。
29.本实施例所有数据的获取都在符合法律法规和用户同意的基础上,对数据的合法
应用。
30.术语介绍:
31.专用指令cpu是针对某个或者某一类型的需求而专门设计的处理器。核心是对处理器基础指令集架构进行扩展,在扩展指令集下重新实现目标算法以提高其执行效率。具体为在目标算法底层实现过程中通过设计新的指令来代替影响算法性能较大的若干条连续指令(指令块),以大幅减少执行过程中汇编语言的数量。提高了运行速度以及效率,减小功耗,从而更加适应嵌入式应用背景的需要。risc

v指令集架构不仅完全开源、架构简单、易于移植、具有完整的工具链、模块化设计的特点而且还支持新指令的扩展,非常适合用来设计专用指令cpu。
32.armv8是arm的一种加密安全扩展指令集架构,其支持sm3,sm4,sha,aes等密码算法的指令化扩展,大大提高了密码算法的执行效率,减少了功耗。
33.intel sse 4指令集是当前使用广泛的汇编指令集扩展。sse4旨在提升intel处理器在多媒体、图像处理、3d处理应用中的性能。sse4.1添加了增强编译器矢量化的指令,极大地提升了对打包双字型数据的计算能力。sse4.2利用simd技术提升了字符串和文本处理方面的性能,增加了针对应用加速器(ata)的指令,用于计算循环冗余校验码crc32指令,以及比sse4.1中的128位整数simd指令更强的simd整数指令等。
34.专用指令cpu设计难点:首先需要根据开源的指令集架构用verilog硬件描述语言设计cpu,确定设计cpu时采用的流水线级数,解决cpu设计过程中的结构和数据冒险,然后进行指令测试。接下来进行专用指令扩展,确定指令码,并用verilog硬件实现并进行测试。
35.lfsr,其英文全称为:linear feedback shift register;其中文解释为:线性反馈移位寄存器。
36.实施例一
37.本实施例提供了交换网络和跳转算法指令化的侧信道攻击抵抗方法;
38.交换网络和跳转算法指令化的侧信道攻击抵抗方法,包括:
39.s101:在n个待保护代码段运行前,基于随机数和switching networks交换网络算法,将cpu的n个寄存器里的值随机打乱;所述随机数,是基于lfsr算法产生的;
40.s102:在n个待保护代码段运行时,基于初始地址、已经被打乱值的n个寄存器和待保护代码段的指令条数,采用随机跳转算法,将cpu运行地址随机跳转到一个待保护代码段的入口地址继续执行;
41.s103:重复步骤s101和s102,经过switching networks交换网络算法的多次随机打乱和随机跳转算法的多次随机跳转,混淆产生的侧信息,以实现抗侧信道攻击。
42.进一步地,所述获取待保护代码段;其中,待保护代码段,是指:
43.人为设定的需要保护的代码段;所述待保护代码段,包括若干条代码。
44.进一步地,所述s101:所述随机数,是基于lfsr算法产生的;具体包括:
45.设定初始随机化种子,然后产生随机数。
46.进一步地,所述s101:基于随机数和switching networks交换网络算法,将cpu的n个寄存器里的值随机打乱;具体包括:
47.s101b1:用硬件描述语言verilog实现lfsr算法,通过lfsr算法产生连续的n/2bit shift_reg数值;这个数值用于接下来的n个寄存器值的交换;
48.s101b 2:假设n为8,寄存器的初始值为0~7,将这8个寄存器分别命名为a0~a7,此时shuffle共有三轮:
49.第一个周期生成的寄存器shift_reg的值用于第一轮的交换,第一轮寄存器shift_reg的4bit值从第0bit到第3bit分别对应a0和a1的值进行交换,a2和a3的值进行交换,a4和a5的值进行交换,a6和a7值的值进行交换(如果第一个bit值为1,则a0,a1值交换,第二个bit值为1,则a2,a3值交换,以此类推;如果第一个bit值为0,则a0,a1值不交换,第二个bit值为0,则a2,a3值不交换,以此类推);
50.第二个周期生成的寄存器shift_reg的值用于第二轮的交换,第二轮寄存器shift_reg的4bit值从第0bit到第3bit分别对应a0和a2的值进行交换,a1和a3的值进行交换,a4和a6的值进行交换,a5和a7的值进行交换(如果第一个bit值为1,则a0,a1值交换,第二个bit值为1,则a2,a3值交换,以此类推;如果第一个bit值为0,则a0,a1值不交换,第二个bit值为0,则a2,a3值不交换,以此类推);
51.第三个周期生成的寄存器shift_reg的值用于第三轮的交换,第三轮寄存器shift_reg的4bit值从第0bit到第3bit分别对应a0和a4的值进行交换,a1和a5的值进行交换,a2和a6的值进行交换,a3和a7的值进行交换(如果第一个bit值为1,则a0,a1值交换,第二个bit值为1,则a2,a3值交换,以此类推;如果第一个bit值为0,则a0,a1值不交换,第二个bit值为0,则a2,a3值不交换,以此类推);
52.最后,将打乱后8个寄存器的值传回cpu流水线的执行阶段。
53.交换网络指令的rs1部分,即指令的第19bit至第15bit部分对应寄存器的值是lfsr的初始值,这个初始值通过c语言随机化函数实现。
54.通过lfsr算法产生连续的n/2bit shift_reg数值(每个周期均产生一个n/2bit shift_reg),这个数值用于接下来的shuffle部分n个寄存器值的交换。
55.shuffle交换规则,如图1所示;lfsr产生随机数图解,如图2所示。
56.其中,gn为反馈系数,取值只能为0或1,取为0时表明不存在该反馈之路,取为1时表明存在该反馈之路。
57.进一步地,所述s102:在n个待保护代码段运行时,基于初始地址、已经被打乱值的n个寄存器和待保护代码段的指令条数,采用随机跳转算法,将cpu运行地址随机跳转到一个待保护代码段的入口地址继续执行;具体包括:
58.s1021:从n个被打乱的寄存器中随机选择一个寄存器;
59.s1022:计算被选择寄存器的值与待保护代码段的指令条数的第一乘积;计算第一乘积与4相乘后的第二乘积;
60.s1023:计算第二乘积与初始地址的求和结果;
61.s1024:将求和结果作为跳转的目标地址,将cpu指令地址跳转到目标地址。
62.假设switch交换网络指令和随机跳转指令的n为8,则随机跳转指令的指令码的rs1部分对应寄存器的值为0~7之间的随机数(这个值通过c语言随机数函数生成),这个随机数用于选择a0~a7相应的寄存器。随机跳转的指令的指令码的rs2部分的值是跳转初始地址。
63.risc

v基本整数指令集的指令是32位,rs1,和rs2对应19到15位,24到20位,cpu根据rs1,rs2对应的基本整数寄存器地址读取寄存器中的数据。
64.随机跳转到初始地址加上值被随机打乱的寄存器的值乘上相应函数指令条数乘4的地址,以实现抗侧信道。
65.假设选择的是a1寄存器,则随机跳转的地址为初始地址 a1*4*待保护代码段的指令条数。
66.这样经过switch交换网络的多次随机交换和随机跳转的多次随机可以减弱产生的侧信息,以实现抗侧信道。
67.进一步地,所述方法s101步骤之前,还包括:
68.s100

1:构建基于risc

v指令集的cpu;
69.s100

2:基于指令集扩展,将交换网络算法固化为交换网络专用指令;
70.s100

3:基于指令集扩展,将随机跳转算法固化为随机跳转专用指令。
71.进一步地,所述s100

1:构建基于risc

v指令集的cpu;构建过程包括:
72.s100

10:用verilog语言构建cpu;
73.s100

11:更改risc

v工具链;
74.s100

12:新增交换网络算法指令和随机跳转算法指令的指令码,使rsic

v工具链能够识别新增指令:交换网络算法指令和随机跳转算法指令。
75.进一步地,所述s100

11:更改risc

v工具链;具体包括:
76.首先,从github下载所需要的源代码,安装risc

v

gnu

tools交叉编译环境;
77.然后,在从github上,下载riscv

opcodes开源项目;
78.然后,创建owninstruction文件,加入想要新增指令的内容,例如:
79.ran rd rs1 rs2 31..25=32 14..12=5 6..2=0x1e 1..0=3
80.最前面一列,是指令的助记符,后续是指令的参数。接着是各个bit的描述。修改makefile文件,并执行,生成新的encoding.h文件。
81.在这个文件中,关注如下信息:
82.declare_insn(ran,match_ran,mask_ran)
83.match_ran
84.mask_ran
85.定义该条指令的mask和match,并且声明一条该指令。
86.将上一步得到的信息,拷贝到在binutils源代码根目录下的include/opcode/riscv

opc.h文件。
87.加入mask和match。
88.binutils源代码根目录下,opcodes/riscv

opc.c文件,定义了risc

v的指令集。
89.结构体数组,riscv_opcodes,保存了riscv的指令。因此要在这个数组中,加入我们自定义的指令,这样才能够实现编译。
90.然后重新编译risc

v交叉编译环境的工具链,即可。
91.更改后的riscv工具链即可识别新增指令,即将c文件编译成二进制文件,并继续转成16进制文件可以被cpu识别并执行。
92.进一步地,所述s100

2:基于指令集扩展,将交换网络算法固化为交换网络专用指令;具体包括:
93.用verilog语言在用verilog实现cpu基础上,根据lfst和交换网络算法实现了交
换网络指令(ran)指令。
94.进一步地,所述s100

3:基于指令集扩展,将随机跳转算法固化为随机跳转专用指令;具体包括:
95.用verilog语言在用verilog实现cpu基础上根随机跳转算法实现了随机跳转指令(jalx)指令。
96.risc

v不仅完全开源而且还支持新指令的扩展,非常适合进行cpu的专用指令扩展。在算法的实际使用中,算法将会被重复使用大量次数。即使微小的开销,面对亿万级的数据量,额外的代价也是巨大的。因此,在数据爆炸的今天,算法的快速实现变得愈发重要,算法实现的功耗效率也不容忽视。为了解决效率的问题,本发明通过硬件化提高效率。借助开源的risc

v架构或者mips架构等,首先实现了一个小型的cpu。然后通过指令集扩展的方法,将switching networks交换网络算法和基于该算法的随机跳转算法固化为两类专用指令,可以方便快捷地使用这两类算法。每当需要使用时,只需通过两类指令来完成。这种方法相对于传统的算法实现,有着良好的效率和可维护性。同时通过硬件实现比起软件实现,大大减少了算法运行的时序周期,提高了效率。
97.读进cpu的指令流文件,首先写一个c文件,c文件,包括:lfsr所用到的随机化种子(也是随机数,lfsr的随机化种子被随机,可以消弱侧信息),以及测试专用指令能否正确实现所需功能用到的n个函数等,其中也包括被保护函数。将c文件使用更改后的risc

v工具链编译成二进制文件(.bin为后缀的文件)然后将二进制文件转化为用verilog语言实现的cpu可以读入的16进制文件.16进制文件中每一行都是一个32位指令。
98.将c文件用risc

v工具链编译成bin文件,然后将其转化为可以读进cpu的指令流文件。
99.当指令流文件运行到交换网络指令时,cpu运行交换网络指令,cpu的交换网络指令模块中的lfsr算法使用随机化种子产生n/2bit随机数,用交换网络算法将n个寄存器里的值随机打乱(随机化,可以消除侧信息)。
100.cpu执行到随机跳转指令时,根据初始指令地址,和随机选择已经被打乱值的n个寄存器,函数的指令条数等进行跳转,cpu指令操作的顺序被随机化,cpu运行地址会随机跳转到随机的n个无依赖关系的待保护的代码段(函数)的入口地址继续执行,打乱了cpu指令操作的顺序,可以有效减弱侧信息,抵抗侧信道攻击。
101.实施例二
102.本实施例提供了交换网络和跳转算法指令化的侧信道攻击抵抗系统;
103.交换网络和跳转算法指令化的侧信道攻击抵抗系统,包括:
104.随机打乱模块,其被配置为:在n个待保护代码段运行前,基于随机数和switching networks交换网络算法,将cpu的n个寄存器里的值随机打乱;所述随机数,是基于lfsr算法产生的;
105.随机跳转模块,其被配置为:在n个待保护代码段运行时,基于初始地址、已经被打乱值的n个寄存器和待保护代码段的指令条数,采用随机跳转算法,将cpu运行地址随机跳转到一个待保护代码段的入口地址继续执行;
106.重复模块,其被配置为:经过switching networks交换网络算法的多次随机打乱和随机跳转算法的多次随机跳转,混淆产生的侧信息,以实现抗侧信道攻击。
107.此处需要说明的是,上述随机打乱模块、随机跳转模块和重复模块对应于实施例一中的步骤s101至s103,上述模块与对应的步骤所实现的示例和应用场景相同,但不限于上述实施例一所公开的内容。需要说明的是,上述模块作为系统的一部分可以在诸如一组计算机可执行指令的计算机系统中执行。
108.以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献

  • 日榜
  • 周榜
  • 月榜