Cryptocell-712安全引擎概述

語言: CN / TW / HK

一、基於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.https://developer.arm.com/documentation/102897/0119?lang=en

2.https://developer.arm.com/documentation/pjdoc1779577084-15920/1/?lang=en

長按關注

內核工匠微信

Linux 內核黑科技 | 技術文章 | 精選教程