一种适用于RISC-V处理器的故障攻击检测方法
未命名
09-24
阅读:115
评论:0
一种适用于risc-v处理器的故障攻击检测方法
技术领域
1.本发明涉及集成电路硬件安全的技术领域,尤其是一种适用于risc-v处理器的模式可配置的故障攻击检测方法。
背景技术:
2.集成电路广泛应用于工业生产、移动通信、便携支付等社会发展的各个领域。其在不断发展的同时,安全问题也日益严重,集成电路安全受到广泛关注。集成电路的安全威胁主要来自侧信道攻击和故障注入攻击。故障注入攻击(fault injection attack,fia)作为一种新的集成电路攻击技术,攻击能力强、所需时间短,逐渐成为集成电路攻击最有效的手段。
3.risc-v指令集架构具有精简、低功耗、模块化、可扩展等多项优势。然而,risc-v指令集架构当前在软件生态、操作系统支持以及微架构等方面并不成熟,这使得基于risc-v指令集架构的处理器芯片在设计与应用中最敏感的安全问题难以完全得到覆盖。处理器电路在执行安全敏感的应用时受到了故障注入攻击的严重威胁。当前,针对处理器的故障注入攻击通过引入扰动(例如电源或时钟故障、电磁辐射、激光注入)来窃取隐私信息或绕过安全功能。
4.抗故障注入攻击技术可以确保芯片内部信息安全,包括物理隔离、环境监测及故障检测等技术。故障检测技术包括基于数字传感器的故障检测和基于冗余的故障检测。基于冗余的故障检测技术由于无需额外设备、成本较低而被广泛使用,包括空间冗余、时间冗余及信息冗余。与空间冗余和时间冗余相比,信息冗余所需资源和时间成本均较低,然而故障检测率也有所降低。不同的安全应用场景,不同程序安全敏感程度,对故障检测电路的故障检测能力、时间代价提出了不同的要求。因此,有必要寻找一种平衡故障检测能力和时间开销,并且可配置的故障注入检测方法。
技术实现要素:
5.针对不同的应用场景、数据敏感程度对防护电路的安全性等级的需求,本发明的目的在于提出一种适用于risc-v处理器的故障攻击检测方法,实现了适用于risc-v处理器微架构的模式可配置故障攻击检测。
6.本发明利用以下技术方案实现:
7.一种适用于risc-v处理器的故障攻击检测方法,,该方法具体包括以下步骤:
8.步骤1-1、确定risc-v处理器自定义指令的操作,每条自定义指令所执行的操作包含1)完成原有risc-v处理器32位整数指令集支持的加法运算、减法运算、异或运算、或运算和与运算;2)执行基于信息冗余或时间冗余的故障检测模式;
9.步骤1-2、确定步骤1-1中的自定义指令及其32位指令编码格式;
10.步骤1-3、确定自定义控制和状态寄存器(csr)的地址和功能,即mreply寄存器中存储的数据为步骤1-1中确定的自定义指令工作模式的配置信息;
11.步骤1-4、扩展risc-v处理器微架构的指令译码单元,添加自定义指令译码单元实现对自定义指令的译码,得到扩展后的risc-v处理器指令译码单元;;
12.步骤1-5、在步骤1-4得到的扩展后的risc-v处理器微结构中添加自定义硬件逻辑,进行检测模式可配置的故障检测,所述检测模式可配置的故障检测的相关操作实现具体包括进行冗余模式控制硬件实现,根据写入mreply寄存器中的配置信息对检测模式进行配置,其中低2位检测模式配置域,00表示将自定义指令配置为信息冗余模式,01、10和11表示将自定义指令配置为时间冗余模式,mreply寄存器中配置信息具体的数值对应指令复算的次数,01表示复算1次,10表示复算2次,11表示复算3次。
13.与现有技术相比,本发明有效提高了risc-v处理器电路故障检测功能的灵活性、可配置性。
附图说明
14.图1是本发明一种适用于risc-v处理器的故障攻击检测方法硬件实现示意图;
15.图2是本发明中模式可配置的故障攻击检测方法示意图;
16.图3是步骤1中的自定义指令添加流程图;
17.图4是步骤1中的risc-v处理器自定义指令和步骤2中的mreply寄存器配置信息在拟在扩展后支持故障攻击检测的risc-v处理器上运行的目标程序中整合流程图。
具体实施方式
18.以下结合附图对本发明作进一步详细说明。应当理解,此处所描述的具体实施方式仅仅用以解释本发明,并不用于限定本发明。
19.如图1所示,为本发明的一种适用于risc-v处理器微架构的故障攻击检测方法流程图,以下对各个实施步骤进行说明,如下步骤的实施的是基于原有risc-v处理器微架构为顺序、单发射的二级流水线结构(取指阶段为第一级流水线,其余阶段为第二级流水线)。
20.步骤1-1、确定risc-v处理器自定义指令的操作类型,每条自定义指令所执行的操作包含1)完成原有risc-v处理器32位整数指令集支持的加法运算、减法运算、异或运算、或运算和与运算;2)在执行上述运算的基础上,执行基于信息冗余或时间冗余的故障检测模式;
21.步骤1-2、确定步骤1-1中的自定义指令及其32位指令编码格式,即以rv32i指令集为基础的添加自定义指令,例如自定义算术逻辑指令addf(加法运算)、subf(减法运算)、xorf(异或运算)、orf(或运算)和andf(与运算)和立即数类型指令addif(立即数加法运算)、xorif(立即数异或运算操作)、orif(立即数或运算操作)和andif(立即数与运算操作);上述自定义指令的32位指令编码中寄存器类型指令的低7位操作码为1110111,立即数类型指令的低7位操作码为1010011,高25位与相应的add、sub、xor、or、and、addi、xori、ori、andi的指令编码相同;
22.步骤1-3、在risc-v处理器32位整数指令集架构规范中规定的控制和状态寄存器(control and status registers,csr)地址区间中选取0xf16为地址添加自定义控制和状态寄存器,将该自定义控制和状态寄存器命名为mreply,确定自定义控制和状态寄存器的地址和功能,即mreply寄存器中存储的数据为步骤1-1中确定的自定义指令在工作模式下
的配置信息,其中低2位检测模式配置域,用于配置自定义指令的工作模式,具体来说,00为信息冗余模式,01为在时间冗余模式下复算1次,10为复算2次,11为复算3次;mreply寄存器配置信息通过csr寄存器写指令csrrw将配置信息写入mreply寄存器的信息位中;
23.步骤1-4、扩展risc-v处理器微架构的指令译码单元,添加自定义指令译码单元,用于实现对步骤1-2中添加的自定义指令的译码,得到扩展后的risc-v处理器指令译码单元;;
24.步骤1-5、在步骤4得到的扩展指令译码单元后的risc-v处理器微结构中添加自定义硬件逻辑,进行检测模式可配置的故障检测,所述检测模式可配置的故障检测的相关操作实现具体包括:
25.如图2所示,为自定义指令检测模式可配置的电路架构示意图。根据该电路执行以下步骤:
26.步骤1-5-1、进行信息冗余模式硬件实现,即:当通用寄存器组中的源寄存器和指令寄存器在指令执行阶段时,完成对源寄存器和指令寄存器的读操作进行基于字节奇偶校验的故障检测;在执行阶段,处理器中的算术逻辑单元用于实现操作数a和b间的算术逻辑运算,运算类型与指令类型相对应,操作数a和b均来自源寄存器或分别来自源寄存器和指令寄存器,对算术逻辑单元执行结果奇偶性的预测值进行计算,将预测值与执行结果构成的信息位写入目的寄存器,在指令执行完成后的下一个时钟周期,根据目的寄存器中存储的信息位求取执行结果奇偶校验位的实际值,比较校验位的实际值与预测值,从而实现对算术逻辑单元的故障攻击检测;
27.将指令寄存器、通用寄存器组在原有的32比特信息位的基础上添加4位字节奇偶校验位,在指令执行阶段进行对指令寄存器、通用寄存器组中源寄存器的字节奇偶校验,实现故障检测。因此,每次写入所述指令寄存器、通用寄存器组的32位数据信息位d包含4位校验位p,由下式表示:
[0028][0029]
其中,pn(d)表示数据d中第n+1个字节的奇偶校验位,n=0、1、2、3,i表示数据d的索引。
[0030]
实现在risc-v处理器的信息冗余模式下通过在指令执行完成后的下一个时钟周期比较算术逻辑单元执行结果奇偶性的实际值和预测值对risc-v处理器的算术逻辑单元进行故障检测。
[0031]
例如,算数逻辑单元的操作数a和b执行加法运算,和的奇偶性通过异或两个加数的奇偶性及加法运算过程产生的所有进位得到的。在处理器微架构实现中,为了节约硬件开销,加法指令和减法指令多采用同一加法器实现。基于此,针对addf、subf和addif指令执行时涉及的算术逻辑单元运算字节奇偶校验位的预测值如下式所示:
[0032][0033]
其中,a和b为算术逻辑单元的两个操作数,pn(a+b)、pn(a)和pn(b)分别表示操作数a与b之和、操作数a以及操作数b的第n+1个字节的奇偶校验位,n=0、1、2、3,c
in
(n)表示第n个字节运算的进位输出,n=0时c
in
(n)取0,表示第n+1个字节加法运算过程中第j位
产生的进位。
[0034]
针对算术逻辑指令andf、orf、xorf、andif、orif和xorif指令执行时涉及的算术逻辑单元运算字节奇偶校验位的预测值,如下式所示:
[0035][0036]
其中,a和b为算术逻辑单元的两个操作数,pn(a|b)和pn(a&b)分别表示操作数a与b异或运算、或运算以及与运算的第n+1个字节的奇偶校验位,n=0、1、2、3。
[0037]
将通过上述方法得到的执行结果字节奇偶性预测值和指令执行结果写入目的寄存器中,在下一个时钟周期对寄存器中存储的信息位进行奇偶校验;
[0038]
步骤1-5-2、进行时间冗余模式硬件实现,即为了实现高于信息冗余的故障覆盖率,构建面向risc-v处理器微架构的指令复算机制。设复算指令为v,复算指令v在时钟周期t被取指,在下一个时钟周期t+1被译码、执行和写回,指令复算次数为r。复算机制的实现过程如下:
[0039]
执行后一个时钟周期t+1的复算指令v之后,将复算指令v执行后的计算结果存入临时寄存器中,该时钟周期同时作为下一条复算指令对应的地址生成阶段,在计算下一条指令的取指地址时,不进行程序计数器加地址增量的计算,继续保持指向前一条需要被复算的指令的地址。
[0040]
在后两个时钟周期t+2,对复算指令v执行第1次复算时将复算指令执行后的计算结果与上一周期t+1存入寄存器中的值相比较,发生不匹配时表示复算指令执行时出现故障,则停止执行复算指令;如果匹配则继续进行重复取指,继续执行复算指令直至完成设定的复算次数;
[0041]
步骤1-5-3、进行冗余模式控制硬件实现,根据写入mreply寄存器中的配置信息对检测模式进行配置,其中低2位检测模式配置域,00表示将自定义指令配置为信息冗余模式,01、10和11表示将自定义指令配置为时间冗余模式,mreply寄存器中配置信息具体的数值对应指令复算的次数,01表示复算1次,10表示复算2次,11表示复算3次。
[0042]
如图3所示,为步骤1中的自定义指令添加流程图。对各个实施步骤进行说明如下:
[0043]
步骤2-1、生成自定义指令操作码宏定义。根据所述步骤2中的自定义指令及其编码,利用riscv-opcodes工具生成自定义指令addf、subf、xorf、xorf、andf、addif、xorif、xorif和andif对应的宏定义;
[0044]
步骤2-2、添加自定义指令操作码宏定义到risc-v gnu工具链中的二进制工具的源文件中,使risc-v编译工具(risc-v gcc)识别步骤2-1添加的自定义指令,在程序编译过程中将其翻译为机器码。
[0045]
如图4所示,为步骤1中的risc-v处理器自定义指令和步骤2中的mreply寄存器配置信息在拟在扩展后支持故障攻击检测的risc-v处理器上运行的目标程序中整合流程图。整合流程分为c程序整合流程和汇编代码整合流程示意图。
[0046]
源代码(.c)整合流程为,在程序内将mreply寄存器写指令csrrw通过内联汇编添加到原始的c源代码中,实现自定义指令工作模式的配置信息写入;针对程序中安全敏感的
算术逻辑指令,则添加通过替换编译生成的.hex文件中对应指令的操作码字段为上述步骤1-2添加的自定义实现。
[0047]
汇编代码(.s)的整合流程为,直接将mreply寄存器写指令添加到汇编代码中,针对其中安全敏感的算术逻辑指令,将其直接替换为步骤1-2中添加的自定义指令。由于在步骤2-2中已经对risc-v gnu工具链进行修改并重新编译,因此自定义指令能够被risc-v编译工具(risc-v gcc)识别。
[0048]
综上所述,本发明的一种适用于risc-v处理器微架构的模式可配置故障攻击检测方法,实现支持算术逻辑运算、基于冗余的故障检测功能的自定义指令扩展。该方法包含软件层面和硬件层面。软件层面包含添加自定义算术逻辑运算指令,修改risc-v工具链,使gcc工具能够识别添加的自定义指令。硬件层面包含修改硬件支持自定义指令。自定义指令支持原有的加法、减法、逻辑运算、故障检测计算等。模式配置通过添加自定义控制和状态寄存器mreply,通过控制寄存器写指令将配置信息写入mreply寄存器,对上述自定义指令的模式进行配置,实现处理器速度和安全性的折中。该方法支持根据不同的安全敏感等级为自定义指令配置不同的模式。程序安全敏感等级低时,将需要保护的算术逻辑运算指令替换为对应的自定义指令并配置为低故障检测率、不牺牲时钟周期数的信息冗余工作模式;程序安全敏感等级高时,将需要保护的算术逻辑运算指令替换为对应的自定义指令并配置为高故障检测率、牺牲时钟周期数的时间冗余工作模式。
[0049]
以上所述仅是本发明的优选实施方式,应当指出的是,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和组合、润饰,这些改进和组合、润饰也应视为均落入本发明申请保护范围。
技术特征:
1.一种适用于risc-v处理器的故障攻击检测方法,其特征在于,该方法具体包括以下步骤:步骤1-1、确定risc-v处理器自定义指令的操作,每条自定义指令所执行的操作包含1)完成原有risc-v处理器32位整数指令集支持的加法运算、减法运算、异或运算、或运算和与运算;2)执行基于信息冗余或时间冗余的故障检测模式;步骤1-2、确定步骤1-1中的自定义指令及其32位指令编码格式;步骤1-3、确定自定义控制和状态寄存器的地址和功能,即mreply寄存器中存储的数据为步骤1-1中确定的自定义指令工作模式的配置信息;步骤1-4、扩展risc-v处理器微架构的指令译码单元,添加自定义指令译码单元实现对自定义指令的译码,得到扩展后的risc-v处理器指令译码单元;;步骤1-5、在步骤1-4得到的扩展指令译码单元后的risc-v处理器微结构中添加自定义硬件逻辑,进行检测模式可配置的故障检测,所述检测模式可配置的故障检测的相关操作实现具体包括进行冗余模式控制硬件实现,根据写入mreply寄存器中的配置信息对检测模式进行配置,其中低2位检测模式配置域,00表示将自定义指令配置为信息冗余模式,01、10和11表示将自定义指令配置为时间冗余模式,mreply寄存器中配置信息具体的数值对应指令复算的次数,01表示复算1次,10表示复算2次,11表示复算3次。2.如权利要求1所述的一种适用于risc-v处理器的故障攻击检测方法,其特征在于,当程序安全敏感等级低时,将需要保护的算术逻辑运算指令替换为对应的自定义指令并配置为信息冗余工作模式;程序安全敏感等级高时,将需要保护的算术逻辑运算指令替换为对应的自定义指令并配置为时间冗余工作模式。3.如权利要求1所述的一种适用于risc-v处理器的故障攻击检测方法,其特征在于,所述步骤1-5中还包括信息冗余模式硬件实现,即当通用寄存器组中的源寄存器和指令寄存器在指令执行阶段时,完成对两个寄存器读操作进行基于字节奇偶校验的故障检测;在执行阶段,处理器中的算术逻辑单元用于实现操作数a和b间的算术逻辑运算,运算类型与指令类型相对应,对算术逻辑单元执行结果奇偶性的预测值进行计算,将校验位预测值、执行结果写入目的寄存器,在指令执行完成后的下一个时钟周期,对目的寄存器中存储的信息位进行奇偶校验;实现在risc-v处理器的信息冗余模式下通过比较算术逻辑单元执行结果奇偶性的实际值和预测值对risc-v处理器的算术逻辑单元进行故障检测;针对算术逻辑指令执行时涉及的算术逻辑单元运算执行结果的字节奇偶校验位的预测值,如下式所示:其中,a和b为算术逻辑单元的两个操作数,p
n
()表示括号数据的信息位中第n+1个字节的奇偶校验位,n=0、1、2、3;将通过上述方法得到的执行结果字节奇偶性预测值和指令执行结果写入目的寄存器中,在下一个时钟周期对寄存器中存储的信息位进行奇偶校验。
4.如权利要求1所述的一种适用于risc-v处理器的故障攻击检测方法,其特征在于,在所述步骤1-5中还包括时间冗余模式硬件实现即构建面向risc-v处理器微架构的指令复算机制:执行后一个时钟周期t+1的复算指令v之后,将复算指令v执行后的计算结果存入临时寄存器中,该时钟周期同时作为下一条复算指令对应的地址生成阶段,在计算下一条指令的取指地址时,不进行程序计数器加地址增量的计算,继续保持指向前一条需要被复算的指令的地址;在后两个时钟周期t+2,对复算指令v执行第1次复算时将复算指令执行后的计算结果与上一周期t+1存入寄存器中的值相比较,发生不匹配时表示复算指令执行时出现故障,则停止执行复算指令;如果匹配则继续进行重复取指,继续执行复算指令直至完成设定的复算次数。5.如权利要求1所述的一种适用于risc-v处理器的故障攻击检测方法,其特征在于,其中所述步骤1中的自定义指令添加流程,具体实施步骤如下:步骤2-1、生成自定义指令操作码宏定义,根据所述步骤2中的自定义指令及其编码,利用riscv-opcodes工具生成自定义算术逻辑指令对应的宏定义;步骤2-2、添加自定义指令操作码宏定义到risc-vgnu工具链中的二进制工具的源文件中,使risc-v编译工具识别步骤2-1添加的自定义指令,在程序编译过程中将其翻译为机器码。6.如权利要求1所述的一种适用于risc-v处理器的故障攻击检测方法,其特征在于,所述步骤1中的risc-v处理器自定义指令和步骤2中的mreply寄存器配置信息在拟在扩展后支持故障攻击检测的risc-v处理器上运行的目标程序中的整合流程分为c程序整合和汇编代码整合,其中:源代码整合流程包括在目标程序内将mreply寄存器写指令csrrw通过内联汇编添加到原始的c源代码中,实现自定义指令工作模式的配置信息写入;针对程序中安全敏感的算术逻辑指令,则添加通过替换编译生成的.hex文件中对应指令的操作码字段为上述步骤1-2添加的自定义指令来实现;汇编代码整合流程包括直接将mreply寄存器写指令添加到汇编代码中,将其中安全敏感的算术逻辑指令直接替换为步骤1-2中添加的自定义指令。
技术总结
本发明公开了一种适用于RISC-V处理器的故障攻击检测方法,确定RISC-V处理器自定义指令的操作;确定步骤1-1中的自定义指令及其32位指令编码格式;确定自定义控制和状态寄存器的地址和功能;修改RISC-V处理器微架构的译码单元,添加指令译码单元实现对自定义指令的译码,对译码单元进行自定义译码单元扩展后,在RISC-V处理器微架构中添加自定义硬件逻辑,进行检测模式可配置的故障检测,包括冗余信息模式和时间冗余模式的硬件实现,以及冗余模式控制硬件实现,得到扩展后的RISC-V处理器微结构。与现有技术相比,本发明有效提高了RISC-V处理器电路故障检测功能的灵活性、可配置性。可配置性。可配置性。
技术研发人员:刘强 李一可
受保护的技术使用者:天津大学
技术研发日:2023.05.18
技术公布日:2023/9/22
版权声明
本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
航空之家 https://www.aerohome.com.cn/
航空商城 https://mall.aerohome.com.cn/
航空资讯 https://news.aerohome.com.cn/