2021年8月23日 星期一

‧ 信任根 (RoT) :安全的基礎

 

Root of Trust: Intrinsic ID Explainer Video

信任根:內在 ID 解釋器影片


Design&Reuse


介紹

安全是一個,未來只會越來越流行的話題。它的重要性,取決於它對未來產品的成功有多重要,特別是隨著物聯網 (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?

  1. 已安裝的可信啟動代碼的驗證(認證)記錄
  2. 執行一致性
  3. 提供一項或多項安全服務
  4. 從系統的「根」建立安全性

從上一節信任根的定義中獲取共同元素,我們可以將 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] 定義了以下九個服務列表:

  1. 驗證
  2. 保密
  3. 鑑別
  4. 正直
  5. 測量
  6. 授權
  7. 報告
  8. 更新
  9. 確認

透過將此服務列表,與密碼學的五個主要功能 [5] 進行比較,人們可以開始了解如何通過一個密碼引擎支持某些服務,以及其他服務如何需要一組模組,協同工作的組合結果:

  1. 保密
  2. 驗證
  3. 正直
  4. 不可否認性
  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)vvv
固定狀態機控制vv
基於CPU的控制v
外部總線介面(例如,AHB/AXI/TileLink)vvv
對稱密碼模組(例如,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 的高級要求是什麼?

  1. 可更改的引導代碼,有限制
  2. 多組分 RoT
  3. 用於驗證的公鑰密碼學
  4. 攻擊抗性
  5. 靈活的邏輯控制

概括地說,信任根是位於系統「根」,處的完全值得信賴的引導邏輯。透過從 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?

  1. 根密鑰是如何創建和儲存的(連同啟動代碼)?
  2. 支持哪些加密功能?
  3. 採用什麼樣的控制邏輯?
  4. 如何將 RoT 集成到設計中?(總線接口)
  5. RoT的攻擊抗性?
  6. 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 解決方案。


沒有留言:

張貼留言