Root of Trust: Intrinsic ID Explainer Video
信任根:內在 ID 解釋器影片
介紹
安全是一個,未來只會越來越流行的話題。它的重要性,取決於它對未來產品的成功有多重要,特別是隨著物聯網 (IoT) 的興起,將帶來相互連接的「事物」數量呈指數級成長,以及Web(參見下面的圖 1)。物聯網設備是分佈式的、不受監督的、實體暴露的。攻擊者可以實體篡改物聯網設備,這使得基於軟體的安全性,不足以保護物聯網免受詐欺、篡改,和其他完整性和 DDoS 攻擊。電腦硬體和韌體,被認為比軟體更可靠和值得信賴,因為軟體容易受到設計和實現缺陷的影響,並且不受惡意代碼的破壞,同時很難攔截、篡改或破壞硬體安全。
圖 1:已安裝物聯網設備的預計程長 [7]
信任根 (RoT) 是一組,始終受系統操作系統信任的功能,因此它是計算系統所有安全操作,所依賴的信任基礎。RoT 包含用於數位簽名和驗證的密鑰,以及啟用安全啟動過程的加密功能,確實是一項重要的安全資產。提供可信的執行環境,並在硬體中嵌入 RoT,將為電子系統安全提供堅實的基礎。本白皮書的目地,是提供 RoT 的介紹性入門,最後提供一些關於選擇正確的 RoT,作為基於硬體的新型安全架構的信任錨的指導。
定義
信任根的概念已經存在好幾年了。為了建立在之前定義 RoT 的工作之上,也許最好從 RoT 是如何定義開始的。
可信計算組織 (TCG) 致力於安全計算的理念。他們提出了 TPM(可信平台模組)標準,作為他們的解決方案,以確保電腦按預期運行,駭客無法訪問存取安全系統。在他們的 TPM 標準 [4] 中,TCG 實際上需要包含三個 RoT,每個 RoT 用於執行測量 (RTM)、儲存 (RTS) 和報告 (RTR) 任務。TCG 將 RoT 定義為 [2]:
「信任根 (RoT) 是執行一個或多個安全特定功能的組件,例如測量、儲存、報告、驗證和/或更新。信任 RoT 總是以預期的方式行事,因為它的不當行為,無法透過證明或觀察來檢測(例如透過測量)。」
TCG 定義中有趣的是「組件」一詞的使用,因為它允許在軟體、硬體或靭體中實現信任根。
在概念上類似,但具有更嚴格定義的實現,聯合可擴展靭體介面 (UEFI) 論壇,將信任根定義為 [3]:
「理想情況下,信任根基於經過硬體驗證的啟動過程,以確保系統只能使用來自不可變源的代碼啟動。由於引導過程的錨點位於硬體中,因此無法以任何方式更新或修改...... 啟動時,信任根從提供的設備身份輸入派生其內部密鑰,並為自己執行自測和代碼驗證。如果這些測試通過,它可以繼續驗證信任鏈中的第一段代碼。」
這裡需要注意的是,信任根被定義為在硬體中完成,其主要目的是成為信任鏈的第一部分。雖然其他標準將 RoT 的實現保留為開放式,但本白皮書將遵循 UEFI 的約定,因此這裡的「RoT」與硬體信任根,或 HRoT 相同。透過組標題中的「靭體」,很容易看出在定義 RoT 時,擁有安全啟動過程(可能使用以 RoT 為基礎的信任鏈 – 參見下面的圖 2)是 UEFI 的主要目標。注意上游區塊的授權來自下游區塊;例如,在下圖中,BIOS 需要得到 RoT 的授權,然後才能將執行控制,從 RoT 傳遞到 BIOS。
圖 2:信任鏈 (CoT) 示例
GlobalPlatform 對 RoT 的定義,完善了這組已經定義的標準。GlobalPlatform 是行業成員(類似於 TCG)的另一項大型合作,目的在推廣一組具有類似可信和安全計算目標的標準。毫不奇怪,到目前為止,他們對信任根的定義,與其他定義並沒有太大的偏差 [1]:
「一個計算引擎、代碼和可能的數據,都位於同一個平台上;提供安全服務(如第 3 章所述)。沒有祖先實體能夠為信任根的初始代碼,和數據狀態提供可信任的證明(以摘要或其他形式)。根據實施情況,信任根可以是引導式或非引導式信任根。」
GlobalPlatform 與其他平台的不同之處在於引入了兩種 RoT 的概念,即自舉和非自舉。在概念上類似於信任鏈,其中一個組件在移交控制權之前,檢查下一個組件的真實性,自舉 RoT 由多個組件(也稱為 RoT,根據 GlobalPlatform 的定義)組成,它們以固定的方式執行啟動代碼序列。這裡 GlobalPlatform 介紹了初始 RoT (iRoT) ,和擴展 RoT (eRoT) 的想法,它們共同構成了一個自舉 RoT。但為了簡單起見,本文將只關注 RoT 的基本配置,也被 GP 稱為「非自舉 RoT」。
什麼是 RoT?
- 已安裝的可信啟動代碼的驗證(認證)記錄
- 執行一致性
- 提供一項或多項安全服務
- 從系統的「根」建立安全性
從上一節信任根的定義中獲取共同元素,我們可以將 RoT 的基本元素,提煉到上面的列表中。第一項是「信任」 —— 也就是說,系統可以始終依賴 RoT,尤其是在啟動時。由於無法在啟動時獨立驗證 RoT 的真實性,因此需要在系統電源/啟動時隱式信任它。為此,建議在安裝 RoT 之前,驗證它是有效和真實的,並且該驗證的記錄儲存在 RoT 本身上,以便可以在運行時重新驗證,如需要。
在啟動期間,當從受信任的 RoT 啟動時,期望 RoT 中內置的代碼/進程,每次都按照系統架構師的規定一致執行。最簡單的方法,是將代碼寫入不可變的儲存元素,例如 ROM 或 OTP,因為一旦寫入,就無法更改。更複雜的 RoT 可能允許重寫其引導代碼,但只能通過授權代理,這需要比基本 RoT 更複雜的控制/訪問方案。
RoT 應至少提供一項安全服務。TCG [2] 將這些服務定義為以下五類之一:測量、儲存、報告、驗證或更新。GlobalPlatform [1] 擴展了 TCG 的列表,包括九個類別:身份驗證、機密性、標識、完整性、測量、授權、報告、更新和驗證。可以看出,根據支持的服務數量,「RoT」標籤實際上涵蓋了廣泛的設備,從僅包含安全儲存元件的基本部件,到可用作獨立安全處理器的更複雜的模組.
列表中的最後一項指的是 RoT 中的第一個詞 —— 「根」 —— 一個 RoT 位於系統的最開始 —— 它是根或錨,系統的安全性依賴於它。沒有其他元素可以驗證/授權/證明 RoT 的有效性 —— 它是系統的零元素。坐在系統中如此重要的位置,設計人員必須了解他們對 RoT 的需求,並找到最適合這些需求的正確需求。
RoT 是如何工作的?
TCG 定義了 RoT 可能提供的五種不同的安全服務,而 GlobalPlatform 定義了總共九種服務。在任何情況下,無論一個 RoT 被要求支持一個還是最多九個服務,服務的數量和類型將提供一個 RoT 內部工作的好主意。
服務類型將決定 RoT 中,需要包含哪些加密引擎/模組。GlobalPlatform [1] 定義了以下九個服務列表:
- 驗證
- 保密
- 鑑別
- 正直
- 測量
- 授權
- 報告
- 更新
- 確認
透過將此服務列表,與密碼學的五個主要功能 [5] 進行比較,人們可以開始了解如何通過一個密碼引擎支持某些服務,以及其他服務如何需要一組模組,協同工作的組合結果:
- 保密
- 驗證
- 正直
- 不可否認性
- 密鑰交換
透過將「密鑰交換」分解為密鑰生成/協商/傳輸等較小的任務,我們可以列出需要包含在 RoT 中的可能的加密模組,並給出要支持的安全服務列表:
Ç rypto功能 | 加密子模組 |
隱私/保密 | AES、三重 DES、SM4 子模組(對稱密碼) |
驗證 | 使用非對稱密碼和散列子模組(數位簽名)的 DSA 或 ECDSA |
正直 | SHA-2、SHA-3、SM3 子模塊(散列) |
不可否認性 | 透過相同的算法進行數位簽名 |
密鑰生成 | 透過使用散列子模組或 RNG 的 KDF |
密鑰協議 | ECC 實現的 ECDH 算法(共享秘密) |
密鑰傳輸 | RSA、ECC 子模組(非對稱密碼)或密鑰包裝 |
表 1:RoT 可以支持的加密功能
一旦看到 RoT 需要一個或多個加密模組,其他所需的部分就很容易理解了。RoT 最初的四個基本要求中的兩個始終是可信的,並且始終按預期運行,這表明需要一個安全的儲存元素,對未經授權的用戶是不可變的。最後,需要某種控制邏輯單元,來讓 RoT 的所有部分協調運行,並揭示 RoT 如何工作的最終畫面。一組加密模組、安全儲存,和一個將它們包裝在一起的控制邏輯單元,構成了一個 RoT。根據要安裝 RoT 的端點的要求,RoT 的變化確實非常多樣化。期望存在「一刀切」的 RoT 解決方案是不合理的。
為了組織我們對 RoT 的思考,可以將它們視為屬於三個不同類別之一。第一類(稱為類型 I)由那些僅執行保護關鍵數據(引導代碼或根密鑰)的核心職責的 RoT 組成 —— 這些數據總是可以信任的,並且這些類型的 RoT 不支持其他功能(除了安全儲存)。第二類(稱為類型 II)包括,那些支持更多功能的 RoT。第三類(稱為第三類)與第二類非常相似,不同之處在於控制邏輯的實現方式。
II 型 RoT 使用專用狀態機 —— 具有這種類型控制的 RoT,在設計期間具有固定的功能列表,一旦設計流片就無法靈活地創建新功能。Type III RoT 使用透用 CPU(例如基於 ARM 或 RISC-V 內核的 CPU),來實現控制邏輯。這種類型更靈活,因為更改控制邏輯,就是更改 CPU 運行的軟體。使用 CPU 的權衡是可能的面積損失,因為 CPU 可能具有比控制 RoT,所需的更多功能(以及邏輯門)。有多種 CPU 內核可供選擇,因此用戶可以在大小、性能和複雜性方面,選擇最適合其需求的內核。另一方面,自定義(固定 SM)解決方案,將始終擁有 RoT 所需要的東西 —— 不多也不少。只要用戶對他們不需要 CPU 所能提供的靈活性感到滿意,固定 SM 控制可能是更便宜的解決方案。
下表和數位顯示了三種不同類型的 RoT:
子模組/ RoT類型 | 第一類 | Ⅱ型 | 類型三 |
儲存元件(例如,ROM/嵌入式閃存/OTP) | v | v | v |
固定狀態機控制 | v | v | |
基於CPU的控制 | v | ||
外部總線介面(例如,AHB/AXI/TileLink) | v | v | v |
對稱密碼模組(例如,AES/三重 DES/SM4) | ○ | ○ | |
非對稱密碼模組(例如,RSA/ECC) | ○ | ○ | |
哈希模組(例如,SHA-2/SHA-3/SM3) | ○ | ○ | |
RNG 模組(例如,DBRG/tRNG) | ○ | ○ | |
外部儲存器介面(例如,SRAM/DRAM/Flash) | ○ | ○ |
表 2:三種類型的 RoT
圖 3:RoT,I 型和 II 型
圖 4:RoT,II 型和 III 型
RoT 的高級要求是什麼?
- 可更改的引導代碼,有限制
- 多組分 RoT
- 用於驗證的公鑰密碼學
- 攻擊抗性
- 靈活的邏輯控制
概括地說,信任根是位於系統「根」,處的完全值得信賴的引導邏輯。透過從 RoT 啟動系統,它保證系統將在設計人員,最初為系統設計的相同初始狀態下啟動。這總結了 RoT 的基本功能。但由於系統之間,可能存在很大差異,基於使用案例、保護配置文件、成本和功率限制等因素,一些超出 RoT 的(如「超越基礎」的 RoT)可能被證明更適合。上面在本節開頭列出了此類高級要求的一些示例。
首先是可更改的 RoT 啟動代碼。隨著時間的推移,已安裝系統的功能可能會發生變化。透過允許 RoT 的引導代碼,隨著不斷變化的需求而變化,這樣的 RoT 將能夠延長系統的生命週期。當然,擁有可變 RoT 意味著需要添加保護/特權方案,以確保只有授權代理,才能更改 RoT 的受保護引導代碼。
其次是將複雜的 RoT,拆分為幾個組成部分。正如電腦程序被模組化,以允許邏輯劃分,從而使複雜的程序不那麼笨拙,RoT 也可以分解為更小的組件。GlobalPlatform [1] 將這些部分稱為 iRoT 和 eRoT,或初始 RoT 和擴展(或擴展)RoT。iRoT 的整個集合(每個系統始終只有一個)和一個或多個 eRoT,仍然稱為 RoT,特別是自舉 RoT,使用 GlobalPlatform 的確切術語。
第三是包含公鑰密碼學。這個 iRoT 和一個或多個 eRoT 的集合,像迷你 CoT(信任鏈)一樣一起工作,將從 iRoT 開始驗證,或重新檢查以下 RoT 組件的驗證。一種更複雜的驗證方法,涉及創建和檢查數位簽名,公鑰密碼引擎在數位簽名算法中,起著重要作用。
四是攻擊抗性。一個基本的 RoT 將在理想條件下工作,但一個超越 RoT 需要保證它會繼續工作,即使是在受到攻擊的情況下。攻擊可能是非侵入性的,例如旁道分析(其目標是從 RoT 竊取安全數據,例如啟動代碼、私鑰或唯一 ID)。攻擊也可能更直接,例如物理篡改攻擊,一個例子是在 I/O 或電源引腳上註入故障,以使 RoT 行為異常。
第五個(可能不是最後一個)是靈活的邏輯控制。靈活的邏輯意味著,可以輕鬆更改的邏輯,這意味著基於軟體或韌體的更改。通用 CPU 是將其添加到,超越 RoT 的最靈活方式。來自商業供應商(如 ARM)或開源供應商(如 RISC-V)的產品,只是眾多可用產品中的一小部分。
如何選擇合適的 RoT?
- 根密鑰是如何創建和儲存的(連同啟動代碼)?
- 支持哪些加密功能?
- 採用什麼樣的控制邏輯?
- 如何將 RoT 集成到設計中?(總線接口)
- RoT的攻擊抗性?
- RoT 是否已通過認證?
根密鑰生成和儲存
第一個考慮是關於根鍵。由於根密鑰既可以充當系統的唯一標識符,也可以作為派生所有其他密鑰的基礎,因此對根密鑰進行良好保護非常重要,而且即使不是不可能,也很難猜測. 為了得到很好的保護,RoT 需要確保從根密鑰生成,到根密鑰儲存的數據路徑,以及儲存位置本身是安全的。必須保護數據路徑免遭竊聽者監視根密鑰,從其源內存到目標內存的傳輸。
如果根密鑰是在 RoT 之外,生成並寫入 RoT,那麼通常這將在安全位置內的「潔淨室」中完成,其中安全性(例如多層代碼訪問門和人員警衛)非常嚴格。或者,RoT 可以透過實體不可複製功能 (PUF) 之類的東西,創建自己的根密鑰,完全消除對潔淨室和所有安全層的需要。儘管如此,這是假設根密鑰的品質(其熵度量),在硬體安全模組 (HSM) 注入的根密鑰,和由片上 PUF 創建的根密鑰之間是相同的。
有許多不同品質的 PUF 可用,因此由用戶決定他們的根密鑰所需的熵量。和一個由片上 PUF 創建的。有許多不同品質的 PUF 可用,因此由用戶決定他們的根密鑰所需的熵量。和一個由片上 PUF 創建的。有許多不同品質的 PUF 可用,因此由用戶決定他們的根密鑰所需的熵量。
除了保護根密鑰的數據路徑外,還需要安全地儲存根密鑰。在這種情況下,安全儲存意味著數據不是以明文形式寫入的,一旦寫入,數據應該無法修改。同樣,保護級別取決於用戶 —— 它可以像地址/數據加擾一樣簡單,也可以像對根密鑰進行編碼的完全對稱密碼一樣複雜,請記住,密碼密鑰需要與根密鑰。為防止根密鑰(和引導代碼)被不良代理覆蓋,建議使用 ROM 或 OTP 類型的內存進行儲存。
如果認為 RoT 只需要保持根密鑰安全,那麼 PUF 將作為密鑰及其儲存元素的來源,用一顆石頭殺死兩隻鳥。如果 RoT 需要儲存除根密鑰之外的其他數據,那麼用戶將不得不考慮所需的總儲存空間 —— 如果 RoT 上包含的內存,則 RoT 將需要支持外部儲存器(及其相應的安全介面)。 RoT 不夠大。最後,為了防止透過內部儲存器陣列的實體檢查,來確定根密鑰,選擇基於反熔絲的 OTP 儲存器可能比基於 eFuse 的更安心。
支持的加密函數
下一個要檢查的問題是 RoT 中包含的加密子模塊。每個子模塊代表一個它可以支持的基本加密原語函數——例如,一個用於 AES 的模塊、一個用於 SHA-256 的模塊和一個用於 ECC 的模塊。不同的用戶會有不同的需求,因此貨比三家以找到最適合自己需求的具有加密支持的 RoT 是值得的。顯然,不具有必要功能的 RoT 不應被考慮,但相反,一個包含更多功能的 RoT 只會浪費能力。如果 RoT 用於輕量級應用(例如對功率/面積問題高度敏感的電池供電的 IoT 應用),這一點尤其明顯。當然,完全支持 NIST 推薦的所有 15 條曲線的 ECC 模塊將非常強大,
控制邏輯思考
同樣,在考慮用於 RoT 的控制邏輯類型時,功耗和麵積使用,也是重要因素。為了以最輕的佔用空間運行,可能值得選擇具有滿足需求的最小功能列表的 RoT,然後將其與仍然支持所有所需功能,最低複雜度的固定控制邏輯單元配對。假設支持的函數列表在 RoT 的生命週期內不會改變,那麼這個最小的 RoT,可能是輕量級應用程序的最佳選擇。但是對於角色會隨著時間變化的 RoT,未來需要新功能,例如數位簽名(例如,ECDSA)或共享秘密生成(例如,ECDH),那麼使用更靈活的 CPU 控制邏輯將更適合。除了使用基於 ARM 架構的公司提供的商業產品外,一種具有成本效益的替代方案,是基於開源設計的 CPU,例如 RISC-V。功能列表的複雜性,將決定最適合 RoT 的控制邏輯類型。
相容介面與總體設計
除了為 RoT 選擇正確的儲存類型、功能列表和控制邏輯外,確保 RoT 具有與整體設計相容的介面也同樣重要。將 RoT 放入設計中,幾乎不需要修改,這將是最簡單的解決方案。RoT 會被放置在基於 ARM 的系統中嗎?最好尋找一個原生支持 AXI/AHB/APB 總線協議的 RoT。也許 RoT 將用於 OpenTitan 環境?那麼 TileLink 總線相容性,應該在一個人的 RoT 購物清單上。或者,也許 RoT 將被置於信號受限的系統中,因此串行介面是最佳選擇。如果 RoT 是使用外圍總線(例如 APB)實現的,則可以將其放置在如下圖 5 所示的系統中。
圖 5:RoT 在系統中的放置示例
抵抗攻擊
擁有正確的功能列表、合適的儲存元件和相容的總線存介面,將有助於確保所選 RoT,在正常條件下正確運行。但是當條件不正常時會發生什麼?也就是說,如果 RoT 受到駭客的攻擊,會發生什麼?只要密碼算法正確實現,駭客除了對受保護數據進行暴力攻擊(通常認為過於耗時和資源消耗)之外,還必須訴諸旁道攻擊和直接篡改安全單元和 RoT。
為了防止這些攻擊成功,一個安全的 RoT 還需要具有內置的抵抗力,來阻止不同類型的攻擊。這些攻擊可以是非侵入性或侵入性類型。非侵入式攻擊包括監控 RoT 的行為或排放,以獲得可以分析以獲取私鑰或其他敏感數據的模式。此類可觀察項目包括處理時間(時序攻擊)、功耗(功耗分析)或電磁輻射(EM 分析)。
侵入式攻擊可以採用故障注入的形式,或者對 RoT 進行去蓋和逆向工程。這些不同的攻擊中的每一種都需要不同的對策,因此不用說,用戶應該密切關注 RoT 聲稱可以防禦的側信道攻擊列表。同樣,重要的是要平衡這些對策提供的保護與其中一些要求的面積懲罰 - 例如,
認證:通往縮小代價名單
在考慮了上述考慮之後,希望最終會得到一個合適的 RoT 的簡短列表。但是有沒有辦法進一步縮小列表的範圍?答案是認證 —— 某些管理機構將透過一系列測試,來運行產品或設計,然後「蓋章」以表示,它已經通過了他們的測試標準。最接近全球認可印章的是通用標準測試,但對他們的測試計劃的批評確實存在。其中之一是獲得產品認證所需的時間,這就是為什麼法國的 ANSSI 的認證安全公司 Niveau (CSPN) 計劃,最近越來越受歡迎,因為它們的認證時間很短。
這對於在歐洲銷售的產品來說是個好消息,但如果目標市場在美國或加拿大,公認的安全測試標準,來自 NIST 的加密模組驗證計劃 (CMVP),它使用 FIPS 140-2(即將成為 140-3)標準中概述的標準。最後,如果 RoT 將用於專門面向物聯網的產品,那麼尋找通過 Eurosmart 物聯網認證計劃的產品,可能會特別有趣。讓公認且公正的第三方給他們的認可印章可以讓用戶放心,並讓他們放心,他們選擇了優質的 RoT。
結論
關於信任根是什麼的基本入門,從其基本定義開始,並逐步介紹 RoT 的內部工作原理,作者希望此時讀者熟悉 RoT 的概念,及其在其中發揮的基礎作用系統的安全性。由於可以安裝 RoT 的端點的多樣性,為最適合的 RoT 做出明智選擇的重要性,再怎麼強調也不為過。最好的行動計劃是有條不紊地考慮各種因素,首先要明確定義 RoT 將被要求執行的任務。一旦定義了需求,就需要「購物」並挑選可以支持所需任務的安全服務(和相應的加密模組)。
最後,透過考慮 RoT 的安全要求和運行環境,從而進行 RoT 可能面臨的風險評估,讀者可以搜索那些具有適當級別的安全認證。從這個簡短的列表中,選擇最合適的,在成本/功率/性能方面,應該足夠簡單。但是,請注意,由於可信計算相對較新(與通用計算相比),對可信、彈性和可驗證 RoT 的基本(和高級)要求的合格、行業標準列表可能會很慢在來。
儘管如此,基於硬體的 RoT,尤其是基於 PUF 的 RoT,顯示出巨大的前景。它們被描述為 RoT 解決方案的「聖杯」,因為它們成本低、能耗低、重量輕、用於 IC 安全認證的獨特和防篡改特性 [6]。但沒有什麼是完美的,因為 PUF 仍然容易受到攻擊,例如故障注入和側信道分析,包括模型建構。因此,為了在此類攻擊和未來攻擊中保持領先,仍然需要研究來設計和實現一個可信、有彈性、高效和有效的 PUF 和基於 PUF 的 RoT 解決方案。
沒有留言:
張貼留言