网站建设前台后台教程,工业产品设计要学什么,百度官网下载安装免费,找回网站后台来源 | 编程技术宇宙封图 | CSDN 下载自视觉中国神秘项目我是CPU一号车间的阿Q#xff0c;是的#xff0c;我又来了。最近一段时间#xff0c;我几次下班约隔壁二号车间虎子#xff0c;他都推脱没有时间#xff0c;不过也没看见他在忙个啥。前几天#xff0c;我又去找他是的我又来了。最近一段时间我几次下班约隔壁二号车间虎子他都推脱没有时间不过也没看见他在忙个啥。前几天我又去找他还是没看到他人却意外地在他桌上发现了一份文件打开一看是一个代号为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.htmIntel SGX学习https://zhuanlan.zhihu.com/p/50894009Intel 官方文档https://software.intel.com/sites/default/files/article/413936/hasp-2013-innovative-instructions-and-software-model-for-isolated-execution.pdf更多阅读推荐下一代 IDEEclipse Che 究竟有什么奥秘窃隐私、放高利贷输入法的骚操作真不少进入编译器后一个函数经历了什么程序员离职后收到原公司 2400 元被告违反竞业协议赔 18 万5年5亿美金华为昇腾如何争夺AI开发者