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

一种细粒度的运行时敏感数据随机化保护方法

2022-06-01 16:13:06 来源:中国专利 TAG:


1.本发明涉及计算机应用运行时安全领域,尤其涉及一种细粒度的运行时敏感数据随机化保护方法。


背景技术:

2.内存是计算机体系结构中重要的组成部分,任何程序的运行代码、处理数据都会存储在内存中。谷歌工程师曾对旗下浏览器中2015年以来的高危漏洞进行过统计,结果显示其中约70%都是内存相关的漏洞。
3.程序在运行时会在内存中生成不同类型的各类数据,这其中包含返回地址、状态变量以及密码学算法密钥等敏感信息,直接使用软件的方法进行保护往往会带来较大的性能开销。主流的处理器厂商尽管提供了例如intel aes-ni等常见的密码学算法加密引擎,但并不适用于频繁的加解密操作,目前的计算机体系结构中仍然缺少针对细粒度的运行时敏感数据保护原语。


技术实现要素:

4.针对现有技术的不足,本发明提供一种细粒度的运行时敏感数据随机化保护方法,具体技术方案如下:
5.本发明公开了一种细粒度的运行时敏感数据随机化保护方法,通过扩展指令集的方式在指令层面添加敏感数据机密性和完整性密码学保护扩展指令来提供保护敏感数据机密性和完整性的细粒度密码学操作原语,当操作系统内核或用户态应用程序进程需要对敏感数据进行操作时,需要使用扩展后的密码学操作原语对敏感数据进行加密或解密操作,加密或解密时需要提供额外的密钥和调柄信息,以及数据保护范围的选择信息。
6.作为进一步地改进,当操作系统内核或用户态应用程序进程需要将敏感数据存储到内存中时,使用扩展后的密码学操作指令对敏感数据进行加密实现随机化效果;当操作系统内核或应用程序进程需要使用敏感数据时,使用扩展后的密码学操作指令对敏感数据进行解密实现去随机化效果,本发明的核心保护功能是通过密码学操作来进行加解密完成的。
7.作为进一步地改进,本发明所述的敏感数据机密性和完整性密码学保护扩展指令包含:对全部内容进行加密的加密指令,对部分内容进行加密并填充完整性校验信息的加密指令,对全部内容进行解密的解密指令,对全部内容进行解密并校验部分内容完整性的解密指令,对全部内容进行解密并检验部分内容完整性后进行符号扩展的解密指令,对全部指令类型进行了介绍,除了单纯加解密的指令(用于保护数据的机密性),还在加解密的基础上增加了完整性校验信息用于保护数据的完整性和机密性。
8.作为进一步地改进,本发明所述的敏感数据机密性和完整性密码学保护扩展指令接收操作内容、密钥、调柄以及选择范围的起始和结束字节五个输入,产生加解密后的结果这一个输出。
9.作为进一步地改进,本发明所述的密钥应存储在包括内核态在内的更高特权级可访问的隔离的特殊寄存器中,当同时保护操作系统内核和用户态应用程序时应添加额外的随机数偏移,确保跨特权态时没有信息泄露;加解密的过程中需要密钥,这里要求密钥不应被泄露。
10.作为进一步地改进,本发明所述的敏感数据机密性和完整性密码学保护扩展指令对敏感内容进行加密或解密时选用轻量级对称密码算法,包括:异或运算、轻量级分组密码、轻量级可调分组密码,选用轻量级的密码算法是为了保证不影响性能。
11.作为进一步地改进,本发明所述的敏感数据包括操作系统内核和用户态程序的返回地址、函数指针等控制流数据,敏感操作的中间结果、相关密钥,影响程序分支决策的状态变量等非控制流数据。
12.作为进一步地改进,本发明所述的调柄根据使用场景的不同,使用固定常量或随机数、时间戳、变量地址信息,以提供普通随机化保护、结合时间状态的随机化保护、结合空间状态的随机化保护,通过使用调柄,可以抵御替换攻击。
13.作为进一步地改进,本发明所述的数据保护范围的选择信息根据范围长度的不同实现不同效果的保护,当选择范围小于机器字长时能够提供完整性和机密性保护,等于机器字长时至少能够提供机密性保护,这是机密性保护和完整性保护的开启条件。
14.本发明的有益效果如下:
15.本发明公开一种细粒度的运行时敏感数据随机化保护方法能够为操作系统内核和用户态应用程序提供细粒度的运行时数据随机化保护。本发明通过在指令层面引入密码学操作的基本原语,同时结合扩展指令中灵活的保护范围选择功能,可以高效地对任意长度的敏感数据进行密码学操作。由于攻击者无法直接对随机化后的数据进行篡改,因此使用本发明所提出的扩展指令集进行保护的程序能够抵御各类内存相关的软件攻击;其能够根据输入地选择范围的不同,灵活地提供完整性和机密性保护,同时根据提供调柄的不同,灵活地提供时间或空间上的内存安全保护,填补了目前计算机体系结构中针对细粒度的运行时敏感数据保护原语的设计空缺。
具体实施方式
16.本发明公开了一种细粒度的运行时敏感数据随机化保护方法,通过扩展指令集的方式在指令层面提供保护敏感数据机密性和完整性的细粒度密码学操作原语,当操作系统内核或用户态应用程序进程需要对敏感数据进行操作时,需要使用扩展后的密码学操作原语对敏感数据进行加密或解密操作,加密或解密时需要提供额外的调柄信息,以及数据保护范围的选择信息。
17.当操作系统内核或用户态应用程序进程需要将敏感数据存储到内存中时,使用扩展后的密码学操作指令对敏感数据进行加密实现随机化效果;当操作系统内核或应用程序进程需要使用敏感数据时,使用扩展后的密码学操作指令对敏感数据进行解密实现去随机化效果。
18.敏感数据机密性和完整性密码学操作指令扩展包含:对全部内容进行加密的加密指令,对部分内容进行加密并填充完整性校验信息的加密指令,对全部内容进行解密的解密指令,对全部内容进行解密并校验部分内容完整性的解密指令,对全部内容进行解密并
检验部分内容完整性后进行符号扩展的解密指令;敏感数据机密性和完整性密码学操作指令扩展接收操作内容、密钥、调柄以及选择范围的起始和结束字节五个输入;密钥应存储在包括内核态在内的更高特权级可访问的隔离的特殊寄存器中,当同时保护操作系统内核和用户态应用程序时应添加额外的随机数偏移,确保跨特权态时没有信息泄露。
19.敏感数据机密性和完整性密码学操作指令扩展对敏感内容进行加密或解密时选用轻量级对称密码算法,包括但不限于:异或运算、轻量级分组密码(present、lblock)、轻量级可调分组密码(qarma、craft、skinny、lilliput)。在符合安全性要求的前提下,应优先选择延时小、易于硬件实现的算法。
20.敏感数据包括操作系统内核和用户态程序的返回地址、函数指针等控制流数据、敏感的中间结果(密码学库运算过程中生成的中间变量)和相关密钥、状态变量(影响分支决策的非控制流数据)。
21.调柄根据使用场景的不同,可以使用固定常量或随机数、时间戳、变量地址信息,以提供普通随机化保护、结合时间状态的随机化保护、结合空间状态的随机化保护;另外,保护选择范围根据范围长度的不同可以实现不同效果的保护,当选择范围小于机器字长时能够提供完整性和机密性保护,等于机器字长时至少能够提供机密性保护。
22.下面通过具体实施例详细描述本发明,本发明的目的和效果将变得更加明白,应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
[0023][0024]
上表是risc-v架构下细粒度的运行时敏感数据随机化指令扩展格式说明,以risc-v指令集为例来说明如何进行指令集扩展以提供细粒度的数据随机化保护。随机化是通过加密实现的,下文中不对随机化(去随机化)和加密(解密)进行区分。加解密所使用的密码算法应选用轻量级对称密码算法。轻量级密码学算法包括但不限于:异或运算、轻量级分组密码(present、lblock)、轻量级可调分组密码(qarma、craft、skinny、lilliput)。在符合安全性要求的前提下,应优先选择延时小、易于硬件实现的算法。
[0025]
整体指令采用r类型格式,该类型拥有两个源输入寄存器,一个目标寄存器。在扩展方案中,使用1号源寄存器存储待随机化(或去随机化)的数据,2号源寄存器存储随机化(或去随机化)所使用的调柄,目的寄存器存储随机化(或去随机化)后的结果。使用funct3区域对随机化过程中所使用的密钥进行编码。funct7用于对操作范围和模式进行编码,其中最低位用于标明该指令是加密操作还是解密操作,第1位到第3位用于选择起始字节start byte,第4位到第6位用于选择结束字节end byte。
[0026]
为方便描述,指定加密指令的汇编格式为:cre[x]k rd,rs[e:s],rt,解密指令的汇编格式为:crd[x]k(s)rd,rs,rt,[end:start]。对于加密操作cre[x]k,从start byte到end byte截取rs寄存器中的明文数据并在其两侧填充0补齐至64位,后用密钥x和rt寄存器中的调柄进行加密,并将结果保存至rd寄存器;对于解密操作crd[x]k(s),使用密钥x和rt寄存器中的调柄对rs寄存器中的内容进行解密,解密后检测结果的startbyte到endbyte以
外的内容是否是全0,通过检测后将检测结果保存到rd寄存器中(若设置了s位,则对结果进行符号扩展),若未通过检测,处理器则会抛出异常状态。
[0027]
扩展后的指令是设计中对敏感数据进行保护的基本单位,负责对输入内容进行密码学算法运算,密钥的存储、更新等管理逻辑交由操作系统内核以及可信固件负责。密钥应存储在包括内核态在内的更高特权级可访问的隔离的特殊寄存器中,当同时保护操作系统内核和用户态应用程序时应添加额外的随机数偏移,确保跨特权态时没有信息泄露。
[0028]
根据使用场景的不同,调柄寄存器可以使用固定常量或随机数、时间戳、变量地址信息,能够提供普通随机化保护、结合时间状态的随机化保护、结合空间状态的随机化保护。
[0029]
根据保护范围的不同,当选择范围小于8字节时能够提供完整性和机密性保护,等于8字节时能够提供机密性保护。
[0030]
敏感数据包括操作系统内核和用户态应用程序的返回地址、函数指针等控制流数据、敏感的中间结果(密码学库运算过程中生成的中间变量)和相关密钥、状态变量(影响分支决策的非控制流数据)。
[0031][0032]
上面给出了risc-v架构下不同类型的数据在不同保护范围下使用敏感数据随机化扩展指令进行保护的汇编代码示例,示例中假设使用了39位虚拟地址空间,待操作数据在a0寄存器中,并使用待保护变量在内存中的地址作为调柄,其低32位地址在t1寄存器中,高32位地址在t2寄存器中,同时所有示例均使用密钥a进行操作。
[0033]
本领域普通技术人员可以理解,以上所述仅为发明的单个实例而已,并不用于限制发明,尽管参照前述实例对发明进行了详细的说明,对于本领域的技术人员来说,其依然可以对前述各实例记载的技术方案进行修改,或者对其中部分技术特征进行等同替换。凡在发明的精神和原则之内,所做的修改、等同替换等均应包含在发明的保护范围之内。
再多了解一些

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

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

相关文献