隨着Intel新一代數據中心級處理器Ice Lake的發佈,由Intel SGX保護的可信應用的性能已經能夠比肩普通應用,讓咱們來看看這一切是如何經過硬件進步與軟件優化變爲可能?
北京時間2021年4月7日凌晨,Intel發佈了第3代至強可拓展處理器(代號爲Ice Lake)。這是Intel首次發佈基於10nm製程的數據中心芯片,帶來了更快的單核性能(聲稱20%的IPC提高)、更多的核心數(最多40 x 2個),8通道DDR4內存支持,以及面向AI和密碼學的加速指令。
除了上述性能提高之外,Intel還高調宣佈了在Ice Lake上帶來重要的安全特性——下一代Intel SGX技術。螞蟻集團的安全計算團隊在正式發佈的數月前,經過與阿里雲和Intel的合做,拿到了Icelake的測試芯片,並對其性能作了詳盡的測評。所以,咱們搶先給你們帶來了乾貨滿滿的下一代Intel SGX的性能測評,並分享咱們提出的軟件性能優化方法。
3. 下一代Intel SGX性能優化(在
Occlum
項目中)
本文的部份內容整理自做者在OC3會議(Open Confidential Computing Conference)上的技術演講,補充了此前沒法在Intel正式發佈Icelake以前公開的實測數據。這是業界首個對下一代Intel SGX的性能評估和優化報告。
OC3會議
是機密計算領域開源項目的第一次線上大聚會:15名演講嘉賓,來自Alibaba、Ant Group、Baidu、Intel、Google、Microsoft等業界主流軟硬件廠商;超過650名與會者,有來自66個國家和地區。螞蟻集團的安全計算團隊也受邀作了報告,介紹了咱們在
Occlum
項目中如何經過引入多種異步技巧、在下一代Intel SGX取得10X性能提高的工做。
Intel Software Guard Extensions (SGX)是一種內存隔離技術,它能夠將用戶選定的程序和數據放入被稱爲飛地(Enclave)的私有內存中保護起來,使得任何飛地外的(潛在惡意的)軟硬件都沒法窺探或者竊取飛地內的信息。
SGX是目前測試最充分的可信執行環境(TEE)技術之一,也是實現機密計算(Confidential Computing)的最主流技術手段,可應用於多方安全計算、雲計算、區塊鏈、隱私保護等諸多場景。
那Icelake平臺上的下一代Intel SGX(後簡稱「新SGX」)帶來了哪些改進呢?新SGX解決了舊SGX上的兩大可擴展性問題:
1. 核數:舊SGX此前可用的最高端芯片是Xeon E3,而該芯片只有6個物理核。顯然,這個數量對於數據中心場景的負載來講是徹底不夠用的。而新SGX的Icelake平臺支持至多80個物理核(160個邏輯核),帶來了CPU計算資源的跨越式提高!
2. SGX上可信內存容量只有256MB。當這個容量沒法知足飛地中的程序時,飛地對可信內存的訪問延遲就會大幅增長(1-2個數量級),嚴重影響性能。而新SGX的Icelake平臺將可信內存容量提高到了1TB,一舉解決了舊SGX在大內存應用方面的困擾!
下表總結了舊SGX(在Pentium Silver和Xeon E3上)和新SGX的差異:
但天下沒有免費的午飯。新SGX在可信內存容量上的可擴展性提高是以犧牲必定的安全性爲代價的:新SGX弱化了安全模型,放棄了對部分物理攻擊的防護(即經過物理手段對內存作篡改或重放)。固然,新SGX對軟件攻擊的防護並未削弱。關於新SGX的設計與安全性的更詳細信息能夠見Intel的
白皮書
。
總的來看,根據咱們對實際應用場景的理解和與客戶交流得到的反饋,咱們認爲新SGX提供了一個在安全和性能之間更切實際的權衡。
理論上講,新SGX內存訪問的開銷是大幅下降的。但其餘方面的開銷呢?是有改進,抑或是有倒退?帶着這些疑問,咱們測試了在三款不一樣的Intel CPU上SGX的性能開銷,以橫向比較新舊SGX的性能差別。
1. 可信內存訪問。如前所述,當飛地的可信內存用量很大時,飛地的可信內存訪問開銷會大幅提高。
2. 動態內存管理(Encalve Dynamic Memory Management,簡稱EDMM)。因爲作了更多安全檢查和處理,飛地中動態增減可信內存的開銷要比飛地外增減普通內存更大。
3. 飛地切換(Enclave Switching)。CPU進入或退出飛地的過程叫作飛地切換(能夠類比進程的上下文切換)。出於安全緣由,飛地切換會帶來不小的性能開銷。
結論:新SGX的可信內存訪問開銷幾乎能夠忽略不計,遠優於舊SGX。
結論:新SGX的動態內存管理開銷通常略優於舊SGX,但開銷仍然不小。
結論:新SGX的飛地切換開銷顯著優於舊SGX,但開銷仍然不小。
根據上面的性能測試結果,咱們看到雖然新SGX已經消滅了可信內存訪問開銷了,但在動態內存管理和飛地切換方面仍然有着不小的開銷。前者會拖累飛地中的可信應用在內存管理方面的效率,然後者會大幅增長可信應的I/O開銷(I/O一般要觸發飛地切換)。
那麼,軟件層面是否能夠作一些優化,避免、緩解、或掩蓋SGX的這些硬件開銷?答案是確定的。
螞蟻集團在機密計算(包括Intel SGX)方向有着深厚的技術積累。咱們的一個表明性工做是Occlum項目(
https://github.com/occlum/occlum
),一款螞蟻集團自主研發、適用於SGX的開源庫操做系統,可使得Linux應用無需修改便可運行於SGX中,大大下降了SGX的使用門檻。
爲了優化Occlum在新SGX上的性能表現,咱們早在半年前就內部啓動了Next-Gen Occlum(簡稱NGO)項目,探索可能的軟件優化手段。
最終,咱們決定在NGO中採用一種「以異步爲中心」的新設計從新架構Occlum。
「以異步爲中心」的設計使得Occlum能夠最大化的利用Icelake的大內存和多核心的硬件優點,提升執行的並行性,從而避免、下降或掩蓋SGX的硬件開銷。
圖. NGO基於Linux io_uring的高效異步I/O
根據咱們的性能測試,NGO採用的性能優化手段是很是有效的——NGO在多項性能指標上達到——甚至超過了——Linux的水平!
Icelake平臺上的下一代SGX帶來了可擴展性的質變,對實際應用意義巨大。
下一代SGX雖然未能消滅所有的硬件開銷,但經過恰當的軟件優化手段(如Next-Gen Occlum中所展現的),SGX飛地中的可信應用性能已經能夠比肩飛地外的普通應用。
Next-Gen Occlum中的優化會於近期開源,併合併入Occlum的主幹。歡迎持續關注Occlum項目(
https://github.com/occlum/occlum
)。
報告的YouTube視頻:https://www.youtube.com/watch?v=3qQHrUEzFX4

本文分享自微信公衆號 - 支付寶技術(Ant-Techfin)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。