CPU有个禁区,内核权限也无法进入!

神秘项目

我是CPU一号车间的Q,是的,我又来了。

最近好几次下班,约了隔壁二车间的老虎他没时间,但也没看到自己在忙什么

前几天,我又去找他,还是没见到其他人,却意外地在他桌上发现了一份文件当我打开它时,我发现这是一个代号为SGX的神秘项目,还是工厂领导亲自牵头的

仔细一看,原来自从上次袭击后,领导们就开始担心了虽然当时操作系统提供的解决方案暂时解决了燃眉之急,但治标不治本我们自身的缺陷一直存在,不可能有翻身的一天

这个神秘的项目,命名为SGX,被称为软件卫士扩展,旨在全面改革和提高我们的CPU的安全能力。

窃听会议

我一时高兴不起来这么重要的项目没邀请我参加

随即,我来到了领导的办公室果然,他们中的一些人在开秘密会议,而我在偷听

各位,你们是我们工厂的核心骨干回去后对这个安全能力的提升有什么想法吗请畅所欲言!我听到领导在说话

核心我的Q不就是核心骨干吗

呆滞了一会,Tiger说:我们现在不是有安全访问级别吗从Ring0到Ring3,足以隔离应用程序攻击

领导摇了摇头即便如此,一些恶意软件也可以利用操作系统的漏洞获取Ring0的访问权限,我们现有的安全保护就没有了

那也是操作系统的锅如果你想改善它,你应该让他们去做跟我们有什么关系,继续

你忘了前段时间对我们CPU的攻击了吗。

此话一出,会场瞬间安静下来。就这水平,领导居然邀请他来不带我!

领导慢了下来,接着说:我们不能总依赖操作系统的安全保护我们必须自己想出一些解决办法感觉现有的安全机制不够,操作系统漏洞频发,容易被攻破

这时,5号车间的代表发言了:领导,我回去调查了一下,了解到我们的竞争对手推出了一种技术,叫做TrustZone,用来支持可信计算,号称提供一个非常安全的环境来支持支付,指纹认证等安全性要求极高的程序的运行如果我们想做,可以参考

听完TrustZone的介绍,三号车间的大哥仿佛找到了灵感,兴奋地说:对!我们可以在内存中划出一个特殊的区域作为绝密空间把高度机密的程序代码和数据放进去运行,然后引入新的工作模式

引入新工作模式的想法很新鲜,大家都在讨论。

这个安全空间在技术上如何实现。

线程如何进出安全空间恶意程序进去了怎么办

如何调用外部普通空间的功能外部功能被攻击怎么办

需要系统调用吗那么中断和异常呢

短短的时间,大家提出了一堆问题。

领导一个个给他们分配任务,下去思考解决这些问题的办法,过几天再讨论。

在他们离开会场之前,我匆匆离开了。

主动进攻

这是一个表现的好机会如果能解决以上问题,领导可能会让我加入项目组

至于安全空间的实现,既然是从内存中划出的区域,自然要在内存的访问控制上做文章我和我厂MMU的内存管理单元小黑有些交情,打算向他请教

听完我的需求,小黑不屑一顾就这样,小事一桩访问内存时,我会检查权限然后,除了前面的检查,我还可以增加另一项检查:如果我发现我要访问安全空间页面,检查当前的工作模式是否正确

在其他几个问题上我有自己的想法安全空间按照创建—初始化—进入—退出—销毁的顺序使用

创建:通过执行ecreate命令创建一个安全空间,

Initialize:通过执行EINIT指令初始化刚刚创建的安全空间。

输入amp退出:通过执行e—enter/e—exit指令进入和退出安全空间,类似于系统调用的SYSENTER/SYSEXIT指令提前设置好入口地址,进入安全空间后,需要从指定地点出发,避免外界程序乱来在执行这两条指令时,CPU切换安全模式

中断放大器,异常:出现中断和异常,需要改为执行操作系统内核处理代码,操作系统不可信任您需要执行AEX指令来退出,并将执行的上下文保存在安全空间中,以便以后可以继续执行

系统调用:系统调用有点麻烦,需要进入操作系统的内核空间因为不能信任操作系统,所以也需要先退出安全空间,等系统调用执行后再进来

函数调用:安全空间和外部可以互相调用对方的函数普通空间调用安全空间函数ECALL,安全空间调用外部空间函数OCALL调用方式类似于操作系统的系统调用,只是操作系统的功能由内核提供,安全空间的功能由应用程序自己定义

摧毁:通过执行EREMOVE命令摧毁一个安全空间。

我还把这个安全空间命名为飞地自然,我们CPU的工作模式分为飞地模式和非飞地模式

内存加密

然后,我整理了一下思路,来到领导办公室,主动申请加入SGX项目组。

显然,领导对我的到来有点意外,但看了我准备的材料后,满意地同意了我的申请,并让我参加下一次研讨会。凡事都有回报!

马上就是下次见面了,我再也不用在门外偷听了。

在会上,我的计划得到了大家的一致同意只有8号车间的代表不同意:安全空间计划很好,但还需要一个最重要的东西

什么事,大家都看着老八

这些各种各样的攻击最终都是为了读写内存数据,而它们屡屡得逞的根本原因是什么老巴说

每个人都很困惑自己想说什么。

老巴,别卖关子了,直说吧!

老八站起来说:根本原因是内存中的数据是明文,一旦数据泄露,可能会造成严重后果如果我们在安全空间加密内存数据呢

如果我老了,就像当头一棒为什么我没有往这个方向想

加密什么时候解密,虎子问道

好问题,我建议我们工厂的内存管理部门建立一个内存加密引擎电路MEE,对安全空间中的数据进行透明的加密和解密。数据写入内存时加密,读入我们CPU时再解密!

老虎听了,说:唉,这下好了建议全面普及为什么只在安全的空间使用

老巴拍拍老虎的头:说你是老虎,你真的是老虎这个东西对成绩的影响不可小觑怎么能随便用呢

好!老八,这个建议不错我决定这个项目由老八牵头!,领导生气了

会后你笑我忙了半天,我还是没当上领导我非常高兴一起参与就好

复活节彩蛋

SGX项目启动后,我们的CPU安全性得到了很大的提高可是,这个我们花了那么大力气打造的安全空间真的像铁桶一样牢不可破吗

如何预测未来,请关注后续精彩。

受限于故事形式,SGX技术的很多实现细节不方便展开。对实现原理感兴趣的朋友可以参考下面这篇文章:

声明:本网转发此文章,旨在为读者提供更多信息资讯,所涉内容不构成投资、消费建议。文章事实如有疑问,请与有关方核实,文章观点非本网观点,仅供读者参考。