亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

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

        2019-10-28 11:21:34,
        軟件學(xué)報(bào) 2019年8期
        關(guān)鍵詞:解密密鑰加密

        譚 良 , 宋 敏

        1(四川師范大學(xué) 計(jì)算機(jī)科學(xué)學(xué)院,四川 成都 610101)

        2(中國(guó)科學(xué)院 計(jì)算技術(shù)研究所,北京 100190)

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

        密鑰管理是TPM 非常重要的功能,它是TPM 能夠有效地提供其他各項(xiàng)功能的前提和基礎(chǔ).為了滿足密鑰的安全存儲(chǔ)、分發(fā)和備份,TPM 采用層次型的存儲(chǔ)保護(hù)體系,并提供密鑰遷移(復(fù)制)接口.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ī)范定義的密鑰復(fù)制接口是TPM2_Duplicate()和TPM2_Import().通常,用戶或上層應(yīng)用可以通過以上接口設(shè)計(jì)密鑰遷移協(xié)議,將源TPM 中的密鑰遷移到目的TPM 中,以實(shí)現(xiàn)TPM 芯片間密鑰的共享.為了保證整個(gè)遷移過程的安全,需要提供機(jī)密性、完整性和認(rèn)證性.

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

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

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

        1 背景知識(shí)

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

        1.1 TPM2.0的密鑰類型和結(jié)構(gòu)

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

        1.1.1 TPM2.0 的密鑰類型

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

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

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

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

        · Decrypt Attribute:機(jī)密屬性,表明該對(duì)象是否可以用于加解密.

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

        這8 類密鑰與TPM1.2 中7 種類型密鑰(簽注密鑰(endorsement key,簡(jiǎn)稱EK)、存儲(chǔ)密鑰(storage key,簡(jiǎn)稱SK)、身份認(rèn)證密鑰(attestation identity key,簡(jiǎn)稱AIK)、簽名密鑰(signing key)、綁定密鑰(binding key)、繼承密鑰(legacy key)和驗(yàn)證密鑰(authentication keys))的對(duì)應(yīng)關(guān)系見表2.

        Table 2 Key type correspondence between TPM1.2 and TPM2.0表2 TPM1.2 與TPM2.0 的密鑰類型對(duì)應(yīng)關(guān)系

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

        2.按照密鑰復(fù)制屬性分類

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

        Table 3 Key classification for duplication表3 密鑰可復(fù)制分類表

        1.1.2 TPM2.0 的密鑰結(jié)構(gòu)

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

        ·PublicArea

        1)type:密鑰類型.

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

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

        4)authPolicy:授權(quán)策略.

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

        6)unique:非對(duì)稱密鑰此項(xiàng)代表公鑰;對(duì)稱密鑰此項(xiàng)代表其SensitiveArea的摘要值.

        ·SensitiveArea

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

        2)authValue:授權(quán)值.

        3)seedValue:對(duì)于對(duì)稱的和非對(duì)稱的存儲(chǔ)密鑰,由該值產(chǎn)生保護(hù)child 對(duì)象的密鑰.對(duì)于非對(duì)稱密鑰的非存儲(chǔ)密鑰當(dāng)前無用.對(duì)于其他對(duì)象,該值與sensitive一起HASH 產(chǎn)生unique摘要值.

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

        ·PrivateArea

        1)encyptedsensitivearea:此密文是由父密鑰的seedValue產(chǎn)生的key對(duì)sensitivearea加密的值.

        2) HMAC 消息碼:此消息碼是由父密鑰的seedValue產(chǎn)生的key對(duì)sensitivearea進(jìn)行HMAC 的值.

        1.2 TPM2.0密鑰對(duì)象管理存儲(chǔ)保護(hù)體系

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

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

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

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

        1.3 TPM2.0密鑰對(duì)象復(fù)制接口

        TPM2.0 完整的密鑰復(fù)制流程是將源TPM 的密鑰對(duì)象復(fù)制到目標(biāo)TPM,因此,密鑰復(fù)制應(yīng)該包括兩個(gè)接口:

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

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

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

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

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

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

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

        ? 如果設(shè)置為1,則判斷newParentHandle是否為TPM_RH_NULL:如果為TPM_RH_NULL,則結(jié)束復(fù)制過程;否則,轉(zhuǎn)到步驟(3);

        ? 如果設(shè)置為0,則轉(zhuǎn)到步驟(4).

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

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

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

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

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

        (1) 檢查復(fù)制密鑰的屬性fixedTPM和fixedParent:如果設(shè)置不是(0,0),就結(jié)束導(dǎo)入過程.

        (2) 檢查新父密鑰是否為存儲(chǔ)密鑰:如不是,結(jié)束導(dǎo)入過程.

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

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

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

        (6) 用encryptionKey對(duì)encsensitive進(jìn)行解密,得到被復(fù)制密鑰的sensitive;并對(duì)sensitive及其name進(jìn)行完整性校驗(yàn).

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

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

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

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

        1.4 innerwrap和outerwrap過程

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

        1.4.1innerwrap過程

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

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

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

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

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

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

        1.4.2 outerwrap 過程

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

        outerwrap可以在復(fù)制過程中為遷移密鑰提供機(jī)密性、完整性以及對(duì)新父密鑰的認(rèn)證性,包括兩個(gè)步驟.

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

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

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

        2 問題分析

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

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

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

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

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

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

        2.OS:

        (1) 獲得objectHandle,newparentHandle.

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

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

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

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

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

        ? 如果設(shè)置為1,則判斷newParentHandle是否為TPM_RH_NULL:如果為TPM_RH_NULL,則結(jié)束復(fù)制過程,轉(zhuǎn)到步驟10;否則轉(zhuǎn)到步驟3 中的(3);

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

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

        (4) 對(duì)encrptionKeyIn進(jìn)行保護(hù),分為兩種情況:

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

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

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

        (6) 對(duì)Seed進(jìn)行保護(hù),分兩種情況:

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

        ? 如果新父密鑰是對(duì)稱密鑰,則直接sysmetricSeed=Seed.結(jié)束復(fù)制過程,轉(zhuǎn)到步驟4.

        (7) 對(duì)復(fù)制密鑰既不進(jìn)行innerwrap,也不進(jìn)行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í)行導(dǎo)入過程:

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

        (2) 檢查新父密鑰是否為存儲(chǔ)密鑰:如不是,結(jié)束導(dǎo)入過程,轉(zhuǎn)到步驟10.

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

        ? 如果為NULL,則轉(zhuǎn)到下一步;

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

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

        ? 如果為NULL,則轉(zhuǎn)到步驟10;

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

        10. 結(jié)束遷移過程.

        2.2 存在問題

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

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

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

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

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

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

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

        3.1 初始化階段

        初始化階段的主要任務(wù)是源和目的TPM 到Duplication Authority 注冊(cè)并對(duì)TPM 進(jìn)行認(rèn)證,流程如圖3 所示.我們用DA 代表Duplication Authority,(Kpub_DA,Kpri_DA)是Duplication Authority 的一對(duì)非對(duì)稱密鑰,CertDA表示該公鑰的證書.注冊(cè)過程是TPM 將自己的身份標(biāo)識(shí)(IDTPM)注冊(cè)到DA 的數(shù)據(jù)庫中,E(?)為加密函數(shù),Sign(?)為簽名函數(shù),Verify(?)為驗(yàn)證函數(shù),RA為注冊(cè)標(biāo)志位,CertEK為TPM 的背書證書,Ntpm為TPM 產(chǎn)生的隨機(jī)數(shù),NDA0為DA產(chǎn)生的隨機(jī)數(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 初始化階段

        下面我們對(duì)上述每一步進(jìn)行詳細(xì)解釋,具體如下.

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

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

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

        3.2 認(rèn)證和屬性獲取階段

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

        Fig.4 Authentication and attribute acquisition process圖4 認(rèn)證和屬性獲取階段

        下面,我們對(duì)上述每一步進(jìn)行詳細(xì)解釋.具體如下.

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

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

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

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

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

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

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

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

        情況1:當(dāng)fixedTPM!=0 或fixedParent!=0 時(shí),具體流程如下.

        下面,我們對(duì)上述每一步進(jìn)行詳細(xì)解釋.具體如下.

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

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

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

        情況2:當(dāng)fixedTPM=0,fixedParent=0,encryptedDuplication=1,newParentHandle=TPM_RH_NULL時(shí),具體流程如下.

        下面,我們對(duì)上述每一步進(jìn)行詳細(xì)解釋.具體如下.

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

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

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

        情況 3:當(dāng)fixedTPM=0,fixedParent=0,encryptedDuplication=1,newParentHandle!=TPM_RH_NULL,object thandle→S=1,newParentHandle→S=1 時(shí),具體流程如下.

        (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.

        下面,我們對(duì)上述每一步進(jìn)行詳細(xì)解釋.具體如下.

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

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

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

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

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

        5) 產(chǎn)生outerwrap需要的密鑰種子seed.

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

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

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

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

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

        以上過程實(shí)際上是調(diào)用TPM2_Duplicate(objectHandle,newParentHandle,encryptionKeyIn,symmetricAlg)進(jìn)行密鑰復(fù)制,對(duì)復(fù)制密鑰實(shí)施innerwrap和outerwrap.

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

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

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

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

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

        以上過程實(shí)際上是調(diào)用TPM2_Import(newparentHandle,CencryptionKeyout,dupSenstive,CSeed)進(jìn)行復(fù)制密鑰導(dǎo)入.

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

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

        情況 4:當(dāng)fixedTPM=0,fixedParent=0,encryptedDuplication=1,newParentHandle!=TPM_RH_NULL,object handle→S=1,newParentHandle→S=0 時(shí),其具體流程與情況3 唯一的不同是新父密鑰為對(duì)稱密鑰,innerwrap所需的encryptionKeyin和outerwrap所需的Seed只能在TD中產(chǎn)生,才能利用《TPM-Rev-2.0-Part-1-Architecture-01.38》中規(guī)定的RSA_OAEP或ECC_ECDH算法對(duì)encryptionKeyin和Seed進(jìn)行保護(hù)交換.我們用標(biāo)志位Migrate_object.publicArea_to_TD表示DA 要求TS將復(fù)制密鑰的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.

        下面,我們對(duì)上述每一步進(jìn)行詳細(xì)解釋.具體如下.

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

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

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

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

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

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

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

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

        下面,我們對(duì)上述每一步進(jìn)行詳細(xì)解釋.具體如下.

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

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

        · 步驟2:TS計(jì)算modq,其中,Xs是TS的任選素?cái)?shù),Xs

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

        · 步驟4:TD驗(yàn)證DA 對(duì)TS的簽名Verify(pub_DA,Sign(pri_DA,[IDS||YS])),然后任選素?cái)?shù)XD,且XD

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

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

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

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

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

        (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:當(dāng)fixedTPM=0,fixedParent=0,encryptedDuplication=0,newParentHandle!=TPM_RH_NULL,object handle→S=1,newParentHandle→S=0 時(shí),與情況4 基本一致.只是在步驟4 中只傳輸CSeed,這是因?yàn)楸厩闆r不進(jìn)行innerwrap,也就不進(jìn)行innerwrap密鑰encryptionKeyin的保護(hù)交換.具體流程如下.

        (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:當(dāng)fixedTPM=0,fixedParent=0,encryptedDuplication=0,newParentHandle!=TPM_RH_NULL,object handle→S=0,newParentHandle→S=1 時(shí),與情況7 一致,略.

        情況 10:當(dāng)fixedTPM=0,fixedParent=0,encryptedDuplication=0,newParentHandle!=TPM_RH_NULL,object handle→S=0,newParentHandle→S=0 時(shí),與情況6 基本相同,都面對(duì)的是復(fù)制密鑰和新父密鑰是對(duì)稱密鑰的情況.不同的是,本情況不需進(jìn)行innerwrap.因此在步驟1 中,原請(qǐng)求TS產(chǎn)生innerwarp密鑰和outerwrap密鑰種子的標(biāo)志Pro_DH_encryptionKeyin_and_Seed變?yōu)榱酥划a(chǎn)生outerwrap密鑰種子的標(biāo)志Pro_DH_Seed,相應(yīng)地,用DH算法使得TS和TD共享會(huì)話密鑰K0只作為Seed進(jìn)行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:當(dāng)fixedTPM=0,fixedParent=0,encryptedDuplication=0,newParentHandle=TPM_RH_NULL,object handle→S=1,newParentHandle→S=?1 時(shí).本情況面對(duì)的是復(fù)制密鑰是非對(duì)稱密鑰而新父密鑰是非層次結(jié)構(gòu)的非密鑰對(duì)象,如密鑰種子、空授權(quán)對(duì)象等.顯然,這種情況密鑰在復(fù)制過程中既不進(jìn)行innerwrap,也不進(jìn)行outerwrap,復(fù)制密鑰將以明文在TD和TS之間傳輸,存在泄露的可能.為了防止泄露,在DA 的控制下,TD和TS通過DH 算法而共享會(huì)話密鑰,用該密鑰對(duì)復(fù)制密鑰加密.具體流程如下.

        (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,[

        下面,我們對(duì)上述每一步進(jìn)行詳細(xì)解釋.具體如下.

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

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

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

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

        情況 12:當(dāng)fixedTPM=0,fixedParent=0,encryptedDuplication=0,newParentHandle=TPM_RH_NULL,object handle→S=0,newParentHandle→S=?1 時(shí),本情況與情況11 一致,略.

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

        4 協(xié)議分析

        4.1 特點(diǎn)分析

        (1) 一致性

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

        (2) 完備性

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

        4.2 安全分析

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

        (1) 具有認(rèn)證性

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

        (2) 具有機(jī)密性

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

        (3) 具有抗中間人攻擊

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

        (4) 具有抗重放攻擊

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

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

        4.3 對(duì)比分析

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

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

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

        顯然,圖5 與本文第3 節(jié)提出的協(xié)議是有區(qū)別的.下面,我們?cè)诎踩?、?fù)雜性、可信第三方的作用等方面對(duì)這兩個(gè)協(xié)議進(jìn)行比較.具體如下.

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

        (2) 在復(fù)雜性方面,顯然,本文的協(xié)議要比利用TPM1.2 的遷移接口設(shè)計(jì)的遷移協(xié)議復(fù)雜得多.這是因?yàn)門PM2.0 與密鑰相關(guān)的功能均擴(kuò)大了,密鑰類型不僅支持非對(duì)稱密鑰,而且還支持對(duì)稱密鑰;密碼算法不僅支持RSA,而且還支持ECC.在設(shè)計(jì)密鑰遷移協(xié)議時(shí),除了需要考慮遷移密鑰和目標(biāo)密鑰的復(fù)制屬性以外,還需要考慮遷移密鑰、目標(biāo)密鑰是對(duì)稱密鑰還是非對(duì)稱密鑰的情況,因此,涉及的遷移情況多、控制遷移流程復(fù)雜.

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

        5 實(shí)驗(yàn)驗(yàn)證與性能對(duì)比分析

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

        5.1 實(shí)驗(yàn)驗(yàn)證

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

        5.1.1 實(shí)驗(yàn)環(huán)境

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

        Table 5 Experimental environment related configuration表5 實(shí)驗(yàn)環(huán)境相關(guān)配置

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

        Fig.6 Experimental whole process prototype圖6 實(shí)驗(yàn)流程原型

        5.1.2 實(shí)驗(yàn)結(jié)果

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

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

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

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

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

        2.認(rèn)證和屬性獲取階段.

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

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

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

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

        該階段共有12 種情況,由于情況1 和情況2 的實(shí)現(xiàn)過程基本相似,情況3 和情況4、情況5、情況7、情況8 的實(shí)現(xiàn)過程基本相似,情況6 和情況9 的實(shí)現(xiàn)過程基本相似,情況11 和情況12 的實(shí)現(xiàn)過程基本相似,為了減少篇幅,我們僅列出情況3 和情況6 的實(shí)驗(yàn)結(jié)果.這里,我們基于微軟TPM2.0 模擬器提供的復(fù)制接口和導(dǎo)入接口來實(shí)現(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í)行時(shí)間見表6.

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

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

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

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

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

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

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

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

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

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

        具體場(chǎng)景:非對(duì)稱密鑰Kmigration需要從源平臺(tái)Psrc遷移到平臺(tái)Pdes,在Psrc端保護(hù)Kmigration的父密鑰是Kparent,而Pdes端選定的將要保護(hù)Kmigration的父密鑰是非對(duì)稱密鑰是Kstorage.

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

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

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

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

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

        要比MA 僅僅是對(duì)目標(biāo)密鑰(新父密鑰)進(jìn)行認(rèn)證的時(shí)間開銷大.性能對(duì)比如圖19 所示.

        Fig.19 Performance comparison圖19 性能對(duì)比

        6 相關(guān)工作

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

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

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

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

        · 對(duì)稱密鑰不能作為被遷移密鑰的新父密鑰,違背了TCM 的初始設(shè)計(jì)思想;

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

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

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

        · 協(xié)議2 簡(jiǎn)單改動(dòng)了TCM 接口,源TCM 和目標(biāo)TCM 進(jìn)行SM2 密鑰協(xié)商,得到的會(huì)話密鑰作為遷移保護(hù)密鑰,解決了上述兩個(gè)問題,并且獲得了前向安全屬性.

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

        7 結(jié)束語

        本文分析了《TPM-Rev-2.0-Part-1-Architecture-01.38》國(guó)際標(biāo)準(zhǔn),并總結(jié)出使用該標(biāo)準(zhǔn)中的密鑰復(fù)制接口來實(shí)施密鑰遷移存在的3 個(gè)問題.

        · 其一是缺少交互雙方TPM 的相互認(rèn)證,會(huì)導(dǎo)致密鑰能夠在敵手和TPM 間遷移;

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

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

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

        猜你喜歡
        解密密鑰加密
        探索企業(yè)創(chuàng)新密鑰
        解密“熱脹冷縮”
        解密“一包三改”
        密碼系統(tǒng)中密鑰的狀態(tài)與保護(hù)*
        炫詞解密
        一種基于熵的混沌加密小波變換水印算法
        一種對(duì)稱密鑰的密鑰管理方法及系統(tǒng)
        基于ECC的智能家居密鑰管理機(jī)制的實(shí)現(xiàn)
        認(rèn)證加密的研究進(jìn)展
        基于ECC加密的電子商務(wù)系統(tǒng)
        久久综合加勒比东京热| 国产三区在线成人av| 人妻熟女中文字幕av| 中文字幕人妻少妇精品| av天堂亚洲另类色图在线播放| 情爱偷拍视频一区二区 | 亚洲国产av中文字幕| 麻豆人妻性色av专区0000| 国内精品久久久久影院优| 97久久精品亚洲中文字幕无码| 国产亚洲日韩欧美一区二区三区| 国产呦系列呦交| 国产一区二区视频在线看| 美女脱了内裤露出奶头的视频| 国语对白做受xxxxx在| 成人免费视频在线观看| 亚欧免费无码AⅤ在线观看| 人妻中文字幕在线一二区| 国产成人精品无码免费看| 巨胸喷奶水www视频网站| 999久久久精品国产消防器材| 国产香蕉一区二区三区| 少妇下面好紧好多水真爽| 精品人妻大屁股白浆无码| 成人区人妻精品一熟女| 成人无码区免费AⅤ片WWW| 国产av熟女一区二区三区蜜臀 | 亚洲国产精品一区二区成人片国内| 粗大猛烈进出高潮视频| 国产精品美女久久久久久大全| 国产偷拍盗摄一区二区| 亚洲精品久久区二区三区蜜桃臀| 蜜臀性色av免费| 无码人妻精品一区二区三区66| 国产麻豆剧传媒精品国产av蜜桃| 国产一区二区三区青青草| 比较有韵味的熟妇无码| 欧美最猛黑人xxxxx猛交| 日本女优一区二区在线免费观看| 水蜜桃在线精品视频网| 国产一区二区三区在线电影|