對TCG的概要分析和對TPM的學習-可信存儲根RTS(三)

(YOUXIANG:lichunwen1987ATqq。com)

參考TCG Specification Architecture Overview 1.4 。http://www.trustedcomputinggroup.org/ 檢索TCG Specification Architecture Overview

   

 RTS是一個準確的記錄完整度量的摘要值和順序計算引擎,它將完整性度量保存在日誌中,將它們的散列值保存在PCR中。RTR是一個可靠報告RTS的計算引擎。RTS保存委託給TPM的密鑰和數據,並管理少量的內存,其中存放的密鑰用於完成解密和簽名的操作。

 

 

TPM中的密鑰管理架構

    上圖爲TPM的密鑰管理架構。TPM定位於一個造價低廉的組件,可以供普通消費者使用。所以TPM內部只有有限的易失性和非易失性存儲以減少成本,那麼TPM之外就需要無限的外部存儲擴展。所以需要有外部存儲(External Storage)和密鑰緩存管理(Key Cache Management:KCM)模塊。EK和SRK是僅有的兩個只存在於TPM中的密鑰。密鑰屬性,可以分爲可遷移密鑰和不可遷移密鑰,表明key是否可以由一個TPM遷移到另外一個TPM。AIK是一個典型的不可遷移密鑰。可遷移的密鑰可以用來在兩個TPM平臺間交換信息。

先介紹TPM中的密鑰類型,TPM中有7中Key類型:

EndorsementKey

EK是一個至少2048-bit的RSA不可遷移密鑰,由TPM的生產商生成的,EK證書與之對應;EK證書是爲了確保key是EK,是由TPM中保存的EK。

EK私鑰不會離開TPM,只存在與TPM的保護區中。

它通常只用來做兩件事情:創建Owner(解密SRK)和生成AIK證書(解密CA發送過來的AIK證書)。

EK與TPM是一一對應關係,一個TPM只有一個EK。

EK不能被用來加密或者簽名。

IdentityKeys

1)  如果直接使用EK簽名,則可能會帶來隱私問題,所有EK的簽名都能夠具體找到是哪個TPM。 所以不能直接使用EK簽名。

2)  EK需要一直保存在TPM中,不能被暴露,所以不能直接使用EK對PCR進行簽名。使用AIK(Attestation Identity Keys)作爲EK密鑰的別名(代理)。

3)  又稱之爲 AIK,不可遷移的簽名密鑰,但是僅對TPM產生的數據進行簽名,例如TPM的配置和PCR值。這種操作是Quote,區別於一般的簽名。

4)  AIK作爲一種特殊的密鑰,它存儲在一個通用的存儲設備中,當它離開TPM時,必須提供完整性保護。而且它是不可遷移的。(以AIK證書形式發送)

5)  AIK是一個2048位的RSA密鑰

6)  AIK可以確保是與TPM進行通信,但不具體到哪一個TPM

7)  簽名的key僅對TPM中的信息進行簽名(所以不能使用AIK對外部數據進行其簽名)。

8)  可以有多個AIK。

StorageRoot Key (SRK)

Storage Root Key (SRK) and the Endorsement Key (EK) 這兩個Key是永久保存在TPM中的,下圖爲TPM中RTS存儲的Key的關係。SRK是由TPM產生的,SRK的密碼在創建一個TPM賬戶時由EK進行了加密。SRK用來保護其他存儲在TPM之外的密鑰。

Signingkeys:

簽名密鑰是用來對應用數據或消息進行簽名的非對稱密鑰,可以是可遷移的或不可遷移的。

Storagekeys

存儲密鑰一般是用來加密數據或其他密鑰的非對稱密鑰,用來產生存在於TPM之外的密鑰和數據。

Bindkeys

May be used to encryptsmall amounts of data (such as a symmetric key) on one platform and decrypt iton another. 用來加密一個平臺的少量數據(例如對稱密鑰),然後在另一個平臺解密。

– happens outside of the TPM

– encrypt data with the public part of aTPM key

– only the TPM the key pair belongs tocan decrypt the data

與Seal的區別:

– without using PCRs: bind/unbind

– with using PCRs: seal/unseal

LegacyKeys

在TPM外創建的密鑰。在進行簽名或者加密操作之後再導入到TPM中,可遷移密鑰。

AuthenticationKeys

用來保護涉及到TPM的傳輸會話的對稱密鑰。Authentication Keys are symmetric keys used to protect transportsessions involving the TPM

 

幾個小知識點:

Ø  只有EK和SRK是永久存儲在TPM中的

Ø  TPM的key都是在TPM中產生的

Ø  使用TPM的key,需要先將key加載到TPM中

Ø  TPM中的key的slot是有數量限制的

Ø  對TPM中的key slot的管理由TSS完成

 

TPM中的key的產生方式:

指定一個父key,由RSA Engine創建一個新的RSA對, 由於key slot數量是一定的,需要一定安全機制將TPM中的key換出來。、

如果一個key離開TPM,需要使用父key的公鑰進行加密。

因爲父key是在TPM中的,所以TPM的key的私鑰只能在TPM中解密和使用

SRK,是最頂層的key,永遠駐留在TPM中

SK組成了key的層次,簽名key經常在TPM之外

 

下圖爲TPM的key層次結構,頂層root密鑰爲SRK,其他key都爲通過SRK生成。產生一個key或者在keyslot中已有的key私鑰離開TPM,應該使用其父key的公鑰進行加密。而key的使用都在TPM中(因爲經過層層加密,只有在TPM中的SRK才能最終將其解開),所以TPM的外部key需要通過key的樹結構返回到SRK,經解密後使用。

 

TPM Key Hierarchy

 

Unloading TPM Keys

 

下面爲一個使用紅圈標示的signing key的例子。

 

Loading TPM Keys

 

1、首先將SR key1load到TPM中,使用SRK解密,放入key slot中,

Loading TPM Keys

 

2、然後再將SK key2 load到TPM中,使用SRkey 1將key 2解密,放入到key slot中。

 

Loading TPM Keys

 

3、最後將signing key load到TPM中,使用SR key 2解密。然後將其放在key slot中,再在TPM中使用其進行一些簽名操作。

 

Loading TPM Keys

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章