0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

CPU有个禁区 大部分人不知道!

工程师 来源:编程世界宇宙 作者:编程世界宇宙 2020-09-11 17:37 次阅读

来源:编程世界宇宙

神秘项目我是CPU一号车间的阿Q,是的,我又来了。

最近一段时间,我几次下班约隔壁二号车间虎子,他都推脱没有时间,不过也没看见他在忙个啥。

前几天,我又去找他,还是没看到他人,却意外地在他桌上发现了一份文件,打开一看是一个代号为SGX的神秘项目,还是厂里领导亲自带头攻坚。

仔细看了看,原来,自从上次的攻击事件(详情:完了!CPU一味求快出事儿了!)发生以来,领导一直忧心忡忡,虽然当时依靠操作系统提供的办法暂解了燃眉之急,不过治标不治本,我们自身的缺陷一直存在,保不准哪天还要翻车。

这个代号为SGX的神秘项目全称Software Guard Extensions,志在全面改革,提升咱们CPU的安全能力。

偷听会议我瞬间不高兴了,这么重要的项目,居然没找我参加?

随即,我来到了领导的办公室,果然他们几个在开着秘密会议,而我就凑在一旁偷听。

“诸位,你们都是咱们厂里的核心骨干,关于这次安全能力提升的事情,大家回去之后有没有什么想法,请畅所欲言!”,我听到领导在讲话。

核心骨干?难道我阿Q不是核心骨干吗?真是气抖冷!

沉闷了一小会儿,隔壁二号车间虎子才说到:“咱们现在不是有安全访问级别吗,从Ring0到Ring3,已经可以很好到隔绝应用程序的攻击了啊”

领导摇了摇头,“尽管如此,但是一些恶意软件可以利用操作系统的漏洞可以获取到Ring0的权限,咱们现有的安全保护就荡然无存了”

“那也是操作系统的锅,要改进也该让他们做啊,关我们什么事呢?”,虎子继续说到。

“你忘记前段时间针对咱们CPU发起的攻击了吗?”

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

领导缓了缓,接着说到:“咱们不能总依赖操作系统的安全保护,咱们自己也得拿出点办法。我觉得现有的安全机制不够,操作系统漏洞频出,很容易被攻破,咱们现在不能信任操作系统,得彻底全面的改革!”

这时,五号车间的代表说话了:“领导,我回去调研了一下,了解到咱们的竞争对手推出了一个叫TrustZone的技术,用于支持可信计算,号称提供了一个非常安全的环境专门支持对安全性要求极高的程序运行,像什么支付啊、指纹认证之类的,咱们要做的话可以参考一下”

听完TrustZone的介绍,三号车间老哥仿佛找到了灵感,激动的说到:“有了!咱们可以在内存中划出一片特殊的区域,作为最高机密的空间。将高度机密的程序代码和数据放在这里面运行,再引入一种新的工作模式,咱们CPU只有在这种模式下才允许访问这个安全空间,否则就算是有Ring0的权限也不能访问!”

引进一个新的工作模式,这种思路倒是很新鲜,大家纷纷议论开来。

“这个安全空间技术上要怎样实现呢?”

“线程怎么进入和退出安全空间?恶意程序进去了怎么办?”

“怎么调用外部普通空间的函数呢?外部函数被攻击了怎么办?”

“需要系统调用怎么办?中断和异常怎么办?”

短短一小会儿时间,大家就七嘴八舌提了一堆问题出来···

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

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

主动出击这可是个表现的好机会,要是能解决上面的问题,领导说不定能让我加入这个项目组。

对于安全空间实现问题,既然是从内存上划出来的区域,自然得从内存的访问控制上做文章。我跟咱们厂里内存管理单元MMU的小黑还算有些交情,打算去向他请教一番。

听完我的需求,小黑不以为意,“就这啊,小事一桩,访问内存时我会进行权限检查,到时候除了之前已有的检查,再加一道检查就可以:如果发现是要访问安全空间的页面,再检查一下当前的工作模式是否正确”

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

创建:通过执行ECREATE指令创建一个安全空间,

初始化:通过执行EINIT指令对刚才创建的安全空间进行初始化

进入 & 退出:通过执行EENTER/EEXIT指令进入和退出安全空间,类似于系统调用的SYSENTER/SYSEXIT指令。提前设置好入口地址,进入安全空间后需要从指定的地方开始执行,避免外面的程序乱来。执行这两条指令的同时CPU进行安全模式的切换。

中断 & 异常:遇到中断和异常,需要转而执行操作系统内核处理代码,而操作系统是不能被信任的。需要执行AEX指令退出,将在安全空间执行的上下文保存起来,以便回头继续执行。

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

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

销毁:通过执行EREMOVE指令销毁一个安全空间

我还给这个安全空间取了一个名字,叫:Enclave,自然而然咱们CPU的工作模式就分了Enclave模式和非Enclave模式。

内存加密随后,我把我的这些想法整理出来,来到了领导办公室,主动申请加入SGX项目组。

领导显然对我的到来有些意外,不过看完我准备的材料还是满意的同意了我的申请,让我也参与下一次的讨论会,真是功夫不负有心人!

很快就到了下一次的会议,我再也不用在门外偷听了。

会议上我的方案得到了大家的一致认可,只有八号车间的代表不以为然:“安全空间的方案是很好,但是还差一个最重要的东西,要是加上这个,那就完美了!”

“是什么?”,大家齐刷刷的望向了老八。

“这些形形色色的攻击方式,最终都是要读写内存数据,而他们屡屡得手的根本原因在于什么?”,老八说到。

大家一头雾水,不知道他想表达什么。

“老八,你就别卖关子了,快说吧!”

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

老八的话如当头一棒,我怎么就没往这个方向考虑。

“加密?那什么时候解密呢?”,虎子问到。

“问得好,我建议咱们厂里内存管理部门设置一个内存加密引擎电路MEE(memory encryption engine),对安全空间的数据进行透明的加解密,数据写入内存时加密,读入咱们CPU内部时再解密!”

虎子一听说到:“唉,这个好,建议全面推广,干嘛只在安全空间用啊”

老八拍了拍虎子的头:“说你虎,你还真虎,这玩意对性能影响不可小觑,怎么能随便用呢,好钢要用到刀刃上!”

“好!老八这个建议好。我决定这个项目就由老八来牵头!”,领导拍案而起。

散会后,虎子笑我忙活半天还是没有当上牵头人,我倒是很看得开,能一起参与就不错了,学到技术才是王道~

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • cpu
    cpu
    +关注

    关注

    68

    文章

    10816

    浏览量

    210999
  • enclave
    +关注

    关注

    0

    文章

    2

    浏览量

    2173
收藏 人收藏

    评论

    相关推荐

    法官驳回大部分 GitHub Copilot 版权索赔要求

    在开发者对 GitHub、微软和 OpenAI 提起的版权诉讼中,法官驳回了大部分诉讼请求。
    的头像 发表于 11-13 12:13 54次阅读

    AGM32VF407的大部分IO可以随意配置,这是这么做到的?

    AGM32VF407的大部分IO可以随意配置,除了少数的专用引脚外,这是这么做到的?这里包括异构的RISC-V内核的外设哦。非常感兴趣呢。
    发表于 10-31 19:07

    关于陶瓷电路板你不知道的事

    陶瓷电路板(Ceramic Circuit Board),又称陶瓷基板,是一种以陶瓷材料为基体,通过精密的制造工艺在表面形成电路图形的高技术产品,快来看看哪些是您还不知道的事?
    的头像 发表于 10-21 11:55 148次阅读
    关于陶瓷电路板你<b class='flag-5'>不知道</b>的事

    THS7001前级放大部分可以正常工作,后级PGA部分如何连接?

    我THS7001前级放大部分可以正常工作,但后级PGA部分不知道如何连接,那个CLAMP (H,L)不知道是什么意思,该如何连接? 我现在的连接方法原本是想按G2 G1 G0=
    发表于 09-19 06:20

    知道PCB为什么大部分都是绿色的吗?

    的风险。并且钴和碳在高温环境下容易散发有毒气体,无论是使用过程还是后期处理时,都不具备环保性。 目前市场也有少部分厂家会使用黑色的PCB板,这其中我们认为原因: 1.看起来高端一些 2.黑色
    发表于 05-30 10:37

    要做一GPRS远程升级的工程,想法不知道是否可行,请帮忙看下?

    要做一GPRS远程升级的工程,想法不知道是否可行,如下: 1.上电进入IAP程序,启动看门狗,用户APP标志存在则跳转,无则等等用户APP升级,并喂狗 2.用户程序完整可执行,
    发表于 05-16 07:14

    微软将在法国投资40亿欧元,大部分集中在AI领域

    微软总裁布拉德·史密斯近日宣布了公司的重大投资计划。微软将在法国投资高达40亿欧元,其中绝大部分资金将注入人工智能领域的发展。作为投资的一部分,微软计划在法国东北部的米卢斯市建设一座数据中心,以加强其在该地区的技术布局。
    的头像 发表于 05-14 09:24 302次阅读

    过压斩波电路哪三大部分组成

    过压斩波电路是一种用于保护电子设备免受过电压损害的电路。它主要由三大部分组成,包括过压检测电路、触发控制电路和继电器控制电路。 第一部分:过压检测电路 过压检测电路是过压斩波电路的核心部分,它负责
    的头像 发表于 03-21 17:24 652次阅读

    能用stm32h7为主做绝大部分的功能实现,用stm32f1为辅实现一小功能吗?

    请问能用stm32h7为主做绝大部分的功能实现,用stm32f1为辅实现一小功能吗?
    发表于 03-20 07:09

    辊压机轴承位磨损修复你不知道的那些事

    电子发烧友网站提供《辊压机轴承位磨损修复你不知道的那些事.docx》资料免费下载
    发表于 03-12 15:10 0次下载

    plc的软件包含哪两大部分

    PLC(可编程逻辑控制器)的软件结构通常由两大部分构成:系统程序和用户程序。这两部分共同确保了PLC能够根据工业自动化的需求进行有效控制和管理。 系统程序 系统程序是PLC软件的核心部分,它负责管理
    的头像 发表于 01-24 17:45 1990次阅读

    7种MOSFET栅极电路的常见作用,不看不知道

    7种MOSFET栅极电路的常见作用,不看不知道
    的头像 发表于 12-15 09:46 1807次阅读
    7种MOSFET栅极电路的常见作用,不看<b class='flag-5'>不知道</b>!

    揭秘pcb是什么物质:你不知道的“化学战士”

    揭秘pcb是什么物质:你不知道的“化学战士”
    的头像 发表于 12-14 10:27 959次阅读

    什么原因可能导致ad7656bstz大部分时间采样都正确,偶尔一两次采样不对的情况?

    什么原因可能导致ad7656bstz大部分时间采样都正确,偶尔一两次采样不对的情况?
    发表于 12-14 06:09

    verilog中有符号数和无符号数的本质探究

    不知道有没有人像我一样,长久以来将verilog中的符号数视为不敢触碰的禁区
    的头像 发表于 12-04 16:13 1075次阅读
    verilog中有符号数和无符号数的本质探究