注:本文不涉及专业技术细节,放心食用,看不懂也可直接看总结部分
Why
程序要运行,就离不开内存,
程序使用的数据先从硬盘加载进内存,
才被CPU执行.
放在一个具体场景里讲,
软件A将一加密状态的txt文本,
从硬盘加载到内存中并解密,
为之后的执行逻辑做铺垫.
坏蛋B蓄谋已久,
对软件A的运行逻辑进行逆向分析,
针对性的编写了软件B.
B可不是一个安分的正常软件,
因为大家共用内存,它能跑到A的内存位置,
狙击A解密txt的时机,窃取A的明文txt内容,
最后结果是B得逞,给A造成严重的泄密损失.
(内存没有隔离)
How
现代操作系统 Linux Windows Mac,
已充分意识到这个安全问题,
它们给每个程序定下游戏规则,
每个程序,都会被上头分配一块内存作为日常开销,
但规矩是它只能访问这块内存,跑不到别人家内存去,
听起来像是隔离一样的解决方案.
应用程序们生活在平行宇宙中,各过各的相安无事.
(进程虚拟内存空间)
问题暂时得到了解决,
不过很快人们就发现了新的问题,
如果作为上级的操作系统也被恶意程序B搞定了呢?
即程序B拿到了操作系统最高权限,手握大权,
能不能访问程序A的内存,还不是自己说了算?
(提升权限)
安全专家们不得不开始考虑,
假设应用 系统 BIOS都不可信,
要怎样才能实现内存访问控制,
让程序B规规矩矩的,永远别想惦记人家A的内存.
同时前提是,还不能添加新硬件模块给用户添加负担,
这个需求太变态了.
(TCB可信计算基)
What
既然中间商们也会沦陷,直接放弃对它们信赖好了,
Intel的工程师们一拍大腿想到一个解决方案,
直接在CPU里添加一个叫SGX(Software Guard Extensions)的新功能.
现在程序A可以向CPU申请一块内存安全区,
程序A将它的数据和代码载入到这个内存安全区,
该内存安全区的逆天特性是:
恶意程序B,操作系统,甚至BIOS系统,通通无权访问和干涉.
以前恶意程序B只要搞定操作系统就可以拿下程序A,
现在不好使了,它还要搞定CPU,
至此SGX实现内存隔离.
(Enclave安全区)
放在一个具体场景里举例
1Password是一款全球流行的密码管理软件,
日常使用它时,我们需要输入密码密钥等,
执行验证和解密后,才能查看保存在其中的各类密码.
用户把密码输进1Password后,
密码会出现在1Password运行时的内存中,
在以前,拥有操作系统权限的恶意程序B,
是有能力在内存中尝试窥探这些密码密钥的.
现在1Password使用了Intel SGX技术,
把密钥数据和加解密过程扔进了安全区里,
使用操作系统管理员权限也无权访问篡改.
(1Password请给我打钱)
和TPM的区别?
TPM用于OS和应用的静态完整性度量.
SGX除了提供程序加载时的完整性验证外,还保证程序运行时安全,缓解针对程序运行时的攻击.
普通用户如何开启SGX功能?
1 CPU支持SGX功能
2 BIOS支持SGX功能
3 BIOS中开启SGX功能
4 安装Intel SGX PSW软件
SGX相关安全问题
SGX拉高了软件运行时安全的下限,但并非万无一失的,
业界已经对SGX技术展开了广泛的安全研究,
出现了一些针对性的边信道攻击的案例,
如比较出名的SGX Foreshadow 预兆漏洞),
由于内容过于硬核,我基本上没有看懂,
这里内容就不往下展开了.
总结
应用程序运行时申请了一块安全的内存空间,只有它自己能访问,
其他恶意软件,即使是操作系统都无权访问,
加解密过程和密钥放入其中得到了保护,
实现了黑箱子一样的效果.
不依赖TPM芯片,
不用信任TPM芯片,
将可信计算基缩小到了CPU.
参考
SGX技术的分析和研究
http://www.jos.org.cn/html/2018/9/5594.htm#b18
360冰刃实验室-调试Released SGX Enclave
https://www.anquanke.com/post/id/209744
Sgx-Step:一款针对Intel SGX平台的渗透测试攻击框架
https://www.freebuf.com/articles/system/220234.html
SGX可能遇到的攻击
https://zhuanlan.zhihu.com/p/42088755
SGX侧信道攻击综述
https://www.freebuf.com/articles/system/149551.html
Spectre攻击变体SgxSpectre现身能从Intel SGX封装中提取数据
https://www.anquanke.com/post/id/99843
Using Intel’s SGX to keep secrets even safer
https://blog.1password.com/using-intels-sgx-to-keep-secrets-even-safer/
Detecting and Enabling Intel® SGX | Intel Software
https://www.youtube.com/watch?v=bca5NcjoEdc
Foreshadow漏洞
Foreshadow: Extracting the Keys to the Intel SGX Kingdom with Transient Out-of-Order Execution
https://www.usenix.org/conference/usenixsecurity18/presentation/bulck
https://en.wikipedia.org/wiki/Foreshadow