下一代機密計算即將到來:性能比肩普通應用

隨着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的性能測評,並分享咱們提出的軟件性能優化方法。

本文包含三個部分:
1.    下一代Intel SGX簡介
2.    下一代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 SGX簡介git

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提供了一個在安全和性能之間更切實際的權衡。

下一代Intel SGX性能測github

是騾子是馬,牽出來溜溜。

理論上講,新SGX內存訪問的開銷是大幅下降的。但其餘方面的開銷呢?是有改進,抑或是有倒退?帶着這些疑問,咱們測試了在三款不一樣的Intel CPU上SGX的性能開銷,以橫向比較新舊SGX的性能差別。

SGX主要有三方面的性能開銷:

1. 可信內存訪問。如前所述,當飛地的可信內存用量很大時,飛地的可信內存訪問開銷會大幅提高。

2. 動態內存管理(Encalve Dynamic Memory Management,簡稱EDMM)。因爲作了更多安全檢查和處理,飛地中動態增減可信內存的開銷要比飛地外增減普通內存更大。

3. 飛地切換(Enclave Switching)。CPU進入或退出飛地的過程叫作飛地切換(能夠類比進程的上下文切換)。出於安全緣由,飛地切換會帶來不小的性能開銷。

咱們的測試結果和結論以下。

可信內存訪問開銷web

結論:新SGX的可信內存訪問開銷幾乎能夠忽略不計,遠優於舊SGX。

可信內存訪問開銷安全

結論:新SGX的動態內存管理開銷通常略優於舊SGX,但開銷仍然不小。

飛地切換開性能優化

結論:新SGX的飛地切換開銷顯著優於舊SGX,但開銷仍然不小。

下一代Intel SGX性能優化微信

根據上面的性能測試結果,咱們看到雖然新SGX已經消滅了可信內存訪問開銷了,但在動態內存管理和飛地切換方面仍然有着不小的開銷。前者會拖累飛地中的可信應用在內存管理方面的效率,然後者會大幅增長可信應的I/O開銷(I/O一般要觸發飛地切換)。

那麼,軟件層面是否能夠作一些優化,避免、緩解、或掩蓋SGX的這些硬件開銷?答案是確定的。

螞蟻集團在機密計算(包括Intel SGX)方向有着深厚的技術積累。咱們的一個表明性工做是Occlum項目( https://github.com/occlum/occlum ),一款螞蟻集團自主研發、適用於SGX的開源庫操做系統,可使得Linux應用無需修改便可運行於SGX中,大大下降了SGX的使用門檻。

Next-Gen Occlum的新設計架構

爲了優化Occlum在新SGX上的性能表現,咱們早在半年前就內部啓動了Next-Gen Occlum(簡稱NGO)項目,探索可能的軟件優化手段。 最終,咱們決定在NGO中採用一種「以異步爲中心」的新設計從新架構Occlum。 「以異步爲中心」的設計使得Occlum能夠最大化的利用Icelake的大內存和多核心的硬件優點,提升執行的並行性,從而避免、下降或掩蓋SGX的硬件開銷。
圖. NGO「以異步爲中心」的設計體如今四個層面

圖. NGO基於協程的高效調度

圖. NGO基於Linux io_uring的高效異步I/O

Next-Gen Occlum的性能結果異步

根據咱們的性能測試,NGO採用的性能優化手段是很是有效的——NGO在多項性能指標上達到——甚至超過了——Linux的水平!

這裏咱們給出初步的性能測試結果,見下圖。


結語ide

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


END -性能


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

相關文章
相關標籤/搜索