天天看點

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)

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

前文說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中成為預設配置。

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

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年的規劃:

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

從圖中可以看到,除了保持智能手機和IoT上的霸主地位外,ARM會在網絡裝置,資料中心,雲端伺服器和車聯網領域發力,這也就不難了解ARMv9除了不斷提升性能外,為何要在AI和安全領域不斷投入了。   個人認為,ARMv9的釋出,技術上并沒有太大的突破,無法讓ARM保持前些年快速發展的勢頭。但ARM在CPU/GPU/NPU上已經有了完整的裝備,在各拓展領域中會保障其穩步發展。ARM的最大威脅不是來自目前各IP巨頭,反而可能是RISC-V。RISC-V更友好的開源模式,更輕的曆史包袱,都可能會使其成為下一個騰飛的ARM。到底未來如何,讓我們拭目以待。

繼續閱讀