注:本文不涉及專業(yè)技術(shù)細(xì)節(jié),放心食用,看不懂也可直接看總結(jié)部分
Why
程序要運(yùn)行,就離不開(kāi)內(nèi)存,
程序使用的數(shù)據(jù)先從硬盤(pán)加載進(jìn)內(nèi)存,
才被CPU執(zhí)行.
放在一個(gè)具體場(chǎng)景里講,
軟件A將一加密狀態(tài)的txt文本,
從硬盤(pán)加載到內(nèi)存中并解密,
為之后的執(zhí)行邏輯做鋪墊.
壞蛋B蓄謀已久,
對(duì)軟件A的運(yùn)行邏輯進(jìn)行逆向分析,
針對(duì)性的編寫(xiě)了軟件B.
B可不是一個(gè)安分的正常軟件,
因?yàn)榇蠹夜灿脙?nèi)存,它能跑到A的內(nèi)存位置,
狙擊A解密txt的時(shí)機(jī),竊取A的明文txt內(nèi)容,
最后結(jié)果是B得逞,給A造成嚴(yán)重的泄密損失.
(內(nèi)存沒(méi)有隔離)
How
現(xiàn)代操作系統(tǒng) Linux Windows Mac,
已充分意識(shí)到這個(gè)安全問(wèn)題,
它們給每個(gè)程序定下游戲規(guī)則,
每個(gè)程序,都會(huì)被上頭分配一塊內(nèi)存作為日常開(kāi)銷,
但規(guī)矩是它只能訪問(wèn)這塊內(nèi)存,跑不到別人家內(nèi)存去,
聽(tīng)起來(lái)像是隔離一樣的解決方案.
應(yīng)用程序們生活在平行宇宙中,各過(guò)各的相安無(wú)事.
(進(jìn)程虛擬內(nèi)存空間)
問(wèn)題暫時(shí)得到了解決,
不過(guò)很快人們就發(fā)現(xiàn)了新的問(wèn)題,
如果作為上級(jí)的操作系統(tǒng)也被惡意程序B搞定了呢?
即程序B拿到了操作系統(tǒng)最高權(quán)限,手握大權(quán),
能不能訪問(wèn)程序A的內(nèi)存,還不是自己說(shuō)了算?
(提升權(quán)限)
安全專家們不得不開(kāi)始考慮,
假設(shè)應(yīng)用 系統(tǒng) BIOS都不可信,
要怎樣才能實(shí)現(xiàn)內(nèi)存訪問(wèn)控制,
讓程序B規(guī)規(guī)矩矩的,永遠(yuǎn)別想惦記人家A的內(nèi)存.
同時(shí)前提是,還不能添加新硬件模塊給用戶添加負(fù)擔(dān),
這個(gè)需求太變態(tài)了.
(TCB可信計(jì)算基)
What
既然中間商們也會(huì)淪陷,直接放棄對(duì)它們信賴好了,
Intel的工程師們一拍大腿想到一個(gè)解決方案,
直接在CPU里添加一個(gè)叫SGX(Software Guard Extensions)的新功能.
現(xiàn)在程序A可以向CPU申請(qǐng)一塊內(nèi)存安全區(qū),
程序A將它的數(shù)據(jù)和代碼載入到這個(gè)內(nèi)存安全區(qū),
該內(nèi)存安全區(qū)的逆天特性是:
惡意程序B,操作系統(tǒng),甚至BIOS系統(tǒng),通通無(wú)權(quán)訪問(wèn)和干涉.
以前惡意程序B只要搞定操作系統(tǒng)就可以拿下程序A,
現(xiàn)在不好使了,它還要搞定CPU,
至此SGX實(shí)現(xiàn)內(nèi)存隔離.
(Enclave安全區(qū))
放在一個(gè)具體場(chǎng)景里舉例
1Password是一款全球流行的密碼管理軟件,
日常使用它時(shí),我們需要輸入密碼密鑰等,
執(zhí)行驗(yàn)證和解密后,才能查看保存在其中的各類密碼.
用戶把密碼輸進(jìn)1Password后,
密碼會(huì)出現(xiàn)在1Password運(yùn)行時(shí)的內(nèi)存中,
在以前,擁有操作系統(tǒng)權(quán)限的惡意程序B,
是有能力在內(nèi)存中嘗試窺探這些密碼密鑰的.
現(xiàn)在1Password使用了Intel SGX技術(shù),
把密鑰數(shù)據(jù)和加解密過(guò)程扔進(jìn)了安全區(qū)里,
使用操作系統(tǒng)管理員權(quán)限也無(wú)權(quán)訪問(wèn)篡改.
(1Password請(qǐng)給我打錢)
和TPM的區(qū)別?
TPM用于OS和應(yīng)用的靜態(tài)完整性度量.
SGX除了提供程序加載時(shí)的完整性驗(yàn)證外,還保證程序運(yùn)行時(shí)安全,緩解針對(duì)程序運(yùn)行時(shí)的攻擊.
普通用戶如何開(kāi)啟SGX功能?
1 CPU支持SGX功能
2 BIOS支持SGX功能
3 BIOS中開(kāi)啟SGX功能
4 安裝Intel SGX PSW軟件
SGX相關(guān)安全問(wèn)題
SGX拉高了軟件運(yùn)行時(shí)安全的下限,但并非萬(wàn)無(wú)一失的,
業(yè)界已經(jīng)對(duì)SGX技術(shù)展開(kāi)了廣泛的安全研究,
出現(xiàn)了一些針對(duì)性的邊信道攻擊的案例,
如比較出名的SGX Foreshadow 預(yù)兆漏洞),
由于內(nèi)容過(guò)于硬核,我基本上沒(méi)有看懂,
這里內(nèi)容就不往下展開(kāi)了.
總結(jié)
應(yīng)用程序運(yùn)行時(shí)申請(qǐng)了一塊安全的內(nèi)存空間,只有它自己能訪問(wèn),
其他惡意軟件,即使是操作系統(tǒng)都無(wú)權(quán)訪問(wèn),
加解密過(guò)程和密鑰放入其中得到了保護(hù),
實(shí)現(xiàn)了黑箱子一樣的效果.
不依賴TPM芯片,
不用信任TPM芯片,
將可信計(jì)算基縮小到了CPU.
參考
SGX技術(shù)的分析和研究
http://www.jos.org.cn/html/2018/9/5594.htm#b18
360冰刃實(shí)驗(yàn)室-調(diào)試Released SGX Enclave
https://www.anquanke.com/post/id/209744
Sgx-Step:一款針對(duì)Intel SGX平臺(tái)的滲透測(cè)試攻擊框架
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