雲計算

ARMv9能給ARM帶來新一輪騰飛嗎?(安全篇)

接上文

  在上一篇文章中,講了下ARM在ARMv9中人工智能領域的相關技術SVE2,以及其他人工智能相關的佈局。對於ARMv9是否能給ARM帶來騰飛,僅根據SVE2,我認為是不夠的。
  ARMv9另一大技術點是安全,本文會重點介紹ARMv9的CCA(Confidential Compute Architecture)技術和MTE(Memory Tagging Extension)技術。最終,結合兩大方向,給出我對這個問題的結論。

安全,永遠的安全

  隨著越來越多的設備連在網上,隨著越來越多的數據被採集,隨著人們隱私意識的不斷增強,安全問題不斷成為社會議論的焦點,相關的軟硬件技術也在不斷產生和迭代。賽門鐵克僅在2020第一季度,就在IoT的Honypots中偵測到近1億9千萬次攻擊,平均每秒超過100次[1]。
  作為芯片IP提供設計者,ARM在其中扮演的角色至關重要。硬件的安全方案是軟件無法攻克的,因此ARM有責任為當前社會的安全問題提供安全的硬件底座。這也就是為什麼TrustZone技術被ARM在ARMv6中發佈以來,已經被廣泛的使用,提供可靠的安全啟動,加解密等服務。下面我們先簡單介紹下TrustZone的基本原理。

另一個世界(TrustZone)

  TrustZone最核心思想就是在真實的世界(normal world)之外並行的增加了一個安全世界(secure world),兩個世界都是完整的(都有硬件,操作系統,應用軟件)。安全世界是全知全能的,但真實世界則對安全世界不感知的。創世紀(系統啟動)先從安全世界開始,真實世界被安全世界定義後才被啟動。而當待定的事件(比如特定的異常)在真實世界中被觸發後,真實世界會被暫停,切換到安全世界來處理完成後再切換回真實世界,這段逝去的時間對於真實世界是無感的。
  有了這樣的硬件設計,就可以把一些敏感重要的信息和處理過程放在安全世界處理,對於這個數據的訪問和過程調用,被封裝成服務調用,在真實世界中被使用。比如安全啟動的信任鏈的起點總是從安全世界開始,比如敏感的加解密過程也可以放在安全世界等等。
  ARM的TrustZone設計是比Intel的TPM技術更方便的。TPM僅僅是把固定的能力設計成安全可靠,但ARM的TrustZone是提供了一個完整的世界,提供的功能可被軟件完整定義,這樣就提供了非常強的可塑性。
  但TrustZone也有它的侷限性。TrustZone基於的安全模型是低安全等級的軟件對於高安全等級的軟件是完全可見的,因此應用的安全性是會被操作系統和Hypervisor影響的。隨著對於安全的訴求不斷增加,TrustZone已經逐漸不夠用了,此次ARMv9的發佈,ARM和微軟合作開發了CCA技術。

更多的世界(CCA)
image.png
前文說TrustZone是增加了一個並行的安全世界,在CCA中,更是增加了一個Realm的概念,也就是可以給應用創建一個單獨的世界,這個世界對於其他的Realm,操作系統,hypervisor甚至是安全世界都是不透明的。所以那些商業軟件就可以運行在這個世界中,這樣那些商業敏感數據和代碼是被硬件隔離保護的。即使其他的應用被攻破,這些商業軟件的敏感信息也是安全的。   在CCA技術中,hypervisor僅僅用於資源分配和調度,而Realm是被Realm Manager管理的。應用會被Realm Manager認證是不是可信的。通過使用Realm,信任鏈變短了,可信應用可以跑在任意的設備上,而不需要考慮底層的操作系統,這樣整個系統的安全設計會大大簡化。在最近的一份調查報告顯示,91%的被調查企業表示,通過CCA,企業的機密數據得到保護的話,會大大提高企業的創新能力 [3]。   迄今為止,ARM並未發佈CCA的詳細資料。但既然CCA的開發是ARM和微軟合作的結果,相信微軟未來會基於CCA的硬件推出其完整的軟硬件協同的安全解決方案的。 ## C/C++語言的新生(MTE)   相信使用C/C++的工程師都曾經或者正在被各種內存問題困擾,特別是use-after-free,簡直是無解問題。同樣在安全領域,內存安全問題也是安全漏洞的重災區。微軟安全響應中心的研究表明,約70%的漏洞是內存安全問題 [4]。谷歌安卓項目發現超過75%的漏洞是內存安全問題 [5]。   針對內存安全問題,ARM在ARMv8.5中作為可選擴展首次發佈MTE(Memory Tagging Extension)技術,在ARMv9中成為默認配置。
image.png
MTE簡單來說就是在內存上打標記(tag),而後續的內存訪問操作同樣也是帶標記的,如果標記不匹配,則會發生異常被操作系統捕獲進而採取相應的處理。   MTE的實現是有硬件開銷的,對每16Byte內存打一個4bit的Tag。另外,針對性能問題,MTE提供了精確檢查(precise check)和非精確檢查(imprecise check),精確檢查可以定位具體出問題的內存訪問指令,而非精確檢查可以定位出問題的線程。因此在實際的使用中,可以按需配置。   谷歌已經宣佈要在安卓裡面使用MTE技術 [7],相信在未來會有更多的系統會採用這個技術,提供內存安全的檢測,從而減少漏洞。 # 結論   如文章開頭所說,ARM在過去10多年間取得了舉世矚目的發展,其中ARMv8的64bit和ARMv8-M的TrustZone起到了重要的作用。但本次ARMv9的發佈,至少從目前放出的資料看,所發佈的技術並沒有像64bit這樣亮眼的技術,而更像是一些小功能的集合。   當我們回想ARM過去的成功時,技術在其中並不是唯一的因素。ARM的License授權的商業模式,CISC精簡指令集和不保證前向兼容的決策帶來的優秀的性能功耗比,智能手機和物聯網的蓬勃發展的時代契機,都在其中扮演了至關重要的角色。   從軟銀的2020年度報告中,我們可以看到ARM的未來10年的規劃:
image.png
從圖中可以看到,除了保持智能手機和IoT上的霸主地位外,ARM會在網絡設備,數據中心,雲端服務器和車聯網領域發力,這也就不難理解ARMv9除了不斷提升性能外,為何要在AI和安全領域不斷投入了。   個人認為,ARMv9的發佈,技術上並沒有太大的突破,無法讓ARM保持前些年快速發展的勢頭。但ARM在CPU/GPU/NPU上已經有了完整的裝備,在各拓展領域中會保障其穩步發展。ARM的最大威脅不是來自當前各IP巨頭,反而可能是RISC-V。RISC-V更友好的開源模式,更輕的歷史包袱,都可能會使其成為下一個騰飛的ARM。到底未來如何,讓我們拭目以待。

Leave a Reply

Your email address will not be published. Required fields are marked *