当前位置: 华讯财经 -> 财经

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

时间:2022-10-20 20:29   栏目:财经    来源:华讯财经   阅读量:8679   
CPU有个禁区,内核权限也无法进入!

神秘项目

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

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

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

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

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

窃听会议

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

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

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

核心?我的Q不就是核心骨干吗?真的很冷!

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

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

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

“你忘了前段时间对我们CPU的攻击了吗?”

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

领导慢了下来,接着说:“我们不能总依赖操作系统的安全保护。我们必须自己想出一些解决办法。感觉现有的安全机制不够,操作系统漏洞频发,容易被攻破。我们现在不能再信任操作系统了,必须进行彻底全面的改革!”

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

听完TrustZone的介绍,三号车间的大哥仿佛找到了灵感,兴奋地说:“对!我们可以在内存中划出一个特殊的区域作为绝密空间。把高度机密的程序代码和数据放进去运行,然后引入新的工作模式。我们的CPU只允许在这种模式下访问这个安全空间,否则即使有Ring0的权限也不能访问!”

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

“这个安全空间在技术上如何实现?”

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

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

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

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

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

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

主动进攻

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

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

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

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

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

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

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

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

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

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

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

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

内存加密

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

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

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

在会上,我的计划得到了大家的一致同意。只有8号车间的代表不同意:“安全空间计划很好,但还需要一个最重要的东西。如果加上这个就完美了!”

“什么事?”,大家都看着老八。

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

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

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

老八站起来说:“根本原因是内存中的数据是明文,一旦数据泄露,可能会造成严重后果。如果我们在安全空间加密内存数据呢?即使我们的防线失守,对方得到的也只是加密数据,什么也做不了!”

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

“加密?什么时候解密?”,虎子问道。

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

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

老巴拍拍老虎的头:“说你是老虎,你真的是老虎。这个东西对成绩的影响不可小觑。怎么能随便用呢?好钢要用在刀刃上!”

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

会后你笑我忙了半天,我还是没当上领导。我非常高兴。一起参与就好。学技术才是王道~

复活节彩蛋

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

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

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

郑重声明:此文内容为本网站转载企业宣传资讯,目的在于传播更多信息,与本站立场无关。仅供读者参考,并请自行核实相关内容。

编辑:余梓阳