一种基于指针加密机制和RISC-V协处理器的内存溢出防御方法技术

技术编号:30898334 阅读:24 留言:0更新日期:2021-11-22 23:41
本发明专利技术公开一种基于指针加密机制和RISC

【技术实现步骤摘要】
一种基于指针加密机制和RISC

V协处理器的内存溢出防御方法


[0001]本专利技术涉及计算机系统安全
,具体涉及一种基于指针加密机制和RISC

V协处理器的内存溢出防御方法。

技术介绍

[0002]缓冲区溢出是一种计算机系统中十分常见的安全漏洞。由于软件开发者编写代码时的疏忽等原因,导致内存缓冲区未作边界检查。攻击者利用此注入数据,溢出后覆盖重要数据,达到掌握程序控制流,甚至获取整个系统root权限的目的。而根据Common Vulnerabilities and Exposures网站的数据显示,仅2020年一年便有1600多个缓冲区溢出的漏洞被披露。因此如何防御利用此类漏洞的攻击是值得研究的问题。
[0003]目前主要的防御机制包括:1.数据不可执行,即阻止程序中的数据页被当作可执行代码执行;2.内存地址空间随机化,即进程的栈和堆等区域加载到内存时被加载到随机的地址;3.Stack canary,即在栈上缓冲区后插入一个对攻击者保密的随机值,如果栈溢出数值变化,则立刻终止程序;4.程序控制流完整性,提前确定程序流图,在程序块中增加tag,使得运行的程序只能按照流图跳转等。
[0004]然而目前的防御机制,均存在如下问题,包括可被绕过攻击,无法防御某些种类的溢出攻击,或实现方式对于程序的运行效率会造成很大影响等。

技术实现思路

[0005]基于上述问题,本专利技术提供一种基于指针加密机制和RISC

V协处理器的内存溢出防御机制。该方法通过加密返回地址以及函数指针,阻止通过缓冲区溢出修改此类数据跳转到目的地址的目的,以实现对RISC

V架构安全防护,在提高RISC

V系统的安全性的同时未对程序造成显著影响。
[0006]为实现上述目的,本专利技术采用如下技术方案:
[0007]一种基于指针加密机制和RISC

V协处理器的内存溢出防御方法,包括以下步骤:
[0008]1)使用SoC生成器RocketChip的RoCC(Rocket Custom Coprocessor)接口向RISC

V主处理器接入基于物理不可克隆函数PUF和真随机数生成器TRNG设计的协处理器;
[0009]2)分析程序源码,定位到向返回地址ra赋值的代码,在向ra赋值的代码前插入加密ra的RISC

V扩展指令即指令四,再定位到使用ra的代码,在使用ra的代码前插入解密ra的RISC

V扩展指令即指令四;
[0010]3)分析程序源码,定位到向函数指针fp赋值的代码,在向fp赋值的代码前插入加密fp的RISC

V扩展指令即指令四,定位到使用fp的代码,在使用fp的代码前插入解密fp的RISC

V扩展指令即指令四;
[0011]4)执行步骤2)和3)处理后的程序代码,当程序初次被操作系统加载进内存成为一个新进程时,操作系统向协处理器发送指令一,使协处理器中的TRNG生成真随机数并保存
在协处理器的随机数寄存器中;
[0012]5)当所述新进程被切出时,操作系统向协处理器发送指令二,从随机数寄存器中取出随机数并存入印制电路板PCB中;
[0013]6)当所述新进程被切入时,操作系统向协处理器发送指令三,从PCB中取出随机数并存入随机数寄存器中;
[0014]7)在所述新进程运行的过程中,当代码向ra或fp赋值时,该新进程向协处理器发送指令四,向协处理器传入ra或fp,以及ra或fp在内存中的地址,地址作为PUF的激励,PUF产生响应;ra或fp与前述响应以及步骤4)中保存在随机数寄存器中的真随机数进行异或后,将密文传回主处理器,存入内存;
[0015]8)当所述新进程运行的过程中,在代码使用ra或fp时,进程向协处理器发送指令四,向协处理器传入已加密的ra或fp,以及ra或fp在内存中的地址,地址作为PUF的激励,PUF产生响应;已加密的ra或fp与前述响应以及步骤4)中保存在随机数寄存器中的真随机数进行异或后,将明文传回主处理器,正常使用。
[0016]上述步骤1)可以位于步骤2)

3)之后,步骤4)必须在步骤1)、2)和3)之后,步骤编号不完全限定执行的先后顺序,实际先后顺序当以每步骤的技术特征的含义为准。
[0017]进一步地,步骤7)还包括以下步骤:
[0018]a)计算ra或fp在内存中的地址,存入源寄存器Source Register1中;
[0019]b)计算完成ra或fp的值后,令存有ra或fp值的寄存器作为源寄存器Source Register2;
[0020]c)发送指令四加密ra或fp;
[0021]d)将目的寄存器Dest Register中的值存入内存。
[0022]进一步地,步骤8)还包括以下步骤:
[0023]a)计算ra或fp在内存中的地址,存入源寄存器Source Register1中;
[0024]b)将ra或fp从内存中取出后,令存有ra或fp值的寄存器作为源寄存器Source Register2;
[0025]c)发送指令四解密ra或fp;
[0026]d)正常使用目的寄存器Dest Register中的值。
[0027]进一步地,控制协处理器的指令通过扩展RISC

V指令集架构的自定义指令实现,共四条新增自定义指令,分为指令一、指令二、指令三、指令四,指令一控制协处理器TRNG产生真随机数,指令二从协处理器取出真随机数,指令三向协处理器存入真随机数,指令四控制协处理器加解密返回地址和函数指针。
[0028]进一步地,所述指令一的指令字段结构格式为:
[0029]Opcode字段,长度7bits,表示自定义指令空间的指令操作码。
[0030]进一步地,所述指令二的指令字段结构格式为:
[0031]Opcode字段,长度7bits,表示自定义指令空间的指令操作码;
[0032]Dest Register字段,长度5bits,指定从协处理器的随机数寄存器取出随机值后存入哪一个主处理的寄存器中。
[0033]进一步地,所述指令三的指令字段结构格式为:
[0034]Opcode字段,长度7bits,表示自定义指令空间的指令操作码;
[0035]Source Register1字段,长度5bits,指定哪一个主处理器寄存器传入随机值给协处理器。
[0036]进一步地,所述指令四的指令字段结构格式为:
[0037]Opcode字段,长度7bits,表示自定义指令空间的指令操作码;
[0038]Dest Register字段,长度5bits,指定结果传入哪一个主处理器寄存器;
[0039]Source 本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于指针加密机制和RISC

V协处理器的内存溢出防御方法,其特征在于,包括以下步骤:1)使用SoC生成器RocketChip的RoCC接口向RISC

V主处理器接入基于物理不可克隆函数PUF和真随机数生成器TRNG设计的协处理器;2)分析程序源码,定位到向返回地址ra赋值的代码,在向ra赋值的代码前插入加密ra的RISC

V扩展指令即指令四,再定位到使用ra的代码,在使用ra的代码前插入解密ra的RISC

V扩展指令即指令四;3)分析程序源码,定位到向函数指针fp赋值的代码,在向fp赋值的代码前插入加密fp的RISC

V扩展指令即指令四,定位到使用fp的代码,在使用fp的代码前插入解密fp的RISC

V扩展指令即指令四;4)执行步骤2)和3)处理后的程序代码,当程序初次被操作系统加载进内存成为一个新进程时,操作系统向协处理器发送指令一,使协处理器中的TRNG生成真随机数并保存在协处理器的随机数寄存器中;5)当所述新进程被切出时,操作系统向协处理器发送指令二,从随机数寄存器中取出随机数并存入印制电路板PCB中;6)当所述新进程被切入时,操作系统向协处理器发送指令三,从PCB中取出随机数并存入随机数寄存器中;7)在所述新进程运行的过程中,当代码向ra或fp赋值时,该新进程向协处理器发送指令四,向协处理器传入ra或fp,以及ra或fp在内存中的地址,地址作为PUF的激励,PUF产生响应;ra或fp与前述响应以及步骤4)中保存在随机数寄存器中的真随机数进行异或后,将密文传回主处理器,存入内存;8)当所述新进程运行的过程中,在代码使用ra或fp时,进程向协处理器发送指令四,向协处理器传入已加密的ra或fp,以及ra或fp在内存中的地址,地址作为PUF的激励,PUF产生响应;已加密的ra或fp与前述响应以及步骤4)中保存在随机数寄存器中的真随机数进行异或后,将明文传回主处理器,正常使用。2.如权利要求1所述的方法,其特征在于,步骤7)还包括以下步骤:计算ra或fp在内存中的地址,存入源寄存器Source Regist...

【专利技术属性】
技术研发人员:张雨昕芮志清吴敬征罗天悦武延军
申请(专利权)人:中国科学院软件研究所
类型:发明
国别省市:

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

1