Cryptocell-712安全引擎概述
一、基於trustzone的SoC裡有什麼?
Trustzone是ARM架構的安全擴充套件,是一個系統級別的安全方案,包括硬體方案和軟體方案。在一個支援Trustzone的SoC上,硬體IP包括:
CPU:
目前主要的Cortex-A系列CPU都實現TrustZone安全擴充套件。
Trustzone system IP:
SoC內部支援TrustZone擴充套件的MMU、Cache、Bus、GIC、TZASC、TZPC等。
Trustzone Security IP:
常見的Security IP包括CryptoIsland、CryptoCell等。
二、CryptoCell產生背景
累計多次Secure World和Non Secure World之間進行save/switch context,會導致系統性能問題。解決方案是提供額外的硬體,它可以接收Non Secure World指令並在硬體內部執行密碼操作,整個過程不需要將安全資料暴露給CPU,且可以將操作結果存放在指定的非安全記憶體,CPU只需要休眠或輪訓結果。
CryptoCell包括CryptoCell 700和CryptoCell 300兩個系列:
-
CryptoCell 700主要針對高效能的安全產品,一般與Cortex-A CPU配合使用。
-
CryptoCell 300主要針對低功耗的產品,一般與Cortex-M CPU配合使用。
三、high level diagram
從CryptoCell high level diagram可以看出,CryptoCell硬體服務通過firmware,分別向Linux OS和TEE OS提供介面。在TEE側提供的CRYS Cryptographic Library,在REE側提供Crypto API Driver來操作硬體IP。
四、CryptoCell內部邏輯
CryptoCell內部功能單元可分為“Shard Hardware”和“TEE Hardware”和。與普通外設一樣,CryptoCell提供input and output pins,與主機連線。
五、Shard Hardware
Shard Hardware包括對稱加密引擎和硬體金鑰槽。
1.對稱加密引擎
Symmetric Cryptography Engine。
對稱加密引擎支援AES加密、AES訊息認證、DES、MD5和HMAC等。
對稱加密引擎支援DMA資料傳輸。
對稱加密引擎為使用者或平臺金鑰提供硬體隔離,且可以直接載入這些金鑰,確保金鑰不會出現在DDR或SRAM中,增強使用者金鑰的安全性。
2.硬體金鑰槽
Hardware key Slots,硬體金鑰槽是專用的硬體暫存器,它允許TEE安全的建立對稱金鑰以提供給REE側。該模組提供一個TEE Sevice來設定金鑰槽,REE側可以在呼叫AES服務時通過索引來指定金鑰槽。
CryptoCell包含4個硬體金鑰槽,支援大小為128、192、256的單個金鑰,也支援兩個128位或2個256位的雙金鑰。
六、TEE Hardware
TEE Hardware包括非對稱密碼加速器、NVM管理器、OTP、真隨機數發生器和狀態介面。
1.非對稱密碼加速器
非對稱密碼加速器通過大整數算數運算單元,支援實現公鑰所需的數學和邏輯操作、基於離散對數、整數分解或橢圓曲線離散對數等。
2.NVM管理器
NVM管理器通過點對點AIB介面(遵循Intel非同步介面規範)來訪問OTP儲存器。
3.OTP
依賴於SoC的實現,OTP模組可以為使用者提供eFuse等安全特性。
4.真隨機數發生器
真隨機數發生器直接從硬體電路採集噪聲,為使用者提供真隨機數。
5.狀態介面
狀態介面包括產品生命週期LCS(Life Cycle State)、DCU暫存器實現Security Debug功能、安全定時器功能等。
七、執行庫CRYS
CryptoCell硬體Security IP的執行庫稱作CRYS(Cryptographic Software Library)。系統執行過程中,
1.獲取生命週期LCS
2.生命週期定義
3.Secureboot初始化
4.Secureboot證書校驗
5.Secureboot錯誤碼
6.SecureDebug設定
7.金鑰派生
8.HASH計算
八、CryptoCell在安全啟動的應用
CryptoCell應用於安全啟動,這是CryptoCell最重要的應用場景。
1.安全啟動
在ARMv8架構下,系統開機啟動,會經歷軟體定義的BL1/BL2/BL31/BL32/BL33等多個階段,如何保證每個啟動階段映象的安全性,是構建平臺安全和系統安全的基礎業務。
2.安全啟動業務場景
整個安全啟動業務包括映象簽名、映象加密、映象驗籤和映象解密。
3.安全啟動涵蓋模組
整個安全啟動業務涵蓋多個模組,包括BootROM、OTP、Crypto Engine
-
BootROM
所有支援SecureBoot的CPU都會有BootROM程式,CPU上電後執行的第一條指令就在BootROM的入口。BootROM擁有最高的執行許可權EL3,它將初始化SecureBoot安全機制,載入SecureBoot Key等金鑰、從EMMC/UFS載入並校驗BL1,最後跳轉到BL1。
-
OTP
所有支援SecureBoot的CPU會有N個一次性程式設計儲存模組,稱之為OTP裝置。eFuse是OTP的一種表現形式,且只有在Secure World才可以訪問,主要作用包括:
1.在OTP內部燒寫標識裝置型別、執行模式等的屬性。
2.在OTP內部燒寫映象加解密的對稱金鑰SecureBoot Key。
3.在OTP內部燒寫映象簽名公鑰SecureBoot Signing Key。
-
Crypto Engine
支援SecureBoot的SoC會有專門負責映象加解密和驗籤的模組,稱之為Security Engine。Security Engine只有在Secure World才可以訪問。Secure Engine的選擇:
-
低端SoC支援純軟體演算法(如MbedTLS)的SecureBoot。
-
高階SoC支援硬體Security IP(如CryptoIsland、CryptoCell等)的SecureBoot。
4.安全啟動證書鏈
5.安全啟動實現方式
6.實現方式的對比
九、CryptoCell其他應用場景
在ARMv8架構下,CryptoCell應用場景包括但不限於裝置生命週期管理、金鑰管理、資料的備份恢復和安全除錯。
1.裝置生命週期
晶片從回片到出廠,一般經過CM(Chip Manufacturing)、DM(Device Manufacturing)和Secure等三個階段。其中,CM表示晶片回片階段,未經過任何處理,通常用於單板的前期除錯工作。DM階段會寫入部分金鑰。Secure是最終出廠階段,終端產生會燒寫完整金鑰或資料hash,以及提供完整的映象刷機包。一般來說,SOC廠商在fastboot(或UEFI)提供裝置生命週期的相關命令。
2.金鑰管理
CryptoCell提供硬體金鑰槽,可以管理或儲存使用者的金鑰,且金鑰使用硬體隔離技術,增強了使用者金鑰的安全性。
3.安全除錯
CryptoCell提供DCU暫存器,以控制其他master的除錯功能。
4.資料的備份和恢復
CryptoCell提供資料備份和恢復服務,允許在主機睡眠和喚醒過程中,將使用者資料加密儲存在安全記憶體中。CryptoCell使用KBKDF金鑰派生AES128對資料進行加解密,當主機睡眠時,使用者資料加密存在在安全記憶體中。當主機喚醒時,將使用者資料從安全記憶體中解密。
十、個人小結
綜上所述,CryptoCell在基於Trustzone架構的ARM64系統中應用廣泛,SOC廠商基於硬體實現差異化特性,特別是在安全啟動領域,成為各個SOC廠商的寵兒。
參考文獻:
1.http://developer.arm.com/documentation/102897/0119?lang=en
2.http://developer.arm.com/documentation/pjdoc1779577084-15920/1/?lang=en
長按關注
核心工匠微信
Linux 核心黑科技 | 技術文章 | 精選教程
- futex問答
- Cryptocell-712安全引擎概述
- 減少無線連結切換導致資料體驗變差的技術簡介
- Perfetto分析進階
- 原理和實戰解析Linux中如何正確地使用記憶體屏障
- Ftrace function graph簡介
- 從A76到A78——在變化中學習ARM微架構
- 手機平臺上的使用者空間鎖概述
- Linux Cpuidle介紹
- Linux核心效能剖析的方法學和主要工具
- 自旋鎖探祕
- 深入理解Android系統資源異常之檔案描述符異常篇
- 如何設計一門計算機程式語言
- UEFI簡介
- Linux中斷子系統之中斷對映
- 排程器分支之RTG
- Mutex核心同步機制詳解
- BatteryHistorian Android手機耗電分析神器
- kswapd介紹
- 黑屏定屏那些事 - 系統機制,分析套路和實戰(系統篇)