|||
安全计算机体系结构是J. Hennessy和D. Patterson在2018年图灵奖讲演中提出的未来4大方向之一。如果说领域专用体系结构是高能效计算的延续,开源硬件和敏捷硬件开发是设计手段,那么安全计算机系统结构就是未来十年最值得突破的领域。所谓信息安全(Information Security),就是对信息的“坑蒙拐骗偷”。我们这里主要关心面向信息安全的指令系统体系结构设计,或者更关心指令集本身的设计。描述一个指令系统包含以下7个方面的特性:指令系统类型(Class);内存编址(Memory Addressing);寻址模式(Addressing Model);操作数类型和位宽(Types and Sizes of Operands);指令操作(Operations);控制流指令(Control flow instructions);指令系统编码(Encoding)。这些特性里面和安全相关的有哪些呢,未来新时代指令系统应该加入安全的特性吗。
在CAQA的6个版本中,关于安全介绍的比较少。安全这个名词主要出现在虚拟地址空间和进程保护这部分中,重点介绍段页式内存保护。在第6版中,与时俱进的增加了Intel SGX(software guard extensions)的内容,主要还是为将强进程保护和虚拟机保护。安全是如此的重要,我估计CAQA第7版中应该会单独开辟出一章或者一个专门的附录来讲安全计算机体系结构的内容。
既然有了一定的保护机制,为什么安全问题还这么严重呢,漏洞还这么多呢,网络攻击还这么猖獗呢。主要的原因是以页和段进行保护的机制粒度太粗了,缺乏对象(object)粒度的细粒度保护。而这种保护,有一个名词叫做权能(Capabilities),最早1974年ACM通讯中的论文对这个领域做了开创性的论述。【1】权能在CAQA中就是一个内存对象的base+bound,后续的研究统统以metadata来称呼,还包括一些权限。
以对象为粒度进行内存保护这么高档的概念为什么后来在大多数指令系统体系结构中都没有用到呢?而且CAQA也在历史回顾中给出了这样的总结。
原因还是在于当时没有网络,没有病毒这回事。当1986年第一次蠕虫病毒出现时,各个指令系统设计厂商也没有引起重视。当面向PC的病毒泛滥时,x86基本指令系统已经存在20年了,为了兼容不能改,只能头痛医头脚痛医脚,不断的在软件上打补丁,直到现在。想想肆虐信息领域30年的缓冲区溢出漏洞,到现在还是大多数攻击的入口,多可怕啊。原因竟然是我们用的x86/ARM指令系统,都是1970/1980年代的指令系统,根本没有安全的考虑啊。还有一个原因就是软硬件开销太大了。
1994年当时还在MIT的大教授W. Dally在ASPLOS上发表了一篇guarded pointer的论文,应该来讲是第一篇指令系统结构采用权能概念的论文,影响力却不大,但笔者认为对未来新时代指令系统设计的参考意义极大。25年了。【2】这种内嵌权能的指针,是一种标签化指针(tagged pointer),新的数据类型。
2008年ASPLOS上出现了Hardbound的论文,采用FAT Pointer技术来记录对象元数据,从SoftBound论文中借鉴的Shadow Memory的概念,将元数据存在其他位置。【3】在这个机制上,后续还扩展出很多解决空间性和时间性内存安全的体系结构技术,如CETS,Watchdog等等,就不一一列举了。
2014年英国剑桥大学在ISCA上发表了CheriMIPS的论文,采用胖指针技术,期望从指令系统设计出发,包括编译、库、操作系统、虚拟机、编程语言一系列的解决安全问题。野心很大,项目很大,影响力很大。
2017年Intel推出了x86的一种扩展MPX,通过类似页表的机制保存每个内存对象的元数据,并相应设计了系列指令扩展来检查内存访问是否越界。
总之,安全是未来的体系结构领域的首要研究方向,新时代指令系统设计也必须从零开始支持权能,虽然是25年前就已经提出来了。目前的x86和arm只是在之前的基础上打补丁,RISC-V也没有这方面的设计。所以新时代指令系统大有可为,必须支持安全。
关于安全硬件和硬件安全,之前提到了Ruby Lee教授现在是学术界的专家,可参考2014年Hotchip上的系列tutorial。Intel/AMD/ARM的安全专家和Lee教授分别作了精彩的报告。
【1】Fabray, R. S. (1974.07). Capability-Based Addressing, ACM.
【2】Carter, N. P., et al. 1994. Hardware support for fast capability-based addressing. ASPLOS-6'94. Proceedings of the sixth international conference on Architectural support for programming languages and operating systems. San Jose, California, USA, ACM: 319-327.
【3】Devietti, J., et al. 2008. Hardbound: architectural support for spatial safety of the C programming language. ASPLOS-13'08. Proceedings of the 13th international conference on Architectural support for programming languages and operating systems. Seattle, WA, USA, ACM: 103-114.
【4】Woodruff, J., et al. 201406. The CHERI capability model: Revisiting RISC in an age of risk. ISCA-41'14. 2014 ACM/IEEE 41st International Symposium on Computer Architecture (ISCA).
【5】Oleksii Oleksenko, Dmitrii Kuvaiskii, Pramod Bhatotia, Pascal Felber, and Christof Fetzer. 2017. Intel MPX Explained: An Empirical Study of Intel MPX and Software-based Bounds Checking Approaches. CoRR abs/1702.00719 (2017). arXiv:1702.00719 http://arxiv.org/abs/1702.00719
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2024-11-24 01:49
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社