Intel SGX入门(二)——SGX应用篇

article/2025/9/21 20:50:27

大概了解SGX以后,SGX应用有哪些?

 

第一种,SGX应用于服务器端,云端

这一类个人觉得很需要结合代码、它们所描述的行业需求和以前的行业产品去考虑问题,毕竟是应用,不然可能体会不到精髓。

我对SGX应用的理解也停留在表层,就是他们拿SGX大概做了个啥,但是有些细节,我目前也说不太上来。

DelegaTEE(SEC18) Siniša Matetić (ETH Zurich)下一篇也是他

 

以前Alice(Owner)想将自己部分Paypal中的资产给Bob(Delegatee),需要将账户密码交给对方,这很不安全。(我们不考虑钱能直接通过转账,因为有的资产并不像转账那样可以简单实现,那样单纯是金额的加减。我们讨论的是一大类授权的问题)。

那么现在用上一个凭证和对凭证以及用户身份信息验证的一个服务器Brokered System。Brokered System能够根据Alice具体将多少资产以怎么样的形式分享给Bob这件事生成凭证,并且凭证一方面分享给Bob,另一方面储存在服务器中,Bob登录服务器后,证明自己是Bob,并且把凭证给服务器一看,服务器觉得OK并且Bob想用掉这笔资产的时候,服务器就让Paypal去完成比如支付Money的操作,可以看到验证的事情被放到了Brokered System服务器上面去做,Paypal直接和Brokered System合作,而不再和用户直接接触。带来的好处是什么呢?是Paypal和Bob、Alice之前不需要互相信任,再无瓜葛,只需要信任Brokered System即可。这里可能看起来是一个妖异的设定:我的理解是因为本来Paypal没有这个功能,Brokered System作为第三方模块来实现这个功能,想尽办法完成这种类似可信红娘的牵线工作。

那么我们似乎还没说到SGX。我们可以看到这时Brokered System中凭证的存储、验证、使用非常敏感,同时Alice和Bob的个人信息也需要被严格保护,作者就想到使用SGX来对这个服务器来进行保护。所以这里应该来说时SGX在服务器端的简单尝试,更多的是授权的内容,但是授权的方式已经就有类似的(Kerberos系统也是授予ticket,和使用ticket的模式),所以它讨论的亮点还是SGX的应用,难度可能在于SGX的开发并且做成一个实际产品。

这篇论文通过视频看的,可能理解不到位,有错误欢迎反馈。

BITE(SEC19) Siniša Matetić (ETH Zurich)上一篇也是他的

 

区块链中,我们知道手机等资源有限设备是不可能承载一个区块链的完全节点,所以手机上一般都是轻节点,并且轻节点是根据需求向完全节点申请当前涉及的区块等信息。但是Light Node向Full Node请求地址对应内容时,Full Node势必要知道你所请求的啥,导致信息泄露。之前有个Bloom Filter试图通过一个类似哈希表(或者是个承载多个对等数据单元的数据结构)并且模糊化访问这个数据结构的过程来解决这个信息泄露的问题,但是作者说共享Bloom Filter依然会导致信息泄露(Bloom Filter这一块我只是大概听说过,不了解)。

那么有了SGX这个东西,作者就利用SGX内部部署Full Node端用来接收Address请求的模块,这样部署在服务器上也不用担心Ring0攻击者的迫害了。所以本质也是SGX对原有产品的改进。此外有一些细节是说:通过Scan Window或者ORAM来返回结果值,为了保证SGX执行中的侧信道问题。ORAM已经有挺多论文用来防止访存侧信道问题,后面也会提到(【写到后面时把名字贴上来】)。现实中,走路时拐七绕八的方式让陌生人不知道我们具体要去哪里。你可能说,陌生人会看到我们最终进入哪个建筑,那么如果说有那么一个传送门,进的看起来是A建筑,实际传送到了B建筑,(这是通过查表转换实现),那么陌生人就只能犯糊涂了。这里需要知道的就是说ORAM可以通过类似上述方式让攻击者无法得知受害者的访存情况。

可以看到目前SGX应用在某些知名产品上,对原有模块的替换或改进,会受到大家很大的关注。

EnclaveDB(S&P18)微软和伦敦帝国学院合作的

 

数据库DB可以说是大部分产品都要依赖的东西,计算机世界基础中的基础。但是现在服务器里面大家都考虑Ring0攻击者的威胁了,那么DB里面的资料可不能让Ring0攻击者偷取,因为人们对于敏感信息的保密要求是越来越高。以前有通过加密方式的DB,加密的方式效率低,这个可想而知,加密算法固有的缺陷。

那么服务器有了SGX,我们就干脆将部分敏感的数据库放入Enclave,通过SGX而不是加密方式来保证安全,同时通过完善的日志记录模式和事务备份恢复来保证完整性。上图蓝色是可信的部分,客户端默认是可信的,一般用户自己不会坑自己,这里不考虑自己电脑被攻击了,只考虑服务端有Ring0攻击。第一步,我们在右上角的东西比如可信DB、预编译的Stored Procs会被通过签名加密等安全措施,被部署到服务器端的Enclave。第二步,其他客户端申请查询请求时候,通过自己的Client库通过左边Host Process间接和Enclave搭上勾并进行真正的查询操作。

这一篇从视频上来看,它告诉我们SGX应用要考虑部署和使用两件事。

小结

上图是CCS’17上一位大佬讲的SGX服务端应用的论文列表(部分文章其实也可以归于SGX Shield Framework类,后面单独拎出来),和我随机看的那几篇有交集。但是我有一个明确的感受就是,想要做SGX应用,得有原来那种产品的很清楚的了解,我光看视频没法深入理解SGX应用的真正意义。以后若有需求会去看论文或者相关的代码框架。

不过总的来说,SGX应用是真正体现SGX价值的地方,现阶段的SGX应用可能思路上简单(实现可能也复杂),但是这将代表SGX这项技术是有意义的。并且服务端的SGX应用你需要考虑SGX应用部署和使用两件事。

另外值得一题的是,我们多多少少可以看出SGX是同态加密的一个好的替换品。同态加密是通过密码学的方法让你无法感知(秘密+秘密=秘密)这个过程,而SGX就是在保险箱里面完成(秘密明文+秘密明文=秘密明文)的工作,明文算起来就很快。

第二种,应用于客户端

这一块的内容相对少一些,目前大家所能想到的就是比如游戏开发商在下放游戏许可证等版权信息的时候,那么就用SGX内部来保存版权信息,你想玩游戏,得通过SGX内部版权信息的验证。但是我觉得这一点上,可能对于很强的逆向工程高手来说,可能无意义,因为逆向工程逆向的是代码,SGX内部的敏感数据显得不重要了。除非游戏里面的部分关键代码也在SGX里面(个人猜测,正常情况下,Enclave代码是公开可见的,SGX保护的是代码完整性,SGX保护的机密性是隐私数据的机密性,不过也有论文是能够将Enclave代码秘密地加载到SGX中),那么逆向工程会变得极其困难。

这张图大概展示了客户端SGX应用的大概样子,主要我个人对OTP不懂,所以不太好阐述,但是我们可以看到这个框架就是客户端SGX和开发商之间有安全授权、配置的过程,那么Enclave可以看作开发商的飞地了(可以联想领事馆这个概念)

第三点,SGX应用于分布式客户端

这类的论文和工作也不多,主要可能大家想法有限。我自己有一个想法就是分布式SGX客户端下,我们可以将服务端的某些贴近客户端的部分功能(或者全部功能)给移到客户端来降低服务端的攻击范围和单点失效问题。有一点像客户端冗余来弥补服务端单点的种种问题。

分布式SGX可能的应用模式

有了SGX,我们可以将中心化任务做成分布式,而不用担心分布式客户端上的用户会故意不按照预期流程执行,因为SGX已经不能被Ring0攻击了。这有点像我有个公司,我把我们公司的会计、法务都给派到了顾客家里,而且这会计和法务是绝对忠诚的。

以前也有分布式相关的工作,但是方式都通过加密、冗余备份来实现可靠性。而我们通过SGX先天提供可信执行环境,那么就不再需要加密、冗余备份的操作,而且将流程化简,功能性和扩展性也可以很好的提升。因此又体现了:SGX是加密方案的高效替代品

中心化任务分布式程度理论上是可以调节的,就是具体有多少模块贴近客户端。借此我们可以可以根据分布式SGX的计算资源和存储资源的多少来进行一个具体的中心化任务分布式程度的界定。

其实上述这种抗Ring0攻击的Enclave其实不单单只有SGX可以做到,还有其他SGX的小伙伴也能。有一篇【SecTEE】讲的是Trust Zone下提供Enclave的概念,它里面说只要提供隔离机制的CPU均有望实现Enclave。

上面大概讲了下SGX分布式应用的一种可能模式,那么具体的可能可以用于分布式存储、分布式计算、分布式授权。

有一个功能这里也值得一提,【VC3、SGX-Shield】能够做到Enclave代码隐蔽载入Enclave内存(通过远程载入具体代码),或者我想有可能本地Enclave代码加壳也能够做到Enclave代码保密的效果【目前可能尚未实现】(但是一般来说代码加壳可以抗静态分析,能否抗动态分析尚不清楚,而且可能有赖于具体实现)。对此我想利用的点是说,可以将Enclave代码对分布式客户端隐藏,就是悄悄地带入分布式客户端的SGX内,避免不必要的Enclave代码公开。

现在,我们再考虑分布式客户端会有Enclave被开、关、重启的情况,为了保证Enclave内数据在不同时间段依然一致且有效,可以通过密封操作来保证状态连续性。目前密封操作有回滚攻击的危险。对此,密封操作的抗回滚方案有【SGX Monotone Counter、ROTE……】。

单独考虑分布式授权案例,将授权和验证的功能(相当于公司工作人员)派到客户端。为了防止分布式SGX某个节点被攻陷然后对全局产生危害,那就依然可以采用中心化+分布式相结合的方案,也就是说有多少功能下放到分布式SGX的程度进行考量(比如分布式SGX节点只被赋予有限的权限,但也能很大程度满足正常验证需求,使得攻击者攻破分布式SGX节所能获得的权力有限)。

最后,审计的需求、日志的维护可以参考【EnclaveDB、ROTE】的做法。此外,日志管理细节上可以做冗余备份,然后借鉴Counter【SGX Monotone Counter、ROTE……】实现一致性维护。

SGX应用的总结

现在SGX渐渐应用于传统模块的替换,然后提下SGX价值,目前的工作应该说不多。不过也恰恰体现了SGX的潜力,然后未来还有很多SGX的工作可以做。

 

以本人浅见发表自身对Intel SGX调研情况,不能保证某些细节均正确,不定期进行内容补充、修正。

如有高见,欢迎讨论!

本文为原创文章。转载请注明出处,仅供学习,禁止用于出版、发表文章等用途,禁止用于商业用途。侵权者必究。


http://chatgpt.dhexx.cn/article/0810p1cn.shtml

相关文章

Intel SGX Explained

文章目录 SGX新增Abstract第一章 概括1.1 SGX简介1.2 大纲和问题发现 第二章 Intel体系架构背景知识2.1 Overview2.2 计算模型2.3 软件权限级别2.4 地址空间2.5 地址转换2.5.1 地址转换概念2.5.2 地址转换和虚拟化2.5.3 页表属性 2.6 执行上下文2.7 段寄存器2.8 特权级别转换2.…

sgx使用记录(Windows开发环境搭建以及sgx的简单介绍)1

sgx使用记录 相关代码仓库 ##sgx-sdk https://github.com/apache/incubator-teaclave-sgx-sdk.git##Teaclave:通用安全计算平台 https://github.com/apache/incubator-teaclave检测sgx运行环境是否支持 ##或使用cpuid命令 cpuid |grep -i sgx##或使用脚本测试 下…

Windows10下使用Intel SGX功能(一):环境搭建

文章目录 参考文献系统要求一、安装Open Enclave SDK 环境(一)什么是Open Enclave SDK(二)启动SGX功能方法一: BIOS启动方法二:软件方式启动 (三)安装必要环境(1&#xf…

Intel SGX 功能如何开启

Intel SGX 功能如何开启 我本身是 Windows10 系统, BIOS 是 ASUS 的,在想装 Ubuntu 双系统的时候,在启动 Ubuntu 安装 ISO 的时候提示说电脑的 SGX 没有开启,安装失败,安装界面都没有进去。 之后搜了下如何开启 SGX&a…

SGX的内部组件概述

导语:SGX是Intel开发的新的处理器技术,可以在计算平台上提供一个可信的空间,保障用户关键代码和数据的机密性和完整性。SGX全称Intel Software Guard Extensions,顾名思义,其是对因特尔体系(IA)…

SGX入门

如何设计SGX程序: SGX分为可信部分和不可信部分,可信部分由enclave组成(一个应用程序可以拥有一个或多个enclave),enclave存储在加密的内存中,受SGX保护,enclave一旦被建立就不能更改,所以通常…

SGX Enable

根据INTEl的官方建议, 目前的电脑主板在BIOS设置上只保留了Disabled和Software Controlled来开启和关闭SGX扩展 使用Software Controlled开关的原因官方文档有阐述,如下: 开启SGX扩展,首先需要满足以下要求: CPU具有…

Intel SGX技术详细解释(非常棒)

http://www.jos.org.cn/html/2018/9/5594.htm#b18 随着信息技术的迅速发展与广泛应用, 人类社会已经进入了一个崭新的互联网时代.一方面, 人们享受着互联网科技带来的便利; 另一方面, 由网络和信息系统构成的网络空间也面临着日益严峻的安全问题.信任是网络空间中安全交互的基…

SGX问答

0 前言 有些问题比较常见,在这里直接将问答内容贴出来,方便大家搜索。有空再重新组织文字。 (我会避免泄露私人信息) 1 内存地址翻译全部交给os,那中间经过cache也是全部交给os是嘛?这个cache这部分&…

小谈Intel SGX

目录 Intel SGX简介 背景 为什么要Intel SGX? Intel SGX尚处于学术讨论 Intel SGX和可信启动什么关系? 开发者眼中SGX长什么样子? SGX访问控制是什么? MEE与SGX EPC内存加密 CPU里面SGX长什么样子? 有Enclav…

SGX技术与SGX攻击

2013年, Intel推出SGX(software guard extensions)指令集扩展, 旨在以硬件安全为强制性保障, 不依赖于固件和软件的安全状态, 提供用户空间的可信执行环境, 通过一组新的指令集扩展与访问控制机制, 实现不同程序间的隔离运行, 保障用户关键代码和数据的机密性与完整性不受恶意软…

Intel SGX初步学习理解笔记(持续更新)

一些概念 SGX(Software Guard eXtensions)软件保护扩展:是一组CPU指令扩展,能够创造出一个可信执行环境来保护代码和数据,即使使用root 权限也无法访问。通过这个硬件设施,应用程序可以隔离代码和数据来达…

Intel 的 SGX 技术小知识

1.SGX 概述 Intel SGX (Software Guard Extensions) 是一种针对特定应用程序的安全增强技术。它允许应用程序在处理机上创建受保护的执行环境,这个执行环境被称为“enclave”。这个 enclave 是一个被硬件隔离的内存区域,只有在安全条件下才可以访问。这…

新手学编程必会的100个代码

前言 我记得刚开始接触编程的时候,觉得太难了。 也很好奇,写代码的那些人也太厉害了吧?全是英文的,他们的英文水平一定很好吧? 他们是怎么记住这么多代码格式的?而且错了一个标点符号,整个程…

适用于编程开发自学的学习网站

今天为大家分享几个编程开发自学的学习网站 1.C语言网 该网站有很多C语言相关的教程、资源、博客和练手习题,同时也有很多题库和比赛,比较实用。 网址:https://www.dotcpp.com/ 2.cppreference cppreference是一个免费网站,上面…

初学者必会的100个编程代码

这是本文的目录 前言1、for循环中的else条件2、数字求和3、随机数生成4、将列表中的所有元素作为参数传递给函数5、获取列表的所有中间元素6、使用一行代码赋值多个变量7、Python清空列表8、通过Enum枚举同一标签或一系列常量的集合9、重复字符串10、计算每个月天数11、输出指定…

程序员初学者应该如何自学编程

在你要进入学习殿堂之前,先问你自己100遍:“我能坚持多久?”不要认为这样做很无聊,你要是真的试了,你会有不同的一番感受的,不信你试试看。如果你越问越没信心的话,那说明你心理上还没有准备好&#xff1b…

编程在哪学,可以免费自学编程的10个网站

编程学习 很多人包括一些企业家,和市场营销人员都认为学习编程对一个人走向成功十分有帮助。在过去的一年里,我一直在学习编程。它有助我成为一个更好的创业者,我甚至可以提供一些帮助,当我的团队需要解决一些bug的时候。 现在&a…

编程入门: 自学编程从哪里开始? [初学参考]

自学编程,先学python、java还是C/C? ——大四学生对于初学者的一点建议 摘要: 自学编程,先学什么语言呢?实际上,编程能做的事太多了,首先明确自己想要用代码做什么,再明确自己的学…

想自学编程?这么多编程自学网站,总有一个适合你吧!

小伙伴们周末快乐。 今天分享一波适用于编程开发学习的自学网站,主要涉及编程学习和练手 、 提问交流 、 计算机公开课 、 在线刷题 、以及 问题搜索 等几个方面,希望能有帮助。 C语言网 该网站有很多C语言相关的教程、资源、博客和练手习题&#xff0c…