TSS學習記錄

轉載測試 本身總結了一下TSS的相關資料,簡介一共分爲五大部分: 算法

1. TPM Internals windows

2. TPM Device Driver(TDD) 安全

3. TCG Device Driver Library(TDDL) 多線程

4. TCG Core Services(TCS) ide

5. TCG Service Provider(TSP) 函數

   

0. TSS簡介 測試

   TSS是與TPM進行交互的核心軟件部件,TSS的設計規範由TCG頒佈,到目前爲止版本號爲1.2,而且廠商自行設計的TSS必須符合TSS1.2標準。TSS的構成如圖所示,那麼TSS的設計目的有如下四個方面: spa

   1)爲應用程度提供到TPM功能服務的單入口點; 線程

   2)提供對TPM同步訪問 設計

   3)按標準構建字節流隱藏應用程序所構建的命令流;

   4TPM資源的管理

   通常說來,TSS就是使用戶可使用TPM所提供的相關服務,這些服務包括:完整性度量及報告、認證功能和加、解密服務等。

1、TPM Internals

    TPM的內部構造,只介紹主要的幾個部分,以下

1. I/O
   
管理流經通訊總線的信號流,典型的 LPC總線 (Low PinCount Bus)
2. Execution Engine
   
是一個微控制器,用於對命令碼的校驗、解析及執行,並控制內部執行流。(相似於PC中的CPU

3. SHA-1 Engine (160 bits)
   
主要被TPM使用,做爲其可信的哈希算法。在平臺啓動過程當中,其接口暴露在TPM外以進行度量工做,由CRTM使用,但不禁應用程序使用。將來的TPM版本會加入更多的哈希算法。
4. RNG
   TPM
內部的隨機源,僞隨機生成器。用於生成Nonce , 密鑰等。

5. RSA Engine and Key Generator
    
用於非對稱密鑰的生成(RSA;存儲SKAIK 密鑰大小 >= 2048),它支持 512, 1024, 2048 bit的密鑰,規範中建議使用2048位的密鑰。RSA密鑰生成遵循PKCS #1標準,在規範中其RSA公鑰必須是0x10001RSA密鑰在使用的時候要加載到TPM內部。

6. Volatile Memory
   
裏面包括:密鑰槽(10) PCR(24),密鑰句柄、受權會話句柄等。(相似於PC中的內存)
7. Non-Volatile Memory
   
包括EK(2048bit)EK證書,SRK(2048bit)及屬主(Owner)受權數據(160bit)等。(相似於PC中的硬盤)
8. Opt-In

    平臺屬主決定是否使用TPM。(相似於PC中的power鍵)

   

PS:括號中的"相似於"只是幫助理解TPM的內部構造。另外提一下,TPM+CRTM+TSS構成了可信平臺的子系統,該子系統能夠用在PCPDAmobilephonePS3XBOX等通訊設備系統中,加強該系統的安全性及可信性。

 

TDD這一部分就不介紹,具體可參見TIS標準。

2、TDDL

   TDDLTSS用於和TPM通訊的組件,它是運行於用戶空間的第一個TSS組件,提供了內核模式到用戶模式的轉換。在TSS規範中,它也處於TCSTDD之間,爲TCS提供接口TDDLi,這裏TDDLi是一個單線程同步接口,發送到TDDLiTPM命令都已經被串行化。那麼對於直接訪問TPM設備的程序,TDDLi提供了7個功能函數,用於和TDD進行通訊。這些函數包括:
   Tddli_Open()
Tddli_Close()Tddli_TransmitData(…)
    
值得說明的是,TDDL必須僅提供對TCS的連接。在這一部分,主要對TPMCommands以及受權協議做一下介紹。

    1.TPMCommands

   下面來具體介紹一下TPM CommandTPMCommands就是TPM能夠直接理解的命令,用這些命令能夠直接訪問TPM,如圖:

這樣一個簡單的詢問PCR數量的命令交互過程就完成了。傳輸以及接受到的命令流都是以圖中十六進制方式表示的。

 

2. 受權協議(Authorization Protocols

   受權是指,可以證實請求者擁有執行某個TPM功能和使用某些對象的許可。用雙方共享祕密(受權數據 )進行證實,無其餘方式。

   受權數據是一個在用戶和TPM之間共享的160bit祕密值,該祕密值由用戶建立,能夠看作是passwordSRKTPMOwner的受權數據要保存在TPM內部非易失性存儲區內,而其餘對象的受權數據則要與其自身進行綁定。當咱們在編寫關於TPM程序的時候,受權數據在策略對象裏設置。

   TPM中受權協議有不少,僅介紹其中有表明性的兩個協議:對象無關受權協議(OIAP)以及對象相關受權協議(OSAP)

    1ObjectIndependent Authorization Protocol (OIAP)
       
爲提升效率而設計,在一個受權會話中能夠驗證一個或多個不一樣的對象;
       
驗證的過程使用雙方共享的祕密值(受權數據)
    
2ObjectSpecific Authorization Protocol (OSAP)
       
在一個受權會話中僅對一個對象進行操做;
       
設置或從新設置受權數據的時候使用該協議;

下面用一個例子來講明這兩個協議的使用,該例子說明的是一個密鑰的建立-》加載-》使用整個過程所使用的受權協議,如圖所示:

總的說來,這兩個協議基於的是傳統的"挑戰-響應"認證方法,比較容易理解。

 

 

3、TCG Core Service

   此部分將詳細介紹TCS核心服務,爲何要有這個服務呢?首先分析一下TPM所存在的一些缺陷,以下:

   1)一次只有一個操做能夠進行;

   2)因爲硬件的限制,TPM處理速度很慢;

   3)有限的資源,包括密鑰槽、受權槽等;

   4)只能經過一個驅動程序與其進行串行通訊;

    5)本地軟件與之通訊是有限制的。

   針對這些缺陷,TCS採起以下的方法:

   1)能夠對多個TPM待處理的操做進行排隊;

   2)對於不須要TPM處理的操做,TCS能夠自行做出響應;

   3)對TPM有限資源進行管理,可看作是無限的資源;

   4)將輸入輸出的數據進行相應的轉換;

   5)能夠對資源提供本地的或者遠程的調用方式。

    那麼TCS的特色又有哪些呢?

   1TCS是一個後臺服務(相似於Linux下的daemon,或者windows下的system service;

   2)它爲TSP提供標準的接口TCSi(稍後介紹);

   3TCG標準中,TCS是惟一一個能夠直接訪問TPM的實體;

    4)每一個TPM僅對應一個TCS(注意:TCS並不提供加解密功能);

   5)對TPM有限的資源進行管理(密鑰、證書管理,以及上下文的管理);

   6TCS負責調度要操做的TPM命令(注意:每一個操做都是原子操做,而且容許多線程訪問);

   7TCS將上層的命令轉換爲TPM命令格式。

   對於(4~7)這四個特色來講,咱們能夠將TCS視爲一個軟件的TPM。就其本質來講,TCS就是一個管理服務。

1. TCS Interface(TCSi)

   它相似於C語言接口(說C接口只是爲了方面討論而定義的基準,其實並非這麼作。真正的TCS接口定義在TSS發佈的.wsdl文件中,實爲Web服務。),容許多個線程訪問TCS,每一個操做都是原子操做,它做爲系統進程存在,TSP與之的通訊有多是RPC,如圖。

2. Manager Services

   用文字敘述較爲困難,作了幾個圖來具體介紹一下TCS所提供的管理服務,如圖:

(注意:這裏的Persistent Storage與以後介紹的TSP層的PersistentStorage不是同一個貯存區,他們各自有其貯存區,在TCS層僅有一個貯存區,而在TSP層則針對不一樣的用戶有不一樣的貯存區。

相關文章
相關標籤/搜索