一种基于RISC-V架构的硬件内存加密系统及其应用技术方案

技术编号:37346683 阅读:24 留言:0更新日期:2023-04-22 21:41
本发明专利技术属于硬件内存安全领域,具体涉及一种基于RISC

【技术实现步骤摘要】
一种基于RISC

V架构的硬件内存加密系统及其应用


[0001]本专利技术属于硬件内存安全领域,更具体地,涉及一种基于RISC

V架构的硬件内存加密系统及其应用。

技术介绍

[0002]为了防止针对内存设备软硬件的攻击造成的内存数据泄漏风险,工业界和学术界一般会对内存数据进行加密。加密方式主要分为硬件加密和软件加密。
[0003]目前学术界和工业界已有许多成熟的硬件内存加密技术。Intel公司研发的MKTME技术是一种多密钥的全内存加密技术,它使用物理地址的上位数作为keyID,支持使用多把密钥对内存进行加密。它在内存写入时加密,在内存读取时解密,从而防止复杂离线攻击下数据被窃取。它的结构和功能简单,架构上可叠加其他安全特性,对软件兼容性也很好。中国团队研发的Penglai基于开源RISC

V架构,利用PMP/sPMP功能模块提供飞地功能,基于openSBI开源监管接口,不需要修改硬件即可完成加密,利用硬件TVM功能在不受信任的主机和飞地之间进行4KB页面级别的细粒度隔离,提升了内存加密系统的可扩展性。
[0004]然而,一些问题仍然存在。现有硬件内存加密技术如Intel公司的MKTME技术和AMD公司的SEV技术都以页为粒度对内存进行加密,而SGX和Trustzone只能对有限块区域进行加密,加密区域受限。其次,现有硬件内存加密技术仅支持少量密钥,Intel公司的MKTME技术以及AMD公司的SME技术等加密技术可使用的加密区域数量小,可能产生高性能开销。Intel公司的MKTME技术可信密钥存储区域仅为32k,每个密钥表的标识在4

15bit之间,密钥存储会占用现有物理地址空闲位,存在内存数据泄露风险。此外,现有硬件内存加密系统不支持全过程加密的数据传输。
[0005]因此,如何高效地实现内存数据安全保护,是目前硬件内存加密系统亟需改进的方向。

技术实现思路

[0006]针对现有技术的缺陷和改进需求,本专利技术提供了一种基于RISC

V架构的硬件内存加密系统及其应用,其目的在于提出一种硬件内存加密系统,以更加高效地保护内存数据安全。
[0007]为实现上述目的,按照本专利技术的一个方面,提供了一种基于RISC

V架构的硬件内存加密系统,包括:基于RISC

V架构所设置的密钥管理模块、加解密引擎、传输模块和编程接口;其中,
[0008]所述RISC

V架构的指令集经扩展,包含有用于内存加密的setcbit和setkybit两条指令,通过所述编程接口,使得所述密钥管理模块能够用于调用指令setcbit和setkybit,以分别设置已申请内存空间的加密标志位和密钥编号,从而将内存空间设置为加密空间;
[0009]所述密钥管理模块在进行密钥管理时分为密钥存储和密钥获取两部分,其中,采
用片上加内存的密钥存储方式,并采用LRU替换策略维护片上缓冲区,采用Cuckoo Hash Key Table作为内存密钥表;
[0010]所述RISC

V架构的指令集经扩展,还包含用于内存数据传输的datats和accdatats两条指令,通过配置所述编程接口,使得所述传输模块能够调用指令datats和accdatats,分别进行内存数据的发送和接收。
[0011]进一步,所述密钥管理模块还用于根据用户请求,调用setkybit、setcbit指令,将待释放内存页面的密钥编号和加密标志位恢复为默认值,从而将内存空间设置为非加密空间;通过Free方法,通知操作系统释放该内存空间,从而释放加密内存空间。
[0012]进一步,采用RV64 R

type指令格式,设计得到指令genky、setky、setcbit、setkybit、datats以及accdatats的定义方法,具体为:
[0013]定义genky指令的方法为:定义指令无写回结果,指令无需读取操作数;
[0014]定义setky指令的方法为:定义指令无写回结果,指令需读取操作数rs1,操作数rs1的值为共享密钥虚拟地址;
[0015]定义setcbit指令的方法为:定义指令无写回结果,指令需读取操作数rs1,操作数rs1的值为待设置的虚拟客机页面的虚拟地址;
[0016]定义setkybit指令的方法为:定义指令无写回结果,指令需读取操作数rs1,操作数rs1的值为待设置的虚拟客机页面的虚拟地址;
[0017]定义datats指令的方法为:定义指令无写回结果,指令需读取操作数rs1、rs2,操作数rs1的值为待传输内存的虚拟地址,操作数rs2的值为目标信息结构体的虚拟地址;
[0018]定义accdatats指令的方法为:定义指令无写回结果,指令需读取操作数rs1、rs2,操作数rs1的值为待接收数据的虚拟地址,操作数rs2的值为客机信息结构体的虚拟地址。
[0019]进一步,所述密钥管理模块进行密钥管理的方式为:
[0020]使用一个缓冲区存储部分虚拟机或进程的密钥,先访问缓冲区,若该密钥不存在,则在内存密钥表中查找,若仍不存在,生成一个密钥并进行存储;当进程被销毁,将该进程对应的所有密钥清除。
[0021]进一步,所述RISC

V架构的指令集经扩展,还包含有用于内存加密的genky、setky两条指令,genky指令用于使得密钥管理模块为用户进程生成一个默认密钥;setky指令用于用户指定一个私有密钥;
[0022]所述密钥管理模块进行密钥管理的具体方式为:
[0023]S1、使用一个缓冲区存储最近常用内存页面所对应的部分虚拟机或进程的密钥;
[0024]S2、经触发,通过可信通道取得待加解密数据所在当前内存页面的虚拟机编号、进程编号、核编号、密钥编号和加密标志位,根据密钥编号、虚拟机编号、进程编号和核编号以及所申请的内存空间地址,确定目标密钥,判断目标密钥是否位于缓冲区中;若是,直接将目标密钥传输至加解密引擎;若否,到步骤S3;其中,所述密钥编号为所述默认密钥的编号或所述私有密钥的编号;
[0025]S3:判断逐出到内存密钥表中的密钥数量是否为0;若是,到步骤S8;若否,到步骤S4;
[0026]S4:判断目标密钥是否位于内存密钥表中;若是,将目标密钥传输至加解密引擎,转到步骤S5;若否,到步骤S8;
[0027]S5:判断所述缓冲区是否有空闲存储空间;若是,转到步骤S7;若否,转到步骤S6;
[0028]S6:使用LRU策略找到最近最少使用的密钥,将最近最少使用的密钥用可信平台模组所生成的密钥进行算法加密后,逐出到内存密钥表中,逐出密钥计数器加一,并转到步骤S7;
[0029]S7:将目标密钥插入缓冲区;
[0030]S8:向用户提出错误。
[0031]进一本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于RISC

V架构的硬件内存加密系统,其特征在于,包括:基于RISC

V架构所设置的密钥管理模块、加解密引擎、传输模块和编程接口;其中,所述RISC

V架构的指令集经扩展,包含有用于内存加密的setcbit和setkybit两条指令,通过所述编程接口,使得所述密钥管理模块能够用于调用指令setcbit和setkybit,以分别设置已申请内存空间的加密标志位和密钥编号,从而将内存空间设置为加密空间;所述密钥管理模块在进行密钥管理时分为密钥存储和密钥获取两部分,其中,采用片上加内存的密钥存储方式,并采用LRU替换策略维护片上缓冲区,采用Cuckoo Hash Key Table作为内存密钥表;所述RISC

V架构的指令集经扩展,还包含用于内存数据传输的datats和accdatats两条指令,通过配置所述编程接口,使得所述传输模块能够调用指令datats和accdatats,分别进行内存数据的发送和接收。2.根据权利要求1所述的硬件内存加密系统,其特征在于,所述密钥管理模块还用于根据用户请求,调用setkybit、setcbit指令,将待释放内存页面的密钥编号和加密标志位恢复为默认值,从而将内存空间设置为非加密空间;通过Free方法,通知操作系统释放该内存空间,从而释放加密内存空间。3.根据权利要求1所述的硬件内存加密系统,其特征在于,采用RV64R

type指令格式,设计得到指令genky、setky、setcbit、setkybit、datats以及accdatats的定义方法,具体为:定义genky指令的方法为:定义指令无写回结果,指令无需读取操作数;定义setky指令的方法为:定义指令无写回结果,指令需读取操作数rs1,操作数rs1的值为共享密钥虚拟地址;定义setcbit指令的方法为:定义指令无写回结果,指令需读取操作数rs1,操作数rs1的值为待设置的虚拟客机页面的虚拟地址;定义setkybit指令的方法为:定义指令无写回结果,指令需读取操作数rs1,操作数rs1的值为待设置的虚拟客机页面的虚拟地址;定义datats指令的方法为:定义指令无写回结果,指令需读取操作数rs1、rs2,操作数rs1的值为待传输内存的虚拟地址,操作数rs2的值为目标信息结构体的虚拟地址;定义accdatats指令的方法为:定义指令无写回结果,指令需读取操作数rs1、rs2,操作数rs1的值为待接收数据的虚拟地址,操作数rs2的值为客机信息结构体的虚拟地址。4.根据权利要求1所述的硬件内存加密系统,其特征在于,所述密钥管理模块进行密钥管理的方式为:使用一个缓冲区存储部分虚拟机或进程的密钥,先访问缓冲区,若该密钥不存在,则在内存密钥表中查找,若仍不存在,生成一个密钥并进行存储;当进程被销毁,将该进程对应的所有密钥清除。5.根据权利要求4所述的硬件内存加密系统,其特征在于,所述RISC

V架构的指令集经扩展,还包含有用于内存加密的genky、setky两条指令,genky指令用于使得密钥管理模块为用户进程生成一个默认密钥;setky指令用于用户指定一个私有密钥;所述密钥管理模块进行密钥管理的具体方式为:S1、使用一个缓冲区存储最近常用内存页面所对应的部分虚拟机或进程的密钥;
S2、经触发,通过可信通道取得待加解密数据所在当前内存页面的虚拟机编号、进程编号、核编号、密钥编号和加密标志位,根据密钥编号、虚拟机编号、进程编号和核编号以及所申请的内存空间地址,确定目标密钥,判断目标密钥是否位于缓冲区中;若是,直接将目标密钥传输至加解密引擎;若否,到步骤S3;其中,所述密钥编号为所述默认密钥的编号或所述私有密钥的编号;S3:判断逐出到内存密钥表中的密钥数量是否为0;若是,到步骤S8;若否,到步骤S4;S4:判断目标密钥是否位于内存密钥表中;若是,将目标密钥传输至加解密引擎,转到步骤S5;若否,到步骤S8;S5:判断所述缓冲区是否有空闲存储空间;若是,转到步骤S7;若否,转到步骤S6;S6:使用LRU策略找到最近最少使用的密钥,将最近最少使用的密钥用可信平台模组所生成的密钥进行算法加密后,逐出到内存密钥表中,逐出密钥计数器加一,并转到步骤S7;S7:将目标密钥插入缓冲区;S8:向用户发出错误提示。6.根据权利要求5所述的硬件内存加密系统,其特征在于,所述密钥管理模块在将目标密钥插入缓冲区后,还用于:通过加解密引擎使用可信平台模组所生成的密钥对被逐出待定密钥K

e进行加密,将K

e插入内存密钥表中,其中...

【专利技术属性】
技术研发人员:叶晨成余沁益李慧菊罗理恒余林琛
申请(专利权)人:华中科技大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1