国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于Duplication Authority 的TPM2.0 密鑰遷移協(xié)議?

2019-10-28 11:21,
軟件學報 2019年8期
關鍵詞:解密密鑰加密

譚 良 , 宋 敏

1(四川師范大學 計算機科學學院,四川 成都 610101)

2(中國科學院 計算技術研究所,北京 100190)

可信計算技術的基本思想是:在通用計算平臺上嵌入一個防篡改的硬件可信安全芯片,利用芯片的安全特性保證系統(tǒng)按照預期的行為執(zhí)行,從根本上提高終端的安全性[1].TPM(trusted platform module)[2]是國際廣泛使用的是符合可信平臺模塊標準的安全芯片,具有密碼學功能和受保護的存儲空間,能夠為可信計算平臺提供密鑰管理、平臺數(shù)據(jù)保護、完整性存儲與報告、身份標識等功能[2?4].

密鑰管理是TPM 非常重要的功能,它是TPM 能夠有效地提供其他各項功能的前提和基礎.為了滿足密鑰的安全存儲、分發(fā)和備份,TPM 采用層次型的存儲保護體系,并提供密鑰遷移(復制)接口.TPM1.1[5]規(guī)范中定義的密鑰遷移接口是TPM_AuthorizeMigrationKey,TPM_CreateMigratedBlob和TPM_convertMigratedBlob等;TPM1.2[6]規(guī)范定義的密鑰遷移接口是TPM_AuthorizeMigratinKey(),TPM_CMK_ApproveMA(),TPM_CMK_CreateKey(),TPM_CMK_CreateTicket(),TPM_CMK_CreateBlob()和TPM_CMK_ConvertMigration()等;TPM2.0[7]規(guī)范定義的密鑰復制接口是TPM2_Duplicate()和TPM2_Import().通常,用戶或上層應用可以通過以上接口設計密鑰遷移協(xié)議,將源TPM 中的密鑰遷移到目的TPM 中,以實現(xiàn)TPM 芯片間密鑰的共享.為了保證整個遷移過程的安全,需要提供機密性、完整性和認證性.

然而,TPM2.0 的密鑰遷移協(xié)議設計會更加復雜.一方面,由于TPM2.0 已支持對稱密鑰對象,使得在設計密鑰遷移協(xié)議時需要考慮更多的遷移組合.因為遷移密鑰既可以是對稱密鑰也可以是非對稱密鑰,而新父密鑰也可以是對稱密鑰或非對稱密鑰,不同的遷移需求組合在協(xié)議設計過程中需要進行不同的設計.另一方面,TPM2.0是通過遷移密鑰對象的復制屬性(fixedTPM,fixedParen,encryptedDuplication)和新父密鑰的newParentHandle類型來決定遷移方式和遷移過程.不同的組合,其遷移方式和遷移過程是不同的,特別是在密鑰復制過程中是否進行innerwrap和outerwrap,是保證密鑰遷移的機密性、完整性和認證性的關鍵.通過進一步研究發(fā)現(xiàn),基于密鑰復制接口的密鑰遷移協(xié)議至少存在3 個問題:一是缺少交互雙方TPM 的相互認證,會導致密鑰能夠在敵手和TPM 間遷移;二是當遷移密鑰的屬性encryptedDuplication=0 且新父密鑰的句柄newParentHandle=TPM_RH_NULL時,復制接口不能實施innerwrap和outerwrap,遷移密鑰將以明文傳輸而造成泄露;三是當新父密鑰是對稱密鑰時,innerwrap中的對稱加密密鑰以及outerwrap中的密鑰種子如何在源TPM 與目標TPM 之間安全交換,《TPM-Rev-2.0-Part-1-Architecture-01.38》并沒有給出具體的解決辦法.

為此,本文提出了基于Duplication Authority 的密鑰遷移協(xié)議.該協(xié)議以Duplication Authority 為認證和控制中心,通過判定遷移密鑰的復制屬性、新父密鑰的密鑰類型和句柄類型來決定遷移流程.最后,對該協(xié)議進行了安全分析和實驗驗證.

本文第1 節(jié)簡介TPM 密鑰遷移的相關背景知識.第2 節(jié)介紹現(xiàn)有的TPM 密鑰遷移協(xié)議并指出其存在的問題.第3 節(jié)詳述本文提出的基于Duplication Authority 的密鑰遷移協(xié)議.第4 節(jié)對提出的協(xié)議進行分析.第5 節(jié)是實驗驗證和性能對比分析.第6 節(jié)介紹可信安全芯片密鑰遷移的相關研究工作.第7 節(jié)總結全文.

1 背景知識

本節(jié)從TPM 2.0 的密鑰類型和結構、密鑰對象管理保護體系、密鑰遷移類接口這3 個方面介紹本文的背景知識.

1.1 TPM2.0的密鑰類型和結構

相比于TPM1.2,TPM2.0 的密鑰類型和結構發(fā)生了較大的變化.下面我們對此進行詳細的介紹.

1.1.1 TPM2.0 的密鑰類型

1.按照密鑰功能組合分類

TPM2.0 中密鑰對象的基本屬性包括:

· Restricted Attribute:專用屬性,表明該密鑰只能對特定對象進行操作.

· Sign Attribute:簽名屬性,表明該密鑰對象是否可以用于簽名.

· Decrypt Attribute:機密屬性,表明該對象是否可以用于加解密.

根據(jù)以上3 個屬性,TPM2.0 將密鑰對象分為8 類,見表1.

這8 類密鑰與TPM1.2 中7 種類型密鑰(簽注密鑰(endorsement key,簡稱EK)、存儲密鑰(storage key,簡稱SK)、身份認證密鑰(attestation identity key,簡稱AIK)、簽名密鑰(signing key)、綁定密鑰(binding key)、繼承密鑰(legacy key)和驗證密鑰(authentication keys))的對應關系見表2.

Table 2 Key type correspondence between TPM1.2 and TPM2.0表2 TPM1.2 與TPM2.0 的密鑰類型對應關系

由此可見,TPM2.0 的密鑰類型更精確,其中,對應于TPM1.2 中的TPM_KEY_SIGNING,TPM_KEY_IDENTITY這兩類密鑰功能略有增加.

2.按照密鑰復制屬性分類

TPM2.0 中,密鑰對象除了基本屬性外,還包括一些其他屬性,如fixedTPM和fixedParent,stclear,sensitiveDataOrigin,userWithAuth,adminWithPolicy,noDA和encryptedDuplication.根據(jù)fixedTPM和fixedParent的屬性組合,可以將密鑰對象分為可復制密鑰和不可復制密鑰.如表3 所示.本文所指的可復制密鑰,就是指fixedTPM=0 和fixedParent=0 的密鑰.

Table 3 Key classification for duplication表3 密鑰可復制分類表

1.1.2 TPM2.0 的密鑰結構

TPM2.0 中,密鑰對象的基本結構包括3 個域:PublicArea,SensitiveArea或PrivateArea,對TPM2.0 內部的任意密鑰k,表示為k=(PublicArea,SensitiveArea);外部的任意密鑰,通常表示為k=(PublicArea,PrivateArea),其中,

·PublicArea

1)type:密鑰類型.

2)nameAlg:此密鑰支持的密碼算法.

3)objectAttributes:密鑰屬性,包括功能(Sign,Decrypt和Restricted)、授權(userWithAuth,adminWithPolicy和noDA)、復制(fixedTPM,fixedParent和encryptedDuplication)、生成方式(sensitiveDataOrigin)以及重置(stclear).

4)authPolicy:授權策略.

5)parameters:此類密碼算法的參數(shù).

6)unique:非對稱密鑰此項代表公鑰;對稱密鑰此項代表其SensitiveArea的摘要值.

·SensitiveArea

1)sensitiveType:敏感數(shù)據(jù)類型.

2)authValue:授權值.

3)seedValue:對于對稱的和非對稱的存儲密鑰,由該值產生保護child 對象的密鑰.對于非對稱密鑰的非存儲密鑰當前無用.對于其他對象,該值與sensitive一起HASH 產生unique摘要值.

4)sensitive:敏感參數(shù)值.對于非對稱密鑰,此值表示私鑰:對于對稱密鑰,此值就是key;對于消息碼,此值就是key;對于數(shù)據(jù)對象,此值就是敏感數(shù)據(jù).

·PrivateArea

1)encyptedsensitivearea:此密文是由父密鑰的seedValue產生的key對sensitivearea加密的值.

2) HMAC 消息碼:此消息碼是由父密鑰的seedValue產生的key對sensitivearea進行HMAC 的值.

1.2 TPM2.0密鑰對象管理存儲保護體系

TPM2.0 可通過TPM2_CreatePrimary,TPM2_Create和TPM2_CreateLoaded生成種子密鑰對象、普通密鑰對象和派生密鑰對象,所有的密鑰對象形成一棵密鑰樹,其中,種子密鑰對象一般作為根密鑰保護所在層次的子密鑰,如圖1 所示.在此密鑰樹中,TPM2.0 將密鑰對象分為可復制密鑰對象、可跟隨父密鑰復制密鑰對象以及不可復制密鑰對象.不可復制密鑰對象只能與原TPM 芯片綁定,不能被復制;而可復制密鑰對象可以復制到其他TPM 中使用,而可跟隨父密鑰復制密鑰對象的存在使得在密鑰樹中一次能復制一棵子樹,比TPM1.2 中的密鑰遷移更靈活,效率更高.

Fig.1 TPM2.0 key protect tree圖1 TPM2.0 的密鑰樹

在 TPM2.0 密鑰樹中,存儲父密鑰采用對稱加密方法保護孩子密鑰,加密密鑰由父密鑰的密鑰種子seedValue產生,加密算法由父密鑰的nameAlg指定.這一點與TPM1.2 中用非對稱密鑰的私鑰對孩子的私鑰進行加密保護不同,因此在TPM2.0 的密鑰樹中,無論是對稱密鑰還是非對稱密鑰,只要是存儲密鑰,都可以作為父節(jié)點.如圖2 所示.

Fig.2 Key hierarchy protection model of TPM2.0圖2 TPM2.0 的密鑰層次保護模型

1.3 TPM2.0密鑰對象復制接口

TPM2.0 完整的密鑰復制流程是將源TPM 的密鑰對象復制到目標TPM,因此,密鑰復制應該包括兩個接口:

其一是復制數(shù)據(jù)的生成;其二是復制數(shù)據(jù)的加載.

· 接口1:復制數(shù)據(jù)生成接口:

其中,objectHandle為復制密鑰的句柄;newParentHandle是新父密鑰句柄;encryptionKeyIn是innerwrap加密密鑰,該密鑰或由caller 傳入,或是由TPM 產生;symmetricAlg是對稱加密算法.該函數(shù)執(zhí)行后返回3 個值:其一是encryptionKeyOut,encryptionKeyOut返回的是由TPM 產生的內部加密密鑰,如果TPM 沒產生內部加密密鑰,該值返回null;其二是duplicate,duplicate是復制數(shù)據(jù),封裝了被復制密鑰的Sensitive Area;最后是outSymSeed,outSymSeed是outerwrap的密鑰種子,由它可以產生外部對稱加密的密鑰.

該接口的執(zhí)行過程如下.

(1) 檢查遷移密鑰的屬性fixedTPM和fixedParent:如果設置不是(0,0),就結束復制過程.

(2) 檢查遷移密鑰的屬性encryptedDuplication:

取各組大鼠右側踝關節(jié)組織適量,經4%多聚甲醛溶液中固定2 d、EDTA脫鈣液中脫鈣10 d后,用大量水清洗,經乙醇(體積分數(shù)分別為80%、95%、100%)梯度脫水、石蠟包埋、切片(厚度5 μm)后,行HE染色,以中性樹膠封片,置于光學顯微鏡下觀察大鼠踝關節(jié)組織病變情況。

? 如果設置為1,則判斷newParentHandle是否為TPM_RH_NULL:如果為TPM_RH_NULL,則結束復制過程;否則,轉到步驟(3);

? 如果設置為0,則轉到步驟(4).

(3) 執(zhí)行innerwrap,用encrptionKeyIn對復制密鑰的sensitiveArea進行加密,生成encSensitive.

(4) 執(zhí)行outerwrap,用密鑰種子seed生成加密密鑰和HMAC 密鑰,對encSensitive進行加密和HAMC 運算,得到dupSensitive和outerHMAC.

· 接口2:復制數(shù)據(jù)導入接口:

其中,newparentHandle是新父密鑰句柄;encryptionKey是源TPM 內的innerwrap密鑰,其值由TPM2_Duplicate的返回值encryptionKeyOut提供;duplicate是復制數(shù)據(jù),此值由TPM2_Duplicate的返回值duplicate提供;inSymSeed是源TPM 內的outerwrap密鑰種子,此值由TPM2_Duplicate的返回值outSymSeed提供.

該接口的執(zhí)行過程如下:

(1) 檢查復制密鑰的屬性fixedTPM和fixedParent:如果設置不是(0,0),就結束導入過程.

(2) 檢查新父密鑰是否為存儲密鑰:如不是,結束導入過程.

(3) 檢查innerwrap的加密密鑰encryptionKey是否正確:如果不正確,結束導入過程.

(4) 檢查outerwrap的密鑰種子inSymSeed是否正確:如果不正確,結束導入過程.

(5) 由inSymSeed和newparentHandle恢復出源TPM 的outerwrap的HAMC 密鑰,通過outerHAMC驗證dupsensitive及其name的真實性和完整性;然后再恢復出outerwrap的對稱密鑰,對dupsensitive解密得到encsensitive.

(6) 用encryptionKey對encsensitive進行解密,得到被復制密鑰的sensitive;并對sensitive及其name進行完整性校驗.

通過對TPM2_Duplication接口和TPM2_Import接口的分析可知:采用TPM2.0 的密鑰復制接口來設計密鑰遷移協(xié)議,需要將新父密鑰從目標TPM 傳遞到源TPM,源TPM 調用TPM2_Duplication接口得到被遷移密鑰的復制數(shù)據(jù),目標TPM 調用TPM2_Import將復制數(shù)據(jù)載入.基本的流程如下.

(1) 目標TPM 將新父密鑰傳遞給源TPM.

(2) 源 TPM 調用TPM2_Duplication接口,根據(jù)遷移密鑰的復制屬性(fixedTPM,fixedParen,encryptedDuplication)和新父密鑰的newParentHandle類型實施innerwrap和outerwrap,得復制數(shù)據(jù).

(3) 將復制數(shù)據(jù)傳遞給目標TPM,目標TPM 調用TPM2_Import將被遷移密鑰加載到新父密鑰下.

1.4 innerwrap和outerwrap過程

由第1.3 節(jié)可以看出,在利用TPM2_Duplication接口和TPM2_Import接口進行密鑰遷移時,復制過程的安全性不僅依賴innnerwrap,而且依賴outerwrap.下面我們對innnerwrap和outerwrap進行分析.

1.4.1innerwrap過程

通過對《TPM-Rev-2.0-Part-1-Architecture-01.38》和《TPM-Rev-2.0-Part-3-Commands-01.38-code》分析發(fā)現(xiàn),密鑰復制過程中是否進行innerwrap是由遷移密鑰的屬性encryptedDuplication和新父密鑰的密鑰句柄類型決定,只有當encryptedDuplication=1 且newParentHandle!=TPM_RH_NULL時,innerwrap才能發(fā)生.innerwrap過程中需要的對稱加密密鑰由caller 決定,caller 可以選擇輸入,也可以選擇由TPM 自行產生.

innerwrap可以在復制過程中為遷移密鑰提供完整性和機密性,包括兩個步驟:首先是用復制密鑰的Hash算法計算復制密鑰sensitive和name的哈希值innerIntegrity,保證復制密鑰的完整性;然后,用某對稱加密算法的CBF 模式對innerIntegrity||sensitive進行加密,得到encSensitive,其中,需要的對稱加密算法和密鑰由caller 將其作為參數(shù)傳入TPM2_Duplication.

從以上過程可以看出,源TPM 要完成innerwrap,需要確保加密密鑰安全地傳遞到目的TPM.因此,如何將此加密密鑰安全地傳遞到目的TPM,是需要考慮的重要問題.需要考慮如下3 種情況.

(1) 如果新父密鑰是非對稱密鑰,無論遷移密鑰是對稱密鑰還是非對稱密鑰,innerwrap中需要的對稱加密密鑰可以由源TPM 產生或由caller 輸入,且可以采用《TPM-Rev-2.0-Part-1-Architecture-01.38》中B.10.3 或C.6.3 中規(guī)定的算法進行保護交換.

(2) 如果新父密鑰是對稱密鑰,而復制密鑰是非對稱密鑰,則innerwrap中需要的對稱加密密鑰可以由目的TPM 產生,且可以采用《TPM-Rev-2.0-Part-1-Architec-ture-01.38》中B.10.3 或C.6.3 中規(guī)定的算法進行保護交換.

(3) 如果新父密鑰是對稱密鑰,而遷移密鑰也是對稱密鑰,則innerwrap中需要的密鑰無論是由源TPM 產生或目的TPM 產生或caller 輸入,《TPM-Rev-2.0-Part-1-Architecture-01.38》中還未給出此密鑰的保護交換辦法.

1.4.2 outerwrap 過程

通過對《TPM-Rev-2.0-Part-1-Architecture-01.38》和《TPM-Rev-2.0-Part-3-Commands-01.38-code》的分析發(fā)現(xiàn),密鑰復制過程中是否進行outerwrap是由新父密鑰的密鑰句柄類型決定,當newParentHandle!=TPM_RH_NULL時,outerwrap就會發(fā)生;當newParentHandle=TPM_RH_NULL時,outerwrap不會發(fā)生.究其原因是:outerwrap過程主要由新父密鑰控制,如果新父密鑰的句柄為TPM_RH_NULL,則新父密鑰不能為outerwrap提供需要的算法及參數(shù).

outerwrap可以在復制過程中為遷移密鑰提供機密性、完整性以及對新父密鑰的認證性,包括兩個步驟.

· 一是對encSensitive進行加密,具體過程為:首先,獲得一個密鑰種子seed;然后,將此密鑰種子、新父密鑰的npNameAlg和遷移密鑰的Name作為KDFa()的參數(shù),產生對稱加密密鑰;最后,采用新父密鑰的對稱加密算法對encSensitive進行加密,得到dupSensitive.

· 二是對dupSensitive和Name進行HAMC 運算,產生消息碼outerHMAC.具體過程為:首先,用Seed和新父密鑰的npNameAlg作為KDFa()的參數(shù),產生HAMC 密鑰;然后,采用新父密鑰的HMAC 算法進行運算,獲得消息碼outerHMAC.

從以上過程可以看出,源TPM 要完成outerwrap不僅需要獲得新父密鑰的相關參數(shù),而且需要確保密鑰種子seed能在源TPM 和目的TPM 之間安全地交換.需要考慮的3 種情況與innerwrap要考慮的3 種情況一致.

2 問題分析

本節(jié)先基于TPM2.0 的密鑰復制接口設計最初的密鑰遷移協(xié)議,然后詳細分析其存在的問題[8].

該初始遷移協(xié)議包括6 個參與實體:源TPM、源TPM 的所有者、目標TPM、目標TPM 的所有者、源TPM所在的主機、目標TPM 所在的主機,其中,前4 個實體是可信的,而源和目標TPM 所在的主機被認為是不可信的.為了敘述方便,我們定義如下符號及函數(shù),見表4.

Table 4 Symbols and functions表4 符號及函數(shù)

2.1 基于密鑰復制接口的密鑰遷移協(xié)議

基于第1 節(jié)介紹的背景知識,并根據(jù)《TPM-Rev-2.0-Part-1-Architecture-01.38》和《TPM-Rev-2.0-Part-3-Commands-01.38-code》規(guī)范的要求,我們設計出基于復制接口的密鑰遷移協(xié)議,其流程如下.

1.HD→HS:newParent.publicAera,newparentHandle,symmetrical.

2.OS:

(1) 獲得objectHandle,newparentHandle.

(2) 決定encryptionKeyin的產生方式,可以輸入,也可以由TPM 內部產生.

(3) 調用接口TPM2_Duplication(objectHandle,newParentHandle,encrptionKeyIn,symmetricAlg).

3.TS:執(zhí)行復制過程:

(1) 檢查遷移密鑰的屬性fixedTPM和fixedParent:如果設置不是(0,0),就結束復制過程,轉到步驟10.

(2) 檢查遷移密鑰的屬性encryptedDuplication:

? 如果設置為1,則判斷newParentHandle是否為TPM_RH_NULL:如果為TPM_RH_NULL,則結束復制過程,轉到步驟10;否則轉到步驟3 中的(3);

? 如果設置為0:newParentHandle不為TPM_RH_NULL,則轉到步驟3.(5);否則,轉向步驟3.(7).

(3) 執(zhí)行innerwrap,由 caller 輸入或 TPM 產生encrptionKeyIn,并用encrptionKeyIn對遷移密鑰的sensitiveArea進行加密,生成encSensitive.

(4) 對encrptionKeyIn進行保護,分為兩種情況:

? 如果新父密鑰是非對稱密鑰,如RSA 或ECC 密鑰,則用新父密鑰的公鑰加密encrptionKeyIn,即

? 如果新父密鑰是對稱密鑰,則直接sysmetrickey=encrptionKeyIn.

(5) 執(zhí)行outerwrap,由TPM 產生密鑰種子seed,用密鑰種子seed生成加密密鑰和HMAC 密鑰,對encSensitive進行加密和HAMC 運算,得到dupSensitive和outerHMAC.

(6) 對Seed進行保護,分兩種情況:

? 如果新父密鑰是非對稱密鑰,如RSA 或ECC 密鑰,則用新父密鑰的公鑰加密Seed,即CSeed=RSA_OAEP(newParentHandle,Seed)或ECC_ECDH(newParentHandle,Seed),并將sysmetricSeed=Cseed;

? 如果新父密鑰是對稱密鑰,則直接sysmetricSeed=Seed.結束復制過程,轉到步驟4.

(7) 對復制密鑰既不進行innerwrap,也不進行outerwrap,將dupSensitive=sensitiveArea,sysmetrickey=NULL,sysmetricSeed=NULL.

4.TS→OS:dupSensitive,outerHMAC,sysmetrickey,sysmetricSeed.

5.OS→HS:dupSensitive,outerHMAC,sysmetrickey,sysmetricSeed.

6.HS→HD:dupSensitive,outerHMAC,sysmetrickey,sysmetricSeed.

7.HD→OD:dupSensitive,outerHMAC,sysmetrickey,sysmetricSeed.

8.OD→TD:dupSensitive,outerHMAC,sysmetrickey,sysmetricSeed.

9.TD:執(zhí)行導入過程:

(1) 檢查遷移密鑰的屬性fixedTPM和fixedParent:如果設置不是(0,0),就結束導入過程,轉到步驟10.

(2) 檢查新父密鑰是否為存儲密鑰:如不是,結束導入過程,轉到步驟10.

(3) 根據(jù)sysmetricSeed參數(shù)是否為NULL來判斷是否進行了outerwrap.

? 如果為NULL,則轉到下一步;

? 否則,直接得到seed或用私鑰解密sysmetricSeed得到seed,按照symmetricAlg算法生成HMAC密鑰HMACkey,并對dupSensitive||name進行HAMC 運算,將得到的值與outerHMAC比較:如果不相等,終止導入過程,轉到步驟10;如果相等,則用seed生成對稱加密密鑰symkey并解密dupSensitive,得到encSensitive.

(4) 根據(jù)sysmetrickey參數(shù)是否為NULL來判斷是否進行了innerwrap.

? 如果為NULL,則轉到步驟10;

? 否則,直接得到encrptionKeyIn或用新父密鑰的私鑰解密sysmetrickey得到encrptionKeyIn,用symmetricAlg算法對encSensitive進行解密,得到Sensitive和name,用Hash 算法對Sensitive||name進行完整性驗證:驗證通過,則表明遷移成功,轉到步驟10;驗證不通過,則表明遷移不成功,轉到步驟10;

10. 結束遷移過程.

2.2 存在問題

從第2.1 節(jié)可以看出,基于TPM2.0 密鑰復制接口設計的密鑰遷移協(xié)議存在如下安全問題.

· 問題1:該協(xié)議缺少源TPM 和目標TPM 間的身份認證,導致密鑰能夠在敵手和TPM 間遷移.存在著如下兩種情況:(1) 源TPM 不能認證newParent是否是目標TPM 的密鑰,導致敵手可以用其控制的密鑰遷移源TPM 的密鑰,并獲得密鑰明文;(2) 目標TPM 不能認證遷移數(shù)據(jù)是否來自源TPM,使敵手可以將其控制的密鑰遷移到目標TPM 中.

· 問題2:當復制密鑰的屬性encryptedDuplication=0 且新父密鑰的句柄newParentHandle=TPM_RH_NULL時,復制接口不能實施innerwrap和outerwrap,遷移密鑰將以明文傳輸而造成泄露.

· 問題3:當新父密鑰是對稱密鑰時,innerwrap中的對稱加密密鑰以及outerwrap中的密鑰種子如何在源TPM 與目標TPM 之間安全交換,《TPM-Rev-2.0-Part-1-Architecture-01.38》并沒有給出具體的解決辦法.

另外,第2.1 節(jié)的密鑰遷移協(xié)議中復制流程比較復雜,其中有幾個關鍵的因素決定復制流程:首先,密鑰能否復制是由復制密鑰的屬性(fixedTPM,fixedParent)決定;其次,復制過程中是否實施innerwrap由復制密鑰的encryptedDuplication屬性決定;第三,復制過程中是否實施outerwrap由新父密鑰的句柄類型決定;第四,innerwrap中對稱密鑰和outerwrap中密鑰種子的保護交換還依賴新父密鑰的密鑰類型.不同的屬性值決定了不同的復制流程,在所有的流程中,部分流程的輸出結果是存在安全隱患的.由于所有的判斷均在TPM 內部進行,在執(zhí)行完成之前,外界無法知道TPM2_Duplication()的輸出結果.為了保證復制過程的安全,需要提前掌握復制流程.因此,外界需要一個控制中心,提前獲知遷移密鑰屬性(fixedTPM,fixedParent,encryptedDuplication)、新父密鑰類型和新父密鑰句柄類型,從而提前掌握復制流程,并對復制過程的輸出結果采取合理的保護措施.

3 基于Duplication Authority 的密鑰遷移協(xié)議

根據(jù)第2 節(jié)的分析,我們提出基于Duplication Authority 的密鑰遷移協(xié)議,該協(xié)議以Duplication Authority 為控制和認證中心,負責對源TPM 和目標TPM 進行認證并控制復制流程.該協(xié)議包括3 個階段:初始化階段、認證和屬性獲取階段以及控制和執(zhí)行階段.鑒于篇幅和突出重點,在該協(xié)議描述過程中,我們僅考慮TPM 與Duplication Authority 以及源TPM 與目標TPM 之間的直接信息交互.

3.1 初始化階段

初始化階段的主要任務是源和目的TPM 到Duplication Authority 注冊并對TPM 進行認證,流程如圖3 所示.我們用DA 代表Duplication Authority,(Kpub_DA,Kpri_DA)是Duplication Authority 的一對非對稱密鑰,CertDA表示該公鑰的證書.注冊過程是TPM 將自己的身份標識(IDTPM)注冊到DA 的數(shù)據(jù)庫中,E(?)為加密函數(shù),Sign(?)為簽名函數(shù),Verify(?)為驗證函數(shù),RA為注冊標志位,CertEK為TPM 的背書證書,Ntpm為TPM 產生的隨機數(shù),NDA0為DA產生的隨機數(shù).具體的交互過程如下.

1.TPM→DA:E(ks,[CertEK||IDTPM||Signpri_EK(IDTPM)||Ntpm]),E(CertDA,ks).

2.DA→TPM:E(ks,RA||Ntpm||NDA0).

3.TPM→DA:E(ks,NDA0).

Fig.3 Initialization phase圖3 初始化階段

下面我們對上述每一步進行詳細解釋,具體如下.

· 步驟 1:TPM 向 DA 發(fā)送注冊信息,發(fā)送的具體內容:E(ks,[CertEK||IDTPM||Signpri_EK(IDTPM)||Ntpm])||E(CertDA,ks).DA 接收到TPM 發(fā)來的注冊信息后,首先用Kpri_DA解密得ks,并用ks解密得CertEK||IDTPM||Signpri_EK(IDTPM)||Ntpm;然后,Verify(CertEK)和Verify(Signpri_EK(IDTPM)),驗證通過置RA=1,否則置RA=0.

· 步驟2:TPM 接收到DA 的返回密文E(ks,RA||Ntpm||NDA0),用ks解密,讀取RA的值,驗證Ntpm,如果驗證通過,返回E(ks,NDA0).

· 步驟3:DA 解密得到NDA0,驗證NDA0,如果通過,表明TPM 已經知道注冊成功,則將CertEK||IDTPM存入注冊數(shù)據(jù)庫.

3.2 認證和屬性獲取階段

認證和屬性獲取階段包括兩個主要任務:其一是源TPM 與目標TPM 交互雙方基于Duplication Authority進行認證;其二是為控制后期復制過程,DuplicationAuthority 通過和目標TPM 與源TPM 的交互,獲得復制密鑰和新父密鑰的屬性.為了敘述方便,我們假設具體的應用場景是:TS和TD均是在DA 中注冊的TPM,當前要將TS中objectHandle所指向的密鑰對象遷移到TD中newParentHandle所指向的新父密鑰對象下.我們用標志位S表示對稱密鑰、非對稱密鑰或非密鑰對象,S=0 表示對稱密鑰,S=1 表示非對稱密鑰,S=?1 為非密鑰對象;用AlgParameter表示密鑰對象支持的算法及相關參數(shù),流程如圖4 所示.具體的交互過程如下.

Fig.4 Authentication and attribute acquisition process圖4 認證和屬性獲取階段

下面,我們對上述每一步進行詳細解釋.具體如下.

· 步驟1:TD向DA 發(fā)送遷移請求秘密信息.DA 用私鑰解密E(CertDA,ks1)得ks1,并用ks1解密TD發(fā)送的具體內容,得到目標TPM 的ID、新父密鑰的句柄newParentHandle、新父密鑰標志位S、新父密鑰的算法及相關參數(shù)AlgParameter、源TPM 的ID 以及現(xiàn)時等.DA 驗證TD的和Ts的,確認是否均為合法的TPM,如果不合法則終止.

· 步驟3:TS用CertDA驗證復制請求后,確認此信息來自DA,并向DA 發(fā)送共享密鑰ks2和現(xiàn)時

· 步驟4:DA 解密獲得ks2,用ks2加密目的TPM 的ID、復制密鑰的句柄objectHandle、新父密鑰的算法以及現(xiàn)時NDT,NDA1和NST并發(fā)送給TS.

· 步驟5:TS解密后,獲知有TD要遷移objectHandle所指向的密鑰對象到其newParentHandle所指向的新父密鑰對象下.由于目標TPM 的ID 來自DA,因此TS認為TD是合法可信的TPM,于是在確認自己支持新父密鑰的算法及參數(shù)后,向DA 發(fā)送了objectHandle所指向的密鑰對象的復制屬性fixedTPM,fixedParent,encryptedDuplication以及密鑰類型和現(xiàn)時

· 步驟6:DA 向TD發(fā)回現(xiàn)時,表明遷移準備就緒.至此,不僅DA 獲得了在復制過程中需要的復制密鑰和新父密鑰的相關屬性,而且TS和TD得到相互認證.

3.3 控制和執(zhí)行階段

控制和執(zhí)行階段包括兩個主要任務:其一是DA 根據(jù)復制密鑰和新父密鑰的相關屬性控制和選擇具體的復制流程;其二是遷移過程的具體執(zhí)行.

上一階段結束后,DA 已經獲得了復制密鑰和新父密鑰的相關屬性,包括fixedTPM,fixedParent,encryptedDuplication,newParentHandle,objecthandle→S,newParentHandle→S等,這些屬性的取值一共有96 種組合,但大部分組合是無效組合,DA 可以根據(jù)這些屬性組合對執(zhí)行過程進行控制.我們經過分析,有效組合一共有12 種.為了方便敘述,我們用EndEcho表示復制過程終止.限于篇幅,各種情況的密鑰遷移流程圖略.具體的12 種情況如下.

情況1:當fixedTPM!=0 或fixedParent!=0 時,具體流程如下.

下面,我們對上述每一步進行詳細解釋.具體如下.

· 步驟1:DA 向TD發(fā)送EndEcho,結束密鑰遷移過程.

· 步驟2:DA 向TS發(fā)送EndEcho,結束密鑰遷移過程.

本屬性組合表明:只有當遷移密鑰的fixedTPM和fixedParent屬性都置0 時,復制及遷移過程才可繼續(xù)進行.

情況2:當fixedTPM=0,fixedParent=0,encryptedDuplication=1,newParentHandle=TPM_RH_NULL時,具體流程如下.

下面,我們對上述每一步進行詳細解釋.具體如下.

· 步驟1:DA 向TD發(fā)送EndEcho,結束密鑰遷移過程.

· 步驟2:DA 向TS發(fā)送EndEcho,結束密鑰遷移過程.

本屬性組合表明:在密鑰復制過程中,如果只進行innerwrap是不行的,復制及遷移過程會終止.

情況 3:當fixedTPM=0,fixedParent=0,encryptedDuplication=1,newParentHandle!=TPM_RH_NULL,object thandle→S=1,newParentHandle→S=1 時,具體流程如下.

(1)DA→TS:Sign(Kpri_DA,[||newParentHandle||newParentHandle→S||newParentHandle→AlgParameter||,E(ks2,[||newParentHandle||newParentHandle→S||newParentHandle→

(2)TS→TD:dupSensitive,outerHMAC,CencryptionKeyout,CSeed,encRng.

(3)TD→TS:encRng.(4)TS→DA:encRng.

下面,我們對上述每一步進行詳細解釋.具體如下.

· 步驟1:TS接收到DA 的消息,解密得到目標TPM 的ID、新父密鑰的句柄newParentHandle、新父密鑰標志位S的值、新父密鑰的算法及相關參數(shù)AlgParameter以及現(xiàn)時.然后用CertDA驗證簽名,再驗證現(xiàn)時.所有的驗證通過,TS將進行如下計算.

1) 產生innerwrap需要的對稱加密密鑰encryptionKeyIn(可由TS的OS輸入).

2) 計算innerIntegrity=Hobject.nameAlg(object.sensitive||object.name).

3) 計算encSensitive=CFBobject.symAlg(encryptionKeyIn,0,innerIntegrity||object.sensitive).

4) 根據(jù)AlgParameter,計算CencryptionKeyIn=RSA_OAEP(newParentHandle→PubliceArea,encrypttionKeyIn)或CencryptionKeyIn=ECC_ECDH(newParent Handle→PubliceArea,encryptionKeyIn).

5) 產生outerwrap需要的密鑰種子seed.

6) 計算symKey=KDFa(AlgParameter,seed,“STORAGE”,Name,NULL,bits).

7) 計算dupSensitive=CFBAlgParameter(symKey,0,encSensitive).

8) 計算encRng=CFBAlgParameter(symKey,0,

9) 計算HMACkey=KDFa(AlgParameter,seed,“INTEGRITY”,NULL,NULL,bits).

10) 計算outerHMAC=HMACnpNameAlg(HMACkey,dupSensitive||objecthandle→Name).

以上過程實際上是調用TPM2_Duplicate(objectHandle,newParentHandle,encryptionKeyIn,symmetricAlg)進行密鑰復制,對復制密鑰實施innerwrap和outerwrap.

· 步驟2:TD收到TS傳來的dupSensitive,outerHMAC,CencryptionKeyout,CSeed和encRng,進行如下計算.

1) 用新父密鑰的私鑰解密CSeed,得到Seed.

2) 用同樣的算法生成HMACkey和symKey.

3) 用symKey解密encRng,驗證隨機數(shù);然后,用HMACkey驗證outerHMAC.如果驗證都通過,用symKey對dupSensitive進行解密,得到encSensitive.

4) 用新父密鑰的私鑰解密CencryptionKeyout得到encryptionKeyout,用encryption-Keyout解密encSensitive得到innerIntegrity和Sensitive,用同樣的H算法驗證object.sensitive||object.name的完整性.如果驗證通過,則復制成功.

以上過程實際上是調用TPM2_Import(newparentHandle,CencryptionKeyout,dupSenstive,CSeed)進行復制密鑰導入.

· 步驟3:TD給TS返回encRng,TS解密驗證隨機數(shù).如果相同,表明遷移成功.

· 步驟4:TS給DA 返回encRng,DA 解密驗證隨機數(shù).如果相同,表明遷移成功,結束遷移過程.

情況 4:當fixedTPM=0,fixedParent=0,encryptedDuplication=1,newParentHandle!=TPM_RH_NULL,object handle→S=1,newParentHandle→S=0 時,其具體流程與情況3 唯一的不同是新父密鑰為對稱密鑰,innerwrap所需的encryptionKeyin和outerwrap所需的Seed只能在TD中產生,才能利用《TPM-Rev-2.0-Part-1-Architecture-01.38》中規(guī)定的RSA_OAEP或ECC_ECDH算法對encryptionKeyin和Seed進行保護交換.我們用標志位Migrate_object.publicArea_to_TD表示DA 要求TS將復制密鑰的publicArea傳遞給TD.具體流程如下.

(1)DA→TS:Sign(Kpri_DA,[||newParentHandle||newParentHandle→S||newParentHandle→AlgParameter||Migrate_object.publicArea_to_TD||||NDA||]),E(ks2,[||newParentHandle||newParentHandle→S||newParentHandle→AlgParameter||Migrate_object.publicArea_to_TD||||NDA1||

(2)TS→DA:E(ks2,[object.publicArea||||NDA1||]).

(3)DA→TD:E(ks1,[object.publicArea||||NDA1||]).

(4)TD→TS:CencryptionKeyout,Cseed.

(5)TS→TD:dupSensitive,outerHMAC,encRng.

(6)TD→TS:encRng.

(7)TS→DA:encRng.

下面,我們對上述每一步進行詳細解釋.具體如下.

· 步驟1:與情況3 基本相同的步驟一基本相同,不同的是在步驟一中,DA 發(fā)送給TS消息增加了標志位Migrate_object.publicArea_to_TD.

· 步驟2、步驟3:TS將復制密鑰的公鑰部分通過DA 傳給TD.

· 步驟4:由TD產生encryptionKeyin和Seed,用復制密鑰的公鑰加密得到CencryptionKeyin和CSeed并傳遞給TS.

· 步驟 5:與情況 3 的步驟 2 基本一致,TS調用TPM2_Duplicate(objectHandle,newParentHandle,encryptionKeyIn,symmetricAlg)進行密鑰復制,對復制密鑰實施innerwrap和outerwrap.由于encryptionKeyin和Seed已經在TD,因此發(fā)送給TD的數(shù)據(jù)就只有dupSensitive,outerHMAC和encRng.

· 步驟6:與情況3 的步驟3 一致.

· 步驟7:與情況3 的步驟4 一致.

情況 5:當fixedTPM=0,fixedParent=0,encryptedDuplication=1,newParentHandle!=TPM_RH_NULL,object handle→S=0,newParentHandle→S=1 時,其具體流程與情況3 一致,略.

情況 6:當fixedTPM=0,fixedParent=0,encryptedDuplication=1,newParentHandle!=TPM_RH_NULL,objecthandle→S=0,newParentHandle→S=0 時,其具體流程與前面所有的情況均不相同.本情況的復制密鑰和新父密鑰都是對稱密鑰,encryptionKeyin和Seed無論在TS或TD產生,都無法用《TPM-Rev-2.0-Part-1-Architecture-01.38》中規(guī)定的RSA_OAEP或ECC_ECDH算法進行保護交換.為了防止encryptionKeyin和Seed泄露,我們設計在DA的控制下用 DH 算法在TS和TD之間交換共享密鑰作為encryptionKeyin和Seed.因此,我們用標志位Pro_DH_encryptionKeyin_and_Seed表明此需求,且TS和TD雙方已選擇一共同的素數(shù)q以及q的一個原根a.具體流程如下.

(1)DA→TS:Sign(Kpri_DA,[||newParentHandle||newParentHandle→S||newParentHandle→AlgParameter||Pro_DH_encryptionKeyin_and_Seed||||NDA1||]),E(ks2,[||newParentHandle||newParentHandle→S||newParentHandle→AlgParameter||Pro_DH_encryptionKeyin_and_Seed||||NDA1||]).

(2)TS→DA:E(Ks2,[IDS||Ys||||NDA1||]).

(3)DA→TD:E(Ks1,[IDS||Ys||||NDA1||||Sign(pri_DA,[IDS||Ys||||NDA1||])]).

(4)TD→DA:E(Ks1,[IDD||YD||||NDA1||]).

(5)DA→TS:E(KS2,[IDD||YD||||NDA1||||Sign(pri_DA,[IDD||YD||||NDA1||])]).

(6)TS→TD:dupSensitive,outerHMAC,encRng.

(7)TD→TS:encRng.

(8)TS→DA:encRng.

下面,我們對上述每一步進行詳細解釋.具體如下.

· 步驟 1:與情況 3 的步驟一基本相同,不同的是 DA 發(fā)送給TS消息增加了標志位Pro_DH_encryptionKeyin_and_Seed.

以下步驟2~步驟5 就是防中間人攻擊的DH 算法.

· 步驟2:TS計算modq,其中,Xs是TS的任選素數(shù),Xs

· 步驟3:DA 對IDS||Ys進行簽名Sign(pri_DA,[IDS||YS]),并一起發(fā)送給TD.

· 步驟4:TD驗證DA 對TS的簽名Verify(pub_DA,Sign(pri_DA,[IDS||YS])),然后任選素數(shù)XD,且XD

· 步驟5:DA 對IDD||YD進行Sign(pri_DA,[IDD||YD]),并一起發(fā)送給TS,TS接收到YD后,計算:

· 步驟 6:與情況 3 的步驟 2 基本一致,TS調用TPM2_Duplicate(objectHandle,newParentHandle,encryptionKeyIn,symmetricAlg)進行密鑰復制,對復制密鑰實施innerwrap和outerwrap,K0既作為innerwrap的encryptionKeyin,又作為outerwrap的Seed.由于K0在TS和TD雙方都存在,因此發(fā)送給TD的數(shù)據(jù)就只有dupSensitive,outerHMAC和encRng.

· 步驟7:與情況3 的步驟3 一致.

· 步驟8:與情況3 的步驟4 一致.

情況 7:當fixedTPM=0,fixedParent=0,encryptedDuplication=0,newParentHandle!=TPM_RH_NULL,object handle→S=1,newParentHandle→S=1 時,與情況3 的流程基本一致,只是在步驟1 中不進行innerwrap,即沒有情況3 步驟1 中的步驟2)~步驟4),在步驟2 中也就不進行innerwrap密鑰encryptionKeyin的保護交換.具體流程如下.

(1)DA→TS:Sign(Kpri_DA,[||newParentHandle||newParentHandle→S||newParentHandle→AlgParameter||||NDA1||]),E(ks2,[||newParentHandle||newParentHandle→S||newParentHandle→AlgParameter||||NDA1||]).

(2)TS→TD:dupSensitive,outerHMAC,CSeed,encRng.

(3)TD→TS:encRng.

(4)TS→DA:encRng.

情況 8:當fixedTPM=0,fixedParent=0,encryptedDuplication=0,newParentHandle!=TPM_RH_NULL,object handle→S=1,newParentHandle→S=0 時,與情況4 基本一致.只是在步驟4 中只傳輸CSeed,這是因為本情況不進行innerwrap,也就不進行innerwrap密鑰encryptionKeyin的保護交換.具體流程如下.

(1)DA→TS:Sign(Kpri_DA,[||newParentHandle||newParentHandle→S||newParentHandle→AlgParameter||Migrate_object.publicArea_to_TD||||NDA1||]),E(ks2,[||newParentHandle||newParentHandle→S||newParentHandle→AlgParameter||Migrate_object.publicArea_to_TD||||NDA1||]).

(2)TS→DA:E(ks2,[object.publicArea||||NDA1||]).

(3)DA→TD:E(ks1,[object.publicArea||||NDA1||]).

(4)TD→TS:Cseed.

(5)TS→TD:dupSensitive,outerHMAC,encRng.

(6)TD→TS:encRng.

(7)TS→DA:encRng.

情況 9:當fixedTPM=0,fixedParent=0,encryptedDuplication=0,newParentHandle!=TPM_RH_NULL,object handle→S=0,newParentHandle→S=1 時,與情況7 一致,略.

情況 10:當fixedTPM=0,fixedParent=0,encryptedDuplication=0,newParentHandle!=TPM_RH_NULL,object handle→S=0,newParentHandle→S=0 時,與情況6 基本相同,都面對的是復制密鑰和新父密鑰是對稱密鑰的情況.不同的是,本情況不需進行innerwrap.因此在步驟1 中,原請求TS產生innerwarp密鑰和outerwrap密鑰種子的標志Pro_DH_encryptionKeyin_and_Seed變?yōu)榱酥划a生outerwrap密鑰種子的標志Pro_DH_Seed,相應地,用DH算法使得TS和TD共享會話密鑰K0只作為Seed進行outerwarp.具體流程如下.

(1)DA→TS:Sign(Kpri_DA,[IDTD||newParentHandle||newParentHandle→S||newParentHandle→AlgParameter||||newParentHandle||newParentHandle→S||newParentHandl e→AlgParameter||Pro_DH_Seed||

(2)TS→DA:E(Ks2,[IDS||Ys||||NDA1||]).

(3)DA→TD:E(Ks1,[IDS||Ys||NDT||NDA1||||Sign(pri_DA,[IDS||Ys||

(4)TD→DA:E(Ks1,[IDD||YD||

(5)DA→TS:E(KS2,[IDD||YD||||Sign(pri_DA,[IDD||YD||

(6)TS→TD:dupSensitive,outerHMAC,encRng.

(7)TD→TS:encRng.

情況 11:當fixedTPM=0,fixedParent=0,encryptedDuplication=0,newParentHandle=TPM_RH_NULL,object handle→S=1,newParentHandle→S=?1 時.本情況面對的是復制密鑰是非對稱密鑰而新父密鑰是非層次結構的非密鑰對象,如密鑰種子、空授權對象等.顯然,這種情況密鑰在復制過程中既不進行innerwrap,也不進行outerwrap,復制密鑰將以明文在TD和TS之間傳輸,存在泄露的可能.為了防止泄露,在DA 的控制下,TD和TS通過DH 算法而共享會話密鑰,用該密鑰對復制密鑰加密.具體流程如下.

(1)DA→TS:Sign(Kpri_DA,[||newParentHandle||newParentHandle→S||newParentHandle→AlgParameter||Pro_DH_KEY||]),E(ks2,[||newParentHandle||newParentHandle→S||newParentHandl e→AlgParameter||Pro_DH_KEY||

(2)TS→DA:E(Ks2,[IDS||Ys||

(3)DA→TD:E(Ks1,[IDS||Ys||||Sign(pri_DA,[IDS||Ys||

(4)TD→DA:E(Ks1,[IDD||YD||

(5)DA→TS:E(KS2,[IDD||YD||||Sign(pri_DA,[IDD||YD||

(6)TS→TD:E(K0,object.sensitiveArea),E(K0,[

(7)TD→TS:E(K0,E(K0,[

下面,我們對上述每一步進行詳細解釋.具體如下.

· 步驟1:DA 向TS發(fā)出Pro_DH_KEY標志,要求TD和TS交換共享密鑰.

· 步驟2~步驟5:用防止中間人攻擊的DH 算法使得TS和TD共享密鑰K0.

· 步驟6:TS用K0加密復制密鑰和現(xiàn)時,然后傳遞給TD.

· 步驟7:TD驗證現(xiàn)時并回復TS,表明復制成功.

情況 12:當fixedTPM=0,fixedParent=0,encryptedDuplication=0,newParentHandle=TPM_RH_NULL,object handle→S=0,newParentHandle→S=?1 時,本情況與情況11 一致,略.

從以上分析可以看出,由于情況2 與情況1 一致、情況5 與情況3 一致、情況9 與情況7 一致、情況12與情況11 也一致,因此,原本12 種遷移流程實際為8 種.

4 協(xié)議分析

4.1 特點分析

(1) 一致性

在《TPM-Rev-2.0-Part-1-Architecture-01.38》中規(guī)定了密鑰復制的過程的基本要求,即如何根據(jù)復制密鑰的復制屬性(fixedTPM,fixedParent,encryptedDuplication)以及新父密鑰的密鑰句柄類型對復制密鑰進行innerwrap和outerwrap,也建議采用Duplication Authority 對復制過程進行控制、認證等,但并沒有給出具體的方案.本文提出的基于Duplication Authority 的TPM2.0 密鑰遷移協(xié)議方案不僅給出了具體的方案,而且和《TPM-Rev-2.0-Part-1-Architecture-01.38》中的要求完全一致.具有一致性.

(2) 完備性

本文考慮了(fixedTPM,fixedParent,encryptedDuplication,newParentHandle,objecthandle→S,newParent Handle→S)各種合法的組合,并設計了這些組合的密鑰遷移方案.在這些方案中,我們不僅考慮了Duplication Authority 的認證和控制方法,而且還考慮了innerwarp密鑰和outerwrap密鑰種子的保護交換方法,特別是當被復制密鑰和新父密鑰都是對稱密鑰時innerwarp密鑰和outerwrap密鑰種子的保護交換方法.另外,我們還考慮了密鑰復制過程中既不innerwarp又不outerwrap時密鑰遷移的安全問題,以及DA 根據(jù)objecthandle→S和newParentHandle→S的類型控制由源TPM 方或目的TPM 方產生innerwarp的加密密鑰和outerwrap所需要的密鑰種子.因此,本文的TPM2.0 密鑰遷移協(xié)議方案是完備的.

4.2 安全分析

本文提出的基于Duplication Authority 的TPM2.0 密鑰遷移協(xié)議方案具有認證性、機密性、抗中間人攻擊和抗重放攻擊,因而具有較高的安全性.下面我們對本文提出的方法進行安全性分析,具有以下4 個特點.

(1) 具有認證性

一方面,所有合法的TPM 均需用其EK 和名字ID 在Duplication Authority 注冊,這就確保了密鑰一定是在兩個具有合法身份的TPM 之間進行遷移,注冊過程保證了源TPM 與目標TPM 之間的認證性;另一方面,當被復制密鑰和新父密鑰都是對稱密鑰時,innerwarp密鑰和outerwrap密鑰種子的保護交換方法是具有認證功能、防止中間人攻擊的DH 算法.當新父密鑰是非層次結構的非密鑰對象,如密鑰種子、空授權對象等,我們也采用的是具有認證功能、防止中間人攻擊的DH 算法交換保護復制密鑰的共享密鑰.最后,outerwrap的消息認證碼outerHAMC也具有認證功能.因此,該協(xié)議通過各層次保證信息交互的各方均具有合法的身份,故具有認證性.

(2) 具有機密性

在初始化階段,各TPM 與DA 之間的信息交互都是用對稱密鑰ks加密,因此,如果信息被截取,攻擊者會由于沒有對稱秘密密鑰ks而無法獲得信息的具體內容,因此確保了各TPM 與DA 之間的機密性;在認證和屬性獲取階段,DA,TS和TD之間的信息交換也用對稱密鑰ks1和ks2加密,因此,如果信息被截取,攻擊者會由于沒有對稱秘密密鑰ks1和ks2而無法獲得信息的具體內容,因此確保了DA,TS和TD之間的機密性;而在控制和執(zhí)行階段,DA,TS和TD之間的信息交換也用對稱密鑰ks1和ks2加密,因此,如果信息被截取,攻擊者會由于沒有對稱秘密密鑰ks1和ks2而無法獲得信息的具體內容,因此確保了DA,TS和TD之間的機密性.由此可見,無論是在初始化階段、認證和屬性控制階段還是控制和執(zhí)行階段,都保證了交互信息的密文傳送,因而具有機密性.

(3) 具有抗中間人攻擊

中間人攻擊是一種通過修改或者偽裝發(fā)送消息而達到攻擊目的的手段.首先,在初始化階段,各TPM 與DA之間的信息交互采用的是DA 證書對會話密鑰進行加密,只有擁有證書的私鑰才能解密會話密鑰,即只有DA 才能解密會話密鑰,因此,即使敵手獲得了該消息,由于它無法解密該消息,因此無法偽裝和修改該消息進行中間人攻擊;在認證和屬性獲取階段,DA 和TS,TD之間的信息交換采用的是DA 的證書對會話密鑰進行加密,只有擁有證書的私鑰才能解密會話密鑰,即只有DA 才能解密會話密鑰,因此,即使敵手獲得了該消息,由于它無法解密該消息,因此無法偽裝和修改該消息進行中間人攻擊;在控制與執(zhí)行階段,DA 和TS,TD之間的信息交換仍采用的是DA 證書對會話密鑰進行加密,只有擁有證書的私鑰才能解密會話密鑰,即只有DA 才能解密會話密鑰,因此,即使敵手獲得了該消息,由于它無法解密該消息,因此無法偽裝和修改該消息進行中間人攻擊;而TS和TD之間的密鑰交換,我們采用的是抗中間人攻擊的DH 算法,即采用DA 的證書對交互的信息進行簽名,證書具有身份認證功能,中間人無法偽造.因此,具有抗中間人攻擊.

(4) 具有抗重放攻擊

首先,在初始化階段,各TPM 與DA 之間的信息交互采用了現(xiàn)時Ntpm和NDA,所以各TPM 與DA 可以通過Ntpm和NDA0來確保不是重放消息;在認證和屬性獲取階段,DA 和TS,TD之間的信息交換采用了現(xiàn)時,NDA1和DA 和TS,TD可以通過來確保不是重放消息;在控制與執(zhí)行階段,DA 和TS,TD之間的信息交換仍然采用了同一現(xiàn)時,DA 和TS,TD之間以及TS和TD均可以通過來確保不是重放消息.因此,具有抗重放攻擊.

值得注意的是,本協(xié)議中的DA 具有重要作用.在初始化階段,源和目的TPM 的身份信息均注冊到DA;在認證和屬性獲取階段,DA 會獲得復制密鑰和新父密鑰的相關屬性;在控制和執(zhí)行階段,DA 需要根據(jù)復制密鑰和新父密鑰的相關屬性控制復制流程.因此,DA 是整個協(xié)議的控制中心,不僅需要保護好所有注冊TPM 的身份信息,而且還要保證自身不受攻擊.一旦DA 遭受攻擊,攻擊者不僅可以竊取注冊到DA 中的TPM 身份信息,而且還能控制復制流程;攻擊者不僅可以獲得復制密鑰,而且可以將自己控制的密鑰復制到目標TPM 中.這不僅嚴重威脅到用戶的隱私,而且還會造成TPM 密鑰的泄露和加密數(shù)據(jù)的失竊.因此,本文的DA 必須是一個可信第三方,對其安全要求必須和PKI 中的CA 一樣.

4.3 對比分析

實際上,TPM1.2 規(guī)范在《TPM-main-1.2-Rev94-part-3》中有關于Migration 部分,并已定義了與密鑰遷移相關的接口,包括TPM_CMK_ApproveMA(),TPM_CMK_CreateKey(),TPM_CMK_CreateTicket(),TPM_CMK_CreateBlob()和TPM_CMK_ConvertMigration()等.通過這些接口設計密鑰遷移協(xié)議時,也需要TPM 的所有者指定一個可信的第三方(migration authority,簡稱MA)參與,在這一點上與本文的Duplication Authority 有些相似.為了清楚說明它們之間的異同,我們用TPM1.2 密鑰遷移接口簡要設計一個密鑰遷移流程框架,忽略細節(jié)部分.

為了表述方便,首先假定一個場景:密鑰Kmigration需要從源平臺Psrc遷移到平臺Pdes,在Psrc 端保護Kmigration的父密鑰是Kparent,而Pdes端選定的將要保護Kmigration的父密鑰是Kstorage.因此,Kparent和Kstorage必須都是存儲密鑰.在此假定的場景下,首先需要TPM 的所有者用接口TPM_CMK_ApproveMA()授權一個可信的第三方(migration authority,簡稱MA),并由MA 通過接口TPM_CMK_CreateTicket()來指定遷移目標Pdes并對遷移目標Pdes進行認證.具體的協(xié)議流程如圖5 所示.

在圖5 中,第1 步是Psrc調用TPM_CMK_ApproveMA()授權一個可信的第三方MA;第2 步和第3 步是MA調用TPM_CMK_CreateTicket()來指定遷移目標Pdes,并對遷移目標Pdes進行認證;第4 步和第5 步是Psrc調用TPM_CMK_CreateKey()產生待遷移的密鑰Kmigration;第6 步是Psrc調用TPM_CMK_CreateBlob()生成遷移數(shù)據(jù)encData;第7 步是Psrc將encData傳遞給Pdes;第8 步是Pdes調用TPM_CMK_ConvertMigration()對遷移數(shù)據(jù)進行轉換.至此,Pdes就可以用Kstorage為父密鑰加載Kmigration.

顯然,圖5 與本文第3 節(jié)提出的協(xié)議是有區(qū)別的.下面,我們在安全性、復雜性、可信第三方的作用等方面對這兩個協(xié)議進行比較.具體如下.

(1) 在安全性方面,無論是利用TPM1.2 的遷移接口設計的遷移協(xié)議還是本文利用TPM2.0 密鑰復制接口設計的遷移協(xié)議,均能具有認證性、機密性、抗中間人攻擊和抗重放攻擊等特點.因此,只要通過精心設計,這兩個協(xié)議均能達到同等的安全.

(2) 在復雜性方面,顯然,本文的協(xié)議要比利用TPM1.2 的遷移接口設計的遷移協(xié)議復雜得多.這是因為TPM2.0 與密鑰相關的功能均擴大了,密鑰類型不僅支持非對稱密鑰,而且還支持對稱密鑰;密碼算法不僅支持RSA,而且還支持ECC.在設計密鑰遷移協(xié)議時,除了需要考慮遷移密鑰和目標密鑰的復制屬性以外,還需要考慮遷移密鑰、目標密鑰是對稱密鑰還是非對稱密鑰的情況,因此,涉及的遷移情況多、控制遷移流程復雜.

(3) 在可信第三方方面,無論是TPM1.2 中的密鑰遷移還是本文設計的密鑰復制,均需要可信第三方.利用TPM1.2 的遷移接口設計的遷移協(xié)議需要可信第三方MA,本文協(xié)議中涉及到可信第三方是DA.但DA 遠比MA 復雜:MA 只需指定遷移目標并對遷移目標進行認證;而DA 不僅需要管理各TPM 的身份信息,而且還要根據(jù)遷移密鑰、目標密鑰的復制屬性確定和控制遷移流程.

5 實驗驗證與性能對比分析

本節(jié)將對第3 節(jié)提出的密鑰遷移協(xié)議進行驗證,并與TPM1.2 的密鑰遷移協(xié)議進行性能對比分析.

5.1 實驗驗證

要將遷移密鑰遷移到新父密鑰下,首先,源TPM 和目標TPM 應在DA 中注冊;然后,目標TPM 向DA 發(fā)起遷移請求,DA 對源TPM 和目標TPM 進行認證,并分別獲得新父密鑰的類型和句柄類型以及遷移密鑰的復制屬性(fixedTPM,fixedParent,encryptedDuplication);最后,DA 根據(jù)收集到的所有屬性,判斷此流程屬于12 種流程中的哪一種流程,并控制復制流程,即可完成遷移.

5.1.1 實驗環(huán)境

目前,市面上已出現(xiàn)TPM2.0 芯片,經過深入的咨詢我們發(fā)現(xiàn),在國內使用TPM2.0 芯片受到一定的限制.因此,這里我們使用微軟的TPM2.0 模擬器以及TSS.net 進行實驗.本實驗共使用2 臺計算機,其中一臺既做target TPM 又充當DA,剩下一臺充當source TPM.這里我們用OpenSSL 的CA 機關模擬DA,作為注冊和控制中心.具體環(huán)境配置見表5,其中,target TPM 與DA 所在主機的配置完全一致.

Table 5 Experimental environment related configuration表5 實驗環(huán)境相關配置

以情況3 為例,具體實驗流程原型如圖6 所示,其中,S,DA,D分別表示源TPM、復制權威和目的TPM.主要分為初始化、認證和屬性獲取以及控制遷移這3 個階段.

Fig.6 Experimental whole process prototype圖6 實驗流程原型

5.1.2 實驗結果

實驗主要基于openssl 和Microsoft 的TPM2.0 simulator 實現(xiàn).

1.初始化階段的執(zhí)行過程.

初始化過程主要完成源TPM 和目的TPM 向DA 注冊自己的信息.由于目的TPM 的初始化與源TPM 初始化過程完全相同,這里以目的TPM 的初始化為例.目的TPM 與DA 間的初始化階段流程如圖7、圖8 所示.

Fig.7 Targe TPM initialization process圖7 目的TPM 初始化階段流程

Fig.8 DA initialization process圖8 DA 初始化階段流程

2.認證和屬性獲取階段.

認證和屬性獲取過程主要完成源TPM 和目的TPM 間的認證以及向DA 發(fā)送新父密鑰和復制密鑰的相關屬性等.源TPM、目的TPM、DA 的認證和屬性獲取階段流程如圖9~圖11 所示.

Fig.9 Source TPM authentication and attribute acquisition process圖9 源TPM 認證和屬性獲取階段流程

Fig.10 Targe TPM authentication and attribute acquisition process圖10 目的TPM 認證和屬性獲取階段流程

3.控制和執(zhí)行階段.

該階段共有12 種情況,由于情況1 和情況2 的實現(xiàn)過程基本相似,情況3 和情況4、情況5、情況7、情況8 的實現(xiàn)過程基本相似,情況6 和情況9 的實現(xiàn)過程基本相似,情況11 和情況12 的實現(xiàn)過程基本相似,為了減少篇幅,我們僅列出情況3 和情況6 的實驗結果.這里,我們基于微軟TPM2.0 模擬器提供的復制接口和導入接口來實現(xiàn).

情況3:WhenfixedTPM=0,fixedParent=0,encryptedDuplication=1,newParentHandle!=TPM_RH_NULL,object handle→S=1,newParentHandle→S=1.執(zhí)行過程如圖12~圖14 所示.

Fig.12 Case 3:Source TPM execution process圖12 情況3:源TPM 執(zhí)行流程

Fig.13 Case 3:Targe TPM execution process圖13 情況3:目的TPM 執(zhí)行流程

Fig.14 Case 3:DA execution process圖14 情況3:DA 執(zhí)行流程

情況6:fixedTPM=0,fixedParent=0,encryptedDuplication=1,newParentHandle!=TPM_RH_NULL,objecthandle→S=0,newParentHandle→S=0.執(zhí)行過程如圖15~圖17 所示.

Fig.15 Case 6:Source TPM execution process圖15 情況6:源TPM 執(zhí)行流程

Fig.16 Case 6:Targe TPM execution process圖16 情況6:目的TPM 執(zhí)行流程

Fig.17 Case 6:DA execution process圖17 情況6:DA 執(zhí)行流程

5.2 性能分析

5.2.1 本協(xié)議的性能分析

1.初始化階段的執(zhí)行時間見表6.

Table 6 Initialization execution time表6 初始化階段執(zhí)行時間

2.認證和屬性獲取階段的執(zhí)行時間見表7.

Table 7 Authentication and attribute acquisition phase execution time表7 認證和屬性獲取階段執(zhí)行時間

3.控制和執(zhí)行階段的執(zhí)行時間.

由于情況1 和情況2 的實驗過程相同,情況3 和情況5 的實驗過程相同,情況7 和情況9 的實驗過程相同,情況11 和情況12 的實驗過程相同,我們將實驗過程相同的情況的執(zhí)行時間視為一致.各情況的執(zhí)行時間如下表8 所示,其時間性能如圖18 所示.

Table 8 Initialization execution time (s)表8 初始化階段執(zhí)行時間 (s)

Fig.18 Execution time for each situation in the control and execution phases圖18 控制和執(zhí)行階段各情況執(zhí)行時間

從圖18 可以看出,情況4 的執(zhí)行時間最長.這是因為情況4 既執(zhí)行了innerwrap又執(zhí)行了outerwrap,同時,由于innerwrap和outerwrap的加密密鑰和密鑰種子在目的TPM 方產生,在保護傳輸過程中增加了TS與DA,TS與TD之間的交互.情況3/5 與情況4 唯一的不同就是innerwrap和outerwrap的加密密鑰和密鑰種子在源TPM方產生,因此執(zhí)行時間也就稍少于情況4.而情況6 中的加密密鑰和密鑰種子是同一個,所以執(zhí)行時間應少于情況3/5.情況7~情況10 由于未進行outerwrap因此執(zhí)行時間應少于情況6.由于情況11/12 既不進行innerwrap也不進行outerwrap因此執(zhí)行時間少于情況10.而情況1/2 基本不能進行密鑰復制遷移操作,因此時間是最短的.

5.2.2 與TPM1.2 密鑰遷移的性能對比分析

本節(jié)主要將本協(xié)議的性能與TPM1.2 密鑰遷移性能進行對比分析.由于TPM1.2 不支持對稱密鑰,且本文協(xié)議的情況較多,為此,我們僅在如下場景下進行對比分析.

具體場景:非對稱密鑰Kmigration需要從源平臺Psrc遷移到平臺Pdes,在Psrc端保護Kmigration的父密鑰是Kparent,而Pdes端選定的將要保護Kmigration的父密鑰是非對稱密鑰是Kstorage.

對于TPM1.2,要求Kmigration是可認證遷移密鑰CMK(certifiable-migration key).本實驗需要兩臺機器,這兩臺機器的硬件配置與表5 相同,不同的是軟件環(huán)境,這兩臺機器的OS 是Ubuntu 16.04,TPM 模擬器為TPM_emulator_0.7.4 模擬器,TSS.net 的版本為TSS.MSR-master.Source TPM 與MA 在同一臺機器,授權口令以默認的方式在內部產生.這里,我們選用耗時最長的TPM_MS_RESTRICT_APPROVE_DOUBLE遷移模式.對于TPM2.0,此場景對應著第3.3 節(jié)中的情況3,具體的時間開銷見表9.

Table 9 TPM1.2 execution time (s)表9 TPM1.2 執(zhí)行時間 (s)

可以看出,本文協(xié)議的時間開銷要比TPM1.2 的大一些.我們認為,主要原因包括兩個方面.

(1) 在情況3 中,源TPM 既執(zhí)行了innerwrap,又執(zhí)行了outerwrap,其復雜性比TPM1.2 大.

(2) DA 通過與源TPM 與目的TPM 交互,獲得遷移密鑰與新父密鑰的屬性并控制協(xié)議流程,其時間開銷

要比MA 僅僅是對目標密鑰(新父密鑰)進行認證的時間開銷大.性能對比如圖19 所示.

Fig.19 Performance comparison圖19 性能對比

6 相關工作

在TPM 密鑰遷移方面,到現(xiàn)在為止取得了較多研究成果.TCG 組織一直是這一工作積極的主導者和推動者,TCG 最初在 TPM1.1 規(guī)范的密鑰遷移模塊中提供了TPM_AuthorizeMigratinKey(),TPM_Create MigrationBlob()和TPM_ConvertMigrationBlob()等3 個API 接口用于遷移密鑰.TPM1.1 的密鑰遷移模塊優(yōu)點是簡單,但弱點是遷移源和目標之間缺少認證,敵手很容易冒充目標TPM 而獲得遷移密鑰的敏感信息.TPM1.2 對遷移模塊作了重大改進,引進了認證遷移概念.在認證遷移下,用戶可以指定可信第三方遷移權威(migration authority,簡稱MA),并保證如果沒有MA 的允許,不可以把密鑰遷移到特定的平臺.TPM1.2 關于認證遷移密鑰(certifiable-migration key,簡稱 CMK)的 API 包括TPM_AuthorizeMigratinKey(),TPM_CMK_ApproveMA(),TPM_CMK_CreateKey(),TPM_CMK_CreateTicket(),TPM_CMK_CreateBlob()和TPM_CMK_ConvertMigration()等.TPM1.2 的密鑰遷移模塊優(yōu)點是安全,缺點是復雜,每次遷移均需要可信第三方MA 參與,效率低.TPM2.0 取消了TPM1.2 的密鑰遷移接口,并使用新的遷移接口,即TPM2_Duplicate()和TPM2_Import().由于TPM2.0 改變了密鑰屬性的表示方式,一個密鑰對象是否可以被復制,由fixedTPM和fixedParent兩個屬性組合來決定,當(fixedTPM=0,fixedParent=0)時,該密鑰對象可以被復制實現(xiàn)遷移;當(fixedTPM=0,fixedParent=1),該密鑰對象可以跟隨父密鑰一起被復制實現(xiàn)遷移.TPM2.0 使用TPM2_Duplicate()進行密鑰復制時,需要對被復制密鑰進行innerwrap或outerwrap或既進行innerwrap又進行outerwrap,來保證被復制密鑰的機密性、完整性以及認證性.TPM2.0 的密鑰遷移模塊優(yōu)點是簡單、高效、靈活而且基本安全,可不需要可信第三方參與;但缺點是容易出現(xiàn)配置錯誤,導致不安全.

在TPM1.1 和TPM1.2 密鑰遷移機制的分析方面,文獻[9]用一階邏輯語言建立TPM API 的形式化模型,并對TPMAPI 進行了全面的邏輯推理分析,其中,對密鑰遷移API 的分析指出,TPM1.1 的弱點在于遷移目標由源TPM 的owner 指定,目標TPM 并不參與遷移,目標TPM 在接收可遷移密鑰時,可遷移密鑰有可能已經泄漏,因此具有較大的安全隱患.文獻[10]應用π演算對TPM 進行形式化建模,并使用自動定理證明工具ProVerif 驗證其安全屬性.作者分析了TPM CMK(certifiable migratable key)的TPM_MS_RESTRICT_MIGRATE遷移模式,分析結果表明:若作為第三方的遷移權威(migration authority,簡稱MA)用軟件處理遷移數(shù)據(jù),則敵手能獲得被遷移密鑰的私鑰.作者建議TPM 規(guī)范強制要求MA 使用TPM 代替軟件處理遷移數(shù)據(jù).文獻[11]對TPM 可遷移密鑰的安全性進行了分析,指出,TPM 提供密鑰遷移機制的同時,降低了可遷移密鑰的安全保護強度,敵手能夠利用TPM 的密鑰遷移類接口和密鑰加載接口破壞TPM 可遷移密鑰的安全性.

在TPM2.0 密鑰遷移機制的分析方面,文獻[12]建立了TPM2.0 保護存儲API 的抽象模型,并利用類型系統(tǒng)證明了TPM2.0 保護存儲的安全性.證明結果表明,TPM2.0 保護存儲中的密鑰復制類接口是安全的.文獻[13]對TPM2.0 密鑰管理API 的安全性進行了形式化分析,證明了密鑰存儲和使用類接口能夠保證TPM 不可遷移密鑰的安全性,并發(fā)現(xiàn)了針對密鑰復制類接口的兩種攻擊.作者提出了該類接口的改進方案,并證明了利用改進的接口實施密鑰復制能夠保證被復制密鑰的安全性.文獻[14]分析了TPM2.0 密鑰復制相關流程,對于其中存在的密鑰隱私泄露問題進行了改進.在用戶不安全復制傳輸情形下,從TPM 管理者的角度出發(fā),提出了一套基于TPM自身的加密傳輸協(xié)議.通過利用TPM 自身產生安全密鑰,對未受保護的用戶敏感數(shù)據(jù)進行加密,并通過簽名的方式保障傳輸?shù)目煽啃?

另外,對于我國TCM 芯片,文獻[15]指出,由該芯片的密鑰遷移模塊實現(xiàn)的密鑰遷移協(xié)議存在兩個問題.

· 對稱密鑰不能作為被遷移密鑰的新父密鑰,違背了TCM 的初始設計思想;

· 缺少交互雙方TCM 的相互認證,導致源TCM 的被遷移密鑰可以被外部敵手獲得,并且敵手可以將其控制的密鑰遷移到目標TCM 中.

針對上述問題,作者提出兩個新的密鑰遷移協(xié)議.

· 協(xié)議1 遵循TCM 目前的接口規(guī)范,以目標TCM 的PEK(platform encryption key)作為遷移保護密鑰,能夠認證目標TCM,并允許對稱密鑰作為新父密鑰.

· 協(xié)議2 簡單改動了TCM 接口,源TCM 和目標TCM 進行SM2 密鑰協(xié)商,得到的會話密鑰作為遷移保護密鑰,解決了上述兩個問題,并且獲得了前向安全屬性.

最后,使用形式化分析方法對上述協(xié)議進行安全性分析,結果顯示,協(xié)議滿足正確性和預期的安全屬性.

7 結束語

本文分析了《TPM-Rev-2.0-Part-1-Architecture-01.38》國際標準,并總結出使用該標準中的密鑰復制接口來實施密鑰遷移存在的3 個問題.

· 其一是缺少交互雙方TPM 的相互認證,會導致密鑰能夠在敵手和TPM 間遷移;

· 其二是當遷移密鑰的屬性encryptedDuplication=0 且新父密鑰的句柄newParentHandle=TPM_RH_NULL時,復制接口不能實施innerwrap和outerwrap,遷移密鑰將以明文傳輸而造成泄露;

· 其三是當新父密鑰是對稱密鑰時,innerwrap中的對稱加密密鑰以及outerwrap中的密鑰種子如何在源TPM 與目標TPM 之間安全交換,《TPM-Rev-2.0-Part-1-Architecture-01.38》并沒有給出具體的解決辦法.

針對這些問題,提出了基于Duplication Authority 的密鑰遷移協(xié)議.該協(xié)議以Duplication Authority 為認證和控制中心,將密鑰遷移過程分為初始化階段、認證和屬性獲取階段以及控制和執(zhí)行階段.Duplication Authority通過判定密鑰的復制屬性和類型、新父密鑰的密鑰類型和句柄類型來決定遷移流程.我們考慮了各種合規(guī)的屬性組合,共設計了12 種遷移流程.最后,對該協(xié)議進行了安全分析和模擬實驗驗證,結果顯示,該協(xié)議不僅完全滿足《TPM-Rev-2.0-Part-1-Architecture-01.38》規(guī)范,而且滿足完整性、機密性和認證性.

猜你喜歡
解密密鑰加密
幻中邂逅之金色密鑰
幻中邂逅之金色密鑰
炫詞解密
解密“一包三改”
密碼系統(tǒng)中密鑰的狀態(tài)與保護*
保護數(shù)據(jù)按需創(chuàng)建多種加密磁盤
電力安全防護加密裝置
炫詞解密
炫詞解密
Android密鑰庫簡析