P(例如,Apple的SEP)的設(shè)備間啟用。在一種實施例中,公用密鑰,例如,KSEP α(]Βι,可以從由兩個設(shè)備的SEP共享的對稱硬件密鑰中推導(dǎo)出。KSEP α(]Βι然后可以用于簽署可以在遠(yuǎn)程解鎖過程中使用的一個或多個其它密鑰。被公用密鑰,KSEP α。^簽署的密鑰可以被認(rèn)為是從具有SEP的設(shè)備,S卩,可以被信任的設(shè)備生成的。在另一種實施例中,可以使用已被公共權(quán)威機(jī)構(gòu)認(rèn)證的特定于設(shè)備的非對稱密鑰。證書可以包括可用于確定設(shè)備保護(hù)水平的設(shè)備分類。
[0029] 其中一種可以被KSEP驗證的密鑰可以是設(shè)備密鑰,K d,其可以是對每個設(shè)備唯一的并且用于識別該設(shè)備。如下文所提到的,Kdl可以是識別第一設(shè)備的密鑰,以及Kd2可以是識別第二設(shè)備的密鑰。在一種實施例中,Kd可以從為該配對隨機(jī)生成的秘密、隨機(jī)生成的通用唯一標(biāo)識符(UUID)(例如,識別當(dāng)前組用戶密鑰的KeyBag UUID)和特定于設(shè)備的硬件密鑰,例如,KSEP得出。KSEP可以是可用于保護(hù)與設(shè)備相關(guān)聯(lián)的數(shù)據(jù)的、設(shè)備密鑰管理模塊中的其中一個設(shè)備密鑰。隨機(jī)生成的秘密可以是在創(chuàng)建時由密鑰存儲庫生成的隨機(jī)值,以提供密鑰熵和唯一性。UUID可以是用于被機(jī)制解鎖的KeyBag。特定于設(shè)備的硬件密鑰可以是具有特定可用性(例如,在任何時間可用、在已被解鎖過之后可用、或當(dāng)設(shè)備被解鎖時可用)的數(shù)據(jù)保護(hù)類別密鑰。第一設(shè)備可以使用“被解鎖的”設(shè)備密鑰,使得只有在它自身被解鎖時才能認(rèn)證。第二設(shè)備可以使用“已被解鎖過”設(shè)備密鑰,其可以要求設(shè)備在它能被遠(yuǎn)程解鎖之前已被解鎖過一次。在解鎖過程中,Kdl和Kd2可以分別認(rèn)證第一和第二設(shè)備。在一些實施例中,當(dāng)?shù)诙O(shè)備以前從未被解鎖過時,Kdl和Kd2可用于第一設(shè)備解鎖第二設(shè)備。
[0030]在第二設(shè)備以前已被解鎖過的實施例中,設(shè)備解鎖密鑰,Kdu,不僅可以用于認(rèn)證該設(shè)備,還可以用于識別設(shè)備是否之前已被用戶解鎖過。Kdu可以在相應(yīng)設(shè)備的SEP中生成,并利用與該設(shè)備相關(guān)聯(lián)的密碼進(jìn)行保護(hù)。如下文所提到的,Kdul可以是與第一設(shè)備相關(guān)聯(lián)的設(shè)備解鎖密鑰,并且Kdu2可以是與第二設(shè)備相關(guān)聯(lián)的設(shè)備解鎖密鑰。在一種實施例中,只有當(dāng)設(shè)備之前已被解鎖過時,Kdu才可以被推導(dǎo)出,其可以意味著,它已被某人利用正確的密碼訪問過。如果設(shè)備丟失,新的用戶可能不會具有密碼來解鎖該設(shè)備。如果新的用戶試圖通過擦除設(shè)備上的所有數(shù)據(jù)將設(shè)備恢復(fù)到其原始狀態(tài),則Kdu會丟失。沒有K du,設(shè)備將不再能夠向另一個設(shè)備證明它仍在相同用戶的控制之下。換句話說,Kdu不僅可用于證明設(shè)備是可信任設(shè)備,而且還可證明它仍然在相同用戶的控制之下。因此,第一設(shè)備可以依賴Kdu2的存在來確保當(dāng)?shù)诙O(shè)備不再被用戶擁有并已被重新引導(dǎo)(reboot)時它不會意外地解鎖第二設(shè)備。
[0031]圖2-5根據(jù)本公開內(nèi)容的實施例示出了在遠(yuǎn)程解鎖方法的各個階段中的示例性算法步驟。雖然以下的實施例描述了一個方向的解鎖過程(例如,利用第一設(shè)備解鎖第二設(shè)備),但是應(yīng)當(dāng)理解,在不背離本公開內(nèi)容的精神的情況下,所公開的系統(tǒng)和方法可以很容易地進(jìn)行修改以執(zhí)行兩個方向上的解鎖(例如,也利用第二設(shè)備解鎖第一設(shè)備)。
[0032]在圖2示出的實施例中,用于遠(yuǎn)程解鎖過程(例如,利用第一設(shè)備解鎖第二設(shè)備)的算法可以包括三個主要步驟。首先,第一設(shè)備和第二設(shè)備可以進(jìn)行配對(步驟201)。接著,第二設(shè)備可以授權(quán)由第一設(shè)備的遠(yuǎn)程解鎖(步驟202)。最后,第一設(shè)備可以響應(yīng)第一設(shè)備上的用戶輸入解鎖第二設(shè)備(步驟203)。這些步驟中的每一步將在以下更詳細(xì)地討論。
[0033]在第一步驟中,兩個設(shè)備可以進(jìn)行配對(步驟201)。當(dāng)設(shè)備處于彼此的附近區(qū)域時,設(shè)備可以利用任何合適的配對機(jī)制進(jìn)行配對,比如藍(lán)牙。在一種實施例中,藍(lán)牙配對可以是利用藍(lán)牙帶外(out-of-band)密鑰的安全配對。例如,設(shè)備可以通過利用其中一個設(shè)備上的相機(jī)捕獲在另一個設(shè)備的顯示器上顯示的計算機(jī)可讀碼(例如,QR碼或條形碼)進(jìn)行配對。這個碼可以包括配對這兩個設(shè)備所需的信息,諸如設(shè)備ID和其它信息(例如,藍(lán)牙帶外密鑰)。雖然在這些實施例中討論了附近區(qū)域的配對,但是應(yīng)當(dāng)理解,配對兩個設(shè)備不一定要求設(shè)備是在附近區(qū)域。事實上,在這一步驟中可以使用設(shè)計為在任何距離配對設(shè)備的任何配對機(jī)制。
[〇〇34]在被配對之后,設(shè)備可以經(jīng)歷注冊過程,該過程可以建立兩個設(shè)備之間的信任關(guān)系,使得其中一個設(shè)備可以被另一個設(shè)備安全地解鎖。換句話說,設(shè)備之間的遠(yuǎn)程解鎖可以被授權(quán)(步驟202)。特別地,注冊可以包括配對兩個設(shè)備的密鑰的控制器(例如,SEP)和還潛在地綁定兩個設(shè)備的SEP。這個步驟可以包括,例如,設(shè)備交換和交叉簽署可以在注冊過程期間認(rèn)證時,設(shè)置共享密鑰,并且在使用這個共享密鑰的解鎖過程期間使用的它們的公共密鑰。在一些例子中,配對可以對稱地在兩個設(shè)備上執(zhí)行。
[0035]圖3是示出圖2的注冊步驟202中的示例性算法步驟的流程圖。首先,第一設(shè)備(即,執(zhí)行解鎖的設(shè)備)可以發(fā)送公共密鑰,例如KduliPub,到第二設(shè)備(S卩,要被解鎖的設(shè)備)(步驟301)。這個公共密鑰可以在第一設(shè)備嘗試解鎖第二設(shè)備時用來驗證第一設(shè)備是可信任的設(shè)備。第二設(shè)備也可以執(zhí)行授權(quán),其可以包括當(dāng)用戶本地解鎖第二設(shè)備時從用戶接收密碼和可選地進(jìn)行帶外驗證(步驟302)。由于密碼保護(hù)Kdu2,因此它可以用來證明該設(shè)備是被用戶擁有的。第二設(shè)備然后可以用其私有密鑰Kdu2ip?vatf;簽署公共密鑰K dulipub (步驟303)。因此,第二設(shè)備可以確定在解鎖操作期間利用Kdul,pub認(rèn)證的設(shè)備可以是可信任的設(shè)備。
[0036]如果注冊成功,則第一設(shè)備可以用于如下地解鎖第二設(shè)備。圖4根據(jù)本公開內(nèi)容的實施例示出了在利用第一設(shè)備解鎖第二設(shè)備中的示例性算法步驟(即,圖2的步驟203)。在一些例子中,第一設(shè)備可以是手持式設(shè)備,并且第二設(shè)備可以是可穿戴設(shè)備。首先,兩個設(shè)備可以檢測到它們位于彼此的附近(步驟401)。在一些實施例中,這個步驟可以只要求設(shè)備能夠彼此定位,而無需它們彼此靠近??梢栽谶@兩個設(shè)備之間建立通信信道,諸如藍(lán)牙或W1-Fi信道(步驟402)。第一設(shè)備可以利用Kdul進(jìn)行認(rèn)證(步驟403)。附加地或可替代地,第二設(shè)備可以利用Kdu2進(jìn)行認(rèn)證??梢允褂谜镜秸?stat1n-to-stat1n)協(xié)議建立互相認(rèn)證和加密的隧道。在一種實施例中,這兩個設(shè)備都可以使用臨時加密密鑰(ephemeralencrypt1n key),其在該過程中利用在配對過程中交換的簽署密鑰進(jìn)行認(rèn)證。由于第一設(shè)備已被認(rèn)證,因此第二設(shè)備可以利用例如從由這兩個設(shè)備使用的臨時加密密鑰導(dǎo)出的協(xié)商會話密鑰發(fā)送隨機(jī)秘密密鑰S到第一設(shè)備(步驟404)。第一設(shè)備可以存儲該秘密密鑰(步驟405)。在以后的時間,第二設(shè)備可以利用密碼來解鎖(步驟406)。主密鑰Μ可以由第二設(shè)備從密碼中推導(dǎo)出(步驟407)。第二設(shè)備可以通過利用秘密密鑰S加密主密鑰Μ創(chuàng)建令牌(步驟408),使得當(dāng)?shù)谝辉O(shè)備將秘密密鑰S返回到第二設(shè)備時,第二設(shè)備可以使用S來解密令牌以檢索主密鑰Μ。附加地,第二設(shè)備可以利用用主密鑰Μ加密的秘密密鑰S串聯(lián)(concatenate)令牌,并將該串聯(lián)存儲為托管記錄(步驟409)。當(dāng)主密鑰Μ改變時,這可以允許第二設(shè)備恢復(fù)秘密密鑰S并建立新的令牌。在可替代的實施例中,第二設(shè)備可以利用秘密密鑰S為第一設(shè)備產(chǎn)生托管記錄,這可以允許設(shè)備在之前還沒有被解鎖過的情況下被解鎖,其中秘密密鑰S存儲封裝到秘密密鑰S的主密鑰M。換句話說,在第一種實施例中,固定的秘密和托管記錄可以在設(shè)置過程中被建立,并且在可替代的實施例中,隨機(jī)的秘密和臨時托管記錄可以在注冊過程中響應(yīng)于設(shè)備解鎖而被建立。
[0037]再次參考圖4,當(dāng)用戶決定利用第一設(shè)備解鎖第二設(shè)備時,第二設(shè)備可以利用Kdu2進(jìn)行認(rèn)證(步驟410)。第一設(shè)備可以利用Kdul進(jìn)行認(rèn)證(步驟411)。一旦被認(rèn)證,設(shè)備就可以彼此交換秘密。例如,第一設(shè)備可以將它從第二設(shè)備接收到的秘密密鑰S發(fā)送回到第二設(shè)備(步驟412)。這可以是對用戶利用第一設(shè)備的指紋掃描儀掃描其指紋的響應(yīng)。第二設(shè)備可以通過利用秘密密鑰S解密令牌檢索主密鑰Μ(步驟413)。主密鑰Μ可以允許第二設(shè)備被解鎖(步驟414)。
[0038]在一些第二設(shè)備之前從未被解鎖過的實施例中,Kd2可以用來代替在上述基于圖4的方法中的Kdu2。在一種實施例中,第二設(shè)備可以利用秘密密鑰S為第一設(shè)備產(chǎn)生托管記錄,這可以允許設(shè)備在之前還沒有被解鎖過的情況下被解鎖,其中,秘密密鑰S存儲封裝到秘密密鑰S的主密鑰M。當(dāng)?shù)谝辉O(shè)備試圖解鎖第二設(shè)備時,第二設(shè)備可以使用設(shè)備密鑰來定位托管記錄和秘密密鑰S以解開主密鑰M,其可以用于解鎖第二設(shè)備。
[0039]圖5是示出設(shè)備500的示例性模塊的框圖,其中設(shè)備500是諸如圖1的能夠或者解鎖另一個設(shè)備或者能被另一個設(shè)備解鎖或者能夠進(jìn)行兩者的第一設(shè)備1〇〇或第二設(shè)備112。設(shè)備500可以包括,例如,檢測模塊501、配對模塊502、密鑰簽署模塊503、發(fā)送模塊504、接收模塊505、認(rèn)證模塊506、密鑰生成模塊507和用戶輸入處理模塊508。檢測模塊501可以檢測第二設(shè)備(例如,當(dāng)?shù)诙O(shè)備在其附近時)。配對模塊502可以配對第一設(shè)備和第二設(shè)備。密鑰簽署模塊503可以利用另一個密鑰簽署一個或多個密鑰。發(fā)送模塊504可以發(fā)送一個或多個密鑰(例如,Kdul,S)到另一個設(shè)備。接收模塊505可以從另一個設(shè)備接收一個或多個密鑰(例如,S)。認(rèn)證模塊506可以認(rèn)證設(shè)備500。密鑰生成模塊507可以包括推導(dǎo)模塊,并且可以從密碼中推導(dǎo)出主密鑰并產(chǎn)生可以在解鎖過程中使用的一個或多個硬件