本公開(kāi)涉及設(shè)備安全,并且更具體地涉及允許在證明器設(shè)備中不存在重要安全基礎(chǔ)設(shè)施的情況下的應(yīng)用及數(shù)據(jù)安全。
背景技術(shù):
隨著規(guī)避現(xiàn)有安全措施的新策略的繼續(xù)出現(xiàn),防止惡意的軟件或“惡意軟件”危及各個(gè)設(shè)備正在變得日益困難。例如,惡意軟件(諸如“rootkit”)可能通過(guò)在設(shè)備初始化過(guò)程中被加載來(lái)危及設(shè)備安全性。因此,這些rootkit可以維持在設(shè)備中的特權(quán)級(jí)別,所述特權(quán)級(jí)別甚至超過(guò)了反病毒軟件的特權(quán)級(jí)別??尚艌?zhí)行(txt)是可以維護(hù)從初始化開(kāi)始的安全的至少一種安全概念。在txt中,可信平臺(tái)模塊(tpm)可以維護(hù)設(shè)備內(nèi)的安全存儲(chǔ)器中的已知良好程序的“測(cè)量結(jié)果”(例如,由對(duì)程序代碼的至少一部分執(zhí)行的密碼散列函數(shù)生成的結(jié)果)。因?yàn)槌绦虮患虞d到設(shè)備中,因此可以對(duì)它們進(jìn)行測(cè)量以便判定是否已經(jīng)加載了所述程序的已知良好版本。所述程序的任何變化都將產(chǎn)生不同的測(cè)量結(jié)果,這指示所述程序可能是惡意軟件或者至少是已經(jīng)被惡意軟件更改的原始程序的版本。在一個(gè)實(shí)施例中,還可以建立“信任鏈”,其中,每個(gè)程序?qū)罄m(xù)加載的程序進(jìn)行測(cè)量以便確保所述鏈中的所有程序是已知良好的程序。
雖然對(duì)阻止未授權(quán)訪問(wèn)是有效的,但是txt可能需要資源(諸如安全協(xié)處理器、安全存儲(chǔ)器等)以便經(jīng)由非對(duì)稱加密密鑰來(lái)支持證明。這類資源可以易于用于更穩(wěn)健的平臺(tái)中,諸如臺(tái)式計(jì)算機(jī)、膝上型計(jì)算機(jī)以及甚至移動(dòng)設(shè)備(像平板計(jì)算機(jī)和智能電話)。然而,現(xiàn)在正在開(kāi)發(fā)可能不包括這些資源但可能仍然易于受到惡意軟件危及的設(shè)備。例如,小規(guī)格設(shè)備(諸如可穿戴設(shè)備)、傳感器和/或可以取決于能量采集(例如,針對(duì)可用源生成其自身的能量,諸如機(jī)械能、太陽(yáng)能等)的設(shè)備可以包括計(jì)算資源,所述計(jì)算資源可能僅足夠強(qiáng)大以維持針對(duì)其而設(shè)計(jì)設(shè)備的操作。在沒(méi)有開(kāi)啟可以經(jīng)由tpm、txt等實(shí)現(xiàn)的安全措施(諸如完整性上報(bào)(例如,用于驗(yàn)證程序是所述程序的已知良好的版本)以及密封(例如,用于保護(hù)軟件秘密,諸如加密密鑰))的低級(jí)保護(hù)方案的情況下,檢測(cè)惡意軟件是否已經(jīng)危及到資源受限設(shè)備并且因此防止所述資源受限設(shè)備上的所述惡意軟件感染所述資源受限設(shè)備可以與其進(jìn)行交互的其他計(jì)算設(shè)備可以是可能的。
附圖說(shuō)明
所要求保護(hù)的主題的各個(gè)實(shí)施例的特征和優(yōu)點(diǎn)將隨著以下具體實(shí)施方式進(jìn)行并且通過(guò)參照附圖變得明顯,其中,相同的數(shù)字指代相同的部件,并且在附圖中:
圖1展示了根據(jù)本公開(kāi)的至少一個(gè)實(shí)施例的用于對(duì)稱密鑰和信任鏈的示例系統(tǒng);
圖2展示了根據(jù)本公開(kāi)的至少一個(gè)實(shí)施例可用的驗(yàn)證器設(shè)備和證明器設(shè)備的示例配置;
圖3展示了根據(jù)本公開(kāi)的至少一個(gè)實(shí)施例的對(duì)稱密鑰分配的示例;
圖4展示了根據(jù)本公開(kāi)的至少一個(gè)實(shí)施例的遠(yuǎn)程證明的示例;
圖5展示了根據(jù)本公開(kāi)的至少一個(gè)實(shí)施例的用于從驗(yàn)證器的角度的對(duì)稱密鑰和信任鏈的示例操作;
圖6展示了根據(jù)本公開(kāi)的至少一個(gè)實(shí)施例的用于從證明器的角度的對(duì)稱密鑰和信任鏈的示例操作;
圖7展示了根據(jù)本公開(kāi)的至少一個(gè)實(shí)施例的導(dǎo)出密封密鑰的示例;
圖8展示了根據(jù)本公開(kāi)的至少一個(gè)實(shí)施例的用于使用信任鏈密鑰導(dǎo)出來(lái)密封數(shù)據(jù)的示例操作;以及
圖9展示了根據(jù)本公開(kāi)的至少一個(gè)實(shí)施例的用于在系統(tǒng)中使用信任鏈密鑰導(dǎo)出來(lái)處理軟件更新的示例操作。
雖然以下具體實(shí)施方式將參考說(shuō)明性實(shí)施例進(jìn)行,但是許多替代方案、修改及其變體將對(duì)本領(lǐng)域的技術(shù)人員而言是明顯的。
具體實(shí)施方式
本申請(qǐng)涉及對(duì)稱密鑰和信任鏈。在一個(gè)實(shí)施例中,證明器設(shè)備可以與驗(yàn)證器設(shè)備進(jìn)行通信以便對(duì)所述證明器設(shè)備的身份、在所述證明器設(shè)備上執(zhí)行的應(yīng)用或由在所述證明器設(shè)備上執(zhí)行的所述應(yīng)用提供的數(shù)據(jù)進(jìn)行認(rèn)證??梢栽趦蓚€(gè)階段中發(fā)生所述證明器設(shè)備與所述驗(yàn)證器設(shè)備之間的交互。所述驗(yàn)證器設(shè)備可以初始地發(fā)布對(duì)所述證明器設(shè)備的身份進(jìn)行認(rèn)證的質(zhì)詢,這則可能導(dǎo)致對(duì)稱證明密鑰被存儲(chǔ)在所述證明器設(shè)備和驗(yàn)證器設(shè)備上。所述質(zhì)詢可能涉及所述證明器設(shè)備至少向所述驗(yàn)證器設(shè)備提供密鑰數(shù)據(jù)和票數(shù)據(jù),所述驗(yàn)證器設(shè)備則可以至少向鑒定器(例如,與所述證明器設(shè)備的制造商、經(jīng)銷商、銷售者相對(duì)應(yīng)的至少一個(gè)設(shè)備)提供所述票數(shù)據(jù)。如果已經(jīng)對(duì)所述票數(shù)據(jù)進(jìn)行了識(shí)別,則所述鑒定器可以向所述驗(yàn)證器設(shè)備傳輸授權(quán)令牌,從而允許使用所述密鑰數(shù)據(jù)在所述驗(yàn)證器中設(shè)置所述對(duì)稱證明密鑰并且然后向所述證明器進(jìn)行確認(rèn)。所述對(duì)稱證明密鑰可以由所述證明器設(shè)備在建立信任鏈時(shí)采用,所述信任鏈可以用于在所述驗(yàn)證器設(shè)備質(zhì)詢?cè)噲D訪問(wèn)所述驗(yàn)證器設(shè)備的應(yīng)用的真實(shí)性、由所述證明器設(shè)備中的應(yīng)用提供數(shù)據(jù)的真實(shí)性等時(shí)做出響應(yīng)。例如,所述對(duì)稱證明密鑰可以用于生成第一級(jí)密鑰,所述第一級(jí)密鑰進(jìn)而可以用于生成程序密鑰。質(zhì)詢響應(yīng)可以至少包括程序密鑰數(shù)據(jù),所述程序密鑰數(shù)據(jù)可以由所述驗(yàn)證器設(shè)備利用所述對(duì)稱證明密鑰來(lái)進(jìn)行認(rèn)證。
在一個(gè)實(shí)施例中,可以充當(dāng)驗(yàn)證器的設(shè)備可以包括例如通信模塊以及可信執(zhí)行環(huán)境(tee)。所述tee可以至少包括:證明模塊,所述證明模塊用于:檢測(cè)證明觸發(fā);判定是否至少基于所述證明觸發(fā)利用證明器設(shè)備發(fā)起對(duì)稱密鑰分配操作或遠(yuǎn)程證明操作;以及基于所述判定利用所述證明器設(shè)備發(fā)起對(duì)稱密鑰分配操作或遠(yuǎn)程證明操作中的至少一項(xiàng)。
可以例如周期性地或者由于經(jīng)由所述通信模塊來(lái)訪問(wèn)從所述證明器設(shè)備接收的資源的請(qǐng)求而觸發(fā)證明。所述通信模塊可以經(jīng)由短距離無(wú)線連接或直接有線連接中的至少一項(xiàng)與所述證明器設(shè)備進(jìn)行交互。所述證明模塊用于利用所述證明器設(shè)備來(lái)發(fā)起所述對(duì)稱密鑰分配操作可以包括所述證明模塊用于使所述通信模塊:將設(shè)備質(zhì)詢傳輸至所述證明器設(shè)備;以及經(jīng)由所述通信模塊從所述證明器設(shè)備接收對(duì)所述設(shè)備質(zhì)詢的響應(yīng),所述響應(yīng)至少包括密鑰數(shù)據(jù)和票數(shù)據(jù)。所述證明模塊然后可以進(jìn)一步用于使所述通信模塊:至少將所述票數(shù)據(jù)傳輸至至少一個(gè)鑒定器設(shè)備;經(jīng)由所述通信模塊從所述至少一個(gè)鑒定器設(shè)備接收響應(yīng);以及判定從所述鑒定器設(shè)備接收的所述響應(yīng)是否包括授權(quán)令牌。在一個(gè)實(shí)施例中,所述設(shè)備可以進(jìn)一步包括:防火墻,所述通信模塊通過(guò)所述防火墻與所述至少一個(gè)鑒定器設(shè)備進(jìn)行交互,所述防火墻至少用于防止所述設(shè)備與所述至少一個(gè)鑒定器設(shè)備之間的非預(yù)期交互。所述證明模塊可以進(jìn)一步用于:如果確定已經(jīng)接收到授權(quán)令牌,則至少基于所述密鑰數(shù)據(jù)設(shè)置對(duì)稱密鑰;以及使所述通信模塊將所述對(duì)稱密鑰已經(jīng)被設(shè)置的確認(rèn)傳輸至所述證明器設(shè)備。
在相同或不同的實(shí)施例中,所述證明模塊用于利用所述證明器設(shè)備發(fā)起所述遠(yuǎn)程證明操作包括所述證明模塊用于使所述通信模塊:將應(yīng)用質(zhì)詢傳輸至所述證明器設(shè)備;經(jīng)由所述通信模塊從所述證明器設(shè)備接收對(duì)所述應(yīng)用質(zhì)詢的響應(yīng),所述響應(yīng)至少基于計(jì)數(shù)器數(shù)據(jù)、代碼測(cè)量數(shù)據(jù)以及程序密鑰數(shù)據(jù)被生成;對(duì)所述響應(yīng)進(jìn)行認(rèn)證;以及使所述通信模塊至少將所述認(rèn)證結(jié)果傳輸至所述證明器設(shè)備。所述證明模塊用于對(duì)所述響應(yīng)進(jìn)行認(rèn)證可以包括例如:所述證明模塊用于認(rèn)證所述響應(yīng)是使用消息認(rèn)證代碼基于所述對(duì)稱密鑰而生成的。一種與本公開(kāi)一致的、用于使用對(duì)稱密鑰來(lái)進(jìn)行遠(yuǎn)程證明的示例方法可以包括:檢測(cè)證明觸發(fā);判定是否至少基于所述證明觸發(fā)利用證明器設(shè)備發(fā)起對(duì)稱密鑰分配操作或遠(yuǎn)程證明操作;以及基于所述判定利用所述證明器設(shè)備發(fā)起對(duì)稱密鑰分配操作或遠(yuǎn)程證明操作中的至少一項(xiàng)。
圖1展示了根據(jù)本公開(kāi)的至少一個(gè)實(shí)施例的用于對(duì)稱密鑰和信任鏈的示例系統(tǒng)。系統(tǒng)100可以包括例如證明器102、驗(yàn)證器104和鑒定器106。通常,驗(yàn)證器104可以與鑒定器106合作以便對(duì)證明器102、在證明器102上運(yùn)行的應(yīng)用、由證明器102提供的數(shù)據(jù)等進(jìn)行認(rèn)證。證明器102可以是能夠與如圖1中所展示的驗(yàn)證器設(shè)備104進(jìn)行交互的任何設(shè)備。有利地但非必要地,關(guān)于系統(tǒng)100所公開(kāi)的操作可以允許證明器102為:以其他方式將不能夠支持現(xiàn)有證明方案的資源有限設(shè)備(例如,有限的處理功率、能量存儲(chǔ)等),諸如穿戴設(shè)備(例如,智能手表、眼鏡、服裝等);可植入設(shè)備(例如,用于監(jiān)測(cè)特定醫(yī)療狀況的設(shè)備);依賴能量采集(例如,機(jī)電發(fā)電、太陽(yáng)能等)的設(shè)備;傳感器設(shè)備;致動(dòng)器設(shè)備等。驗(yàn)證器104可以包括具有更重要的計(jì)算資源的設(shè)備,所述設(shè)備可以能夠例如經(jīng)由基于txt、tdm等的保護(hù)方案來(lái)維護(hù)安全。驗(yàn)證器104的示例可以包括但不限于:基于來(lái)自谷歌公司的
已知的證明解決方案可以包括:將經(jīng)鑒定的公鑰嵌入到驗(yàn)證器104可以在認(rèn)證時(shí)基于非對(duì)稱密鑰使用的證明器102中的可信執(zhí)行環(huán)境(tee)中(例如,在來(lái)自可以與證明器102的所述tee直接進(jìn)行交互的驗(yàn)證器106的輔助下)。假定執(zhí)行橢圓曲線密碼學(xué)(ecc)點(diǎn)乘可消耗低端cpu上的大量處理資源并且現(xiàn)有協(xié)議通常需要多于一個(gè)的這種操作,則現(xiàn)有的解決方案對(duì)于資源受限設(shè)備來(lái)說(shuō)可能太慢且成本高(例如,其可能采取三次用于利用完全散列的menezes-qu-vanstone(fhmqv)協(xié)議來(lái)建立會(huì)話密鑰的點(diǎn)乘)。
相應(yīng)的對(duì)稱解決方案(例如,使用高級(jí)加密標(biāo)準(zhǔn)-基于密碼的消息認(rèn)證碼(aes-cmac))可能快許多倍,但是需要使得鑒定器106能夠?qū)λ鰐ee進(jìn)行認(rèn)證的共享對(duì)稱認(rèn)證密鑰。雖然在這兩種方式中,鑒定器106可以受到所有各方的信任,但是允許鑒定器106參加密鑰協(xié)商意味著鑒定器106可稍后用于對(duì)證明器102進(jìn)行人格化并且向驗(yàn)證器104假冒證明。這種脆弱性在與本公開(kāi)一致的實(shí)施例中得到了解決,其中,驗(yàn)證器104可以在密鑰交換過(guò)程中隔離證明器102以便防止與鑒定器106進(jìn)行交互。結(jié)果,驗(yàn)證器104和證明器102可對(duì)密鑰(所述密鑰可得到授權(quán)但并非由鑒定器106導(dǎo)出)進(jìn)行協(xié)商,并且因此可以在防假冒時(shí)是安全的。
與本公開(kāi)一致,驗(yàn)證器104可以發(fā)起至少兩類操作:對(duì)稱密鑰分配108以及遠(yuǎn)程證明112。例如,對(duì)稱密鑰分配108涉及交互,所述交互引起對(duì)稱密鑰的分配以供證明器102和驗(yàn)證器104在遠(yuǎn)程證明112過(guò)程中使用。初始地,驗(yàn)證器104可以向證明器102發(fā)布設(shè)備質(zhì)詢108a。設(shè)備質(zhì)詢108a可以是質(zhì)詢證明器102以“證明”其身份的消息。設(shè)備質(zhì)詢108a可以由各種事件觸發(fā),諸如例如驗(yàn)證器104的激活、設(shè)備104中的周期性觸發(fā)、來(lái)自證明器102的訪問(wèn)驗(yàn)證器104上的資源的請(qǐng)求、接收由證明器102在驗(yàn)證器104處提供的數(shù)據(jù)等。證明器102可以入在108b處示出的對(duì)驗(yàn)證器104進(jìn)行響應(yīng),所述響應(yīng)至少包括密鑰數(shù)據(jù)和票數(shù)據(jù)。所述密鑰數(shù)據(jù)可以允許驗(yàn)證器104確認(rèn)響應(yīng)消息108b是從證明器102接收的并且至少可以包括由證明器102生成的對(duì)稱密鑰,所述對(duì)稱密鑰可以稍后在對(duì)稱密鑰分配108過(guò)程中被設(shè)置在驗(yàn)證器104中。所述票數(shù)據(jù)可以由如用于對(duì)證明器設(shè)備102的身份進(jìn)行認(rèn)證的鑒定器106的實(shí)體來(lái)使用。驗(yàn)證器104然后可以如在108c處示出的至少將所述票數(shù)據(jù)轉(zhuǎn)發(fā)至鑒定器106。在一個(gè)實(shí)施例中,驗(yàn)證器104可以受到防火墻110的保護(hù),所述防火墻例如防止局域網(wǎng)(lan)、廣域網(wǎng)(wan)(像互聯(lián)網(wǎng))、全球域網(wǎng)(gan)等侵入到個(gè)域網(wǎng)(pan)、體域網(wǎng)(ban)等中,至少包括證明器102和驗(yàn)證器104。防火墻110可以物理地或邏輯地防止證明器102與鑒定器106或除驗(yàn)證器104之外的其他多方之間的非預(yù)期交互。因此,可以向驗(yàn)證器104確保所部署的對(duì)稱密鑰僅對(duì)證明器102和驗(yàn)證器104是已知的,而對(duì)防火墻110之外的其他多方不是已知的。在相同或不同的實(shí)施例中,驗(yàn)證器104與鑒定器106之間通過(guò)防火墻110的信道可以是用于確保正在交換的數(shù)據(jù)不被攔截的安全信道。如以上所討論的,被轉(zhuǎn)發(fā)至鑒定器106的信息可以限于用于確保鑒定器106不具有對(duì)證明器102進(jìn)行人格化所需的全部數(shù)據(jù)的所述票數(shù)據(jù)(例如,僅對(duì)證明器102的身份進(jìn)行驗(yàn)證所需的數(shù)據(jù))。
鑒定器106至少可以利用用于對(duì)證明器102進(jìn)行認(rèn)證的所述票數(shù)據(jù)(例如,以便確保另一設(shè)備未正在對(duì)證明器102進(jìn)行人格化)。例如,所述票數(shù)據(jù)可以包括制造商數(shù)據(jù)、模型數(shù)據(jù)、序列號(hào)、建造日期和/或?qū)S抿?yàn)證數(shù)據(jù),所述數(shù)據(jù)可以用于驗(yàn)證證明器102實(shí)際上是由鑒定器106提供(例如,制造、配置、分配、銷售等)的產(chǎn)品)。如果確定證明器102是真實(shí)的,則可以如在108d處示出的將至少包括授權(quán)令牌的響應(yīng)從鑒定器106傳輸至驗(yàn)證器104。驗(yàn)證器104可以如在108e處示出的在設(shè)置所述對(duì)稱密鑰時(shí)使用所述授權(quán)令牌。設(shè)置所述對(duì)稱密鑰可以包括例如:指定所述對(duì)稱密鑰以用于與證明器102進(jìn)行設(shè)備/程序/數(shù)據(jù)認(rèn)證交互,并且然后將所述對(duì)稱密鑰存儲(chǔ)在驗(yàn)證器104中(例如,在安全存儲(chǔ)器(諸如tee)中)。驗(yàn)證器104然后可以如在108f處示出的確認(rèn)所述對(duì)稱密鑰已經(jīng)被設(shè)置為證明器102。
遠(yuǎn)程證明112可以在證明器102中發(fā)起信任鏈導(dǎo)出。例如,所述信任鏈中的初始框架密鑰可以如112a處示出的基于對(duì)稱密鑰114被導(dǎo)出,所述對(duì)稱密鑰114如108e處示出的被提供至證明器102。每個(gè)后續(xù)的密鑰(例如,程序密鑰118)可以如在112b處示出的至少?gòu)南惹暗拿荑€(例如,框架密鑰116)中部分地導(dǎo)出。以此方式,證明器102中的各操作水平(諸如例如,os、應(yīng)用、內(nèi)插式模塊等)各自可以具有可以使用對(duì)稱密鑰114對(duì)其進(jìn)行認(rèn)證的密鑰。示出了示例交互,其中,由驗(yàn)證器104將應(yīng)用質(zhì)詢112c傳輸至證明器102。應(yīng)用質(zhì)詢112c可以包括質(zhì)詢應(yīng)用以“證明”所述應(yīng)用駐留在證明器102上和/或數(shù)據(jù)源自證明器102的消息。與設(shè)備質(zhì)詢108a相類似,應(yīng)用質(zhì)詢112c可以由證明器102上請(qǐng)求訪問(wèn)驗(yàn)證器104中的資源的應(yīng)用、從證明器102提供至驗(yàn)證器104的數(shù)據(jù)等來(lái)觸發(fā)??梢皂憫?yīng)于應(yīng)用質(zhì)詢112c而傳輸回復(fù)112d,回復(fù)112d包括至少基于程序密鑰118的數(shù)據(jù),可以利用例如對(duì)稱密鑰114在驗(yàn)證器104中對(duì)所述程序密鑰進(jìn)行認(rèn)證。
與本公開(kāi)一致,信任鏈導(dǎo)出無(wú)需集中記錄受到所有各方信任的測(cè)量結(jié)果,并且因此設(shè)備無(wú)需基于硬件的保護(hù)來(lái)保護(hù)測(cè)量結(jié)果或者代表其他設(shè)備對(duì)所述測(cè)量結(jié)果進(jìn)行上報(bào)和簽名。相反,軟件可以負(fù)責(zé)正確導(dǎo)出密鑰,并且執(zhí)行意識(shí)存儲(chǔ)器保護(hù)可以用于保護(hù)所生成的密鑰116、118等免受os或其他應(yīng)用中的威脅。進(jìn)一步針對(duì)降低的硬件成本,信任鏈導(dǎo)出還可以遷移在資源受限設(shè)備的引導(dǎo)和可信執(zhí)行過(guò)程中的性能瓶頸的問(wèn)題。所產(chǎn)生的證明協(xié)議僅需要消息認(rèn)證碼(mac)以證明正確加載了特定應(yīng)用,并且與和中央可信子系統(tǒng)(例如,tpm)進(jìn)行互操作相比可以易于且更高效地集成在安全信道協(xié)議中。雖然對(duì)稱信任鏈可能被限于僅提供對(duì)單獨(dú)(例如,隔離的)應(yīng)用的加載時(shí)間測(cè)量和證明,但是由于對(duì)設(shè)備的完整軟件狀態(tài)進(jìn)行驗(yàn)證的高復(fù)雜度,因此關(guān)注對(duì)單獨(dú)的隔離應(yīng)用(例如,可信執(zhí)行)的測(cè)量和有效性是當(dāng)前趨勢(shì)。此外,利用運(yùn)行時(shí)間程序測(cè)量結(jié)果對(duì)遠(yuǎn)程證明進(jìn)行擴(kuò)展當(dāng)前未解決,但是現(xiàn)在在與本公開(kāi)一致的實(shí)施例中得到了解決。
圖2展示了根據(jù)本公開(kāi)的至少一個(gè)實(shí)施例可用的驗(yàn)證器104’和證明器102’的示例配置。具體地,驗(yàn)證器104'和證明器102'可以能夠執(zhí)行諸如在圖1中所公開(kāi)的示例功能。然而,驗(yàn)證器104’和證明器102'僅意指作為可以在與本公開(kāi)一致的實(shí)施例中可用的裝置的示例,并且并不意在將這些各個(gè)實(shí)施例限制于任何特定方式的實(shí)現(xiàn)方式。
驗(yàn)證器104’可以包括例如被配置成用于管理設(shè)備操作的系統(tǒng)模塊200。系統(tǒng)模塊200可以包括例如處理模塊202、存儲(chǔ)器模塊204、電源模塊206、用戶接口模塊208以及通信接口模塊210。驗(yàn)證器104’還可以包括通信模塊212和tee模塊214。雖然通信模塊212和tee模塊214已經(jīng)被展示為與系統(tǒng)模塊200分離,但是為了解釋的目的,僅僅提供了圖2中所示的示例實(shí)現(xiàn)方式。與通信模塊212和tee模塊214相關(guān)聯(lián)的功能中的一些或全部可以并入到系統(tǒng)模塊200中。
在驗(yàn)證器104’中,處理模塊202可以包括位于分離部件中的一個(gè)或多個(gè)處理器、或者替代性地,在單個(gè)部件中(例如,在片上系統(tǒng)(soc)配置中)具體化的一個(gè)或多個(gè)處理核以及任何處理器相關(guān)的支持電路(例如,橋接接口等)。示例處理器可以包括但不限于:可從英特爾公司獲得的各種基于x86的微處理器,包括在奔騰(pentium)、至強(qiáng)(xeon)、安騰(itanium)、賽揚(yáng)(celeron)、阿童木(atom)、核i系列產(chǎn)品家族、高級(jí)risc(例如,精簡(jiǎn)指令集計(jì)算)機(jī)器或“arm”處理器等中的那些。支持電路的示例可以包括被配置成用于提供接口的芯片組(例如,可從英特爾公司獲得的北橋、南橋等),通過(guò)所述接口,處理模塊202可以與驗(yàn)證器104’中可以不同速度、不同總線等正在進(jìn)行操作的其他系統(tǒng)部件進(jìn)行交互。通常與支持電路相關(guān)聯(lián)的功能的部分或全部還可以包括在與處理器一樣的物理封裝體中(例如,諸如在可從英特爾公司獲得的處理器的沙橋(sandybridge)族中)。
處理模塊202可以被配置成用于執(zhí)行驗(yàn)證器104’中的各個(gè)指令。指令可以包括程序代碼,所述程序代碼被配置成用于使處理模塊202執(zhí)行與讀數(shù)據(jù)、寫數(shù)據(jù)、處理數(shù)據(jù)、制定數(shù)據(jù)、轉(zhuǎn)換數(shù)據(jù)、變換數(shù)據(jù)等相關(guān)的活動(dòng)。信息(例如,指令、數(shù)據(jù)等)可以存儲(chǔ)在存儲(chǔ)器模塊204中。存儲(chǔ)器模塊204可以包括固定或可移除格式的隨機(jī)存取存儲(chǔ)器(ram)或只讀存儲(chǔ)器(rom)。ram可以包括被配置成用于在驗(yàn)證器104’的操作過(guò)程中保持信息的易失性存儲(chǔ)器,諸如例如靜態(tài)ram(sram)或動(dòng)態(tài)ram(dram)。rom可以包括基于bios、uefi等被配置的用于在驗(yàn)證器104’被激活時(shí)提供指令的非易失性(nv)存儲(chǔ)器模塊、諸如電子可編程rom(eproms)的可編程存儲(chǔ)器、閃存等。其他固定/可移除存儲(chǔ)器可以包括但不限于:磁存儲(chǔ)器(諸如例如,軟盤、硬盤驅(qū)動(dòng)器等)、電子存儲(chǔ)器(諸如固態(tài)閃存(例如,嵌入式多媒體卡(emmc))等)、可移除存儲(chǔ)卡或可移除存儲(chǔ)棒(例如,微型存儲(chǔ)卡(usd)、usb等)、光存儲(chǔ)器(諸如基于cd的rom(cd-rom))、數(shù)字視頻盤(dvd)、藍(lán)光碟等。
電源模塊206可以包括內(nèi)部電源(例如,電池、燃料電池等)和/或外部電源(例如,機(jī)電或太陽(yáng)能發(fā)電機(jī)、電網(wǎng)、燃料電池等)、以及相關(guān)電路(被配置成用于為驗(yàn)證器104’供應(yīng)操作所需的電源)。用戶接口模塊208可以包括硬件和/或軟件以便允許用戶與驗(yàn)證器104’(諸如例如,各種輸入機(jī)構(gòu)(例如,麥克風(fēng)、開(kāi)關(guān)、按鈕、旋鈕、鍵盤、揚(yáng)聲器、觸敏表面、被配置成用于捕獲圖像和/或感測(cè)接近度、距離、運(yùn)動(dòng)、姿勢(shì)、朝向的一個(gè)或多個(gè)傳感器等)以及各種輸出機(jī)構(gòu)(例如,揚(yáng)聲器、顯示器、發(fā)光/閃爍指示器、針對(duì)震動(dòng)、運(yùn)動(dòng)的機(jī)電部件等)進(jìn)行交互。用戶接口模塊208中的硬件可以并入驗(yàn)證器104’內(nèi)和/或可以經(jīng)由有線或無(wú)線通信介質(zhì)耦合至驗(yàn)證器104’。
通信接口模塊210可以被配置成用于對(duì)分組路由以及通信模塊212的其他控制功能進(jìn)行管理,所述通信模塊可以包括被配置成用于支持有線和/或無(wú)線通信的資源。在一些實(shí)例中,驗(yàn)證器104'可以包括全部由集中通信接口模塊210管理的多于一個(gè)的通信模塊212(例如,包括針對(duì)有線協(xié)議和/或無(wú)線電臺(tái)的分離物理接口模塊)。有線通信可以包括串聯(lián)和并聯(lián)的有線介質(zhì),諸如例如:以太網(wǎng)、通用串行總線(usb)、火線、數(shù)字視頻接口(dvi)、高清多媒體接口(hdmi)等。無(wú)線通信可以包括例如:極近無(wú)線介質(zhì)(例如,諸如基于近場(chǎng)通信(nfc)標(biāo)準(zhǔn)的射頻(rf)、紅外(ir)等)、短距無(wú)線介質(zhì)(例如,藍(lán)牙、wlan、wi-fi等)、長(zhǎng)距無(wú)線介質(zhì)(例如,蜂窩廣域無(wú)線電通信技術(shù)、基于衛(wèi)星的通信等)或經(jīng)由聲波的電子通信。在一個(gè)實(shí)施例中,通信接口模塊210可以被配置成用于防止在通信模塊212中活躍的無(wú)線通信互相干擾。在執(zhí)行此功能時(shí),通信接口模塊210可以基于例如消息等待傳輸?shù)南鄬?duì)優(yōu)先級(jí)為通信模塊212安排活動(dòng)。雖然圖2中所公開(kāi)的實(shí)施例展示了通信接口模塊210與通信模塊212分離,但是將通信接口模塊210和通信模塊212的功能并入同一模塊內(nèi)還可以是可能的。
tee模塊214可以是安全工作空間,在所述安全工作空間中,可以執(zhí)行已知良好的程序,可以采用安全的方式存儲(chǔ)機(jī)密信息等。通常,tee模塊214可以包括安全的計(jì)算資源集合,從而使得在tee模塊214內(nèi)執(zhí)行的程序與和所述執(zhí)行程序相關(guān)聯(lián)的任何數(shù)據(jù)隔離開(kāi)。除了可以開(kāi)始或停止所述程序并且可以插入或刪除所述相關(guān)聯(lián)數(shù)據(jù)之外,所述程序/數(shù)據(jù)在程序執(zhí)行過(guò)程中不會(huì)相互干擾或被觀察到。所述數(shù)據(jù)插入可以是未觀察到的并且因此不會(huì)互相干擾,并且離開(kāi)tee模塊214的任何數(shù)據(jù)采用受控方式被釋放。與本公開(kāi)一致,在tee模塊214內(nèi)執(zhí)行的至少一個(gè)已知良好的程序可以執(zhí)行在此關(guān)于tee模塊106而公開(kāi)的任何或全部操作。在一個(gè)示例實(shí)現(xiàn)方式中,tee模塊214可以利用由英特爾公司開(kāi)發(fā)的軟件防護(hù)擴(kuò)展(sgx)技術(shù)。sgx可以向存儲(chǔ)器總線提供系統(tǒng)存儲(chǔ)器內(nèi)部的安全且硬件加密的計(jì)算和存儲(chǔ)區(qū)域,其內(nèi)容無(wú)法被特權(quán)代碼或者甚至通過(guò)硬件應(yīng)用被解密。當(dāng)tee模塊214受到sgx保護(hù)時(shí),與本公開(kāi)一致的實(shí)施例使得侵入者不可能解密tee模塊214的內(nèi)容。受保護(hù)的數(shù)據(jù)無(wú)法在sgx外部被觀察到,并且因此在sgx外部不可訪問(wèn)。
在使用sgx來(lái)實(shí)現(xiàn)tee模塊214的示例實(shí)現(xiàn)方式中,可以在每個(gè)程序內(nèi)部對(duì)程序的身份(例如,基于每個(gè)程序的內(nèi)容的密碼散列測(cè)量結(jié)果)進(jìn)行簽名和存儲(chǔ)。當(dāng)然后對(duì)所述程序進(jìn)行加載時(shí),所述處理器驗(yàn)證所述程序的測(cè)量結(jié)果(例如,如由所述處理器計(jì)算的)與先前嵌入在所述程序內(nèi)部的測(cè)量結(jié)果相同。用于對(duì)所述嵌入式測(cè)量結(jié)果進(jìn)行簽名的簽名也是可驗(yàn)證的,因?yàn)樗鎏幚砥髟O(shè)置有用于在程序加載時(shí)間對(duì)所述簽名進(jìn)行驗(yàn)證的公鑰。以此方式,惡意軟件無(wú)法篡改所述程序,也無(wú)法更改其可驗(yàn)證的測(cè)量結(jié)果。惡意軟件也無(wú)法假冒所述簽名,因?yàn)樗龊灻荑€與所述程序的作者是安全的。因此,所述軟件可以不被任何惡意軟件讀取、寫入或更改。而且,還可以在tee模塊106中保護(hù)數(shù)據(jù)。例如,tee模塊106中的已知良好的程序可以對(duì)數(shù)據(jù)(諸如密鑰、密碼、許可等)進(jìn)行加密,從而使得僅經(jīng)驗(yàn)證的良好程序可以對(duì)此數(shù)據(jù)進(jìn)行解密。
證明模塊216可以駐留在tee模塊214內(nèi)。證明模塊216可以例如與處理模塊202、存儲(chǔ)器模塊204、以及通信模塊212進(jìn)行交互。在操作的示例中,證明模塊216可以使通信模塊212向證明器102'發(fā)送質(zhì)詢并且可以從證明器102'接收證明和票數(shù)據(jù)。證明模塊216可以利用處理模塊202中的處理資源和/或存儲(chǔ)器模塊204中的存儲(chǔ)器資源以便處理從證明器102'接收的所述數(shù)據(jù)。而且,證明模塊216可以使通信模塊212至少將所述票數(shù)據(jù)傳輸至驗(yàn)證器104并且可以從驗(yàn)證器104接收授權(quán)令牌信息以用于生成對(duì)稱密鑰114。證明模塊216然后可以使通信模塊212將至少一個(gè)對(duì)稱密鑰114傳輸至證明器102’。
證明器102’已經(jīng)被表示為圖2的示例中的資源有限設(shè)備。通信模塊218可以被配置成用于至少向驗(yàn)證器104'傳輸并接收數(shù)據(jù)(例如,通信模塊212)。由通信模塊218接收的數(shù)據(jù)可以被提供至證明器102’中的操作資源(例如,至合并操作模塊220)。合并操作模塊220可以能夠執(zhí)行與系統(tǒng)模塊200類似的功能但以更小的比例。例如,合并操作模塊220可以包括單體處理解決方案(諸如soc),所述單體處理解決方案可以被配置成用于處理包括資源(諸如例如,處理器222、平臺(tái)處初始化模塊(例如,引導(dǎo)加載器)224、存儲(chǔ)器226等)的證明器102’的處理操作中的所有操作。在一個(gè)實(shí)施例中,合并操作模塊220可以使通信模塊218與通信模塊212進(jìn)行交互。在一個(gè)實(shí)施例中,這種交互可以限于有線通信、近距離或短程無(wú)線通信。在此限制可以簡(jiǎn)單地為證明器102’的功能現(xiàn)實(shí)的同時(shí),其還可以用于增強(qiáng)驗(yàn)證器104'與證明器102’之間的交互的安全性,因?yàn)樽C明器102'僅可以能夠在對(duì)稱密鑰分配108過(guò)程中與近距離單個(gè)設(shè)備(例如,驗(yàn)證器104’)進(jìn)行交互。
圖3展示了根據(jù)本公開(kāi)的至少一個(gè)實(shí)施例的對(duì)稱密鑰分配108’的示例。圖3詳細(xì)描述了驗(yàn)證器104和證明器102可以如何建立可以用于進(jìn)行遠(yuǎn)程證明的共享對(duì)稱密鑰kv,p,其示例將在圖3中被描述。鑒定器106(例如,證明器102的制造商)可以確定證明器102的標(biāo)識(shí)idp(例如,在制造時(shí)),并且可以將認(rèn)證密鑰ekp嵌入到證明器102中的安全存儲(chǔ)器位置(例如,加密存儲(chǔ)器)中。為了增強(qiáng)安全性,可以假設(shè)證明器102無(wú)法在協(xié)議交換階段期間與除驗(yàn)證器104之外的另一設(shè)備進(jìn)行通信(例如,經(jīng)由有線、無(wú)線或短距離通信),因此防止了受到危及的軟件在證明器102處與鑒定器106或另一外部實(shí)體發(fā)生可能的碰撞。然而,驗(yàn)證器104和鑒定器106可以經(jīng)由安全信道(諸如傳輸控制協(xié)議/互聯(lián)網(wǎng)協(xié)議(tcp/ip)上的傳輸層安全(tls))進(jìn)行交互。如圖3中示出的,驗(yàn)證器104可以為密鑰分配會(huì)話生成隨機(jī)數(shù)nv和nauth,并且可以將這些值與驗(yàn)證器104idv的標(biāo)識(shí)符進(jìn)行散列以用于傳輸所述設(shè)備質(zhì)詢。證明器102可以生成用于對(duì)所述質(zhì)詢進(jìn)行響應(yīng)的數(shù)據(jù),所述響應(yīng)至少包括密鑰數(shù)據(jù)cp和票v,m??梢栽谧C明器102中通過(guò)對(duì)各個(gè)值執(zhí)行密碼功能來(lái)生成cp和票v,m,所述各個(gè)值至少包括在所述設(shè)備質(zhì)詢和idp中發(fā)送的值。
在一個(gè)實(shí)施例中,驗(yàn)證器104則可以將nauth和票v,m轉(zhuǎn)發(fā)至鑒定器106(例如,經(jīng)由安全信道)??梢圆捎弥鲝拿荑€方案以便減低所需的存儲(chǔ),從而使得鑒定器106可以能夠處理大量的證明器102。已知ek,鑒定器106可以能夠使用密鑰導(dǎo)出函數(shù)(kdf)(諸如ekp=kdf(ek,idp))來(lái)導(dǎo)出其設(shè)備idp之一的ekp。由鑒定器106對(duì)票v,m進(jìn)行認(rèn)證可以導(dǎo)致生成授權(quán)令牌sv,其中,sv=adec(ekp,票v,m)。然后可以至少將sv傳輸回至驗(yàn)證器104以用于設(shè)置對(duì)稱密鑰kv,p。如圖3所示,然后可以基于cv=mac(kv,p,nv,np)來(lái)生成確認(rèn)cv。證明器102可以接收確認(rèn)cv并且可以利用cv來(lái)確定已經(jīng)設(shè)置了對(duì)稱密鑰kv,p。
在圖3的示例協(xié)議中,可能未朝向證明器102或鑒定器106對(duì)驗(yàn)證器104進(jìn)行明確認(rèn)證,這意味著任何驗(yàn)證器104都可以觸發(fā)此協(xié)議。然而,這種交換確保了鑒定器106了解到與部署至idp的所述對(duì)稱密鑰kv,p相關(guān)聯(lián)的身份idv。這樣,至少兩個(gè)備選方案可以用于驗(yàn)證器104的帶外認(rèn)證(以及授權(quán)):分配式方法,所述分配式方法可以采用驗(yàn)證器104與證明器102之間的本地(例如,物理)授權(quán);以及集中式方法,其中,鑒定器106可以充當(dāng)驗(yàn)證器104與證明器102之間的中介器。本地授權(quán)可以利用以下事實(shí):許多設(shè)備已經(jīng)基于物理接近度或相似關(guān)系提供了帶外密鑰部署。例如,設(shè)備配對(duì)協(xié)議可以在本地可信環(huán)境中執(zhí)行對(duì)稱密鑰交換,并且然后可以要求用戶通過(guò)在任一設(shè)備上輸入設(shè)備pin來(lái)對(duì)所述交換進(jìn)行認(rèn)證。以此方式,可與證明器102建立由驗(yàn)證器104最新獲取的公共共享秘密“s”。然而,證明器102需要配備有用于在可信環(huán)境中執(zhí)行配對(duì)的可信用戶i/o設(shè)施(例如,其在一些限制資源設(shè)備中可能不可用)。否則,驗(yàn)證器104將不會(huì)知道是否與證明器102上的安全或受到危及的軟件共享s。雖然s單獨(dú)可能對(duì)于證明不是有用的,但是可在圖3的示例中使用s以便建立驗(yàn)證器104與證明器102之間的經(jīng)認(rèn)證的信道,從而確保證明器102無(wú)法與除驗(yàn)證器104之外的其他多方進(jìn)行通信。以此方式,s可以用于對(duì)驗(yàn)證器104與證明器102之間的對(duì)稱密鑰kv,p的部署進(jìn)行本地認(rèn)證和授權(quán)。在基本協(xié)議中物理隔離證明器確保了不會(huì)發(fā)生與鑒定器106的協(xié)作并且成功共享的對(duì)稱密鑰kv,p僅對(duì)驗(yàn)證器104和證明器102是已知的。因而,即使危及到證明器102,但是對(duì)稱密鑰kv,p仍可用于驗(yàn)證證明器102并檢測(cè)所述危害。在對(duì)證明器102進(jìn)行證明之后,物理隔離可能不再是必要的。
如果本地授權(quán)不是可行的或者不被認(rèn)為是足夠安全的,則可以采用集中式解決方案,在所述集中式解決方案中,鑒定器106明確授權(quán)驗(yàn)證器104與證明器102建立對(duì)稱密鑰kv,p。出于此目的,驗(yàn)證器應(yīng)當(dāng)向鑒定器106認(rèn)證何時(shí)在基本協(xié)議中建立安全信道,從而使得驗(yàn)證器104的身份可以加密鏈接至idv,如在驗(yàn)證器104與證明器102之間的本地通信中使用的。例如,如果驗(yàn)證器104與鑒定器106之間的所述安全信道使用標(biāo)準(zhǔn)公鑰方案來(lái)進(jìn)行雙向非對(duì)稱認(rèn)證,則idv可以是驗(yàn)證器104的公鑰vpub的指紋(例如,密碼散列值)。鑒定器106然后可以在已知vpub的私鑰的情況下驗(yàn)證證明器102不基于除驗(yàn)證器104之外的其他實(shí)體正在與和鑒定器106進(jìn)行通信的同一驗(yàn)證器104進(jìn)行交互,可以通過(guò)idv=散列(vpub)對(duì)所述私鑰進(jìn)行唯一標(biāo)識(shí)。因此,鑒定器106可以基于idv和idp執(zhí)行對(duì)驗(yàn)證器104的授權(quán)(例如,通過(guò)在數(shù)據(jù)庫(kù)中進(jìn)行查找(如果驗(yàn)證器104已經(jīng)購(gòu)買了證明器102或者如果驗(yàn)證器104是可執(zhí)行對(duì)p的證明的特定特權(quán)組的一部分))。
圖4展示了根據(jù)本公開(kāi)的至少一個(gè)實(shí)施例的遠(yuǎn)程證明112’的示例。遠(yuǎn)程證明協(xié)議是質(zhì)詢響應(yīng)協(xié)議,其中,證明器102可以使用部署的對(duì)稱密鑰kv,p來(lái)“鑒定”其平臺(tái)的軟件狀態(tài)。出于此目的,傳統(tǒng)的證明方案記錄證明器102上的安全存儲(chǔ)器位置中的證明器102的軟件狀態(tài)(諸如tpm的平臺(tái)配置寄存器(pcr)),并且然后對(duì)那些記錄的測(cè)量結(jié)果以及來(lái)自由驗(yàn)證器104發(fā)起的質(zhì)詢的臨時(shí)值一起進(jìn)行簽名。從初始引導(dǎo)例程到啟動(dòng)os和應(yīng)用的完整記錄被稱為信任鏈,因?yàn)槊總€(gè)部件需要先前加載的部件對(duì)其進(jìn)行測(cè)量。
可通過(guò)將軟件測(cè)量結(jié)果存儲(chǔ)在存儲(chǔ)器位置中來(lái)實(shí)現(xiàn)相似的方案,利用執(zhí)行意識(shí)存儲(chǔ)器保護(hù)方案通過(guò)保護(hù)證明密鑰kv,p以及“軟件pcr”來(lái)保護(hù)所述存儲(chǔ)器位置,從而使得僅可信遠(yuǎn)程證明代碼可訪問(wèn)那個(gè)數(shù)據(jù)。然而,嵌入式環(huán)境和對(duì)稱證明密鑰還使得能夠?qū)崿F(xiàn)進(jìn)一步簡(jiǎn)化,這可以被考慮為“隱含”或“導(dǎo)出的”信任鏈。以此方式,在每次某個(gè)軟件正在加載另一軟件模塊時(shí),可以使用相應(yīng)的密鑰生成和/或密鑰轉(zhuǎn)授操作來(lái)擴(kuò)展所述信任鏈,而非存儲(chǔ)安全位置中的測(cè)量結(jié)果。如圖4所示,在證明器102”中,可以通過(guò)擁有根對(duì)稱密鑰kv,p的平臺(tái)引導(dǎo)代碼來(lái)開(kāi)啟所述信任鏈。然而,并非基于安全硬件或固件來(lái)提供運(yùn)行時(shí)間服務(wù)(其可以是資源密集型),而是安全引導(dǎo)例程可以測(cè)量(例如,通常通過(guò)進(jìn)行散列)軟件模塊并且直接將導(dǎo)出的程序密鑰km=mac(kv,p,散列m)嵌入到加載的程序模塊的保留位置中。圖4中展示了示例操作,其中,針對(duì)引導(dǎo)加載器400,散列1=測(cè)量(引導(dǎo)加載器代碼)并且程序密鑰k1=mac(kv,p,計(jì)數(shù)器||散列1)。然后可以采用程序密鑰k1來(lái)生成與os/任務(wù)402相對(duì)應(yīng)的程序密鑰(例如,散列2=測(cè)量(os/任務(wù)代碼)),并且程序密鑰k2=mac(k1,計(jì)數(shù)器||散列2)。同樣,還可以導(dǎo)出具體對(duì)應(yīng)于其他軟件404的程序密鑰,其中,散列3=測(cè)量(其他軟件代碼)并且程序密鑰k3=mac(k1,計(jì)數(shù)器||散列3)。
每個(gè)軟件模塊(例如,os/任務(wù)402、其他軟件404等)然后可以直接使用其相應(yīng)的程序密鑰km(例如,k1、k2、k3等)以及測(cè)量結(jié)果鏈(例如,存儲(chǔ)在每個(gè)模塊中的各散列值)一起來(lái)證明其初始狀態(tài)(例如,測(cè)量)。接收這些測(cè)量結(jié)果作為由證明器102提供至應(yīng)用質(zhì)詢的響應(yīng)的一部分,驗(yàn)證器104則可以能夠從kv,p導(dǎo)出程序密鑰km,并且鑒于在應(yīng)用質(zhì)詢中由驗(yàn)證器104提供的臨時(shí)值僅基于利用程序密鑰km計(jì)算的mac來(lái)驗(yàn)證km的正確導(dǎo)出。這種方式可以在例如由執(zhí)行意識(shí)存儲(chǔ)器保護(hù)使能的低端設(shè)備中尤其有用,所述低端設(shè)備不需要用于為單獨(dú)的嵌入式應(yīng)用提供可信執(zhí)行的可信os、可信固件或特權(quán)cpu模式(例如,以最小的硬件和軟件成本)。對(duì)稱信任鏈還可以用于生成特定于軟件的加密密鑰(例如,用于“密封”所述軟件)。
圖5展示了根據(jù)本公開(kāi)的至少一個(gè)實(shí)施例的從驗(yàn)證器的角度的對(duì)稱密鑰和信任鏈的示例操作。初始地,可以在驗(yàn)證器中觸發(fā)證明。示例證明觸發(fā)可以包括例如:驗(yàn)證器或證明器的激活、訪問(wèn)從所述證明器接收的驗(yàn)證器中的資源的請(qǐng)求、從所述證明器正在接收的數(shù)據(jù)等。然后可以在操作502中作出有關(guān)是否需要密鑰分配的判定。如果例如所述驗(yàn)證器從未與所述證明器進(jìn)行交互、現(xiàn)有的對(duì)稱密鑰被損壞或者已到期等,則可能需要密鑰分配。如果在操作502中確定需要密鑰分配,則在操作504中可以將設(shè)備質(zhì)詢傳輸至所述證明器??梢栽诓僮?06中接收對(duì)所述設(shè)備質(zhì)詢的響應(yīng),所述響應(yīng)至少包括密鑰數(shù)據(jù)和票數(shù)據(jù)。所述驗(yàn)證器則可以在操作508中繼續(xù)將至少所述票數(shù)據(jù)傳輸至鑒定器。然后可以在操作510中作出有關(guān)是否響應(yīng)于在操作508中傳輸至少所述票數(shù)據(jù)而從所述鑒定器接收至少包含授權(quán)令牌的消息的判定。如果在操作510中確定未接收到包括所述授權(quán)令牌的消息,則在操作512中密鑰分配操作可以終止或者可選地返回至另一次嘗試的操作504。如果在操作510中確定接收到至少包括所述授權(quán)令牌的消息,則在操作514中所述授權(quán)令牌可以用于設(shè)置對(duì)稱密鑰(例如,至少基于在操作506中接收的所述密鑰數(shù)據(jù))。然后可以在操作516中將設(shè)置所述密鑰的確認(rèn)傳輸至所述證明器。
如果在操作502中確定應(yīng)用和/或數(shù)據(jù)認(rèn)證需要證明(例如,不需要密鑰分配),則在操作518中可以將應(yīng)用質(zhì)詢傳輸至所述證明器??梢栽诓僮?20中接收對(duì)所述應(yīng)用質(zhì)詢的響應(yīng)。所述驗(yàn)證器可以在操作522中繼續(xù)對(duì)所述響應(yīng)的內(nèi)容進(jìn)行認(rèn)證。對(duì)所述響應(yīng)的內(nèi)容進(jìn)行認(rèn)證可以至少包括:對(duì)在所述響應(yīng)中提供的程序密鑰執(zhí)行mac以便判定是否基于在操作514中設(shè)置的所述對(duì)稱密鑰而生成所述程序密鑰??梢栽诓僮?24中確定基于所述認(rèn)證的回復(fù),并且然后在操作526中將其傳輸至所述證明器。
圖6展示了根據(jù)本公開(kāi)的至少一個(gè)實(shí)施例的從證明器的角度的對(duì)稱密鑰和信任鏈的示例操作。圖6中公開(kāi)的操作假定已經(jīng)發(fā)生密鑰分配操作(例如,諸如在圖5中公開(kāi)的,操作504至518),從而使得對(duì)稱密鑰已經(jīng)駐留在所述證明器中??梢栽诓僮?00中激活所述證明器。在證明器激活之后,可以在操作602中發(fā)生引導(dǎo)加載,其中,例如可以至少基于計(jì)數(shù)器、所述引導(dǎo)加載器的測(cè)量結(jié)果、以及所述對(duì)稱密鑰來(lái)生成框架密鑰(例如,引導(dǎo)加載器密鑰)。
在所述計(jì)數(shù)器在操作604中遞增之后,可以在操作606中加載下一代碼模塊。例如,可以在所述引導(dǎo)代碼之后加載os/任務(wù)模塊,這則可以跟隨在將其他軟件等加載到所述證明器中之后。在操作606中加載所述下一代碼模塊之后,可以在操作608中基于所述計(jì)數(shù)器的當(dāng)前值、正在加載的當(dāng)前代碼模塊的測(cè)量結(jié)果、以及針對(duì)先前的代碼模塊生成的密鑰(例如,框架密鑰或先前的程序密鑰)來(lái)生成所述代碼模塊的程序密鑰。然后可以在操作610中作出有關(guān)是否存在要加載到所述證明器中的附加代碼模塊的判定。在操作610中確定仍存在要加載的附加代碼模塊可以跟隨在返回至操作604之后,其中,所述計(jì)數(shù)器可以針對(duì)所述下一代碼模塊遞增。否則,如果在操作610中確定已經(jīng)加載了所述代碼模塊中的全部,則在操作612中所述證明器可以開(kāi)始監(jiān)聽(tīng)來(lái)自所述驗(yàn)證器的質(zhì)詢。
使用信任鏈密鑰導(dǎo)出來(lái)密封數(shù)據(jù)
以上已經(jīng)描述了各實(shí)施例,所述各實(shí)施例允許驗(yàn)證器104利用鑒定器106所支持的質(zhì)詢/響應(yīng)方法來(lái)對(duì)證明器102中的應(yīng)用進(jìn)行認(rèn)證。此系統(tǒng)可以防止驗(yàn)證器104從可能已經(jīng)受到危及的證明器102中的應(yīng)用接收數(shù)據(jù),但是其不能防止黑客、惡意軟件等訪問(wèn)和/或更改存儲(chǔ)在證明器102上的應(yīng)用數(shù)據(jù)。加密“密封”是一種保護(hù)機(jī)制,其中,可以對(duì)數(shù)據(jù)進(jìn)行加密(例如,“密封”)以防止危及數(shù)據(jù)。在至少一個(gè)實(shí)施例中,可以在具有相同軟件狀態(tài)(例如,基于單獨(dú)代碼模塊的測(cè)量的相同軟件版本)的相同平臺(tái)上僅對(duì)密封數(shù)據(jù)進(jìn)行解密(例如,“解封”),如當(dāng)對(duì)所述數(shù)據(jù)進(jìn)行首次密封時(shí)。密封通常需要基于以下各項(xiàng)所保持的tpm標(biāo)準(zhǔn)的可信運(yùn)行時(shí)間(諸如可信平臺(tái)模塊(tpm)):可信計(jì)算組織(tcg);基于固件的tpm(ftpm)解決方案;或者另一種認(rèn)證系統(tǒng),所述認(rèn)證系統(tǒng)可以安全地記錄對(duì)平臺(tái)(例如,平臺(tái)配置寄存器(pcr))上的軟件的測(cè)量結(jié)果并且在解封過(guò)程中可以驗(yàn)證當(dāng)前的測(cè)量結(jié)果集合與在密封明文時(shí)所記錄的那些測(cè)量結(jié)果相匹配。所述可信運(yùn)行時(shí)間另外需要僅可信運(yùn)行時(shí)間代碼自身可用的秘密加密密鑰?;谶@些要求,對(duì)os有關(guān)的可信運(yùn)行時(shí)間的硬件支持可引入大量的成本,并且對(duì)于低成本且資源受限的設(shè)備(諸如傳感器、rfid卡、可穿戴設(shè)備等)通常不是可行的。由于資源受限設(shè)備可以是用于許多新應(yīng)用的使能器,因此可預(yù)見(jiàn)的是持續(xù)需要低成本的解決方案。
本公開(kāi)可以進(jìn)一步涉及使用信任鏈密鑰導(dǎo)出來(lái)密封數(shù)據(jù)。在至少一個(gè)實(shí)施例中,信任鏈可以用于導(dǎo)出密封密鑰以用于對(duì)證明器設(shè)備102上的數(shù)據(jù)進(jìn)行密封。證明器設(shè)備102可以是資源受限的,并且因此可能不能夠支持傳統(tǒng)上執(zhí)行數(shù)據(jù)密封所需的信任基礎(chǔ)設(shè)施。為了降低這些有限資源的壓力,可以在不需要可信運(yùn)行時(shí)間的情況下在證明器設(shè)備102中生成密封密鑰。用于密封的密鑰導(dǎo)出鏈可以與以上呈現(xiàn)的用于證明的密鑰導(dǎo)出鏈并行建立,區(qū)別為不包括臨時(shí)值或計(jì)數(shù)器以確保所述密封密鑰跨重引導(dǎo)而是相同的。相反,按照需要,密封密鑰鏈被當(dāng)作根密鑰鏈,從所述根密鑰鏈中可以導(dǎo)出特定于會(huì)話的密鑰和特定于應(yīng)用的密鑰。由于所述密封密鑰是與狀態(tài)相關(guān)的,因此還公開(kāi)了一種用于在軟件升級(jí)過(guò)程中對(duì)密封數(shù)據(jù)進(jìn)行授權(quán)遷移的方法。
在至少一個(gè)實(shí)施例中,設(shè)備可以被配置成用于使用信任鏈來(lái)密封數(shù)據(jù)。所述設(shè)備至少可以包括例如存儲(chǔ)器和處理器。所述處理器可以至少用于從所述存儲(chǔ)器加載代碼模塊。在所述加載代碼模塊之后,所述處理器可以進(jìn)一步用于:測(cè)量所述代碼模塊;確定與所述代碼模塊相對(duì)應(yīng)的密封密鑰,其中,所述密封密鑰是至少基于與先前加載的代碼模塊相對(duì)應(yīng)的在先密封密鑰以及所述代碼模塊的測(cè)量結(jié)果而確定的;以及使用所述密封密鑰對(duì)與所述加載的代碼模塊相對(duì)應(yīng)的數(shù)據(jù)進(jìn)行密封。
在至少一個(gè)實(shí)施例中,所述設(shè)備進(jìn)一步包括:平臺(tái)初始化模塊,所述平臺(tái)初始化模塊用于將信任根代碼加載到所述設(shè)備中。所述信任根代碼可以例如使得所述處理器至少基于所述存儲(chǔ)器的受到存儲(chǔ)器保護(hù)邏輯保護(hù)的區(qū)域中的平臺(tái)專用根密封密鑰來(lái)確定與從所述存儲(chǔ)器加載的第一代碼模塊相對(duì)應(yīng)的密封密鑰,所述存儲(chǔ)器保護(hù)邏輯僅允許所述信任根代碼訪問(wèn)所述平臺(tái)專用根密封密鑰。所述處理器可以進(jìn)一步用于:判定所述存儲(chǔ)器中是否存在所述平臺(tái)專用根密封密鑰;以及如果確定所述存儲(chǔ)器中不存在所述平臺(tái)專用根密封密鑰則生成新的平臺(tái)專用根密封密鑰。
在相同或不同的實(shí)施例中,所述處理器可以進(jìn)一步用于:判定軟件更新在所述存儲(chǔ)器中針對(duì)所述加載的代碼模塊中的任何代碼模塊是否未決。如果確定軟件更新針對(duì)代碼模塊是未決的,則所述處理器可以進(jìn)一步用于:使用認(rèn)證密鑰對(duì)所述軟件更新進(jìn)行認(rèn)證;和/或判定所述軟件更新是否包括指示不應(yīng)當(dāng)遷移密封數(shù)據(jù)的元數(shù)據(jù)以便利用所述代碼模塊的更新版本進(jìn)行操作。確定軟件更新是未決的可以進(jìn)一步使所述處理器:至少基于與先前加載的代碼模塊相對(duì)應(yīng)的在先密封密鑰以及所述軟件更新針對(duì)其未決的所述代碼模塊的測(cè)量結(jié)果來(lái)確定舊密封密鑰;以及至少基于與所述先前加載的代碼模塊相對(duì)應(yīng)的所述在先密封密鑰以及所述軟件更新的測(cè)量結(jié)果來(lái)確定新密封密鑰。所述處理器然后可以進(jìn)一步用于:執(zhí)行所述軟件更新;使用所述舊密封密鑰對(duì)與所述軟件更新針對(duì)其未決的所述代碼模塊相對(duì)應(yīng)的所述密封數(shù)據(jù)進(jìn)行解封;以及使用所述新密封密鑰對(duì)與所述軟件更新針對(duì)其未決的所述代碼模塊相對(duì)應(yīng)的所述解封數(shù)據(jù)進(jìn)行重新密封。與本公開(kāi)一致,一種用于使用信任鏈來(lái)密封數(shù)據(jù)的示例方法可以包括:從設(shè)備的存儲(chǔ)器加載代碼模塊;測(cè)量所述代碼模塊;確定與所述代碼模塊相對(duì)應(yīng)的密封密鑰,其中,所述密封密鑰是至少基于與先前加載的代碼模塊相對(duì)應(yīng)的在先密封密鑰以及所述代碼模塊的測(cè)量結(jié)果而確定的;以及使用所述密封密鑰對(duì)與所述加載的模塊相對(duì)應(yīng)的數(shù)據(jù)進(jìn)行密封。
圖7展示了根據(jù)本公開(kāi)的至少一個(gè)實(shí)施例的導(dǎo)出密封密鑰的示例。雖然圖7展示了在圖4中公開(kāi)的證明示例的框架內(nèi)導(dǎo)出密封密鑰的示例,但是重要的是注意到,圖4中描述的結(jié)構(gòu)和/或功能中的全部對(duì)于導(dǎo)出密封密鑰可以不是必需的。這些結(jié)構(gòu)和/或功能僅提供為理解以下描述的實(shí)施例的上下文,因?yàn)橛蓤D4和圖7利用的方法可以是相似的。圖7中用粗體強(qiáng)調(diào)了在圖7中作出的對(duì)圖4的原始公開(kāi)的添加。
通常,存儲(chǔ)器模塊204’中的引導(dǎo)代碼可以使得在啟動(dòng)(例如,引導(dǎo)、重引導(dǎo)等)證明器102”’的過(guò)程中加載信任根(rot)代碼。所述rot代碼可以初始化操作,通過(guò)所述操作,與加載每個(gè)相應(yīng)的代碼模塊一起生成密封密鑰s1、s2、s3等,所述每個(gè)相應(yīng)的代碼模塊包括例如如圖7所示的引導(dǎo)加載器400、os/任務(wù)402以及其他軟件404。可以對(duì)所述代碼模塊進(jìn)行“分層”,因?yàn)樗鼈兛梢栽谧C明器102”’中以不同的水平進(jìn)行操作。例如,可以將引導(dǎo)加載器400加載到證明器102”’中的第一層中(例如,具有更多訪問(wèn)特權(quán)的低級(jí)別層)。加載到每個(gè)層中的代碼模塊則可以使得代碼模塊加載到更高的層中,并且可以確定每個(gè)代碼模塊的相應(yīng)密封密鑰。以此方式,引導(dǎo)加載器400可以繼續(xù)將os/任務(wù)402以及其他軟件404加載到證明器102”’中的第二層上(例如,具有比所述第一層更少的訪問(wèn)特權(quán)的更高級(jí)別),并且可以確定os/任務(wù)402的密封密鑰s2以及其他軟件404的密封密鑰s3。密封密鑰s1、s2、s3等可以分別用于在引導(dǎo)加載器400、os/任務(wù)402以及其他軟件404中對(duì)數(shù)據(jù)進(jìn)行密封。
與本公開(kāi)一致,可以基于根密封密鑰s0導(dǎo)出密封密鑰,所述根密封密鑰可以存儲(chǔ)在存儲(chǔ)器模塊204’中。在至少一個(gè)實(shí)施例中,根密封密鑰s0可以在證明器102”’的初始化過(guò)程中僅由rot代碼訪問(wèn),并且在初始化之后可以存儲(chǔ)在包括存儲(chǔ)器保護(hù)邏輯的存儲(chǔ)器模塊204’的區(qū)域中,所述存儲(chǔ)器保護(hù)邏輯使得根密封密鑰s0不可讀直到重新初始化證明器102”’。如果在加載所述rot代碼時(shí)確定存儲(chǔ)器模塊204’中不存在根密封密鑰s0,則所述rot代碼可以生成新根密封密鑰s0。新根密封密鑰s0可以是由所述rot生成的隨機(jī)值。所述新根密封密鑰s0則可以用于生成密封密鑰s1、s2、s3等。如圖7所展示的,可以通過(guò)執(zhí)行mac功能基于當(dāng)前代碼模塊的測(cè)量結(jié)果(例如,散列值)以及與先前的層相對(duì)應(yīng)的密封密鑰來(lái)生成密封密鑰s1、s2、s3等。例如,s1=mac(s0,散列1),s2=mac(s1,散列2),s3=mac(s2,散列3)等。密封密鑰s1則可以用于對(duì)與引導(dǎo)加載器400相關(guān)聯(lián)的數(shù)據(jù)進(jìn)行密封,密封密鑰s2可以用于對(duì)與os/任務(wù)402相關(guān)聯(lián)的數(shù)據(jù)進(jìn)行密封,并且密封密鑰s3可以用于對(duì)與其他軟件404相關(guān)聯(lián)的數(shù)據(jù)進(jìn)行密封等。
密封密鑰s1、s2、s3等是特定于平臺(tái)的并且跨所有重引導(dǎo)是相同的。由于密封密鑰s1、s2、s3等是基于先前層的密封密鑰以及相關(guān)聯(lián)代碼模塊的散列值而確定的,因此解封密封數(shù)據(jù)的能力可能取決于證明器102”’的軟件狀態(tài)在生成所述密封密鑰之后未發(fā)生變化。如果證明器102”’的軟件狀態(tài)在未更新密封密鑰的情況下發(fā)生變化,則將不再能夠?qū)λ雒芊鈹?shù)據(jù)進(jìn)行解密。這可以防止黑客、惡意軟件等公開(kāi)敏感、機(jī)密和/或?qū)S袛?shù)據(jù),所述黑客、惡意軟件通過(guò)利用旨在危及證明器102”’安全的其他軟件來(lái)替代和/或更改代碼模塊從而攻擊證明器102”’。證明器102”’的軟件狀態(tài)還可以由于合法更新至代碼模塊而發(fā)生變化。關(guān)于圖9進(jìn)一步討論了允許合法軟件更新的操作。
圖8展示了根據(jù)本公開(kāi)的至少一個(gè)實(shí)施例的使用信任鏈密鑰導(dǎo)出來(lái)密封數(shù)據(jù)的示例操作。在操作800中,可以對(duì)設(shè)備進(jìn)行初始化(例如,引導(dǎo)、重引導(dǎo)等)。然后可以在操作802中作出有關(guān)所述設(shè)備中是否存在根密封密鑰s0的判定。在操作804中確定存在根密封密鑰s0可以跟隨在操作804之后,其中,可以作出有關(guān)軟件更新在所述設(shè)備中是否未決的進(jìn)一步判定。如果在操作804中確定軟件更新是未決的,則可以在圖9中繼續(xù)執(zhí)行所述軟件更新的操作。在操作804中確定沒(méi)有軟件更新是未決的可以跟隨在操作806之后,其中,所述設(shè)備可以繼續(xù)正常操作(例如,所述設(shè)備可以完成初始化過(guò)程并且進(jìn)入正常操作模式)。
在操作802中確定所述設(shè)備中不存在根密封密鑰s0可以跟隨在操作808之后,其中,可以在所述設(shè)備中生成根密封密鑰s0。然后可以在操作810中基于所述根密封密鑰s0以及與所述框架密鑰相對(duì)應(yīng)的代碼模塊的測(cè)量結(jié)果來(lái)確定框架密封密鑰(例如,密封密鑰s1)。在操作812中,然后可以使用所述框架密鑰來(lái)密封與所述引導(dǎo)加載器相關(guān)聯(lián)的數(shù)據(jù)(例如,包括rot代碼)??梢栽诓僮?14中加載另一代碼模塊,并且在操作816中可以基于在先密封密鑰(例如,與在先前的層中加載的所述代碼模塊相對(duì)應(yīng)的在先密封密鑰)以及在操作814中加載的所述代碼模塊的測(cè)量結(jié)果來(lái)確定程序密封密鑰(例如,密封密鑰s2)??梢栽诓僮?18中對(duì)與在操作814中加載的所述代碼模塊相關(guān)聯(lián)的數(shù)據(jù)進(jìn)行密封。在操作820中,可以繼續(xù)加載代碼模塊直到所有的代碼模塊被加載,在此之后,可以在操作806中進(jìn)行正常操作。
圖9展示了根據(jù)本公開(kāi)的至少一個(gè)實(shí)施例的用于在系統(tǒng)中使用信任鏈密鑰導(dǎo)出來(lái)處理軟件更新的示例操作。通常,可以以代碼模塊級(jí)來(lái)處理軟件更新??梢允沟盟龃a模塊可訪問(wèn)新密封數(shù)據(jù)和舊密封數(shù)據(jù)兩者,從而使得可以在所述更新卸載舊數(shù)據(jù)之前對(duì)數(shù)據(jù)進(jìn)行遷移??蛇x保護(hù)還可以被合并為所述更新的一部分以便幫助確保所述更新在安裝到所述設(shè)備(例如,證明器102”’)上時(shí)是安全的。
從圖8中展示的操作804繼續(xù),可以在操作900中加載代碼模塊。然后可以在操作902中作出有關(guān)針對(duì)所述代碼模塊更新是否未決的判定。在操作902中確定針對(duì)所述代碼模塊更新不是未決的可以跟隨在操作904中的有關(guān)是否存在要加載的附加代碼模塊的進(jìn)一步判定。確定存在要加載的另外代碼模塊可以跟隨在返回至用于加載下一代碼模塊的操作900之后。如果在操作904中確定不存在要加載的另外代碼模塊,則在操作906中所述設(shè)備可以繼續(xù)正常操作。
在操作902中確定針對(duì)所述代碼模塊更新是未決的可以跟隨在可選操作908至912之后。操作908至912可以是可選的,因?yàn)樗鼈兛梢允菍?shí)現(xiàn)方式相關(guān)的,并且因此不是在本公開(kāi)的所有實(shí)施例中都要求的。可以在操作908中作出有關(guān)可對(duì)針對(duì)所述代碼模塊的更新未決進(jìn)行認(rèn)證的判定。例如,所述rot可以使所述設(shè)備獲得用于對(duì)所述更新進(jìn)行認(rèn)證的認(rèn)證密鑰。證明器設(shè)備102”’中的所述rot或另一模塊/系統(tǒng)可以從經(jīng)認(rèn)證的提供方(例如,所述代碼模塊的制造商、所述設(shè)備的制造商等)獲得所述認(rèn)證密鑰??梢耘c所述更新一起或者作為單獨(dú)通信(例如,通過(guò)通信模塊218與所述經(jīng)認(rèn)證的提供方實(shí)施的)的一部分來(lái)獲得所述認(rèn)證密鑰。如果在操作908中未認(rèn)證所述更新,則在操作910中可以中止所述更新和密封數(shù)據(jù)遷移兩者,其可以跟隨在操作904中的有關(guān)是否存在要加載的附加代碼模塊的判定之后。如果在操作908中確定已對(duì)所述更新進(jìn)行認(rèn)證,則在操作912中可以作出有關(guān)所述代碼模塊和/或所述更新是否包括指示在所述更新過(guò)程中不應(yīng)當(dāng)遷移所述密封數(shù)據(jù)的元數(shù)據(jù)的判定。如果在操作912中確定所述元數(shù)據(jù)指示不應(yīng)當(dāng)遷移所述密封數(shù)據(jù),則在操作910中仍可以執(zhí)行所述更新,但是可能中止對(duì)密封數(shù)據(jù)的遷移。
如果在操作912中確定不存在指示不對(duì)所述密封數(shù)據(jù)進(jìn)行遷移的元數(shù)據(jù),則在操作914中可以針對(duì)現(xiàn)有的代碼模塊(例如,所述舊代碼模塊)和所述更新(例如,所述新代碼模塊)兩者生成密封密鑰??梢栽谡诟碌拇a模塊之前由層中的代碼模塊生成密鑰,其中,所述舊密封密鑰可以基于執(zhí)行與前一層相對(duì)應(yīng)的密封密鑰的mac以及所述舊代碼模塊的測(cè)量結(jié)果,并且所述新密封密鑰可以基于執(zhí)行與前一層相對(duì)應(yīng)的所述密封密鑰的mac以及對(duì)所述新代碼模塊的測(cè)量。然后可以在操作916中執(zhí)行軟件更新,并且在操作918中可以將所述密封數(shù)據(jù)遷移至所述新代碼模塊。所述密封數(shù)據(jù)的遷移可以包括例如:使用在操作914中確定的所述舊密封密鑰對(duì)所述密封數(shù)據(jù)進(jìn)行解封;以及使用同樣在操作914中確定的所述新密封密鑰進(jìn)行重新密封。在完成對(duì)密封數(shù)據(jù)的遷移之后,可以在操作920中刪除所述舊代碼模塊,所述操作可以跟隨在返回至用于判定是否具有仍需要加載的另外代碼模塊的操作904之后。
雖然圖5、圖6、圖8和圖9展示了根據(jù)不同實(shí)施例的操作,但是將理解的是,對(duì)于其他實(shí)施例來(lái)說(shuō),并非圖5、圖6、圖8和圖9中所描繪的所有操作都是必需的。確實(shí),在此完全可以設(shè)想,在本公開(kāi)的其他實(shí)施例中,可以采用任何附圖中未具體地示出、但仍然完全符合本公開(kāi)的方式將圖5、圖6、圖8和圖9中所描繪的操作和/或本文中所描述的其他操作進(jìn)行組合。因而,對(duì)未在一幅圖中準(zhǔn)確示出的特征和/或操作有所涉及的權(quán)利要求被視為落入本公開(kāi)的范圍和內(nèi)容內(nèi)。
如在本申請(qǐng)和權(quán)利要求書(shū)中所使用的,由術(shù)語(yǔ)“和/或”接合的一系列項(xiàng)目可意指所列項(xiàng)目的任何組合。例如,短語(yǔ)“a、b和/或c”可意指a;b;c;a和b;a和c;b和c;或a、b和c。如在本申請(qǐng)和權(quán)利要求書(shū)中所使用的,由術(shù)語(yǔ)“中的至少一項(xiàng)”接合的一系列項(xiàng)目可意指所列術(shù)語(yǔ)的任何組合。例如,短語(yǔ)“a、b或c中的至少一項(xiàng)”可意指a;b;c;a和b;a和c;b和c;或a、b和c。
如本文中任何實(shí)施例所使用的,術(shù)語(yǔ)“模塊”可以指被配置成用于執(zhí)行前述操作中任一操作的軟件、固件和/或電路。軟件可以具體化為非瞬態(tài)計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)上所記錄的軟件包、代碼、指令、指令集和/或數(shù)據(jù)。固件可以具體化為存儲(chǔ)器設(shè)備中硬編碼(例如,非易失性的)的代碼、指令或指令集和/或數(shù)據(jù)。如本文中任何實(shí)施例所使用的,“電路”可以例如單一地或以任何組合形式包括硬接線電路、可編程電路(諸如包括一個(gè)或多個(gè)個(gè)體指令處理核的計(jì)算機(jī)處理器)、狀態(tài)機(jī)電路、和/或存儲(chǔ)有可由可編程電路執(zhí)行的指令的固件。這些模塊可以統(tǒng)一地或單獨(dú)地具體化為形成例如,集成電路(ic)、片上系統(tǒng)(soc)、臺(tái)式計(jì)算機(jī)、膝上計(jì)算機(jī)、平板計(jì)算機(jī)、服務(wù)器、智能電話等的較大系統(tǒng)的一部分的電路。
在此描述的任何操作可以在系統(tǒng)中實(shí)現(xiàn),所述系統(tǒng)包括具有單獨(dú)地或組合地存儲(chǔ)在其上的多條指令的一個(gè)或多個(gè)存儲(chǔ)介質(zhì)(諸如,非瞬態(tài)存儲(chǔ)介質(zhì)),當(dāng)這些指令由一個(gè)或多個(gè)處理器執(zhí)行時(shí)執(zhí)行這些方法。此處,處理器可以包括例如:服務(wù)器cpu、移動(dòng)設(shè)備cpu、和/或其他可編程電路。而且,旨在使得在此描述的操作可以跨多個(gè)物理設(shè)備(諸如在多于一個(gè)的不同物理位置處的處理結(jié)構(gòu))分布。存儲(chǔ)介質(zhì)可以包括任何類型的有形介質(zhì),例如包括以下各項(xiàng)的任何類型的磁盤:硬盤、軟盤、光盤、壓縮盤-只讀存儲(chǔ)器(cd-rom)、可復(fù)寫cd(cd-rw)、和磁光盤、如只讀存儲(chǔ)器(rom)的半導(dǎo)體器件、如動(dòng)態(tài)和靜態(tài)ram的隨機(jī)存取存儲(chǔ)器(ram)、可擦可編程只讀存儲(chǔ)器(eprom)、電可擦可編程只讀存儲(chǔ)器(eeprom)、閃存、固態(tài)盤(ssd)、嵌入式多媒體卡(emmc)、安全數(shù)字輸入/輸出(sdio)卡、磁卡或光卡、或者適合于存儲(chǔ)電子指令的任何類型的介質(zhì)。其他實(shí)施例可以實(shí)現(xiàn)為由可編程控制設(shè)備執(zhí)行的軟件模塊。
因此,本公開(kāi)涉及使用信任鏈密鑰導(dǎo)出來(lái)密封數(shù)據(jù)。在至少一個(gè)實(shí)施例中,信任鏈可以用于導(dǎo)出密封密鑰以用于對(duì)設(shè)備上的數(shù)據(jù)進(jìn)行密封。所述設(shè)備至少可以包括例如存儲(chǔ)器和處理器。所述處理器可以至少用于從所述存儲(chǔ)器加載代碼模塊。在所述加載代碼模塊之后,所述處理器可以進(jìn)一步用于:測(cè)量所述代碼模塊;確定與所述代碼模塊相對(duì)應(yīng)的密封密鑰,其中,所述密封密鑰是至少基于與先前加載的代碼模塊相對(duì)應(yīng)的在先密封密鑰以及所述代碼模塊的測(cè)量結(jié)果而確定的;以及使用所述密封密鑰對(duì)與所述加載的代碼模塊相對(duì)應(yīng)的數(shù)據(jù)進(jìn)行密封。由于所述密封密鑰是與狀態(tài)相關(guān)的,因此還公開(kāi)了一種用于在軟件升級(jí)過(guò)程中對(duì)密封數(shù)據(jù)進(jìn)行授權(quán)遷移的方法。
以下示例涉及進(jìn)一步的實(shí)施例。如以下所提供的,本公開(kāi)的以下示例可以包括主題,諸如設(shè)備、方法、用于存儲(chǔ)指令(當(dāng)被執(zhí)行時(shí)使機(jī)器基于所述方法執(zhí)行動(dòng)作)的至少一個(gè)機(jī)器可讀介質(zhì)、用于基于所述方法執(zhí)行動(dòng)作的裝置和/或用于對(duì)稱密鑰和信任鏈的系統(tǒng)。
根據(jù)示例1,提供了一種被配置成用于使用信任鏈來(lái)密封數(shù)據(jù)的設(shè)備。所述設(shè)備可以包括:存儲(chǔ)器;以及處理器,所述處理器至少用于從所述存儲(chǔ)器加載代碼模塊,其中,在所述加載代碼模塊之后,所述處理器進(jìn)一步用于:測(cè)量所述代碼模塊;確定與所述代碼模塊相對(duì)應(yīng)的密封密鑰,其中,所述密封密鑰是至少基于與先前加載的代碼模塊相對(duì)應(yīng)的在先密封密鑰以及所述代碼模塊的測(cè)量結(jié)果而確定的;以及使用所述密封密鑰對(duì)與所述加載的代碼模塊相對(duì)應(yīng)的數(shù)據(jù)進(jìn)行密封。
示例2可以包括如示例1所述的要素,并且可以進(jìn)一步包括:平臺(tái)初始化模塊,所述平臺(tái)初始化模塊用于將信任根代碼加載到所述設(shè)備中。
示例3可以包括如示例2所述的要素,其中,所述信任根代碼使得所述處理器至少基于所述存儲(chǔ)器的受到存儲(chǔ)器保護(hù)邏輯保護(hù)的區(qū)域中的平臺(tái)專用根密封密鑰來(lái)確定與從所述存儲(chǔ)器加載的第一代碼模塊相對(duì)應(yīng)的密封密鑰,所述存儲(chǔ)器保護(hù)邏輯僅允許所述信任根代碼訪問(wèn)所述平臺(tái)專用根密封密鑰。
示例4可以包括如示例3所述的要素,其中,所述處理器進(jìn)一步用于:判定所述存儲(chǔ)器中是否存在所述平臺(tái)專用根密封密鑰;以及如果確定所述存儲(chǔ)器中不存在所述平臺(tái)專用根密封密鑰則生成新的平臺(tái)專用根密封密鑰。
示例5可以包括如示例4所述的要素,其中,所述新的平臺(tái)專用密封密鑰是由所述信任根代碼生成的隨機(jī)值。
示例6可以包括如示例1至5中任一項(xiàng)所述的要素,其中,所述處理器進(jìn)一步用于:判定軟件更新在所述存儲(chǔ)器中針對(duì)所述加載的代碼模塊中的任何代碼模塊是否未決。
示例7可以包括如示例6所述的要素,其中,如果確定軟件更新針對(duì)代碼模塊是未決的,則所述處理器進(jìn)一步用于:使用認(rèn)證密鑰對(duì)所述軟件更新進(jìn)行認(rèn)證。
示例8可以包括如示例6至7中任一項(xiàng)所述的要素,其中,如果確定軟件更新針對(duì)代碼模塊是未決的,則所述處理器進(jìn)一步用于:判定所述軟件更新是否包括指示不應(yīng)當(dāng)遷移密封數(shù)據(jù)的元數(shù)據(jù)以便利用所述代碼模塊的更新版本進(jìn)行操作。
示例9可以包括如示例6至8中任一項(xiàng)所述的要素,其中,如果確定軟件更新針對(duì)代碼模塊是未決的,則所述處理器進(jìn)一步用于:至少基于與先前加載的代碼模塊相對(duì)應(yīng)的在先密封密鑰以及所述軟件更新針對(duì)其未決的所述代碼模塊的測(cè)量結(jié)果來(lái)確定舊密封密鑰;以及至少基于與所述先前加載的代碼模塊相對(duì)應(yīng)的所述在先密封密鑰以及所述軟件更新的測(cè)量結(jié)果來(lái)確定新密封密鑰。
示例10可以包括如示例9所述的要素,其中,所述處理器進(jìn)一步用于:執(zhí)行所述軟件更新;使用所述舊密封密鑰對(duì)與所述軟件更新針對(duì)其未決的所述代碼模塊相對(duì)應(yīng)的所述密封數(shù)據(jù)進(jìn)行解封;以及使用所述新密封密鑰對(duì)與所述軟件更新針對(duì)其未決的所述代碼模塊相對(duì)應(yīng)的所述解封數(shù)據(jù)進(jìn)行重新密封。
示例11可以包括如示例6至10中任一項(xiàng)所述的要素,其中,如果確定軟件更新針對(duì)代碼模塊是未決的,則所述處理器進(jìn)一步用于:至少基于與先前加載的代碼模塊相對(duì)應(yīng)的在先密封密鑰以及所述軟件更新針對(duì)其未決的所述代碼模塊的測(cè)量結(jié)果來(lái)確定舊密封密鑰;至少基于與所述先前加載的代碼模塊相對(duì)應(yīng)的所述在先密封密鑰以及所述軟件更新的測(cè)量結(jié)果來(lái)確定新密封密鑰;執(zhí)行所述軟件更新;使用所述舊密封密鑰對(duì)與所述軟件更新針對(duì)其未決的所述代碼模塊相對(duì)應(yīng)的所述密封數(shù)據(jù)進(jìn)行解封;以及使用所述新密封密鑰對(duì)與所述軟件更新針對(duì)其未決的所述代碼模塊相對(duì)應(yīng)的所述解封數(shù)據(jù)進(jìn)行重新密封。
示例12可以包括如示例1至11中任一項(xiàng)所述的要素,并且可以進(jìn)一步包括:第二信任鏈,所述第二信任鏈包括被配置成用于支持遠(yuǎn)程證明的密鑰。
示例13可以包括如示例1至12中任一項(xiàng)所述的要素,其中,當(dāng)所述密封密鑰被確定時(shí),所述密封密鑰取決于所述設(shè)備的軟件狀態(tài)。
示例14可以包括如示例13所述的要素,其中,如果所述設(shè)備的所述軟件狀態(tài)在不遷移所述密封數(shù)據(jù)的情況下發(fā)生變化,則所述密封數(shù)據(jù)不可被解封。
根據(jù)示例15,提供了一種用于使用信任鏈來(lái)密封數(shù)據(jù)的方法。所述方法可以包括:從設(shè)備的存儲(chǔ)器加載代碼模塊;測(cè)量所述代碼模塊;確定與所述代碼模塊相對(duì)應(yīng)的密封密鑰,其中,所述密封密鑰是至少基于與先前加載的代碼模塊相對(duì)應(yīng)的在先密封密鑰以及所述代碼模塊的測(cè)量結(jié)果而確定的;以及使用所述密封密鑰對(duì)與所述加載的模塊相對(duì)應(yīng)的數(shù)據(jù)進(jìn)行密封。
示例16可以包括如示例15所述的要素,并且可以進(jìn)一步包括:從所述存儲(chǔ)器加載信任根代碼;以及至少基于所述存儲(chǔ)器的受到存儲(chǔ)器保護(hù)邏輯保護(hù)的區(qū)域中的平臺(tái)專用根密封密鑰來(lái)確定與從所述存儲(chǔ)器加載的第一代碼模塊相對(duì)應(yīng)的密封密鑰,所述存儲(chǔ)器保護(hù)邏輯僅允許所述信任根代碼訪問(wèn)所述平臺(tái)專用根密封密鑰。
示例17可以包括如示例16所述的要素,并且可以進(jìn)一步包括:判定所述存儲(chǔ)器中是否存在所述平臺(tái)專用根密封密鑰;以及如果確定所述存儲(chǔ)器中不存在所述平臺(tái)專用根密封密鑰則生成新的平臺(tái)專用根密封密鑰。
示例18可以包括如示例17所述的要素,其中,所述新的平臺(tái)專用密封密鑰是由所述信任根代碼生成的隨機(jī)值。
示例19可以包括如示例15至18中任一項(xiàng)所述的要素,并且可以進(jìn)一步包括:判定軟件更新在所述存儲(chǔ)器中針對(duì)所述加載的代碼模塊中的任何代碼模塊是否未決。
示例20可以包括如示例19所述的要素,并且可以進(jìn)一步包括:如果確定軟件更新針對(duì)代碼模塊是未決的,則使用認(rèn)證密鑰對(duì)所述軟件更新進(jìn)行認(rèn)證。
示例21可以包括如示例19至20中任一項(xiàng)所述的要素,并且可以進(jìn)一步包括:如果確定軟件更新針對(duì)代碼模塊是未決的,則判定所述軟件更新是否包括指示不應(yīng)當(dāng)遷移密封數(shù)據(jù)的元數(shù)據(jù)以便利用所述代碼模塊的更新版本進(jìn)行操作。
示例22可以包括如示例19至21中任一項(xiàng)所述的要素,并且可以進(jìn)一步包括:如果確定軟件更新針對(duì)代碼模塊是未決的,則執(zhí)行以下各項(xiàng)中的至少一項(xiàng):使用認(rèn)證密鑰對(duì)所述軟件更新進(jìn)行認(rèn)證;或者判定所述軟件更新是否包括指示不應(yīng)當(dāng)遷移密封數(shù)據(jù)的元數(shù)據(jù)以便利用所述代碼模塊的更新版本進(jìn)行操作。
示例23可以包括如示例19至22中任一項(xiàng)所述的要素,并且可以進(jìn)一步包括:如果確定軟件更新針對(duì)代碼模塊是未決的,則至少基于與先前加載的代碼模塊相對(duì)應(yīng)的在先密封密鑰以及所述軟件更新針對(duì)其未決的所述代碼模塊的測(cè)量結(jié)果來(lái)確定舊密封密鑰;以及至少基于與所述先前加載的代碼模塊相對(duì)應(yīng)的所述在先密封密鑰以及所述軟件更新的測(cè)量結(jié)果來(lái)確定新密封密鑰。
示例24可以包括如示例23所述的要素,并且可以進(jìn)一步包括:執(zhí)行所述軟件更新;使用所述舊密封密鑰對(duì)與所述軟件更新針對(duì)其未決的所述代碼模塊相對(duì)應(yīng)的所述密封數(shù)據(jù)進(jìn)行解封;以及使用所述新密封密鑰使用所述在先密封密鑰對(duì)與所述軟件更新針對(duì)其未決的所述代碼模塊相對(duì)應(yīng)的所述解封數(shù)據(jù)進(jìn)行重新密封。
示例25可以包括如示例19至24中任一項(xiàng)所述的要素,并且可以進(jìn)一步包括:如果確定軟件更新針對(duì)代碼模塊是未決的,則至少基于與先前加載的代碼模塊相對(duì)應(yīng)的在先密封密鑰以及所述軟件更新針對(duì)其未決的所述代碼模塊的測(cè)量結(jié)果來(lái)確定舊密封密鑰;至少基于與所述先前加載的代碼模塊相對(duì)應(yīng)的所述在先密封密鑰以及所述軟件更新的測(cè)量結(jié)果來(lái)確定新密封密鑰;執(zhí)行所述軟件更新;使用所述舊密封密鑰對(duì)與所述軟件更新針對(duì)其未決的所述代碼模塊相對(duì)應(yīng)的所述密封數(shù)據(jù)進(jìn)行解封;以及使用所述新密封密鑰使用所述在先密封密鑰對(duì)與所述軟件更新針對(duì)其未決的所述代碼模塊相對(duì)應(yīng)的所述解封數(shù)據(jù)進(jìn)行重新密封。
示例26可以包括如示例15至25中任一項(xiàng)所述的要素,并且可以進(jìn)一步包括:確定所述設(shè)備中的第二信任鏈,所述單獨(dú)信任鏈包括被配置成用于支持遠(yuǎn)程證明的密鑰。
示例27可以包括如示例15至26中任一項(xiàng)所述的要素,其中,當(dāng)所述密封密鑰被確定時(shí),所述密封密鑰取決于所述設(shè)備的軟件狀態(tài)。
示例28可以包括如示例27所述的要素,其中,如果所述設(shè)備的所述軟件狀態(tài)在不遷移所述密封數(shù)據(jù)的情況下發(fā)生變化,則所述密封數(shù)據(jù)不可被解封。
根據(jù)示例29,提供了一種至少包括設(shè)備的系統(tǒng),所述系統(tǒng)被安排成用于執(zhí)行如以上示例15至28中任一項(xiàng)所述的方法。
根據(jù)示例30,提供了一種被安排成用于執(zhí)行如以上示例15至28中任一項(xiàng)所述的方法的芯片組。
根據(jù)示例31,提供了至少一種機(jī)器可讀介質(zhì),所述至少一種機(jī)器可讀介質(zhì)包括多條指令,所述多條指令響應(yīng)于正在計(jì)算設(shè)備上被執(zhí)行而使所述計(jì)算設(shè)備執(zhí)行根據(jù)以上示例15至28中任一項(xiàng)所述的方法。
根據(jù)示例32,提供了一種被配置成用于使用信任鏈來(lái)密封數(shù)據(jù)的設(shè)備,所述設(shè)備被安排成用于執(zhí)行如以上示例15至28中任一項(xiàng)所述的方法。
根據(jù)示例33,提供了一種用于使用信任鏈來(lái)密封數(shù)據(jù)的系統(tǒng)。所述系統(tǒng)可以包括:用于從設(shè)備的存儲(chǔ)器加載代碼模塊的裝置;用于測(cè)量所述代碼模塊的裝置;用于確定與所述代碼模塊相對(duì)應(yīng)的密封密鑰的裝置,其中,所述密封密鑰是至少基于與先前加載的代碼模塊相對(duì)應(yīng)的在先密封密鑰以及所述代碼模塊的測(cè)量結(jié)果而確定的;以及用于使用所述密封密鑰對(duì)與所述加載的模塊相對(duì)應(yīng)的數(shù)據(jù)進(jìn)行密封的裝置。
示例34可以包括如示例33所述的要素,并且可以進(jìn)一步包括:用于從所述存儲(chǔ)器加載信任根代碼的裝置;以及用于至少基于所述存儲(chǔ)器的受到存儲(chǔ)器保護(hù)邏輯保護(hù)的區(qū)域中的平臺(tái)專用根密封密鑰來(lái)確定與從所述存儲(chǔ)器加載的第一代碼模塊相對(duì)應(yīng)的密封密鑰的裝置,所述存儲(chǔ)器保護(hù)邏輯僅允許所述信任根代碼訪問(wèn)所述平臺(tái)專用根密封密鑰。
示例35可以包括如示例34所述的要素,并且可以進(jìn)一步包括:用于判定所述存儲(chǔ)器中是否存在所述平臺(tái)專用根密封密鑰的裝置;以及如果確定所述存儲(chǔ)器中不存在所述平臺(tái)專用根密封密鑰則用于生成新的平臺(tái)專用根密封密鑰的裝置。
示例36可以包括如示例35所述的要素,其中,所述新的平臺(tái)專用密封密鑰是由所述信任根代碼生成的隨機(jī)值。
示例37可以包括如示例33至36中任一項(xiàng)所述的要素,并且可以進(jìn)一步包括:用于判定軟件更新在所述存儲(chǔ)器中針對(duì)所述加載的代碼模塊中的任何代碼模塊是否未決的裝置。
示例38可以包括如示例37所述的要素,并且可以進(jìn)一步包括:如果用于確定軟件更新針對(duì)代碼模塊是未決的則使用認(rèn)證密鑰對(duì)所述軟件更新進(jìn)行認(rèn)證的裝置。
示例39可以包括如示例37至38中任一項(xiàng)所述的要素,并且可以進(jìn)一步包括:用于如果確定軟件更新針對(duì)代碼模塊是未決的則判定所述軟件更新是否包括指示不應(yīng)當(dāng)遷移密封數(shù)據(jù)的元數(shù)據(jù)以便利用所述代碼模塊的更新版本進(jìn)行操作的裝置。
示例40可以包括如示例37至39中任一項(xiàng)所述的要素,并且可以進(jìn)一步包括:用于如果確定軟件更新針對(duì)代碼模塊是未決的則至少基于與先前加載的代碼模塊相對(duì)應(yīng)的在先密封密鑰以及所述軟件更新針對(duì)其未決的所述代碼模塊的測(cè)量結(jié)果來(lái)確定舊密封密鑰的裝置;以及用于至少基于與所述先前加載的代碼模塊相對(duì)應(yīng)的所述在先密封密鑰以及所述軟件更新的測(cè)量結(jié)果來(lái)確定新密封密鑰的裝置。
示例41可以包括如示例40所述的要素,并且可以進(jìn)一步包括:用于執(zhí)行所述軟件更新的的裝置;用于使用所述舊密封密鑰對(duì)與所述軟件更新針對(duì)其未決的所述代碼模塊相對(duì)應(yīng)的所述密封數(shù)據(jù)進(jìn)行解封的的裝置;以及用于使用所述新密封密鑰使用所述在先密封密鑰對(duì)與所述軟件更新針對(duì)其未決的所述代碼模塊相對(duì)應(yīng)的所述解封數(shù)據(jù)進(jìn)行重新密封的裝置。
示例42可以包括如示例33至41中任一項(xiàng)所述的要素,并且可以進(jìn)一步包括:用于確定所述設(shè)備中的單獨(dú)信任鏈的裝置,所述單獨(dú)信任鏈包括被配置成用于支持遠(yuǎn)程證明的密鑰。
示例43可以包括如示例33至42中任一項(xiàng)所述的要素,其中,當(dāng)所述密封密鑰被確定時(shí),所述密封密鑰取決于所述設(shè)備的軟件狀態(tài)。
示例44可以包括如示例43所述的要素,其中,如果所述設(shè)備的所述軟件狀態(tài)在不遷移所述密封數(shù)據(jù)的情況下發(fā)生變化,則所述密封數(shù)據(jù)不可被解封。
本文已采用的術(shù)語(yǔ)和表達(dá)用作對(duì)術(shù)語(yǔ)進(jìn)行描述而非進(jìn)行限制,并且在使用這種術(shù)語(yǔ)和表達(dá)時(shí)不旨在排除所示且所描述的特征(或其部分)的任何等效物,并且認(rèn)識(shí)到在權(quán)利要求書(shū)范圍內(nèi)的各種修改是有可能的。從而,權(quán)利要求書(shū)意在涵蓋所有這類等效方案。