2018/9/17 dcTPM: 一個對於動態內文管理的一般性架構 dcTPM: A Generic Architecture for Dynamic Context Management 林孟諭 Dept. of Electrical Engineering National Cheng Kung University Tainan, Taiwan, R.O.C
大綱 摘要 介紹 一般的動態內文管理概念 初步 一般性架構的主要元件 建立、交換、刪除信任單元 DCTPM 架構規格 細部的dcTPM架構 內文權限協定 dcTPM - 命令 結論
摘要 隨著新科技的出現,對於信任平台(Trusted Platform)的需求也不斷的在改變。 如此,現在的信任平台模組(Trusted Platform Modules (TPMs))必須要處理一些在設計上沒有考量到的議題。 信任平台模組的其中一項不足的地方就是沒有能力在行動計算、虛擬化、以及雲端計算來支援多重stakeholder。 本論文提出了一個新穎的架構,稱為動態-內文TPM (dcTPM),可以來滿足每一個在多重stakeholder應用裡面的參與者的需求。
介紹 信任計算是一個新興科技,由信任計算團體(Trusted Computing Group (TCG))所發展與提倡, 信任計算在系統上提供了硬體式的安全給使用者加密的秘密。 在這方面它使用了一個加密模組,稱為信任平台模組(Trusted Platform Module (TPM)) 考慮一個行動平台情境,也就是裝置製造商、細胞式服務 提供商、應用服務提供商、還有使用者本身都作為不同的 stakeholder。 在這裡,行動平台的的功能就是去提供每一個應用的當前狀態的 一個可信任的證明給個別的stakeholder。 除了產生一個有信任價值的描述,行動平台還必須保證每一個 stakeholder資料的隔離性。 這個提出的dcTPM架構支援多個相互隔離的單元,稱為信 任單元(Trust Compartments),它可以是實體TPM(硬體)、 模擬的TPM(軟體)、或是兩者的結合。
一般的動態內文管理概念 動態內文管理的核心就是平行以及可以平行的提供唯一 stakeholder內文的相互隔離單元的多樣形式。 當一個stakeholder跟內文管理者溝通,這代表它正要存取 與一個獨立TPM相關的資料和資訊,與這個特定內文有關 聯。 一個關於動態內文管理的內文可以是一個記憶體位址,包 含對於執行的TPM功能的基本加密資訊, 舉例來說,在一個多個stakeholder情境中,主要關心的是在平台 上證明每一個stakeholder應用的狀態以及保護stakeholder資料。
初步 在這篇論文裡,我們使用內文(context)這名詞來談論提供 TPM相關功能給特定stakeholder的抽象概念。 信任單元(Trust Compartment)這名詞用來給一段特定的內 文的實體實現。 為了實現信任單元,我們使用了部分的重組技術,使得在FPGA上 分配時間讓硬體資源共同來使用。
一般性架構的主要元件 (1/2) 一般性架構包含了數個信任單元, 信任單元的存取和管理都是由動態內文管理器所控制,此外也提 供了一個介面通到主機PC。 運行在主機的程式透過認證以及發送命令來存取動態內文 管理者裡的資料,而這些動作都由現成的TPM所完成。 此外,為了遵循規格,信任單元包含了對於TPM命令執行 的加密引擎。 信任單元簡單概述如下。 FPGA IP-Core:這個種類是一種FPGA式的TPM 硬體實現,直接佈 署了加密引擎來當作硬體模組。加密內容的儲存是對應到不易揮 發的記憶體,此記憶體由動態內文管理器所管理。 Processor IP-Core:一個模擬軟體式的信任單元。因此,一個軟核 (softcore)處理器必須要配置,接著執行一或多個信任單元模擬器。 就像FPGA IP-Core一樣,加密內容是儲存到不易揮發的記憶體。 LPC & I2C Wrapper:這個種類提供介面來存取現有的ASIC TPMs。 根據實際的介面,需要選擇適當的組態。
一般性架構的主要元件 (2/2) 圖一、一般系統架構
建立、交換、刪除信任單元 Stakeholder詢問動態內文管理者來建立一個內文,接著引 導到信任單元單元的配置。 對於FPGA IP-Core和Processor IP-Core,改變信任單元是有 可能的 透過儲存相關的內文資料到不易揮發的儲存器中。 刪除內文基本上取決於信任單元的實現,可分為兩種不同 的方法。 這類型為一個現成的硬體TPM,那使用者可執行TPM_OwnerClear 命令,來移除儲存stakeholder 的TPM儲存stakeholder。 為了刪除由IP-Core、FPGA式或運行TPM模擬器的軟核處理器所實 現的類型,需要通知動態內文管理者要刪除的訊息,來釋放相關 的記憶體。
DCTPM 架構規格 對於動態替換信任單元,dcTPM必須根據stakeholder的需 求來支援一般性介面。 在一般電腦系統裡,TPM是附加在低接腳數(LPC)匯流排, 如TCG所做說明。 如此,一個實現dcTPM的Naïve方法可能要直接連接多個硬體TPM 到LPC匯流排上。 但為了簡化BIOS實現和系統的安全啟動,LPC匯流排給TPM的位址 只有0xFED40000。 如此,因為很明顯地位址衝突,不可能直接連接超過一個現成的 TPM到LPC匯流排。
細部的dcTPM架構 (1/4) 雛型實現利用FPGA來當作主要元件,可以提供介面給主機、 記憶體、周邊裝置還有個別的TPM。 FPGA具有軟核像是CPU、記憶體控制器、多種的I/O控制器還有LPC 匯流排控制器。 除了軟核,FPGA實現單一主機控制器給LPC匯流排,也就 是硬體TPM所連接的。周邊介面控制器提供主機PC端連結 給dcTPM。 dcTPM架構的核心元件是MicroBlaze軟核處理器,可以運 行uClinux作業系統。 n-TPM驅動用來連接兩個硬體TPM,透過個別的裝置節點 (像是/dev/tpm0 和 /dev/tpm1)
細部的dcTPM架構 (2/4) 圖二、細部的dcTPM架構
細部的dcTPM架構 (3/4) 對於周邊介面控制器的驅動提供了一個裝置節點式的,從 主機介面到使用者空間程式的連結,稱為dctpmd (dcTPM Daemon)。 Dctpmd會讀取由主機介面收到的資料,像是dcTPM命令, 解包裝它們到本地TPM命令,並將它們送到個別TPM單元。
細部的dcTPM架構 (4/4) MicroBlaze CPU運行uClinux作業系統。 為了執行多個軟體TPM單元在uClinux映像上,較大數量的 記憶體是必要的,也就解釋了表一中所見的,DDR2控制 器的高度資源利用。 網路介面用於兩個明顯的目的:一方面是發出命令,另一 方面是提供網路檔案系統。 表一、DCTPM雛型實現的資源利用
DCTPM:協定和命令 這項工作的主要焦點在於dcTPM的功能實現,而不是呈現 安全性協議的細節分析。 我們依靠特定可用的協議像是SKAP(Session Key Authorization Protocol) 在使用者處理和傳統TPM中間建立一個安全的區域就像是訊息交 換。 不像是OSAP和OIAP,SKAP根據公眾的金鑰加密來同時避免TPM模 擬和弱權限資料攻擊。
內文授權協定 (1/3) dcTPM管理全部可用的信任單元以及將即將進來的命令送 到指定的單元。 在存取特定的信任單元之前,stakeholder應用必須建立一個權限 區域。 信任單元的溝通包裝在一個封包裡,遵循TCG規格。 這種包裝處理實現在可信任的軟體堆疊(trusted software stack (TSS)) 的下一層,來允許stakeholder命令到相關信任單元的傳輸透明化。
內文授權協定 (2/3) 在我們的案例中,特定信任單元的選擇以及它的溝通是利 用一個修改過的SKAP協定來完成的,這協定稱dcTPM SKAP, 如圖三所示。 一個stakeholder應用透過傳送一個唯一的dcTPM_AUTH封包通過溝 通頻道,來請求一個專屬的存取給dcTPM的信任單元。 dcTPM_AUTH包含區塊處理comph還有隨機數S,由公用鑰匙 (pk(comph))來加密。 接著,dcTPM傳送dcTPM_SESS封包,包含了用來辨認內文的權限 處理ah,以及ne,像是第一個隨機數。 現在stakeholder應用和dcTPM可以從已知的訊息來獨立計算區域鑰 匙K。 經由計算參數的HMAC、內文處理ad(comph)的權限資料、以及ne可以得到K, 伴隨鑰匙S。
內文授權協定 (3/3) 圖三、內文權限協定
dcTPM - 命令 為了利用先前所提的協定來實現所提出的架構,新的命令 需要與傳統的TPM做個比較。 表二總結了這些dcTPM命令的需求。
結論 在這個貢獻裡面我們提出了一個新穎的架構,稱作dcTPM, 可以滿足多個stakeholder應用的需求,就如同在行動通訊 或是雲端計算。 為了這個目的我們題提出一個系統架構,利用部分重組技 術來支援多種信任單元實現。 所提出來的硬體/軟體架構已經在Virtex-5 LX110 FPGA 平台 上面做一個概念證明的實現來評估功能性的dcTPM概念的 可行性。
dcTPM架構 – 整合 (1/2) 雛型實現利用FPGA來當作主要元件,可以提供介面給主機、 記憶體、周邊裝置還有個別的TPM。 FPGA具有軟核像是CPU、記憶體控制器、多種的I/O控制器還有LPC 匯流排控制器。 dcTPM架構的核心元件是MicroBlaze軟核處理器,可以運 行uClinux作業系統。 其中,對於周邊介面控制器的驅動,有一個裝置節點式的,從主 機介面到使用者空間程式的連結,稱為dctpmd (dcTPM Daemon)。 Dctpmd會讀取由主機介面收到的資料,像是dcTPM命令(create, swap, delete…), 解包裝它們到本地TPM命令,並將它們送到個別TPM單元。 除了軟核,FPGA實現單一主機控制器給LPC匯流排,也就是硬體 TPM所連接的。 周邊介面控制器提供主機PC端連結給dcTPM。 n-TPM驅動用來連接兩個硬體TPM,透過個別的裝置節點(像是 /dev/tpm0 和 /dev/tpm1)
dcTPM架構 – 整合 (2/2) dcTPM架構 HW TPM1 Daemon HW TPMn SW TPM1 SW TPMn