用于安全睡眠狀態(tài)的方法和裝置制造方法
【專利摘要】公開了用于安全睡眠狀態(tài)的方法和裝置。示例方法包括:響應于計算平臺的睡眠狀態(tài)的發(fā)起,加密該計算平臺的存儲器;以及當從該睡眠狀態(tài)恢復該計算平臺時解密該存儲器,其中,將該計算平臺置于該睡眠狀態(tài)包括對該計算設備的部分掉電以及保留該計算平臺的狀態(tài)。
【專利說明】用于安全睡眠狀態(tài)的方法和裝置
公開領域
[0001]本公開總體上涉及功率狀態(tài)管理并且更具體地涉及用于安全睡眠狀態(tài)的方法和
>J-U ρ?α裝直。
進旦冃月^
[0002]許多計算平臺(諸如桌上計算機和膝上計算機)可被置于除打開狀態(tài)或關閉狀態(tài)之外的一種或多種功率狀態(tài)。例如,某些計算平臺可被置于休眠(hibernat1n)狀態(tài)。將計算平臺置于休眠涉及對系統(tǒng)掉電,同時保留系統(tǒng)的狀態(tài)(例如,通過將隨機存取存儲器(RAM)的內(nèi)容寫入硬盤)??商娲?,某些計算平臺可被置于睡眠(sleep)狀態(tài)。將計算平臺置于睡眠狀態(tài)涉及切斷系統(tǒng)的許多但不是所有組件的電源并且保留系統(tǒng)的狀態(tài)。通常,從睡眠狀態(tài)進入打開狀態(tài)耗費的時間比從休眠狀態(tài)進入打開狀態(tài)的時間少。
附圖簡要說明
[0003]圖1是包括在此所公開的示例安全睡眠狀態(tài)模塊的示例計算平臺的框圖。
[0004]圖2是圖1的示例解密器的第一示例實現(xiàn)方式的框圖。
[0005]圖3A至圖3D是可被執(zhí)行以便實現(xiàn)圖1的示例安全睡眠狀態(tài)模塊的示例機器可讀指令的流程圖表示。
[0006]圖4是圖1的示例解密器的第二示例實現(xiàn)方式的框圖。
[0007]圖5是可被執(zhí)行以便實現(xiàn)圖4的示例解密器的示例機器可讀指令的流程圖表示。
[0008]圖6是能夠執(zhí)行圖3A至圖3D的示例機器可讀指令以便實現(xiàn)圖1的示例安全睡眠狀態(tài)模塊和/或圖5的示例機器可讀指令從而實現(xiàn)圖4的示例解密器的示例處理系統(tǒng)的框圖。
詳細描述
[0009]計算平臺(諸如桌上計算機和膝上計算機)可存儲相應的用戶可認為秘密、敏感、和/或以其他方式不是可公共訪問的信息。某些計算平臺包括當計算平臺被置于關閉狀態(tài)(例如,完全關閉)或休眠狀態(tài)(例如,系統(tǒng)被掉電,同時保留系統(tǒng)的狀態(tài))時保護這種數(shù)據(jù)的全盤加密能力。即,除非用戶將計算平臺置于關閉狀態(tài)或休眠狀態(tài),否則可訪問丟失或被盜計算機上的信息。然而,將計算平臺置于關閉狀態(tài)或休眠狀態(tài)具有缺點。例如,關閉狀態(tài)不保留計算平臺的狀態(tài)并且因此用戶不被強制保存所有打開的文檔(或其他類型的未保存數(shù)據(jù))并退出所有應用(或其他類型的程序)。進一步地,從關閉狀態(tài)啟動計算平臺需要大量時間并且要求用戶重新打開文檔和/或應用。在許多情況下,用戶可能已經(jīng)忘記計算平臺的狀態(tài)和/或不能導航到計算平臺的先前狀態(tài)。而休眠狀態(tài)保留計算平臺的狀態(tài),從休眠狀態(tài)恢復也耗費大量時間,尤其是在膝上計算機、筆記本計算機、上網(wǎng)本計算機等等上。
[0010]有時被稱為S3功率狀態(tài)的睡眠狀態(tài)避免了這些缺點。例如,從睡眠狀態(tài)恢復比從關閉狀態(tài)或休眠恢復相對更快(例如,從睡眠狀態(tài)恢復可基本上是即時的)并且使得用戶能夠立即恢復在打開的文檔和/或應用上的工作。然而,睡眠狀態(tài)下的計算平臺上的敏感信息易于受到不希望的訪問(例如,在被盜或丟失計算平臺的情況下)。例如,可通過將睡眠狀態(tài)下的計算平臺的動態(tài)隨機存取存儲器(DRAM)移動到其中DRAM可被掃描的另一個計算機,來訪問該DRAM??商娲?,可通過執(zhí)行冷啟動攻擊訪問睡眠狀態(tài)下的計算平臺的DRAM。而且,如果這種攻擊導致攻擊者發(fā)現(xiàn)DRAM中的加密密鑰,可訪問盤上的所有數(shù)據(jù)。
[0011]在此公開的示例方法、裝置、以及制品提供了安全睡眠狀態(tài),該安全睡眠狀態(tài)對存儲在睡眠狀態(tài)下的計算平臺上的數(shù)據(jù)提供保護。如以下更詳細描述的,在此公開的示例方法、裝置、以及制品使得用戶能夠激活安全睡眠狀態(tài),從而使得每次相應的計算平臺被置于睡眠狀態(tài)下時,對數(shù)據(jù)進行加密。進一步地,在此公開的示例方法、裝置、以及制品檢測計算平臺何時退出睡眠狀態(tài)(例如,進入打開狀態(tài))并且作為響應,如果用戶提供適當?shù)淖C書則對安全數(shù)據(jù)進行解密。因此,使用在此公開的示例方法、裝置、以及制品提供的安全睡眠狀態(tài),用戶可將計算平臺置于睡眠狀態(tài)下以便避免關閉狀態(tài)和休眠的缺點,并且同時保護存儲在計算平臺上的數(shù)據(jù)免于不希望的訪問。
[0012]圖1示出可在其中實現(xiàn)在此公開的示例方法、裝置、和/或制品的示例計算平臺100。圖1包括基本輸入/輸出系統(tǒng)(B1S) 102、操作系統(tǒng)(OS) 104、以及DRAM 106。然而,示例計算平臺100可包括附加組件,諸如附加或替代類型的存儲器、網(wǎng)絡接口、數(shù)據(jù)總線、處理器等等。簡而言之,B1S 102啟動計算平臺100,從而使得操作系統(tǒng)104可控制例如對存儲器的訪問和指令的執(zhí)行(例如,通過處理器)。在所示示例中,DRAM106實現(xiàn)計算平臺的用于存儲與例如執(zhí)行應用、文檔等等相關聯(lián)的數(shù)據(jù)的主存儲器。
[0013]為了提供在此所公開的安全睡眠狀態(tài)下的示例計算平臺100,示例B1S 102包括示例安全睡眠狀態(tài)模塊108。盡管在圖1的示例中在B1S 102中實現(xiàn),可結合附加或替代組件(諸如可擴展固件接口(EFI))實現(xiàn)示例安全睡眠狀態(tài)模塊108。如以下更詳細描述的,圖1的示例安全睡眠狀態(tài)模塊108檢測計算平臺100何時被置于睡眠狀態(tài),并且作為響應加密DRAM 106,從而使得睡眠狀態(tài)是安全的(例如,包括保護DRAM 106的數(shù)據(jù))。進一步地,如以下更詳細描述的,當計算平臺100從安全睡眠狀態(tài)恢復時,安全睡眠狀態(tài)模塊108 解密 DRAM 106。
[0014]在圖1的所示示例中,示例安全睡眠狀態(tài)模塊108與B1S設置接口 110交互和/或使用其,以使得用戶能夠激活安全睡眠狀態(tài)。在平臺100啟動的同時,通過用戶按壓專用鍵(例如,在鍵盤上)訪問圖1的示例B1S設置接口 110。示例B1S設置接口 110向用戶展現(xiàn)包括啟用或激活安全睡眠狀態(tài)的選項的菜單。在圖1的示例中,該選項指令用戶提供當將平臺100從安全睡眠狀態(tài)恢復時用戶將需要輸入的密碼(passphrase)(例如,符合如由例如存儲在B1S 102中的規(guī)則所指示的最小安全強度要求的口令)。當安全睡眠狀態(tài)當前是無效的或禁用的時,用戶提供密碼充當安全睡眠狀態(tài)的激活或啟用。附加地或可替代地,示例B1S設置接口 110允許或要求(例如,周期性地)用戶改變密碼。示例B1S設置接口 110還可向用戶提供有關睡眠狀態(tài)以及如何對其進行使用的指令和其他信息。例如,B1S設置接口 110通知用戶,每當平臺100恢復(例如,從安全睡眠狀態(tài))時將需要輸入密碼。當已經(jīng)輸入密碼和/或安全睡眠狀態(tài)以其他方式生效時,通過例如在訪問B1S設置接口 110的菜單之前要求用戶輸入當前密碼來保護B1S設置接口 110免于訪問。
[0015]示例安全睡眠狀態(tài)模塊108包括接收和/或以其他方式獲得用戶輸入到B1S設置接口 110中的密碼的密碼接口 112。示例密碼接口 112對密碼進行散列(例如,對密碼執(zhí)行散列函數(shù))并且存儲所得散列值114。在所示示例中,密碼本身未被存儲。反而,所存儲的散列值114根據(jù)對密碼執(zhí)行的散列函數(shù)表示密碼。示例安全睡眠狀態(tài)模塊108包括使用所存儲的散列值114來加密DRMA 106的數(shù)據(jù)的加密器116。具體而言,示例加密器116包括使用所存儲的散列值114生成包裝密鑰(wrapping key)的密鑰生成器118。示例密鑰生成器118還使用例如隨機數(shù)生成器結合加密引擎生成加密密鑰。已經(jīng)從所存儲的散列值114生成包裝密鑰以及隨機加密密鑰,圖1的示例密鑰生成器118在包裝密鑰中包裝隨機加密密鑰。B1S存儲器120 (例如,系統(tǒng)管理隨機存取存儲器(SMRAM))用于存儲經(jīng)包裝的加密密鑰122和加密密鑰124。圖1的示例B1S存儲器120由閃存實現(xiàn)。如上所述,密碼被損毀(例如,未被存儲)。進一步地,用于包裝加密密鑰124的包裝密鑰122也被損毀。如下所述,當進入安全睡眠狀態(tài)時,加密密鑰124用于保護DRAM 106的數(shù)據(jù),并且當從安全睡眠狀態(tài)恢復時,經(jīng)包裝的加密密鑰122用于(例如,向授權用戶)提供對所保護DRAM的訪問。
[0016]在提供密碼以便激活安全睡眠狀態(tài)之后,B1S 102將控制傳遞到OS 10L0S 104在正常操作期間控制平臺100,在此期間,DRAM 106的數(shù)據(jù)同樣被修改(例如,響應于執(zhí)行應用和相關聯(lián)的文檔)。OS 104繼續(xù)控制平臺,直至例如用戶發(fā)起睡眠狀態(tài)。用戶可通過例如關閉平臺的蓋子(例如,當平臺100由膝上計算機實現(xiàn)時)、按壓功率或睡眠按鈕、或從OS 104管理的菜單選擇睡眠狀態(tài)發(fā)起睡眠狀態(tài)。可替代地,可響應于不活動時間段發(fā)起睡眠狀態(tài)。在圖1的所示示例中,用戶所采取的發(fā)起睡眠狀態(tài)的行動(例如,合上蓋子或按壓按鈕)或不活動時間段生成由OS 104偵聽和/或導致對OS 104的功能調(diào)用(例如,通過選擇專用于睡眠狀態(tài)的菜單選項)的系統(tǒng)控制中斷(SCI)。在圖1的示例中,OS 104包括表示檢測用戶在平臺100上發(fā)起睡眠狀態(tài)的睡眠狀態(tài)檢測器126。響應于睡眠狀態(tài)檢測器126確定已經(jīng)發(fā)起睡眠狀態(tài),OS使平臺100為睡眠狀態(tài)做準備并且將值寫入專用高級配置和功率接口(ACPI)寄存器。在所示示例中,寫入ACPI致使中斷生成器128生成與安全狀態(tài)發(fā)起相對應的系統(tǒng)管理中斷(SMI)。
[0017]示例安全睡眠狀態(tài)模塊108包括對OS 104的中斷生成器128所生成的SMI作出相應的SMI處理器(例如,專用于中斷生成器128所生成的中斷類型的處理器)。圖1的示例SMI處理器130通過例如檢查散列值當前是否存儲在B1S 102中確定是否啟用睡眠狀態(tài)。在所示示例中,SMI處理器130確定密碼接口 112的散列值114是否是非空(或者并非是表示缺少所存儲的散列的任何其他值)。如果是,示例SMI處理器130確定安全睡眠狀態(tài)被啟用并且將在進入睡眠狀態(tài)之前加密DRAM 106。示例SMI處理器130觸發(fā)加密邏輯132來加密DRAM 106。具體而言,加密邏輯132使用任何合適的加密技術將存儲在B1S存儲器120中的加密密鑰124應用到DRAM 106的數(shù)據(jù)。在已經(jīng)加密DRAM 106之后,加密密鑰124被損毀。另一方面,保留經(jīng)包裝的加密密鑰122。在某些示例中,B1S存儲器120未被加密,從而使得當從安全睡眠狀態(tài)恢復時可訪問經(jīng)包裝的加密密鑰122。
[0018]示例加密邏輯132還將加密映射134存儲在B1S存儲器120中,B1S存儲器120表示在OS 104可被恢復(例如,從安全睡眠狀態(tài))之前必須被解密的關鍵DRAM區(qū)域。具體而言,圖1的示例加密映射134包括有關OS 104恢復并且在平臺100上運行所需的數(shù)據(jù)結構(例如,頁表、描述符表、和/或其他數(shù)據(jù)結構)的位置和大小的信息。如以下結合圖4和圖5詳細描述的,可在當平臺100從安全睡眠狀態(tài)恢復時執(zhí)行的解密過程中使用示例加密映射134。
[0019]當加密邏輯132已經(jīng)完成DRAM 106的加密和加密映射134的創(chuàng)建時,平臺100被置于安全睡眠狀態(tài)。用戶可通過例如打開蓋子、按壓專用按鈕等等恢復平臺100 (例如,使平臺100退出安全睡眠狀態(tài))。響應于這種動作,B1S 102開始啟動平臺100。圖1的示例B1S 102包括用于確定平臺100是否從安全睡眠狀態(tài)或不安全睡眠狀態(tài)(例如,禁用安全睡眠狀態(tài)模塊108所提供的DRAM 106的睡眠保護)恢復的安全睡眠狀態(tài)檢測器136。在所示示例中,安全睡眠狀態(tài)檢測器136檢查密碼接口 122以便展現(xiàn)散列值。即,圖1的示例安全睡眠狀態(tài)檢測器136確定非空值(或者并非表示缺少所存儲的散列的任何其他值)是否存儲在散列值114處。存在散列值114指示啟用安全睡眠狀態(tài)并且將解密DRAM 106。缺少散列值114指示未進入安全睡眠狀態(tài)并且無需解密DRAM 106。
[0020]當安全睡眠狀態(tài)檢測器136確定平臺100正在從安全睡眠狀態(tài)恢復時,圖1的示例密碼接口 112提醒用戶輸入與安全睡眠狀態(tài)相對應的密碼。響應于該提醒提供的輸入由比較器138與散列值114進行比較。比較器138確定用戶提供的輸入是否與散列值匹配,其與之前由用戶提供以便激活或啟用安全睡眠狀態(tài)的密碼相對應。如果用戶提供的輸入與所存儲的散列值114不匹配,用戶被拒絕訪問平臺100。在某些示例中,用戶可被提供多次嘗試來輸入正確的密碼。
[0021]另一方面,如果用戶提供的輸入與所存儲的散列值114匹配,示例安全睡眠狀態(tài)模塊108的解密器140被觸發(fā)。示例解密器140對DRAM106的加密進行解碼,從而使得OS104可在DRAM 106在進入睡眠狀態(tài)之前所處于的狀態(tài)下訪問DRAM 106的數(shù)據(jù)。圖2中示出解密器140的第一示例實現(xiàn)方式。圖2的示例解密器140包括從用戶響應于密碼接口112的提醒而提供的密碼重新導出包裝密鑰的包裝密鑰導出器200。如上所述,由用戶提供以便發(fā)起或激活安全睡眠狀態(tài)的密碼在用于生成加密密鑰124之后被損毀。因此,當從安全睡眠狀態(tài)恢復時,解密器140的示例包裝密鑰導出器200使用用戶在恢復平臺100時提供的密碼,其被確定與之前提供的密碼匹配(例如,通過與所存儲的散列值114進行比較)。
[0022]圖2的示例解密器140還包括用于使用所重新導出的包裝密鑰對B1S存儲器120的經(jīng)包裝的解密密鑰122進行解包裝的解包裝器202。如上所述,在加密DRAM 106并且將平臺置于安全睡眠狀態(tài)之后保留經(jīng)包裝的加密密鑰122,從而使得當從安全睡眠狀態(tài)恢復時,加密密鑰可被解包裝并且由解密器140使用。因此,圖2的示例解包裝器202使用加密密鑰的所保留的經(jīng)包裝版本122以及重新導出的包裝密鑰(從包裝密鑰導出器200)來生成由加密邏輯132用于保護DRAM 106的加密密鑰。
[0023]圖2的示例解密器140包括使用所獲得的加密密鑰來解密DRAM 106的解密邏輯204,從而使得當B1S 102將控制傳遞到OS 104時,OS 104將能夠訪問DRAM 106。在解密邏輯204已經(jīng)解密DRAM 106之后,密鑰損毀器206損毀解密器140所使用的加密密鑰以及B1S存儲器120的經(jīng)包裝的加密密鑰122。在某些情景下,在解密邏輯204已經(jīng)完成DRAM106的解密之前,平臺100可被置于睡眠狀態(tài)。在這種情況下,密鑰損毀器206不損毀加密密鑰或經(jīng)包裝的解密密鑰122。而是,保留密鑰,從而使得當平臺100從(第二)睡眠狀態(tài)恢復時,DRAM 106可被解密。
[0024]因為在解密過程中損毀經(jīng)包裝的加密密鑰122并且在用于加密DRAM 106之后并且在重新導出加密密鑰供解密器140使用之后損毀加密密鑰124,當平臺100再次被置于睡眠狀態(tài)時(例如,下一次用戶合上蓋子、按壓專用睡眠按鈕、從菜單選擇睡眠狀態(tài)等等),需要新的加密密鑰(不同于先前的加密密鑰)和新的經(jīng)包裝的加密密鑰以供使用。相應地,由用戶響應于密碼接口 122的提示提供的用于訪問平臺的密碼由密鑰生成器118用于生成包裝密鑰。密鑰生成器118還生成隨機加密密鑰。因為隨機功能(例如,隨機數(shù)生成器)用于生成加密密鑰,來自安全睡眠狀態(tài)的一次迭代的加密密鑰不同于安全睡眠狀態(tài)的另一次迭代(或者至少不同于下一次迭代,因為隨機值可重復許多次可能上百萬次迭代)。如前所述,包裝密鑰用于包裝隨機生成的加密密鑰并且經(jīng)包裝的加密密鑰122以及加密密鑰122存儲在B1S存儲器120中。進一步地,如前所述,包裝密鑰和密碼被損毀。
[0025]B1S 102然后將控制傳遞到OS 104,其被恢復,從而使得平臺100在進入安全睡眠狀態(tài)之前的狀態(tài)下操作。如上所述,OS 104繼續(xù)管理平臺100的操作,直到平臺100的功率狀態(tài)改變(例如,由用戶)。如果改變對應于平臺100被置于睡眠狀態(tài)下(例如,通過用戶動作、通過達到不活動閾值等等),睡眠狀態(tài)檢測器126確定安全睡眠狀態(tài)是否被啟用,并且如果被啟用,中斷生成器128生成由安全睡眠狀態(tài)模塊108的SMI處理器130處理的中斷。示例SMI處理器130觸發(fā)加密器116再次加密DRAM106,這次使用新的加密密鑰124。當平臺100處于睡眠狀態(tài)下時,DRAM 106的數(shù)據(jù)再次得到保護。因此,每當平臺100被置于睡眠狀態(tài)下時,示例安全睡眠狀態(tài)模塊108提供DRAM 106的重復保護。
[0026]盡管已經(jīng)在圖1中示出實現(xiàn)平臺100的示例方式,可組合、劃分、重新安排、省略、清除和/或以任何其他方式實現(xiàn)圖1中示出的元件、過程和/或設備中的一個或多個。進一步地,圖1的示例安全睡眠狀態(tài)模塊108、示例B1S設置接口 110、示例密碼接口 112、示例加密器116、示例密鑰生成器118、示例睡眠狀態(tài)檢測器126、示例中斷生成器128、示例SMI處理器130、示例加密邏輯132、示例安全睡眠狀態(tài)檢測器136、示例比較器138、示例解密器140和/或更一般地示例平臺100可由硬件、軟件、固件、和/或硬件、軟件和/或固件的任何組合實現(xiàn)。因此,例如,圖1的示例安全睡眠狀態(tài)模塊108、示例B1S設置接口 110、示例密碼接口 112、示例加密器116、示例密鑰生成器118、示例睡眠狀態(tài)檢測器126、示例中斷生成器128、示例SMI處理器130、示例加密邏輯132、示例安全睡眠狀態(tài)檢測器136、示例比較器138、示例解密器140和/或更一般地示例平臺100中的任一項可由一個或多個電路、可編程處理器、專用集成電路(ASIC)、可編程邏輯器件(PLD)和/或現(xiàn)場可編程邏輯器件(FPLD)等等實現(xiàn)。當本專利的所附系統(tǒng)或裝置權利要求中的任一項被解讀為覆蓋僅軟件和/或固件實現(xiàn)方式時,圖1的示例安全睡眠狀態(tài)模塊108、示例B1S設置接口 110、示例密碼接口 112、示例加密器116、示例密鑰生成器118、示例睡眠狀態(tài)檢測器126、示例中斷生成器128、示例SMI處理器130、示例加密邏輯132、示例安全睡眠狀態(tài)檢測器136、示例比較器138、示例解密器140和/或更一般地示例平臺100中的至少一個在此明確地被定義為包括存儲軟件和/或固件的有形計算機可讀存儲介質,諸如存儲器、DVD、CD、藍光、等等。仍進一步地,圖1的示例平臺100可包括除圖1中示出的那些之外或者作為替代的一個或多個元件、過程和/或設備,和/或可包括所示出的元件、過程和設備中的任一個或全部中的多于一個。
[0027]盡管已經(jīng)在圖2中示出實現(xiàn)圖1的解密器140的示例方式,可組合、劃分、重新安排、省略、清除和/或以任何其他方式實現(xiàn)圖2中示出的元件、過程和/或設備中的一個或多個。進一步地,圖2的示例包裝密鑰導出器200、示例解包裝器202、示例解密邏輯204、示例密鑰損毀器206和/或更一般地示例解密器140可由硬件、軟件、固件和/或硬件、軟件和/或固件的任何組合實現(xiàn)。因此,例如,圖2的示例包裝密鑰導出器200、示例解包裝器202、示例解密邏輯204、示例密鑰損毀器206和/或更一般地示例解密器140中的任一個可由一個或多個電路、可編程處理器、專用集成電路(ASIC)、可編程邏輯器件(PLD)和/或現(xiàn)場可編程邏輯器件(FPLD)等等實現(xiàn)。當本專利的所附系統(tǒng)或裝置權利要求中的任一項被解讀為覆蓋僅軟件和/或固件實現(xiàn)方式時,圖2的示例包裝密鑰導出器200、示例解包裝器202、示例解密邏輯204、示例密鑰損毀器206和/或更一般地示例解密器140中的至少一個在此明確地被定義為包括存儲軟件和/或固件的有形計算機可讀存儲介質,諸如存儲器、DVD、⑶、藍光、等等。仍進一步地,圖2的示例解密器140可包括除圖2中示出的那些之外或者作為替代的一個或多個元件、過程和/或設備,和/或可包括所示出的元件、過程和設備中的任一個或全部中的多于一個。
[0028]圖3A-D是表示用于實現(xiàn)圖1和/或圖2的示例平臺100的示例機器可讀指令的流程圖。在圖3A-D的示例流程圖中,機器可讀指令包括用于由處理器(諸如在以下結合圖6討論的示例計算機600中示出的處理器612)執(zhí)行的程序。程序可被實施在存儲在有形計算機可讀介質(諸如與處理器612相關聯(lián)的CD-ROM、軟盤、硬盤驅動器、數(shù)字通用盤(DVD)、藍光盤、或存儲器)上的軟件中,但是整個程序和/或其部分可替代地可由除處理器612之外的設備實現(xiàn)和/或實施在固件或專用硬件中。進一步地,盡管參照圖3A-D中示出的流程圖描述了示例程序,可替代地可使用實現(xiàn)示例平臺100的許多其他方法。例如,框的執(zhí)行順序可改變,和/或所描述的某些框可改變、清除或組合。
[0029]如上所述,圖3A-D的示例過程可使用存儲在有形計算機可讀介質(諸如信息可被存儲在其中持續(xù)任何時長(例如,持續(xù)延長時間段、永久地、短暫片刻、暫時地緩沖、和/或高速緩存信息)的硬盤驅動器、閃存、只讀存儲器(ROM)、致密盤(CD)、數(shù)字通用盤(DVD)、高速緩存、隨機存取存儲器(RAM)和/或任何其他存儲介質)上的編碼指令(例如,計算機可讀指令)實現(xiàn)。如在此所使用的,術語“有形計算機可讀介質”被明確地定義為包括任何類型的計算機可讀存儲并且不包括傳播信號。附加地或可替代地,圖3A-D的示例過程可使用存儲在非瞬態(tài)計算機可讀介質(諸如信息可被存儲在其中持續(xù)任何時長(例如,持續(xù)延長時間段、永久地、短暫片刻、暫時地緩沖、和/或高速緩存信息)的硬盤驅動器、閃存、只讀存儲器、致密盤、數(shù)字通用盤、高速緩存、隨機存取存儲器和/或任何其他存儲介質)上的編碼指令(例如,計算機可讀指令)實現(xiàn)。如在此所使用的,術語“非瞬態(tài)計算機可讀介質”被明確地定義為包括任何類型的計算機可讀介質并且不包括傳播信號。如在此所使用的,當術語“至少”被用作權利要求前導部分中的過渡術語時,其與術語“包括”是開放式的相同的方式是開放式的。因此,使用術語“至少”作為其前導部分中的過渡術語的權利要求可包括除在該權利要求中明確引述的那些之外的元素。
[0030]圖3A以打開平臺100 (例如,由用戶)開始(框300)。B10S102被啟動以便發(fā)起一個或多個進程,諸如加電自檢(POST)和/或任何其他合適的與啟動平臺100有關的過程(框302)。如果B1S 102確定平臺100正在從睡眠狀態(tài)恢復(框304),圖1的示例安全睡眠狀態(tài)檢測器136確定平臺100正在從其恢復的睡眠狀態(tài)是否是安全睡眠狀態(tài)(框306)。例如,安全睡眠狀態(tài)檢測器136確定是否結合圖1的密碼接口 112存儲了散列值。如果平臺100正在從其恢復的睡眠狀態(tài)是安全睡眠狀態(tài)(框306),控制傳遞到以下進一步詳細描述的圖3B。如果平臺100正在從其恢復的睡眠狀態(tài)不是安全睡眠狀態(tài)(框306),0S 104被恢復(框308)進一步地,OS 104被執(zhí)行(框328)并且控制傳遞到以下進一步詳細描述的圖3C。
[0031]返回參考框304,如果平臺100未正在從睡眠狀態(tài)恢復,示例安全睡眠狀態(tài)模塊108確定由其提供的安全睡眠狀態(tài)當前是否被啟用(框310)。如果安全睡眠狀態(tài)當前被啟用(框310),控制傳遞到以下描述的圖3B。如果安全睡眠狀態(tài)當前未被啟用(框310),用戶可進入B1S設置接口 110以便啟用安全睡眠狀態(tài)。為了確定B1S設置接口 110是否已經(jīng)由用戶激活,捕捉擊鍵(例如,從鍵盤)(框312)。如果已經(jīng)過去對應于超時的過多時間(框314),控制進行到框326并且OS 104被啟動。否則,B1S設置接口 110確定是否有任何輸入的擊鍵與進入B1S設置接口 110的請求相對應(框316)。如果沒有,捕獲附加的擊鍵(框312)并且B10S102再次確定是否已經(jīng)發(fā)生超時(框314)。
[0032]當用戶已經(jīng)結合B1S設置接口 110時(框316),B1S接口 110向用戶展現(xiàn)菜單(框318)。密碼接口 112確定用戶是否已經(jīng)將密碼輸入到所展現(xiàn)的菜單中以便激活或啟用在此公開的安全睡眠狀態(tài)功能(框320)。如果沒有這種密碼被輸入到B1S設置接口 110中(框320),OS 104被啟動(框326)并執(zhí)行(框328)。另一方面,如果與激活安全睡眠狀態(tài)相對應的密碼被輸入到B1S設置接口 110中(框320),該密碼被散列并且所得散列值114被存儲(框322)。進一步地,加密器116的密鑰生成器118從該密碼生成包裝密鑰并且損毀該密碼(框324)。然后,控制進行到以下描述的圖3D。
[0033]現(xiàn)在參考圖3B,如上所述,當平臺100從安全睡眠狀態(tài)恢復時(框306)或者當平臺100從除睡眠狀態(tài)之外的狀態(tài)恢復并且安全睡眠狀態(tài)被啟用時(框310),控制傳遞到圖3B。因此,圖3B以密碼接口 112從用戶獲得密碼開始(框330)。因為安全睡眠狀態(tài)被啟用,用戶被要求輸入正確的密鑰以便訪問平臺100的數(shù)據(jù)(例如,DRAM 106)。當從用戶接收到密碼時,比較器138確定所輸入的密鑰是否與所存儲的散列值114匹配(框332)。如果所接收的密碼與所存儲的散列值114不對應,向用戶提供若干次嘗試來重新輸入密碼。如果已經(jīng)輸入不正確的密碼過多次(例如,超過所允許的嘗試次數(shù))(框338),登錄過程被暫停(框340)。進一步地,拒絕訪問平臺100并且所示示例結束(框342)。
[0034]返回參考框332,如果用戶輸入的密碼與所存儲的散列值114相對應,密鑰生成器118從所輸入的密碼導出包裝密鑰(框334)。進一步地,所輸入的密碼被損毀(框336)。然后,控制進行到以下描述的圖3D。
[0035]參考圖3C,如上所述,當OS 104已經(jīng)開始運行并且平臺100執(zhí)行應用和/或文檔時,控制被傳遞到圖3C。換言之,當平臺100處于打開狀態(tài)時,控制傳遞到圖3C。當處于打開狀態(tài)時,用戶可決定將平臺置于睡眠狀態(tài),以便例如保留平臺的狀態(tài)同時顯著地降低平臺100的功耗一段時間。為了這樣做,用戶可例如合上蓋子、按壓專用按鈕、或者從OS 104所管理的菜單選擇睡眠狀態(tài)。當睡眠狀態(tài)檢測器126確定用戶已經(jīng)采取這種行動時(框344),OS 104使平臺100準備進入睡眠狀態(tài)并且對相應的ACPI寄存器進行寫入(框346)。如上所述,對ACPI寄存器的寫入致使中斷生成器128調(diào)用安全睡眠狀態(tài)模塊108的SMI處理器130 (框348)。
[0036]作為響應,SMI處理器130通過檢查是否存在結合密碼接口 112 (或者任務是存儲散列值114的任何其他組件)存儲的散列值,確定安全睡眠狀態(tài)是否被啟用(框350)。如果安全睡眠狀態(tài)未被啟用,SMI處理器130將平臺100置于睡眠狀態(tài)而不加密DRAM 106 (框354)。否則,加密邏輯132使用所存儲的加密密鑰124加密DRAM 106(框352)。進一步地,加密邏輯132損毀加密密鑰124但是維護經(jīng)包裝的加密密鑰122 (框352)。當DRAM 106已經(jīng)被加密時(框352),平臺100被置于睡眠狀態(tài)(框354)。然后,所示示例結束(框356)。
[0037]參考圖3D,如上所述,當新的密碼已經(jīng)被輸入以便激活安全睡眠狀態(tài)時(框320-324)或者在平臺恢復后期當匹配密碼已經(jīng)被輸入時(框332-336),控制被傳遞到圖3D。在所示示例中,安全狀態(tài)檢測器136確定平臺100是否正在從安全睡眠狀態(tài)恢復(框358)。如果沒有,響應于正在輸入新的密碼,控制已經(jīng)到達圖3D,并且DRAM 106無需被解密。否則,如果平臺100正在從安全睡眠狀態(tài)恢復,DRAM 106需要被解密。因此,在框358,如果確定平臺100正在從安全睡眠狀態(tài)恢復,包裝密鑰導出器200重新導出包裝密鑰并且解包裝器202對經(jīng)包裝的加密密鑰122解包裝(框360)。使用經(jīng)解包裝的加密密鑰,解密邏輯204解密DRAM 106 (框362)。進一步地,如果整個DRAM 106已經(jīng)被解密,密鑰損毀器206損毀用于解密DRAM 106的加密密鑰124以及獲得加密密鑰所用的經(jīng)包裝的加密密鑰122 (框364)。如上所述,如果例如在DRAM 106完全被損毀之前平臺100被置于睡眠狀態(tài)或者如果在DRAM 106被完全解密之前平臺100被置于任何其他狀態(tài)(例如,休眠狀態(tài)),保留密鑰。然后,控制進行到框366。當確定平臺100未正在從安全睡眠狀態(tài)恢復時,控制還從框358進行到框366。
[0038]在平臺100再次被置于睡眠狀態(tài)的情況下,密鑰生成器118生成并存儲新的隨機加密密鑰124用于加密DRAM 106 (框366)。進一步地,在框324或框334生成的包裝密鑰中包裝加密密鑰124。經(jīng)包裝的加密密鑰122被存儲在B1S存儲器120中(框370)。用于生成經(jīng)包裝的加密密鑰122的包裝密鑰被損毀(框372)。OS 104被恢復(框374)并運行(框376)。然后,控制進行到以上描述的圖3C。
[0039]圖4是圖1的解密器140的另一個示例實現(xiàn)方式。類似于圖2中示出和以上描述的解密器140的示例實現(xiàn)方式,圖4的示例解密器400包括類似于圖2的包裝密鑰導出器200、解包裝器202以及密鑰損毀器206進行操作的包裝密鑰導出器402、解包裝器404以及密鑰損毀器406,以便獲得密鑰用于解密DRAM 106。然而,圖4的示例解密器400包括不同于圖2的示例解密器140的解密邏輯408。具體而言,當OS 104正在恢復時,圖4的示例解密邏輯408使用虛擬機監(jiān)視器(VMM) 410來啟用解密器400以按需方式解密DRAM 106的區(qū)域或部分。因此,不是等待在將控制從B1S 102傳遞到OS 104之前解密DRAM 106的每個經(jīng)加密的區(qū)域(如以上結合圖2所述),圖4的示例解密器400解密DRAM 106的某些關鍵區(qū)域,然后允許OS 104在DRAM 106的關鍵區(qū)域已經(jīng)被解密時恢復,并且然后當DRAM 106的剩余經(jīng)加密的區(qū)域被OS 104訪問時,開始解密這些區(qū)域。在這樣做時,圖4的示例解密器400解決與當從睡眠狀態(tài)恢復時必須解密DRAM 106相關聯(lián)的附加延遲問題。例如,圖4的示例解密器所使用的虛擬化使OS 104能通過首先解密相應的區(qū)域來恢復其最關鍵的功能并且然后以按需方式或換言之按照OS 104所需要的那樣解密剩余的DRAM 106。結果,OS104可被至少部分地恢復并執(zhí)行,而無需等待解密DRAM 106的所有經(jīng)加密的區(qū)域,當DRAM106相對大時,這會耗費大量的時間。
[0040]當平臺100正在從安全睡眠狀態(tài)模塊108提供的安全睡眠狀態(tài)恢復時,B1S 102和安全睡眠狀態(tài)模塊108執(zhí)行以上結合圖1至圖3所述的初始操作以便將平臺100過渡到打開狀態(tài),諸如重新導出加密密鑰以便在解密過程中使用(例如,通過包裝密鑰導出器402和解包裝器404)。然而,在圖4的示例中,解密器400啟動VMM 410解密DRAM 106。在所示示例中,VMM 410被加載(例如,當首先啟用安全睡眠狀態(tài)時)到B1S存儲器120 (例如,SMRAM)和/或任何其他OS 104不可訪問的存儲器中。圖4的示例VMM 410相對較小并且受限于將DRAM 106虛擬化。S卩,除DRAM 106之外,VMM 410使其他組件處于OS 104的控制之下。
[0041]為了虛擬化DRAM 106,示例VMM 410包括DRAM虛擬化器412。示例DRAM虛擬化器412使用任何合適的技術將DRAM 106虛擬化。例如,DRAM虛擬化器412可通過擴展頁表(EPT)將DRAM 106虛擬化。當使用EPT來虛擬化DRAM 106時,DRAM虛擬化器412創(chuàng)建EPT以便將賓客物理地址映射到主機物理地址。OS 104中的頁表(PT)將線性地址映射到賓客物理地址。當OS 104中的程序執(zhí)行并訪問未在OS 104的PT中的線性地址時,頁故障(#PF)被觸發(fā)。在這種情況下,#PF由OS 104處理。另一方面,當相應的賓客物理地址和主機物理地址之間不存在映射時,EPT違反被觸發(fā)。在所示示例中,EPT違反由VMM 410(而不是OS 104)處理。
[0042]作為EPT的替代方案,示例DRAM虛擬化器412可通過虛擬轉換后援緩沖器(TLB)虛擬化DRAM 106。當使用虛擬TLB虛擬化DRAM 106時,DRAM虛擬化器412創(chuàng)建OS 104的PT的副本并且使用#PF和/或其他觸發(fā)器使該副本與OS 104中的相應的版本一致。類似于上述ETP違反,當虛擬TLB已經(jīng)用于虛擬化DRAM 106時,#PF向VMM 410指示,賓客物理地址未被映射到主機物理地址。
[0043]因此,當DRAM虛擬化器412使用EPT虛擬化DRAM 106時,EPT違反指示VMM 410需要解密DRAM 106的相應區(qū)域。換言之,當DRAM虛擬化器412使用EPT虛擬化DRAM 106時,EPT違反(由OS 104訪問DRAM 106的特定(經(jīng)加密的)地址造成)觸發(fā)VMM 410處理異常,從而使得DRAM 106的特定地址被解密用于由OS 104使用。類似地,當DRAM虛擬化器412使用虛擬TLB虛擬化DRAM 106時,#PF指示VMM410需要解密DRAM 106的相應區(qū)域。換言之,當DRAM虛擬化器412使用虛擬TLB虛擬化DRAM 106時,#PF (由OS 104訪問DRAM 106的特定(經(jīng)加密的)地址造成)觸發(fā)VMM 410處理異常,從而使得DRAM 106的特定地址被解密用于由OS 104使用。示例VMM 410可使用附加或替代類型的虛擬化和/或觸發(fā)以便虛擬化DRAM 106和/或觸發(fā)VMM 410來處理嘗試訪問DRAM 106的經(jīng)加密區(qū)域的OS 104的實例以及因此解密DRAM106的需要。
[0044]在所示示例中,當VMM 410最初被啟動時,DRAM 106的有待被解密的第一區(qū)域是以上結合圖1所描述的加密映射134中跟蹤的關鍵區(qū)域。加密映射134指示DRAM 106的哪些區(qū)域對應于DRAM 106的關鍵區(qū)域,諸如OS 104發(fā)起或開始恢復所需的區(qū)域。示例VMM410使用加密映射134解密關鍵區(qū)域,從而使得OS 104可恢復并開始執(zhí)行。當VMM410解密DRAM 106的區(qū)域時,經(jīng)解密的區(qū)域被存儲在解密映射414中。如上所述,解密映射414可包括例如EPT、虛擬TLB或DRAM虛擬化器412正在用于虛擬化DRAM 106的任何類型的虛擬化表。換言之,因為DRAM 106的區(qū)域被解密,那些區(qū)域被添加到解密映射414。因此,解密映射414跟蹤DRAM 106的哪些區(qū)域已經(jīng)被解密。
[0045]在所示示例中,當DRAM 106的關鍵區(qū)域已經(jīng)被解密時,0S104開始執(zhí)行。OS 104的執(zhí)行包括嘗試訪問(例如,從其讀取和/或向其寫入)DRAM 106中的特定地址。如上所述,當OS 104嘗試訪問DRAM 106中的尚未被解密的地址時,將生成觸發(fā)。在所示示例中,當解密映射414不包括與OS 104嘗試訪問的地址相對應的條目時,生成這種觸發(fā)。例如,當通過EPT實現(xiàn)解密映射414時,EPT違反(例如,觸發(fā))由OS 104嘗試訪問不(尚未)具有EPT中的相應條目的地址而導致??商娲?,當通過虛擬TLB實現(xiàn)解密映射414時,#PF(例如,觸發(fā))由OS 104嘗試訪問不(尚未)具有虛擬TLB中的相應條目的地址而導致。示例VMM410包括檢測這種觸發(fā)的觸發(fā)檢測器416。當示例觸發(fā)檢測器416確定OS已經(jīng)訪問過(或已經(jīng)嘗試訪問)DRAM 106的尚未被解密(并且因此不具有解密映射414中的相應條目)的特定區(qū)域時,示例VMM 410解密DRAM 106的那些區(qū)域。如上所述,用于加密DRAM 106的加密密鑰由包裝密鑰導出器402和解包裝器404重新導出。在所示示例中,圖4的VMM 410和解密邏輯408使用經(jīng)重新導出的加密密鑰解密導致相應觸發(fā)的DRAM 106的區(qū)域。S卩,當OS 104訪問DRAM 106的區(qū)域時(例如,以按需方式),VMM 410啟用圖4的示例解密器400解密那些區(qū)域。當DRAM 106的與當前觸發(fā)相對應的區(qū)域已經(jīng)被解密時,解密映射414被更新以便包括映射到那些區(qū)域的條目。例如,當DRAM虛擬化器412使用EPT虛擬化DRAM 106時,DRAM 106的經(jīng)解密的區(qū)域被添加到EPT??商娲兀擠RAM虛擬化器412使用虛擬TLB虛擬化DRAM 106時,DRAM 106的經(jīng)解密的區(qū)域被添加到TLB的PT。
[0046]在某些示例中,不是當DRAM 106被解密時將條目添加到解密映射414以及當OS104嘗試訪問不具有解密映射414中的條目的區(qū)域時觸發(fā)VMM 410解密DRAM 106,示例解密器400可使用指定為指示DRAM106中的相應區(qū)域是否仍被加密的位。具體而言,可在解密過程的開始時生成解密映射414,以便通過對于經(jīng)加密的DRAM 106的每個區(qū)域包括相應條目來反映經(jīng)加密的DRAM 106。進一步地,可向解密邏輯414的PT的條目添加位。當設置用于特定區(qū)域的位時(例如,設置為‘I’或真),該區(qū)域仍是被加密的。另一方面,當未設置用于特定區(qū)域的位時(例如,‘0’或假),該區(qū)域已經(jīng)被解密。在這種情況下,當OS 104嘗試訪問DRAM 106的區(qū)域時,檢查相應的位。如果該位被設置,生成觸發(fā)(例如EPT違反或#PF),并且因此解密DRAM 106的相應區(qū)域。如果該位未被設置,無需解密,因為DRAM 106的相應區(qū)域不再被加密。
[0047]當DRAM 106的所有經(jīng)加密的區(qū)域已經(jīng)被解密時(例如,在平臺100從安全睡眠狀態(tài)恢復的迭代期間),VMM 410將控制傳遞到0S104,由此完成OS 104從安全睡眠狀態(tài)的恢復。在某些示例中,采用機制來確保DRAM 106在特定(例如,預定義)時間段內(nèi)被解密。例如,圖4的VMM 410包括時間約束強制執(zhí)行器418,該時間約束強制執(zhí)行器包括與以上述按需方式解密DRAM 106的時間限制相對應的可調(diào)整的或固定的時間段。換言之,當OS 104訪問DRAM 106的不同部分時,示例時間約束強制執(zhí)行器418允許VMM 410在定義時間段內(nèi)逐區(qū)域地解密DRAM 106。如果定義的時間段已經(jīng)過去并且整個DRAM 106尚未被解密,示例時間約束強制執(zhí)行器418致使解密邏輯408開始解密DRAM 106,而不管OS 104的訪問嘗試。結果,當時間段已經(jīng)過期時,即便是OS 104從自安全睡眠狀態(tài)恢復時起尚未嘗試訪問的DRAM 106的部分也會被解密。
[0048]在某些示例中,時間約束強制執(zhí)行器418的時間限制的強制執(zhí)行包括設置與VMM410相關聯(lián)的VMX搶先計時器。具體而言,VMX搶先計時器可被設置為周期性地將控制轉移到VMM 410以便使VMM 410能以預定義方式解密DRAM 106 (例如,DRAM 106的經(jīng)加密的地址空間中數(shù)字上的下一個地址)。結果,除DRAM 106的按需解密(例如,響應于EPT違反或#PF)之外,在時間約束強制執(zhí)行器418的VMX搶先計時器的每次循環(huán)之后,VMM 410解密DRAM 106的區(qū)域。因此,即使當OS 104未訪問DRAM 106并且因此未觸發(fā)解密時,DRAM106最終在該時間段內(nèi)被解密。
[0049]附加地或可替代地,時間約束強制執(zhí)行器418的時間限制的強制執(zhí)行可使用OS104中的一個或多個空閑循環(huán)。可通過中斷指令(例如,STI)后跟暫停OS 104直到下一次外部中斷發(fā)生的暫停指令(例如,HLT)實現(xiàn)這種循環(huán)。在這種情況下,當結合OS 104發(fā)出暫停指令時,VMM 410可接收控制并且因此能夠解密DRAM 106的區(qū)域,直到下一個中斷被觸發(fā)。這種方法允許VMM 410在OS 104不忙碌時解密DRAM 106的區(qū)域,由此避免在OS104忙碌時使用資源。
[0050]EPT或虛擬TLB中映射的頁的尺寸可以是任何合適的尺寸,諸如例如4k、2MB、lGB等等。較小的頁尺寸導致每次觸發(fā)(例如,EPT違反或#PF)發(fā)生時較短的解密時間,但是導致解密整個DRAM 106之前較長的總體時間。在所示示例中,解密器140基于試探法(諸如例如DRAM尺寸、CPU速度、DRAM速度、總線速度等等)設置頁的尺寸。
[0051]盡管已經(jīng)在圖4中示出實現(xiàn)圖1的解密器140的示例方式,可組合、劃分、重新安排、省略、清除和/或以任何其他方式實現(xiàn)圖4中示出的元件、過程和/或設備中的一個或多個。進一步地,圖4的示例包裝密鑰導出器402、示例解包裝器404、示例密鑰損毀器406、示例解密邏輯408、示例VMM 410、示例DRAM虛擬化器412、示例解密映射414、示例觸發(fā)檢測器416、示例時間約束強制執(zhí)行器418和/或更一般地示例解密器400可由硬件、軟件、固件和/或硬件、軟件和/或固件的任何組合實現(xiàn)。因此,例如,圖4的示例包裝密鑰導出器402、示例解包裝器404、示例密鑰損毀器406、示例解密邏輯408、示例VMM 410、示例DRAM虛擬化器412、示例解密映射414、示例觸發(fā)檢測器416、示例時間約束強制執(zhí)行器418和/或更一般地示例解密器400中的任一個可由一個或多個電路、可編程處理器、專用集成電路(ASIC)、可編程邏輯器件(PLD)和/或現(xiàn)場可編程邏輯器件(FPLD)等等實現(xiàn)。當本專利的所附系統(tǒng)或裝置權利要求中的任一項被解讀為覆蓋僅軟件和/或固件實現(xiàn)方式時,圖4的示例包裝密鑰導出器4020、示例解包裝器404、示例密鑰損毀器406、示例解密邏輯408、示例VMM 410、示例DRAM虛擬化器412、示例解密映射414、示例觸發(fā)檢測器416、示例時間約束強制執(zhí)行器418和/或更一般地示例解密器400中的至少一個在此明確地被定義為包括存儲軟件和/或固件的有形計算機可讀存儲介質,諸如存儲器、DVD、CD、藍光、等等。仍進一步地,圖4的示例解密器400可包括除圖4中示出的那些之外或者作為替代的一個或多個元件、過程和/或設備,和/或可包括所示出的元件、過程和設備中的任一個或全部中的多于一個。
[0052]圖5是表示可用于實現(xiàn)圖4的示例解密器400的示例機器可讀指令的流程圖。在圖5的示例流程圖中,機器可讀指令包括用于由處理器(諸如在以下結合圖6討論的示例計算機600中示出的處理器612)執(zhí)行的程序。程序可被實施在存儲在有形計算機可讀介質(諸如與處理器612相關聯(lián)的⑶-ROM、軟盤、硬盤驅動器、數(shù)字通用盤(DVD)、藍光盤、或存儲器)上的軟件中,但是整個程序和/或其部分可替代地可由除處理器612之外的設備實現(xiàn)和/或實施在固件或專用硬件中。進一步地,盡管參照圖5中示出的流程圖描述了示例程序,可替代地可使用實現(xiàn)圖4的示例解密器400的許多其他方法。例如,框的執(zhí)行順序可改變,和/或所描述的某些框可改變、清除或組合。
[0053]如上所述,圖5的示例過程可使用存儲在有形計算機可讀介質(諸如信息可被存儲在其中持續(xù)任何時長(例如,持續(xù)延長時間段、永久地、短暫片刻、暫時地緩沖、和/或高速緩存信息)的硬盤驅動器、閃存、只讀存儲器(ROM)、致密盤(CD)、數(shù)字通用盤(DVD)、高速緩存、隨機存取存儲器(RAM)和/或任何其他存儲介質)上的編碼指令(例如,計算機可讀指令)實現(xiàn)。如在此所使用的,術語“有形計算機可讀介質”被明確地定義為包括任何類型的計算機可讀存儲并且不包括傳播信號。附加地或可替代地,圖5的示例過程可使用存儲在非瞬態(tài)計算機可讀介質(諸如信息可被存儲在其中持續(xù)任何時長(例如,持續(xù)延長時間段、永久地、短暫片刻、暫時地緩沖、和/或高速緩存信息)的硬盤驅動器、閃存、只讀存儲器、致密盤、數(shù)字通用盤、高速緩存、隨機存取存儲器和/或任何其他存儲介質)上的編碼指令(例如,計算機可讀指令)實現(xiàn)。如在此所使用的,術語“非瞬態(tài)計算機可讀介質”被明確地定義為包括任何類型的計算機可讀介質并且不包括傳播信號。如在此所使用的,當術語“至少”被用作權利要求前導部分中的過渡術語時,其與術語“包括”是開放式的相同的方式是開放式的。因此,使用術語“至少”作為其前導部分中的過渡術語的權利要求可包括除在該權利要求中明確引述的那些之外的元素。
[0054]圖5以指示計算平臺100從在此公開的安全睡眠狀態(tài)過渡到打開狀態(tài)的指示開始(框500)。B1S 102通過例如加載恢復平臺100所需的一個或多個驅動器和/或測試使平臺100準備好從安全睡眠狀態(tài)恢復(框502)。當B1S 102確定有待執(zhí)行DRAM 106的解密時,控制被傳遞到VMM 410 (框504)。DRAM虛擬化器412使用任何合適的技術(諸如例如如上所述的EPT或虛擬TLB)虛擬化DRAM 106 (框506)。進一步地,在圖5的所示示例中,時間約束強制執(zhí)行器418設立將致使OS 104周期性地將控制轉移到VMM 410的計時器(框506)。如上所述,向VMM 410的周期性控制轉移強制執(zhí)行解密DRAM 106的時間限制。
[0055]當DRAM 106已經(jīng)被虛擬化時(并且虛擬化表已經(jīng)被存儲在解密映射414中),VMM410和解密邏輯408解密DRAM 106的關鍵區(qū)域(框508)。在當加密DRAM 106時創(chuàng)建的加密映射134中跟蹤表示OS 104開始恢復平臺100的控制所需的DRAM 106部分的關鍵區(qū)域。關鍵區(qū)域的解密被添加到解密映射414,從而使得解密器400可跟蹤目前為止已經(jīng)解密了DRAM 106的哪些部分。
[0056]平臺100然后恢復并運行OS 104 (框512和514)。S卩,0S104開始處理其狀態(tài)在安全睡眠狀態(tài)期間被保留的文檔和/或應用的正常操作。當OS 104執(zhí)行指令時,在OS 104嘗試訪問DRAM 106的加密部分或者時間約束強制執(zhí)行器418設立的周期時間間隔可能到期時,觸發(fā)(例如,EPT違反或#PF)可發(fā)生。在這種情況下,OS 104引起退出并且控制被傳遞到VMM 410(框516)。如果由于虛擬化故障(例如,EPT違反或#PF),控制已經(jīng)被傳遞到VMM 410 (框518),DRAM 106的相應故障區(qū)被解密(框526)。如果解密映射414指示DRAM106的加密區(qū)域保持(框528),控制傳遞到框510。否則,如果整個DRAM 106已經(jīng)被解密(框528),虛擬化過程結束(框530)并且圖5的示例結束(框532)。
[0057]返回參考框518,如果從OS 104的退出與虛擬化故障不對應,VMM 410解密DRAM106的區(qū)域(例如,根據(jù)地址空間組織的下一順序加密區(qū)域)(框520)。如上所述,從OS 104的這種退出可對應于例如VMX搶先計時器的過期或OS 104空閑的指示。當VMM 410已經(jīng)解密DRAM的預期區(qū)域時(例如,當從OS 104的退出對應于計時器的過期時)或者當OS 104中發(fā)生中斷時(例如,當從OS 104的退出對應于OS 104空閑時)(框522),控制傳遞到框528。否則,如果VMM 410需要解密DRAM 410的更多區(qū)域(例如,當從OS 104的退出對應于計時器的過期)或者當OS 104中發(fā)生中斷時(例如,當從OS 104的退出對應于OS 104空閑時)(框522),DRAM 106的區(qū)域的解密被添加到解密映射414 (框524)并且控制返回框 520。
[0058]圖6是能夠執(zhí)行圖3A至圖3D的指令以便實現(xiàn)圖1和圖2的示例平臺100和/或圖5的指令從而實現(xiàn)圖4的示例解密器400的處理器平臺600的框圖。處理器平臺600可以是例如服務器、個人計算機、互聯(lián)網(wǎng)電器、DVD播放器、⑶播放器、藍光播放器、游戲控制臺、個人視頻記錄儀、智能電話、平板計算機、打印機、或任何其他類型的計算設備。
[0059]本示例的處理器平臺600包括處理器612。例如,處理器612可由來自任何期望的家族或制造商的一個或多個微處理器或控制器實現(xiàn)。
[0060]處理器612包括本地存儲器613 (例如,高速緩存)并且通過總線618與包括易失性存儲器614和非易失性存儲器616的主存儲器通信。易失性存儲器614可由同步動態(tài)隨機存取存儲器(SDRAM)、動態(tài)隨機存儲存儲器(DRAM)、RAMBUS動態(tài)隨機存取存儲器(RDRAM)和/或任何其他類型的隨機存取存儲器設備實現(xiàn)。非易失性存儲器616可由閃存和/或任何期望類型的存儲器設備實現(xiàn)。對主存儲器614、616的訪問由存儲器控制器控制。
[0061]處理器平臺600還包括接口電路620。接口電路620可由任何類型的接口標準(諸如以太網(wǎng)接口、通用串行總線(USB)和/或PCI快速接口)實現(xiàn)。
[0062]一個或多個輸入設備622連接到接口電路620。輸入設備622允許用戶向處理器612輸入數(shù)據(jù)和命令。輸入設備可由例如鍵盤、鼠標、觸摸屏、跟蹤墊、軌跡球、等位點(isopoint)和/或語音識別系統(tǒng)實現(xiàn)。
[0063]一個或多個輸出設備624也連接到接口電路620。輸出設備624可由例如顯示設備(例如,液晶顯示器、陰極射線管顯示器(CRT)、打印機和/或揚聲器)實現(xiàn)。接口電路620因此可通常包括圖形驅動卡。
[0064]接口電路620還包括通信設備(諸如調(diào)制解調(diào)器或網(wǎng)絡接口卡)以便促進通過網(wǎng)絡626(例如,以太網(wǎng)連接、數(shù)字用戶線(DSL)、電話線、同軸電纜、蜂窩電話系統(tǒng)等等)與外部計算機交換數(shù)據(jù)。
[0065]處理器平臺600還包括用于存儲軟件和數(shù)據(jù)的一個或多個大容量存儲設備628。這種大容量存儲設備628的示例包括軟盤驅動、硬盤驅動、致密盤驅動和數(shù)字通用盤(DVD)驅動。
[0066]圖3A-3D和/或圖5的編碼指令可存儲在大容量存儲設備628中、易失性存儲器614中、非易失性存儲器616中、和/或可移除存儲介質(諸如⑶或DVD)上。
[0067]示例方法包括:響應于計算平臺的睡眠狀態(tài)的發(fā)起,加密該計算平臺的存儲器;以及當從該睡眠狀態(tài)恢復該計算平臺時解密該存儲器,其中,將該計算平臺置于該睡眠狀態(tài)包括對該計算設備的部分掉電以及保留該計算平臺的狀態(tài)。
[0068]某些示例方法進一步包括使用密碼來生成包裝密鑰以便包裝隨機生成的加密密鑰從而形成經(jīng)包裝的加密密鑰。
[0069]某些示例方法進一步包括在生成該包裝密鑰之后和用該加密密鑰加密該存儲器之前損毀該密碼。
[0070]某些示例方法進一步包括在加密該存儲器之后損毀該加密密鑰并且保留該經(jīng)包裝的加密密鑰。該示例方法還可包括在解密該存儲器之前驗證正確的密碼。
[0071]某些示例方法進一步包括當從該睡眠狀態(tài)恢復時基于該密碼和所存儲的經(jīng)包裝的加密密鑰導出加密密鑰。
[0072]在某些示例方法中,解密該存儲器包括虛擬化該經(jīng)加密的存儲器。
[0073]某些示例方法進一步包括響應于操作系統(tǒng)嘗試訪問被加密的該存儲器的第一部分,解密該存儲器的該第一部分。
[0074]某些示例方法進一步包括響應于該操作系統(tǒng)空閑,解密該存儲器的第二部分。
[0075]某些示例方法進一步包括響應于預定義的時間段結束,解密該存儲器的第二部分。
[0076]示例有形機器可讀存儲介質,包括指令,當被執(zhí)行時,該指令致使機器至少:響應于計算平臺的睡眠狀態(tài)的發(fā)起,加密該計算平臺的存儲器;以及當從該睡眠狀態(tài)恢復該計算平臺時解密該存儲器,其中,將該計算平臺置于該睡眠狀態(tài)包括對該計算設備的部分掉電以及保留該計算平臺的狀態(tài)。
[0077]在某些示例中,該指令致使該機器使用密碼來生成包裝密鑰以便包裝隨機生成的加密密鑰從而形成經(jīng)包裝的加密密鑰。
[0078]在某些示例中,該指令致使該機器在生成該包裝密鑰之后和用該加密密鑰加密該存儲器之前損毀該密碼。
[0079]在某些示例中,該指令致使該機器在加密該存儲器之后損毀該加密密鑰并且保留該經(jīng)包裝的加密密鑰。
[0080]在某些示例中,該指令致使該機器在解密該存儲器之前驗證正確的密碼。
[0081]在某些示例中,該指令致使該機器當從該睡眠狀態(tài)恢復時基于該密碼和所存儲的經(jīng)包裝的加密密鑰導出加密密鑰。
[0082]在某些示例中,該指令致使該機器通過虛擬化該經(jīng)加密的存儲器解密該存儲器。
[0083]在某些示例中,該指令致使該機器通過響應于操作系統(tǒng)嘗試訪問被加密的該存儲器的第一部分而解密該存儲器的該第一部分來解密該存儲器。
[0084]在某些示例中,該指令致使該機器通過響應于該操作系統(tǒng)空閑而解密該存儲器的第二部分來解密該存儲器。
[0085]示例裝置,包括:檢測器,用于確定計算設備要被置于睡眠狀態(tài),其中,該計算平臺的當前狀態(tài)將在該睡眠狀態(tài)期間保留;加密器,用于當該檢測器檢測到該睡眠狀態(tài)的發(fā)起時在該當前狀態(tài)下加密該計算平臺的存儲器;以及解密器,用于當從該睡眠狀態(tài)恢復該計算平臺時解密該存儲器。
[0086]某些示例裝置進一步包括密鑰生成器,用于使用密碼來生成包裝密鑰以便包裝隨機生成的加密密鑰從而形成經(jīng)包裝的加密密鑰,在生成該包裝密鑰之后和用該加密密鑰加密該存儲器之前損毀該密碼。
[0087]在某些示例裝置中,可在加密該存儲器之后損毀該加密密鑰以及保留該經(jīng)包裝的加密密鑰。
[0088]在某些示例裝置中,該解密器用于當從該睡眠狀態(tài)恢復時使用用戶提供的密碼和所存儲的經(jīng)包裝的加密密鑰導出加密密鑰。
[0089]在某些示例裝置中,該解密器用于通過響應于操作系統(tǒng)嘗試訪問被加密的該存儲器的第一部分而解密該存儲器的該第一部分來解密該存儲器。
[0090]在某些示例裝置,該解密器用于通過響應于該操作系統(tǒng)空閑而解密該存儲器的第二部分來解密該存儲器。
[0091]盡管已經(jīng)在此公開了某些示例裝置、方法、以及制品,本專利的覆蓋范圍不限于此。相反,本專利覆蓋合理地落入本專利的權利要求書的范圍內(nèi)的所有裝置、方法、以及制品ο
【權利要求】
1.一種方法,包括: 響應于計算平臺的睡眠狀態(tài)的發(fā)起,加密所述計算平臺的存儲器;以及 當從所述睡眠狀態(tài)恢復所述計算平臺時解密所述存儲器,其中將所述計算平臺置于所述睡眠狀態(tài)包括對所述計算設備的部分掉電以及保留所述計算平臺的狀態(tài)。
2.如權利要求1所述的方法,進一步包括使用密碼來生成包裝密鑰以便包裝隨機生成的加密密鑰從而形成經(jīng)包裝的加密密鑰。
3.如權利要求2所述的方法,進一步包括在生成所述包裝密鑰之后和用所述加密密鑰加密所述存儲器之前損毀所述密碼。
4.如權利要求3所述的方法,進一步包括在加密所述存儲器之后損毀所述加密密鑰并且保留所述經(jīng)包裝的加密密鑰。
5.如權利要求1所述的方法,進一步包括在解密所述存儲器之前驗證正確的密碼。
6.如權利要求5所述的方法,進一步包括當從所述睡眠狀態(tài)恢復時,基于所述密碼和所存儲的經(jīng)包裝的加密密鑰導出加密密鑰。
7.如權利要求1所述的方法,其中,解密所述存儲器包括虛擬化所述經(jīng)加密的存儲器。
8.如權利要求1所述的方法,進一步包括響應于操作系統(tǒng)嘗試訪問被加密的所述存儲器的第一部分,解密所述存儲器的所述第一部分。
9.如權利要求8所述的方法,進一步包括響應于所述操作系統(tǒng)空閑,解密所述存儲器的第二部分。
10.如權利要求8所述的方法,進一步包括響應于預定義的時間段結束,解密所述存儲器的第二部分。
11.一種包括指令的有形機器可讀存儲介質,當被執(zhí)行時,所述指令致使機器至少: 響應于計算平臺的睡眠狀態(tài)的發(fā)起,加密所述計算平臺的存儲器;以及 當從所述睡眠狀態(tài)恢復所述計算平臺時解密所述存儲器,其中將所述計算平臺置于所述睡眠狀態(tài)包括對所述計算設備的部分掉電以及保留所述計算平臺的狀態(tài)。
12.如權利要求11所述的有形機器可讀存儲介質,所述指令致使所述機器使用密碼來生成包裝密鑰以便包裝隨機生成的加密密鑰從而形成經(jīng)包裝的加密密鑰。
13.如權利要求12所述的有形機器可讀存儲介質,所述指令致使所述機器在生成所述包裝密鑰之后和用所述加密密鑰加密所述存儲器之前損毀所述密碼。
14.如權利要求13所述的有形機器可讀存儲介質,所述指令致使所述機器在加密所述存儲器之后損毀所述加密密鑰并且保留所述經(jīng)包裝的加密密鑰。
15.如權利要求11所述的有形機器可讀存儲介質,所述指令致使所述機器在解密所述存儲器之前驗證正確的密碼。
16.如權利要求15所述的有形機器可讀存儲介質,所述指令致使所述機器當從所述睡眠狀態(tài)恢復時基于所述密碼和所存儲的經(jīng)包裝的加密密鑰導出加密密鑰。
17.如權利要求11所述的有形機器可讀存儲介質,所述指令致使所述機器通過虛擬化所述經(jīng)加密的存儲器來解密所述存儲器。
18.如權利要求11所述的有形機器可讀存儲介質,所述指令致使所述機器通過響應于操作系統(tǒng)嘗試訪問被加密的所述存儲器的第一部分而解密所述存儲器的所述第一部分來解碼所述存儲器。
19.如權利要求18所述的有形機器可讀存儲介質,所述指令致使所述機器通過響應于所述操作系統(tǒng)空閑而解密所述存儲器的第二部分來解密所述存儲器。
20.一種裝置,包括: 檢測器,用于確定計算設備要被置于睡眠狀態(tài),其中所述計算平臺的當前狀態(tài)將在所述睡眠狀態(tài)期間被保留; 加密器,用于當所述檢測器檢測到所述睡眠狀態(tài)的發(fā)起時在所述當前狀態(tài)下加密所述計算平臺的存儲器;以及 解密器,用于當從所述睡眠狀態(tài)恢復所述計算平臺時解密所述存儲器。
21.如權利要求20所述的裝置,進一步包括密鑰生成器,用于使用密碼來生成包裝密鑰以便包裝隨機生成的加密密鑰從而形成經(jīng)包裝的加密密鑰,在生成所述包裝密鑰之后和用所述加密密鑰加密所述存儲器之前損毀所述密碼。
22.如權利要求21所述的裝置,在加密所述存儲器之后,所述加密密鑰被損毀以及所述經(jīng)包裝的加密密鑰被保留。
23.如權利要求20所述的裝置,所述解密器用于當從所述睡眠狀態(tài)恢復時使用由用戶提供的密碼和所存儲的經(jīng)包裝的加密密鑰導出加密密鑰。
24.如權利要求20所述的裝置,所述解密器用于通過響應于操作系統(tǒng)嘗試訪問被加密的所述存儲器的第一部分而解密所述存儲器的所述第一部分來解密所述存儲器。
25.如權利要求25所述的裝置,所述解密器用于通過響應于所述操作系統(tǒng)空閑而解密所述存儲器的第二部分來解密所述存儲器。
【文檔編號】G06F21/81GK104335223SQ201380028646
【公開日】2015年2月4日 申請日期:2013年6月14日 優(yōu)先權日:2012年6月29日
【發(fā)明者】K·茲姆德茲恩司基, M·E·霍克斯特拉, J·曼菲德力, B·邢 申請人:英特爾公司