注:本文不涉及專業(yè)技術細節(jié),放心食用,看不懂也可直接看總結(jié)部分

Why
程序要運行,就離不開內(nèi)存,
程序使用的數(shù)據(jù)先從硬盤加載進內(nèi)存,
才被CPU執(zhí)行.
放在一個具體場景里講,
軟件A將一加密狀態(tài)的txt文本,
從硬盤加載到內(nèi)存中并解密,
為之后的執(zhí)行邏輯做鋪墊.
壞蛋B蓄謀已久,
對軟件A的運行邏輯進行逆向分析,
針對性的編寫了軟件B.
B可不是一個安分的正常軟件,
因為大家共用內(nèi)存,它能跑到A的內(nèi)存位置,
狙擊A解密txt的時機,竊取A的明文txt內(nèi)容,
最后結(jié)果是B得逞,給A造成嚴重的泄密損失.
(內(nèi)存沒有隔離)
How
現(xiàn)代操作系統(tǒng) Linux Windows Mac,
已充分意識到這個安全問題,
它們給每個程序定下游戲規(guī)則,
每個程序,都會被上頭分配一塊內(nèi)存作為日常開銷,
但規(guī)矩是它只能訪問這塊內(nèi)存,跑不到別人家內(nèi)存去,
聽起來像是隔離一樣的解決方案.
應用程序們生活在平行宇宙中,各過各的相安無事.
(進程虛擬內(nèi)存空間)
問題暫時得到了解決,
不過很快人們就發(fā)現(xiàn)了新的問題,
如果作為上級的操作系統(tǒng)也被惡意程序B搞定了呢?
即程序B拿到了操作系統(tǒng)最高權(quán)限,手握大權(quán),
能不能訪問程序A的內(nèi)存,還不是自己說了算?
(提升權(quán)限)
安全專家們不得不開始考慮,
假設應用 系統(tǒng) BIOS都不可信,
要怎樣才能實現(xiàn)內(nèi)存訪問控制,
讓程序B規(guī)規(guī)矩矩的,永遠別想惦記人家A的內(nèi)存.
同時前提是,還不能添加新硬件模塊給用戶添加負擔,
這個需求太變態(tài)了.
(TCB可信計算基)
What

既然中間商們也會淪陷,直接放棄對它們信賴好了,
Intel的工程師們一拍大腿想到一個解決方案,
直接在CPU里添加一個叫SGX(Software Guard Extensions)的新功能.
現(xiàn)在程序A可以向CPU申請一塊內(nèi)存安全區(qū),
程序A將它的數(shù)據(jù)和代碼載入到這個內(nèi)存安全區(qū),
該內(nèi)存安全區(qū)的逆天特性是:
惡意程序B,操作系統(tǒng),甚至BIOS系統(tǒng),通通無權(quán)訪問和干涉.
以前惡意程序B只要搞定操作系統(tǒng)就可以拿下程序A,
現(xiàn)在不好使了,它還要搞定CPU,
至此SGX實現(xiàn)內(nèi)存隔離.
(Enclave安全區(qū))
放在一個具體場景里舉例
1Password是一款全球流行的密碼管理軟件,
日常使用它時,我們需要輸入密碼密鑰等,
執(zhí)行驗證和解密后,才能查看保存在其中的各類密碼.
用戶把密碼輸進1Password后,
密碼會出現(xiàn)在1Password運行時的內(nèi)存中,
在以前,擁有操作系統(tǒng)權(quán)限的惡意程序B,
是有能力在內(nèi)存中嘗試窺探這些密碼密鑰的.
現(xiàn)在1Password使用了Intel SGX技術,
把密鑰數(shù)據(jù)和加解密過程扔進了安全區(qū)里,
使用操作系統(tǒng)管理員權(quán)限也無權(quán)訪問篡改.
(1Password請給我打錢)
和TPM的區(qū)別?
TPM用于OS和應用的靜態(tài)完整性度量.
SGX除了提供程序加載時的完整性驗證外,還保證程序運行時安全,緩解針對程序運行時的攻擊.
普通用戶如何開啟SGX功能?
1 CPU支持SGX功能
2 BIOS支持SGX功能
3 BIOS中開啟SGX功能
4 安裝Intel SGX PSW軟件
SGX相關安全問題

SGX拉高了軟件運行時安全的下限,但并非萬無一失的,
業(yè)界已經(jīng)對SGX技術展開了廣泛的安全研究,
出現(xiàn)了一些針對性的邊信道攻擊的案例,
如比較出名的SGX Foreshadow 預兆漏洞),
由于內(nèi)容過于硬核,我基本上沒有看懂,
這里內(nèi)容就不往下展開了.
總結(jié)
應用程序運行時申請了一塊安全的內(nèi)存空間,只有它自己能訪問,
其他惡意軟件,即使是操作系統(tǒng)都無權(quán)訪問,
加解密過程和密鑰放入其中得到了保護,
實現(xiàn)了黑箱子一樣的效果.
不依賴TPM芯片,
不用信任TPM芯片,
將可信計算基縮小到了CPU.
參考
SGX技術的分析和研究
http://www.jos.org.cn/html/2018/9/5594.htm#b18
360冰刃實驗室-調(diào)試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側(cè)信道攻擊綜述
https://www.freebuf.com/articles/system/149551.html
Spectre攻擊變體SgxSpectre現(xiàn)身能從Intel SGX封裝中提取數(shù)據(jù)
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