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

来源 | 编程技术宇宙

封图 | CSDN 下载自视觉中国

神秘项目

我是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内部时再解密!”

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

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

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

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

彩蛋

SGX项目上马后,咱们CPU的安全性有了很大的提升,然而我们花了这么大力气打造出的这个安全空间真的如铁桶一般,牢不可破吗?

预知后事如何,请关注后续精彩……

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

SGX技术的分析和研究:

http://www.jos.org.cn/html/2018/9/5594.htm

Intel SGX学习:

https://zhuanlan.zhihu.com/p/50894009

Intel 官方文档:

https://software.intel.com/sites/default/files/article/413936/hasp-2013-innovative-instructions-and-software-model-for-isolated-execution.pdf

更多阅读推荐

  • 下一代 IDE:Eclipse Che 究竟有什么奥秘?

  • 窃隐私、放高利贷,输入法的骚操作真不少!

  • 进入编译器后,一个函数经历了什么?

  • 程序员离职后收到原公司 2400 元,被告违反竞业协议赔 18 万

  • 5年5亿美金,华为昇腾如何争夺AI开发者?

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/516631.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

防删库实用指南 | 只需一步,快速召回被误删的表

数据库的一些非常不错的企业级功能都是“养兵千日,用兵一时”,比如Oracle 10g中的回收站(Recycle Bin)功能,可以在特殊情况下发挥特种兵的功能,比如当你删除一个表空间、一个用户(Schema)时&…

智能化中的控制与自动化中的控制不同

智能化中的控制相对于自动化中的控制更加灵活、智能、综合和学习能力强。智能化控制系统能够根据实际情况进行自主决策和优化,适用范围更广,效果更好。 首先,智能化控制系统能够根据外部环境的变化和实时数据的反馈来自主调整和优化控制策略&…

Flink on Zeppelin (4) - 机器学习篇

今天我来讲下如何在 Zeppelin 里做机器学习。机器学习的重要性我就不多说了,我们直奔主题。 Flink 在机器学习这个领域发力较晚,社区版没有一个完整的机器学习算法库可以用,Alink[1]是目前 Flink 生态圈相对比较完整的机器学习算法库&#x…

五个问答,告诉你阿里云对象存储如何助力钉钉战胜业务洪峰

“基于OSS在弹性扩容、跨省容灾、多租户管理以及传输加速方面的基础能力,钉钉在此次战役过程中,实现了一键切换写入区域,拆分业务到多个区域的功能,同时钉钉在跨区域的图片处理、文档预览的并发处理量上有了10倍速的提升。”——钉…

知乎高赞:一行代码凭什么躺普通程序员的10年工资?

笔者这两天闲逛知乎,看到了这个帖子:匿名答题,发表于2014年,此外没有留下任何多余信息。2年躺赚200万,相当于普通程序员10年的工资。没想到Pyhon这么强大,怪不得有人说“除了不会生孩子,Python什…

第九弹 - 脚本模式与参数视图

MaxCompute(原ODPS)是阿里云自主研发的具有业界领先水平的分布式大数据处理平台, 尤其在集团内部得到广泛应用,支撑了多个BU的核心业务。 MaxCompute除了持续优化性能外,也致力于提升SQL语言的用户体验和表达能力,提高…

在家“隔离”这1个月,阿里云视频云这些工程师都经历了什么?

战"疫”当前,没有谁会置身事外。从1月底开始,一场全民疫情阻击战拉开帷幕,企业停工、学校停课、商场停业,城市街道分外冷清,相反的是,无法出门的数亿网民却在互联网上掀起了一阵不小的流量热潮。距离2…

让安全威胁无所遁形,全方位掌握攻击“前世今生”的黑科技来了

作者 | 伍杏玲出品 | CSDN(ID:CSDNnews)据启明星辰发布的《2019~2020网络安全态势观察报告》显示,在过去一年多时间里,勒索攻击由 2014 年的广泛无目的的传播阶段到2017 年 WannaCry 带来的大规模自动化传播阶段,如今已…

docker mysql 日志在哪里_docker容器启动后日志在哪里

docker容器启动后日志在哪里? docker启动后日志会在以下位置 /var/lib/docker/containers/容器ID/容器ID-json.log 也可以使用以下命令查看日志: docker logs 容器ID使用docker-compose可以通过配置把日志记录到本地文件中 实战,演示以mys…

数据价值挖掘利器!阿里云实时数仓AnalyticDB PG

目的 随着数字经济时代的到来,越来越多的应用依赖数据分析来挖掘数据的价值。作为大数据存储、在线分析的重要基础系统,分析型数据库(OLAP)为数据价值的在线化提供重要的技术平台。 阿里巴巴OLAP团队经过调研发现,现…

美国AI博士指出:60天掌握Python全栈需要...

我见过市面上很多的 Python 讲解教程和书籍,他们大都这样讲 Python 的:先从 Python 的发展历史开始,介绍 Python 的基本语法规则,Python 的 list, dict, tuple 等数据结构,然后再介绍字符串处理和正则表达式&#xff0…

别琢磨了,企业高效灵活运作的秘密拿走:企业邮箱5折起!分享会场抽取苹果手机和猫超卡!

办了公司没个官方邮箱怎么行?还在用私人邮箱联系业务吗? - 不专业! 业务多了维护客户人脉关系怎么整?还在靠数名片管客户?- 太费劲! 公司大了管理维护难?还指望能靠人力运营&#x…

docker 配置nginx镜像出现 403 Forbidden的问题

(1)docker 配置nginx镜像的时候,将映射文件配置到当前宿主机上,启动nginx镜像,,通过域名访问,出现 403 查看nginx error.log日志,发现出现 (2)nginx镜像文件的配置: 启…

一套 SQL 搞定数据仓库?Flink有了新尝试

数据仓库是公司数据发展到一定规模后必然需要提供的一种基础服务,也是“数据智能”建设的基础环节。迅速获取数据反馈不仅有利于改善产品及用户体验,更有利于公司的科学决策,因此获取数据的实时性尤为重要。 目前企业的数仓建设大多是离线一套…

17 年安全界老兵,专注打造容器安全能行吗?

作者 | 伍杏玲出品 | CSDN(ID:CSDNnews)容器作为云原生的代表技术,很多人认为是容器技术掀起云原生的变革:2004 年,谷歌开始使用容器技术,并在2006年发布进程容器,将容器虚拟化基础设施引入 Lin…

“开源”vs“商业”,差别到底有多大?这篇测试一目了然

近些年来在数据分析领域,涌现出很多开源的技术方案,例如Presto、Spark、Impala等。面对多种选择,客户往往会比较困惑、无从下手。此外,MySQL生态非常火热,但对于数据分析类场景,使用此类关系型数据库是否合…

docker: Error response from daemon: driver failed programming external connectivity

docker: Error response from daemon: driver failed programming external connectivity 解决方案 (重新启动docker) systemctl restart docker

该买哪家二手手机呢?程序员爬取京东告诉你!

作者 | AJ Gordon责编 | 李雪敬出品 | CSDN(ID:CSDNnews)当你手头有一件闲置的物品时,最好的办法不是放在家里积灰,而是拿到二手网站上进行拍卖,例如淘宝的闲鱼,京东的拍拍等等。有这方面经验的…

服务3000万制造企业 阿里云数字工厂诚邀合伙人

阿里云工业互联网平台(数字工厂)通过整合阿里云资源可提供从产品研发、生产制造、销售、物流仓储、能源管理等链路中所需要的全部应用。为大型制造企业提供工业大数据分析以实现更高层次的价值挖掘,赋能中小制造企业用云化工具以较低成本实现…

大厂面试录取通过率不到3%,我真是太太太难了......

对今年应届毕业生来说,这个毕业季太难了,今年应届生总人数 874 万多,再创历史新高,各大招聘单位不仅缩减了招聘岗位,还取消了线下春招。最近在后台看到不少吐槽,很多同学反映自己面试一面就挂,有…