TSS學習記錄


轉載測試 自己總結了一下TSS的相關資料,簡介一共分為五大部分:

1. TPM Internals

2. TPM Device Driver(TDD)

3. TCG Device Driver Library(TDDL)

4. TCG Core Services(TCS)

5. TCG Service Provider(TSP)

   

0. TSS簡介

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

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

   2)提供對TPM同步訪問

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

   4TPM資源的管理

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

一、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標准。

二、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)
       
在一個授權會話中僅對一個對象進行操作;
       
設置或重新設置授權數據的時候使用該協議;

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

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

 

 

三、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層則針對不同的用戶有不同的貯存區。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM