首页> 中国专利> 一种基于硬件标签的内存敏感数据加密保护系统

一种基于硬件标签的内存敏感数据加密保护系统

摘要

本发明公开一种基于硬件标签的内存敏感数据加密保护系统,该系统包括硬件标签架构、硬件加密模块以及系统支持模块。硬件标签架构通过标签指令和标签清楚指令,实现动态追踪敏感数据;并在片内缓存或寄存器中额外拓展标签存储,并修改流水线以允许标签在处理器运算中从附属的源寄存器向目标寄存器传播;在片外缓存和片外内存之间构建标签缓存,用于减小需要从片外内存中取数据以及标签时的负载开销;硬件加密模块对进出芯片的敏感数据进行加密和解密;系统支持模块为硬件标签架构、硬件加密模块提供支持。本发明的系统可以高效地、细粒度地、强鲁棒性地保护程序内存中的敏感数据不被泄露。

著录项

  • 公开/公告号CN112906015A

    专利类型发明专利

  • 公开/公告日2021-06-04

    原文格式PDF

  • 申请/专利权人 浙江大学;

    申请/专利号CN202110104555.0

  • 申请日2021-01-26

  • 分类号G06F21/60(20130101);G06F21/78(20130101);

  • 代理机构33200 杭州求是专利事务所有限公司;

  • 代理人贾玉霞

  • 地址 310058 浙江省杭州市西湖区余杭塘路866号

  • 入库时间 2023-06-19 11:16:08

说明书

技术领域

本发明属于信息安全技术领域,具体涉及一种基于硬件标签的内存敏感数据加密保护系统。

背景技术

近年来,随着计算设备的普及,敏感数据泄露攻击变得泛滥。传统防御控制流劫持攻击的手段如stack cookie、DEP以及地址空间随机化无法防御基于仅数据流的泄露攻击,如心脏滴血漏洞能在不改变控制流的情况下从上千万台服务机器中窃取密钥,造成巨大危害。

运行数据流完整性保护时,性能代价过大,使得其难以部署。为此,选择性数据保护(selective data protection)策略提出可以仅保护内存中重要的数据对象而非所有数据对象。一些新的系统通过要求开发者对敏感变量进行标记,并以静态分析方式获取所有潜在敏感对象,在此基础上完成保护,从而实现了该策略。可是,这些基于软件实现工作虽然减少了一定的开销,却仍不足以满足实际使用的要求,且误差性大,扩展能力不足。而且,通过调研,可以发现现有工作忽略了使用选择性数据保护需要解决的挑战(敏感输入通道、粒度冲突、语义冲突),因此存在保护能力不足、甚至无法保证程序正确运行的缺陷。

发明内容

针对现有选择性敏感数据保护技术误差大、扩展性弱以及性能不足的问题,本发明提供一种基于硬件标签的内存敏感数据加密保护系统,具体技术方案如下:

一种基于硬件标签的内存敏感数据加密保护系统,该系统包括硬件标签架构、硬件加密模块以及系统支持模块;

所述的硬件标签架构提供特定的标签指令给系统支持模块,从而当敏感数据首次从片外存储或I/O设备载入片内缓存或寄存器时,完成标签的初始化;并提供标签清除指令给开发者,当非敏感数据在传播过程中被误打上标签时,清除标签保护;所述的硬件标签架构还在片内缓存或寄存器中额外拓展标签存储,并修改流水线以允许标签在处理器运算中从附属的源寄存器向目标寄存器传播;在片外缓存和片外内存之间构建标签缓存,用于减小需要从片外内存中取数据以及标签时的负载开销;当硬件标签粒度和内存读写粒度发生冲突时,所述的硬件标签架构优先保存敏感对象的标签不被抹除,从而保证数据对象保护的完备性;

所述的硬件加密模块连接片内一级缓存与片外数据总线,使用片内定制的、用户特权级无法访问的寄存器存储密钥,并借助动态传播的硬件标签识别需要保护的敏感数据对象,当敏感数据对象从片内缓存传输到片外存储或者I/O设备时,对其进行加密;当敏感数据从片外存储或I/O设备载入片内缓存或寄存器时,对其进行解密;

所述的系统支持模块拓展系统启动代码、线程调度代码以及相关数据结构,从而生成主从密钥、进行密钥管理以及线程调度过程中的密钥切换;拓展系统调用代码,用于标记用户能指定的敏感数据源,以保证用户要求保护的敏感数据在进入用户内存之前被标签追踪。

进一步地,所述硬件标签架构修改流水线以允许标签在处理器运算中从附属的源寄存器向目标寄存器传播时执行如下的规定:

内存相关指令运行时,从内存取出数据时,一并将数据对应的标签取入缓存或寄存器;将寄存器中数据写入缓存或内存时,一并将对应标签写入;

内存不相关指令运行时,若运算源寄存器中包含标签标记的敏感数据对象,则运算时将标签传播给运算目标寄存器,即将目标寄存器值标记为敏感。

进一步地,所述的硬件加密模块采用QARMA

本发明的有益效果如下:

本发明的基于硬件标签的内存敏感数据加密保护系统,使得攻击者在用户特权级下无法泄露硬件加密模块使用的加密密钥,在控制流无法更改下,其无法将被保护对象对应的标签抹除,故数据对象都将只以加密密文的形式进入片外设备返回给攻击者,使得攻击者获得内存任意读/任意写能力的情况下仍防止敏感数据对象被窃取,故保证了保密性。

附图说明

图1是本发明的硬件原型架构图。

图2是本发明的软硬件原型概念图。

图3为mibench基准测试程序性能负载图;

图4为真实应用性能负载图。

具体实施方式

下面根据附图和优选实施例详细描述本发明,本发明的目的和效果将变得更加明白,应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

本发明的基于硬件标签的内存敏感数据加密保护系统,包括硬件标签架构、硬件加密模块以及系统支持模块。

其中,硬件标签架构用于在运行时完成对敏感数据对象细粒度的动态信息流追踪,通过标签在内存以及寄存器中的传递将敏感数据对象从大量的普通数据对象之中区分出来,从而选择性保护内存中的敏感数据;

硬件加密模块连接片内一级缓存与片外数据总线,借助动态传播的硬件标签识别需要保护的敏感数据对象,当敏感数据从片内缓存传输到片外存储或者I/O设备时,该模块对携带已经初始化内存标签的缓存数据块进行对称加密保护,从而防止敏感数据以明文形式进入片外存储,以抵御泄露攻击;当敏感数据从片外存储或I/O设备载入片内缓存或寄存器前,该模块完成解密工作,以保证程序的正确运行。

系统支持模块拓展系统启动代码、线程调度代码以及相关数据结构,从而生成主从密钥、进行密钥管理以及线程调度过程中的密钥切换;拓展系统调用代码,用于标记用户能指定的敏感数据源,以保证用户要求保护的敏感数据在进入用户内存之前被标签追踪,保证用户能获取被标签保护的安全随机数,调整敏感输入通道。

进一步地,硬件标签架构提供特定的标签指令给系统支持模块,从而当敏感数据首次从片外存储或I/O设备载入片内缓存或寄存器时,完成标签的初始化。

进一步地,所述的硬件标签架构拓展传统架构仅在内存中存放标签位的设计,在片内缓存以及寄存器中额外拓展标签存储,并修改流水线以允许标签在处理器运算中从附属的源寄存器值向目标寄存器传播。标签传播过程中遵循严格动态传播规则,且为保证对敏感数据对象以及其变体进行全生命周期的完整保护,所述系统对处理器运算做如下规定:

(1)内存相关指令(包括内存取指令和内存写指令)运行时,从内存取出数据时一并将数据对应的标签取入缓存或寄存器;将寄存器中数据写入缓存或内存时,一并将对应标签写入;

(2)内存不相关指令(包括除去跳转指令外的其他运算指令)运行时,若运算源寄存器中包含标签标记的敏感数据对象,则运算时将标签传播给运算目标寄存器,即将目标寄存器值标记为敏感。

所述的硬件标签架构在处理硬件标签粒度和内存读写粒度发生冲突时,优先保存敏感对象的标签不被抹除来保证数据对象保护的完备性,解决粒度冲突的挑战。

进一步地,所述硬件标签架构还提供标签清除指令给开发者,当非敏感数据在传播过程中被误打上标签时,清除标签保护,防止硬件进行的信息流追踪,从而将标签传播到程序要进行输出的内存数据中,解决语义冲突。

进一步地,所述的硬件标签架构在片外缓存和片外内存之间构建标签缓存,从而进行系统优化,该标签缓存用于减小当片内缓存未命中时而需要从片外内存中取数据以及标签时的负载开销。

进一步地,所述的硬件加密模块使用QARMA

硬件加密模块使用片内定制的、用户特权级无法访问的寄存器存储密钥,从而进行细粒度的、线程级别的密钥管理。

以上所述的硬件标签架构、硬件加密模块以及系统支持模块之间的关系如图1所示。

下面给出本发明的基于硬件标签的内存敏感数据加密保护系统的一个具体实施例。

如图2所示,所设计的实例的模块需要从软件和硬件两个视角出发。对于硬件方面,本实例基于RISC-V开源工具链进行搭建,其中对设备寄存器,缓存(片内以及片外缓存)进行了标签存储的拓展。而对于内存,本实例提供的标签架构为避免专门提供标签存储额外使用DRAM带来的高昂成本,选择采取偏移模式将标签表同数据一起存储与内存中(该选择在64位地址架构下仅额外造成1.56%的存储代价)。

本实例提供的硬件标签架构拓展流水线能力,使得寄存器拓展的标签能根据规则寄存器配置动态将源寄存器对应的标签传播给目标寄存器。对于内存读写指令,对应的标签将一并读写。

本实例提供的硬件标签架构构建标签缓存,该优化能有效减小所述发明在缓存未命中需要访问内存时需要额外访问标签表所带来的额外开销。

本实例提供的硬件加密模块通过片内特定寄存器存储的密钥完成对片内进入片外敏感数据的加密以及片外载入片内敏感数据的解密。

对于软件方面,如图2,本实例主要基于Linux开源操作系统进行的修改,具体如下:

(1)本实例提供的操作系统要对特定的密钥寄存器进行管理,在系统启动时完成主密钥的随机生成,这通过修改内核_start_kernel函数完成;

(2)本实例提供的操作系统在新的线程创建时会依靠已经生成的主密钥来为该线程初始化专门的从密钥。这通过修改内核copy_thread函数完成;

(3)本实例提供的操作系统在线程调度过程中需要将特定密钥寄存器中使用的密钥更换为运行线程使用的密钥,这通过修改内核__switch_to与_save_context函数完成;

(4)本实例提供的操作系统为使用者提供特定系统调用以及额外的系统调用选项来支持对敏感数据对象硬件标签的初始化。这主要通过修改内核copy_to_user函数完成。

基于以上的修改,系统支持模块允许开发者利用所述系统提供给的API去标记敏感数据源对象(如图2中的文件,管道等),本实例展示如下代码例进行分析,具体如下:

该例中,开发者可以使用特定的O_SENSITIVE标签打开文件获得句柄,操作系统为该句柄附上保护属性,当进而调用数据读取时,操作系统会使用额外支持标签的copy_to_user函数来完成。

本发明通过模拟器原型进行验证,其实验结果表明,本发明的系统能够以极小的代价(3%)来保护复杂的程序(如OpenSSL库)对抗敏感数据泄露攻击。

结合上例,本发明的基于硬件标签的内存敏感数据加密保护系统,开发者在使用时根据如下步骤:

(1)开发者编写/更改程序,使用所述系统提供的API去标记敏感数据源。如以特定的属性打开包含私钥的文件对象。

(2)开发者使用所述系统提供的工具链构建目标程序,链接所述系统提供的动态库函数。

(3)开发者根据需要可配置所述系统提供的默认标签传播规则。

(4)开发者运行目标程序,通过监控所述系统有无抛出异常来防御潜在的隐私数据泄露攻击。

为验证本发明的可用性,发明通过如下方法论依靠实验进行了检验。

所选实例使用标准指令模拟器Spike进行处理器建模,并使用标准内存模拟器DRAMSim3进行内存建模。此外,本发明还设计编写了缓存与加密模块以搭建整体实例架构模型来运行所修改的Linux操作系统。实验时,本发明首先使用标准的测试基准mibench对实例架构进行了性能测试,结果如图3所示。图3所示的结果是实例架构在未标记任何敏感数据下的,仅由标签架构所带来的性能负载结果。结果表示,在多数非内存忙程序,如bitcount等,本实例的标签架构造成的负载不超过2.0%;而对于部分内存忙程序,标签架构可能造成超过10.0%以上的负载。即使如此,也比现有的软件解决方案更高效。

在图3的基础上,本发明对4类常用的隐私数据相关的应用程序进行了再次实验;对于密码学应用rijndael和blowfish,实验中保护其使用的对称密钥;对于zip30,实验中对其加密压缩使用的流密钥进行保护;而对于库OpenSSL,实验中对应用读取的私钥证书以及SSL通信所使用的主密钥进行保护。这样验证了在提供真正加密保护的情况下,该实例所带来的性能负载,如图4所示。从图4可以看出,即使如OpenSSL这样复杂的应用库代码,实例也能在非常小的性能代价下(2.28%)完成对敏感数据的内存加密保护,证明了本发明的高效、实用性。

本领域普通技术人员可以理解,以上所述仅为发明的优选实例而已,并不用于限制发明,尽管参照前述实例对发明进行了详细的说明,对于本领域的技术人员来说,其依然可以对前述各实例记载的技术方案进行修改,或者对其中部分技术特征进行等同替换。凡在发明的精神和原则之内,所做的修改、等同替换等均应包含在发明的保护范围之内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号