ARM 的 Trust Zone 小註解

ARM 公司推了一個安全機制叫做 trust zone, 基本上它和一個跨平台的類似規範 Global Platform [1] 差不多. ARM 的基本資料都可以在 ARM 的網站免費下載, 但是進階的資料或是 global platform 的資料都需要註冊後才能取得.

ARM 的 trust zone 共分為三級, 其中最高的一級 tier 3 長這樣. 

圖片來自 http://www.arm.com/products/processors/technologies/trustzone.php

我們可以看到在記憶體的部分, 多數都用 TZMA (trust zone memory adapter) 或是 TZASC (trust zone address space controller)  的褐色方塊隔離起來. 除了 FLASH 這個框框, 被當作是沒有安全顧慮的模組之外 – 比方說使用者在手機上外接的 macro SD 卡. 而每個記憶體又都有自己的規範編號, 比方說 bus 的規範是 PL301, DMA 是 PL330, SDRAM 是 PL340, FLASH 是 PL350 等等.  在 trust zone security white paper [1] 裡面, 還提到 TZASC 是 PL380, GIC (generic interrupt controller) 是 PL390, TZMA 是 BP141 等等.

諸如 PL350 的規格, 裡面似乎都沒有特別強調加密或是保護的機制. 特別需要規範的硬體模組主要就是 TZMA 和 TZAC 了. 其中定址空間可以固定出保密與非保密地址空間的模組 (如 ROM) 以 TZMA 隔離; 保密與非保密資料可能儲存在任意地址空間的模組 (如 RAM) 以 TZASC 隔離.

[ref]

1. http://www.globalplatform.org/

2. Building a Secure System using TrustZone® Technology

ARM ACP 小註解

ARM 的 CPU 有個機制叫做 ACP (Accelerator Coherence Port), 它是啥呢?

以 MIPS 系統為例, 如果我用 DMA 搬了一塊 memory, 而 CPU 不知情 –  因為不是透過它搬的, 那麼 CPU 就不能用 cache memory 來存取這塊記憶體, 以免發生預期以外的狀況. 既然不能 cache, 那麼 CPU 就不能自由自在地操作它了.

一般來說, 部分的 DMA 還是透過 CPU 填寫 register, 故 CPU 可以等 DMA done, 然後再進行一般的操作. 不過在多工的情況下, 使用起來就會更加地麻煩.

ARM 的 ACP 就是解決這個問題, 假如一個 device 被掛在 ACP 上, 那麼即使用 DMA 對這個 device 做動作, 其內容也會被同步到 cache memory 裡面, 包括 L1 和  L2 cache. 雖然 ACP 只支援 3 個 bit 的 AXI device ID – 8 個 device, 還是可以用 bridge 的方式加以擴充.

ACP 上的 device 在 read 的時候, 依序在 L1, L2 cache 和 external memory 讀資料.

ACP 上的 device 在 write 的時候, 會優先灌入 L1 cache, invalid 舊資料, 當然也就 update 了 L2 cache.

從行為上來看, 如果一個 device  有很多 DMA, 又有很多 CPU 動作, 那麼 ACP 將可以帶來不少的好處. 包括快速, 省電等等.