【论文阅读】Shakti-T: A RISC-V Processor with Light Weight Security Extensions
来源:互联网 发布:linux cp 带目录结构 编辑:程序博客网 时间:2024/06/01 21:28
一、背景
由于计算核芯和电子商务的兴起,有必要在硬件层面保护我们的数据安全,目前面临的主要威胁是来自内存的攻击,包括时间和空间上两方面的侵入,团队制造出了一个名为Shakti-T的轻量级安全扩展芯片来解决这些问题,本处理器仅使用194个LUTs以及2197个触发器。
二、攻击类型
刚刚提到了基于内存的攻击
1. 基于空间上的攻击 -指针访问了它不允许被访问的地方。 比较著名的例子有buffer-overflow,blaster-worm以及用于DDoS的slammer worm,安卓的Root也是利用了这个原理. 2. 基于时间上的攻击 -指针访问了已经被释放的地方。
三、解决方案
前人对这两个问题提出了许多解决方案,为了解决问题一,有人提出了Lock and Key的方案,或者
- Stack Canaries, - Encryption of The Code Pointer, - Rearranging argument locations, - 以及the Address Space Layout Randomization(ASLR)
等方法,而对于问题二,也有人提出富指针的方案,其中ASLR是抵御ROP(Return Oriented Programming)问题最好的方法,但是它依然存在一些问题,攻击者可以通过改变控制流的方法来绕过它们的检查。同时富指针方案也存在着高开销,缺乏稳定性等问题,即便有硬件层面的解决方案,当多个指针同时存在时也会失效。
四、富指针(Fat-Pointer)
所谓富指针就是指,在原先指针的数据结构上再加上基地址和限长两个元素,每次为指针分配一个地址空间的时候,都会自动写入这块地址的起始位置和长度,而每次访问指针时,都会检查是否越界,以此来防止指针在释放后再次读取的问题.但是传统的方法有一个十分遗憾的问题,假如存在{P1,P2…..Pn}n个指针,它们同时指向同一个空间,当释放其中一个以后,由于是各存一份,访问其它指针依然会认为是正常访问,但实际上已经出现了空间上的攻击。
五、提出的方案
我们使用的是基于硬件的富指针:
- 基地址和边界统一存放于一个PLM(Pointer Limits Memory),而PLM的地址存于PLBR寄存器
- 每一个指针对应一个ptr_id
- 每次调用指针时使用ptr_id调取对应的基地址和边界,
我们使用如图表格来作为缓存,
- 其中左边的GPR(General Purpose Register)分两个部分一个是Tag bits,用于标记是数据还是指针,另一部分是寄存器的数值。
- 右边的BnBIndex和BnBLookUp包含在一个名为BnBCache的寄存器中,BnBIndex中的index表示BnBLookUp的位置,有效位V的值若为1,则表示可以从BnBLookUp中取到值,若为0,则说明需要从内存中去取所需的信息,当BnBLookUp中的信息被更新时,BnBindex中的信息也会被同步更新。BnBLookUp中的有效位V为1则表示它目前可用,为0则表示它可能被释放了。当BnBLookUp中的空间不足,则用LRU(最近最少使用)算法进行替换。
六、副作用及解决方案
比如有的时候调用函数,某个寄存器被push了,若此时正好这个寄存器被替换出去,但是当数据再次被pop的时候那个寄存器已经是无效的了。于是需要新设计一个BnBStack(Base and Bound Stack)用于专门存放暂时被push的指针ptr_id.
七、结果
- 安全性:还是同样的问题,此处有(P1,P2….Pn)n个指针,若它们指向同一个地址,其中一个释放以后,BnBLookUp中有效位被置0,其它指针再访问它时,就可以得知它是无效的消息。
- 节约内存 :(P1,P2….Pn)n个指针,若他们指向同一个地址,则需要存n个ptr_id和1个base,一个bound,共n+2个空间。但传统的方法,每一个指针都需要存一份,则需要2n个空间。但如果这些指针分别指向不同的空间,则本方案更耗费一些空间。
- 【论文阅读】Shakti-T: A RISC-V Processor with Light Weight Security Extensions
- ISSCC 2017论文导读 Session 14:A 288μW Programmable Deep-Learning Processor with 270KB On-Chip Weight
- Virtual servers on a Raspberry Pi with the light weight OS virtualization system Docker!
- A light weight mysql GUI tool
- RISC-V
- [论文阅读]词汇树 Scalable Recognition with a Vocabulary Tree
- Processor Architecture: CISC, RISC, VLIW
- 论文阅读:Fixing Weight Decay Regularization in Adam
- T a(v);和T a = v;的区别
- 人脸识别方向论文笔记(1)-- A Light CNN for Deep Face Representation With Noisy Labels
- "Contracts and Interoperability A Conversation with Anders Hejlsberg, Part V" 阅读笔记
- A NEW MEDIAN FORMULA WITH APPLICATIONS TO PDE BASED DENOISING - 论文阅读
- hybrid computing using a neural network with dynamic external memory 论文阅读
- 论文阅读笔记之How to Keep a Knowledge Base Synchronized with Its Encyclopedia Source
- Using ArcGIS Server with a 64-bit processor
- Android exploit with a Qualcomm processor (CVE-2012-4220)
- Android exploit with a Qualcomm processor (CVE-2012-4220)
- GoogleNet :Going deeper with convolutions 论文阅读
- jsp中div 标签到底有什么用?
- 10月集训test10
- bzoj 3171: [Tjoi2013]循环格 费用流
- 【洛谷】2831 [Noip2016]愤怒的小鸟 状压DP
- mysql语句执行时间分析
- 【论文阅读】Shakti-T: A RISC-V Processor with Light Weight Security Extensions
- js获取url传递参数
- C#方法递归
- 括号匹配的检验
- 利用AD13设计PCB的问题总结21-30
- superset二次开发杂记
- HTML meta viewport属性说明
- Eclipse版本以及安装插件(以WindowBuilder为例)
- keil5.24.2 Jlink盗版检测停止工作问题解决