【技术实现步骤摘要】
一种基于指针加密机制和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协处理器的内存溢 ...
【技术保护点】
【技术特征摘要】
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...
【专利技术属性】
技术研发人员:张雨昕,芮志清,吴敬征,罗天悦,武延军,
申请(专利权)人:中国科学院软件研究所,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。