專利名稱:保護密碼的方法以及計算機的制作方法
技術領域:
本發(fā)明涉及保護在計算機中搭載的非易失性存儲器的密碼的技術。
背景技術:
在計算機中搭載了硬盤驅動器(HDD)、固態(tài)驅動器(SSD)等盤驅動器。盤驅動器通過連接器與計算機主體連接,因此容易拆卸。ATA標準規(guī)定了針對盤驅動器的密碼的設定。密碼通常由用戶在BIOS (Basic Input Output System)的設置畫面中設定。所設定的密碼被存儲在盤上的用戶無法存取的系統(tǒng)區(qū)域中。如果設定了密碼,則只要BIOS不向存儲了用戶的數(shù)據(jù)的盤上的用戶區(qū)域發(fā)送密碼和解鎖命令就無法存取。例如,即使計算機被盜,只要不知道密碼就無法從盤驅動器盜取數(shù)據(jù)。因此,在保護數(shù)據(jù)方面在盤驅動器中設定密碼很重要。計算機在斷電狀態(tài)或者節(jié)電狀態(tài)和加電狀態(tài)之間遷移。另外,在斷電狀態(tài)或者節(jié)電狀態(tài)時,盤驅動器的電力停止。即使對于被鎖定的盤驅動器輸入正確的密碼來暫時解鎖,在轉移到節(jié)電狀態(tài)或斷電狀態(tài),盤驅動器的電源停止時,被復位并再次被鎖定,因此需要再次發(fā)送密碼?,F(xiàn)實中,在盤驅動器中設定了密碼的狀態(tài)下,當從斷電狀態(tài)恢復時,必須要求密碼輸入來保護數(shù)據(jù)。密碼的輸入一方面給用戶造成麻煩,也有損操作便利性。因此,現(xiàn)狀是在從掛起狀態(tài)或者休眠狀態(tài)恢復時,也考慮用戶便利性來決定是否請求密碼輸入。在大多情況下,在從掛起狀態(tài)恢復時,為了提高用戶便利性,BIOS不請求密碼輸入。在這種情況下,為了解除盤驅動器的鎖定,BIOS代替用戶自動地將在安全的區(qū)域中存儲的密碼發(fā)送到盤驅動器。此時,如果在盤驅動器的接口電路中安裝竊聽裝置,則有可能竊聽從掛起狀態(tài)恢復時由BIOS發(fā)送到盤驅動器的密碼。如果第三者從計算機拆卸盤驅動器,并將盤驅動器連接到與該計算機連接的竊聽裝置上,則能夠竊聽BIOS發(fā)送的密碼。如果設置成由BIOS發(fā)送用戶輸入的密碼的散列值則無法盜取明文密碼。但是,當代替BIOS將竊聽到的散列值發(fā)送到盤驅動器時,能夠對盤驅動器進行存取。為了防止上述情況,現(xiàn)有的BIOS在從掛起狀態(tài)進行恢復(resume)時,如果檢測出盤驅動器從主體脫離,則停止自動的密碼發(fā)送,向用戶請求密碼輸入,僅在輸入了正確的密碼時解除鎖定。此外,代替 BIOS 的 UEFI (UnifiedExtensible Firmware Interface)固件,在從掛起狀態(tài)恢復時,即使檢測出盤驅動器的脫離,由于架構的限制也無法向用戶請求密碼輸入,因此,取消向加電狀態(tài)的恢復,使計算機強制地轉移到斷電狀態(tài)來防止密碼的泄露。專利文獻I公開了將數(shù)據(jù)休眠(hibernate)到與硬盤驅動器獨立地準備的NVRAM中的快速休眠(fast hibernate)ο OS當將當前的狀態(tài)寫入到DRAM的休眠區(qū)域時,嵌入式處理器(EP)關閉CPU的核。然后,EP將休眠區(qū)域復制到NVRM,僅向喚醒所需的電路供電。在進行恢復時,EP將上下文從NVRAM恢復到DRM,進而OS對于DRAM的上下文進行恢復處理。另外,作為該文獻的發(fā)明的受讓人的因特爾公司公開了一種快速啟動技術(RST =RapidStarttechnology),即當轉移到睡眠時,能夠在一定時間后轉移到休眠狀態(tài),從休眠狀態(tài)開始在短時間內恢復到加電狀態(tài)。專利文獻2公開了用于使POST在短時間內結束的快速啟動的方法。當此次的啟動被設定為可用后的最初的啟動時,執(zhí)行正常啟動并將此時設定的內容存儲到BIOS芯片。在不是最初的啟動的情況下,通過將在BIOS芯片中存儲的參數(shù)設定到控制器的寄存器中來縮短POST時間。專利文獻3公開了在磁盤裝置中設定HDD密碼的技術。至此沒有討論從休眠狀態(tài)恢復時由于竊聽裝置的插入而導致的密碼的竊聽問題。其理由如下:從休眠狀態(tài)恢復時與從斷電狀態(tài)恢復時一樣,以往與盤驅動器的裝卸無關地請求密碼。近年來,導入了在短時間內從節(jié)電狀態(tài)恢復的各種BIOS,其中在從休眠狀態(tài)或者接近休眠狀態(tài)的狀態(tài)恢復的情況下,存在不請求密碼輸入而由BIOS自動地向盤驅動器發(fā)送密碼的BIOS。這些BIOS在從休眠狀態(tài)或者接近休眠狀態(tài)的狀態(tài)恢復時,執(zhí)行比通常的例程簡化了的例程來在短時間內結束引導。在這種情況下,如果請求密碼輸入,則無法在短時間內恢復,因此,簡化后的例程的前提是不顯示密碼的輸入提示,由BIOS代替用戶自動地向盤驅動器發(fā)送密碼。因此,如果采用這樣的BIOS則發(fā)生密碼被竊聽的問題。從休眠狀態(tài)恢復時也與從掛起狀態(tài)恢復時一樣,如果能夠僅限于在檢測出盤驅動器的脫離時請求密碼輸入,則能夠不降低用戶使用性并且保護密碼,因此是合適的。但是,在從休眠狀態(tài)恢復的此前的例程中請求密碼,由于恢復花費時間,因此與通過簡化后的例程來實現(xiàn)短時間內的恢復的目的不符。此外,在從掛起狀態(tài)恢復時,由于在主存儲器中維持用于顯示密碼的輸入提示的代碼,因此能夠在檢測出盤驅動器的脫離時請求密碼輸入,但是,在休眠狀態(tài)時主存儲器的代碼消失,因此也無法用同樣的方法請求密碼輸入。另外,如果為使UEFI固件(firmware)在從掛起狀態(tài)恢復時執(zhí)行,在從休眠狀態(tài)恢復時強制地轉移到斷電狀態(tài),則休眠狀態(tài)被解除,無法取得在脫離前正在編輯的數(shù)據(jù)。例如,第三者將休眠中的盤驅動器暫時拆卸而經由竊聽裝置安裝在該計算機的情況下,如果強制地轉移到斷電狀態(tài),則合法的用戶在使計算機恢復到加電狀態(tài)時,無法使此前編輯過的編輯中的數(shù)據(jù)恢復到主存儲器。專利文件1:美國專利7971081號公報專利文獻2:美國專利第7213139號公報專利文獻3:日本特開2008-52704號公報
發(fā)明內容
因此,本發(fā)明的目的在于提供如下方法,即在將主存儲器中的數(shù)據(jù)保存到非易失性存儲器而轉移到節(jié)電狀態(tài)的期間,存在對于非易失性存儲器的非法存取時保護密碼。并且,本發(fā)明的目的在于提供如下方法,即從節(jié)電狀態(tài)恢復時,維持在轉移到節(jié)電狀態(tài)前在主存儲器中存在的數(shù)據(jù)并保護密碼。本發(fā)明的目的還在于提供如下方法,即執(zhí)行在短時間內完成的不請求密碼輸入的引導并保護密碼。另外,本發(fā)明的目的在于提供實現(xiàn)上述方法的計算機以及計算機程序。
本發(fā)明提供保護在非易失性存儲器中設定的密碼的方法。在本發(fā)明的第一方式中,在非易失性存儲器中設定密碼。非易失性存儲器可以是引導盤驅動器。然后,將主存儲器存儲的數(shù)據(jù)保存到非易失性存儲器,轉移到節(jié)電狀態(tài)。這種節(jié)電狀態(tài)包含ACPI規(guī)定的休眠狀態(tài)。然后,計算機檢測在節(jié)電狀態(tài)期間發(fā)生的對于非易失性存儲器的非法存取。然后,對檢測出非法存取的情況進行響應而請求密碼的輸入。對所輸入的密碼的認證已成功的情況進行響應而從節(jié)電狀態(tài)恢復到加電狀態(tài)。因此,在檢測出非法存取時,只要不輸入正確的密碼就無法對非易失性存儲器進行存取,因此,在非易失性存儲器中存儲的數(shù)據(jù)得到保護。請求輸入的密碼,只要在檢測出非法存取時能夠限制對計算機的存取即可,因此,不僅是在非易失性存儲器中設定的密碼,也可以是加電密碼或者管理員密碼這樣的其它BIOS密碼。系統(tǒng)能夠對沒有檢測出非法存取的情況進行響應而不請求密碼輸入地向非易失性存儲器發(fā)送密碼。在沒有檢測出非法存取時,即使系統(tǒng)自動地發(fā)送密碼,也沒有密碼被竊聽的危險,并且能夠應對在短時間內恢復這樣的用戶的需求。保存到非易失性存儲器中的數(shù)據(jù)可以恢復到主存儲器中。其結果,即使有非法存取,該計算機主也不會丟失在遷移到節(jié)電狀態(tài)前存在于主存儲器中的正在編輯中的數(shù)據(jù)。在恢復到加電狀態(tài)時,可以執(zhí)行省略從斷電狀態(tài)恢復時進行初始化的設備中包含的一部分設備的初始化的第一 BIOS代碼。另外,在請求密碼輸入時,可以執(zhí)行從不將主存儲器中的數(shù)據(jù)保存到在非易失性存儲器中的斷電狀態(tài)恢復時執(zhí)行的第二 BIOS代碼。然后,可以從復位處理器來請求密碼輸入的步驟轉移到恢復到加電狀態(tài)的步驟。關于非法存取,可以通過將非易失性存儲器從計算機電氣切斷來檢測,或者通過為了啟動計算機所需的電源停止來檢測。在本發(fā)明的第二方式中,將系統(tǒng)上下文保存到主存儲器,轉移到使在主存儲器的存儲保持中所需的電源以外的電源停止的第一節(jié)電狀態(tài)。第一節(jié)電狀態(tài)包含ACPI規(guī)定的掛起狀態(tài)。然后,將在主存儲器中存儲的數(shù)據(jù)保存到非易失性存儲器中,轉移到使主存儲器的電源停止的第二節(jié)電狀態(tài)。第二節(jié)電狀態(tài)包含ACPI規(guī)定的休眠狀態(tài)或者與其接近的狀態(tài)。接著,計算機檢測在第二節(jié)電狀態(tài)期間發(fā)生的對于非易失性存儲器的非法存取。對檢測出非法存取的情況進行響應而請求密碼的輸入。對所輸入的密碼的認證成功進行響應而將在非易失性存儲器中保存的數(shù)據(jù)轉發(fā)到主存儲器。然后,恢復系統(tǒng)上下文,從第二節(jié)電狀態(tài)恢復到加電狀態(tài)。第二節(jié)電狀態(tài)可以是操作系統(tǒng)進行從第一節(jié)電狀態(tài)的恢復處理的狀態(tài)。在轉移到第二節(jié)電狀態(tài)時,可以執(zhí)行BIOS代碼來將主存儲器存儲的數(shù)據(jù)保存到非易失性存儲器。在轉移到第一節(jié)電狀態(tài)時,執(zhí)行與從斷電狀態(tài)向加電狀態(tài)引導時執(zhí)行的第一 BIOS代碼相比能夠在短時間內完成的第二 BIOS代碼。在請求密碼輸入時,能夠復位處理器來執(zhí)行第一BIOS代碼。根據(jù)本發(fā)明,能夠提供如下方法,即在將主存儲器的數(shù)據(jù)保存到非易失性存儲器而轉移到節(jié)電狀態(tài)的期間,存在對于非易失性存儲器的非法存取時保護密碼。另外,根據(jù)本發(fā)明,能夠提供如下方法,即在從節(jié)電狀態(tài)恢復時,在維持轉移到節(jié)電狀態(tài)前在主存儲器中存在的數(shù)據(jù)的同時保護密碼。另外,根據(jù)本發(fā)明,能夠提供如下方法,即在執(zhí)行在短時間內完成的不請求密碼輸入的引導的同時保護方法。另外,根據(jù)本發(fā)明,能夠提供實現(xiàn)這樣的方法的計算機以及計算機程序。
圖1是表示本實施方式的筆記本PClO的主要結構的功能框圖。圖2是表示B10S_R0M25的數(shù)據(jù)結構的圖。圖3是用于說明SO狀態(tài)時的主存儲器15的數(shù)據(jù)結構的圖。圖4是表示密碼保護的整體的步驟的主流程圖。圖5是表示密碼保護的詳細步驟的流程圖。圖6是表示密碼保護的詳細步驟的流程圖。圖7是表示密碼保護的詳細步驟的流程圖。圖8是表示密碼保護的詳細步驟的流程圖。圖9是表示與S34狀態(tài)相關的電源狀態(tài)的圖。圖10是POST選擇代碼105決定BIOS的執(zhí)行路徑的邏輯值表。符號說明10筆記本PC ; 15主存儲器
具體實施例方式[電源狀態(tài)(powerstate)]圖1是表示筆記本型個人計算機(筆記本PC)10的硬件結構的功能框圖。大多數(shù)的硬件結構為公知,因此,在此以本發(fā)明中所需的范圍進行說明。在存儲器控制集線器(MCH)13上連接了 CPU11、主存儲器15、視頻控制器17以及輸入輸出(I/O)控制集線器(ICH)21。在視頻控制器17上連接了 IXD19。ICH21具備各種規(guī)格的接口功能,圖1中代表性地在SATA上連接了 SSD23,在SPI上連接了 B10S_R0M25,在LPC上連接了嵌入式控制器(EC) 27以及NVRAM31。在EC27上連接了鍵盤29以及電源控制器(powercontroller)33。在電源控制器33上連接了電源按鈕37以及DC/DC變換器35。電源控制器33通過篡改檢測線67與SSD23連接。筆記本PClO 與 ACPI (Advanced Configuration and Power Interface)的節(jié)電功能以及即插即用(plug and play)對應。在ACPI中定義了從SI狀態(tài)到S4狀態(tài)的四個睡眠狀態(tài)(節(jié)電狀態(tài))、SO狀態(tài)(加電狀態(tài))、S5狀態(tài)(斷電狀態(tài))。關于睡眠狀態(tài),筆記本PClO僅定義了 S3狀態(tài)和S4狀態(tài)。S3狀態(tài)即所謂的掛起狀態(tài),保持主存儲器15的存儲,保持主存儲器15的存儲所不需要的電源停止。進入到S3狀態(tài)時,操作系統(tǒng)(OS)將電源停止的設備所保持的系統(tǒng)上下文保存到主存儲器15,在電源恢復時恢復到各設備。S4狀態(tài)是由ACPI支持的睡眠狀態(tài)中到啟動為止的時間最長的電源狀態(tài),被稱為休眠狀態(tài)。當筆記本PClO從SO狀態(tài)遷移到S4狀態(tài)時,OS在將包含主存儲器15的存儲內容的筆記本PClO的之前的系統(tǒng)上下文存儲到SSD23后,將針對電源控制器33等的電源啟動時所需的最小限度的設備以外的設備的電源關斷。S5狀態(tài)是所謂的被稱為軟關機的電源狀態(tài),除了 OS不向SSD23保存上下文這點夕卜,基本上供電的設備的范圍與S4狀態(tài)相同。以下,在對S3狀態(tài)、S4狀態(tài)以及S5狀態(tài)進行統(tǒng)稱時,顯示為Sx狀態(tài)。相對于Sx狀態(tài),SO狀態(tài)原則上是向筆記本PClO工作所需的全部設備供電的狀態(tài)。在本發(fā)明中,需要從電源狀態(tài)和數(shù)據(jù)狀態(tài)兩方面來理解Sx狀態(tài)。將僅電源狀態(tài)適合的Sx狀態(tài)稱為硬件的Sx狀態(tài),將其表示為HW_Sx狀態(tài)。此外,關于SO狀態(tài),也將向所有設備供電的狀態(tài)表示為HW_S0狀態(tài)。HW_S0狀態(tài)包含從Sx狀態(tài)到完全遷移到SO狀態(tài)的過程中的狀態(tài)。在HW_Sx狀態(tài)或者HW_S0狀態(tài)和各電源狀態(tài)下的數(shù)據(jù)狀態(tài)的雙方適合時,可以說是ACPI中規(guī)定的Sx狀態(tài)或者SO狀態(tài)。例如,在從S4狀態(tài)向SO狀態(tài)遷移的過渡的狀態(tài)時,電源恢復到加電狀態(tài),但是,保存到SSD23中的存儲器映像恢復到主存儲器15前的狀態(tài)可以說是HW_S0狀態(tài),但是作為整體卻無法說是SO狀態(tài)以及S4狀態(tài)的某一狀態(tài)。在本發(fā)明中,還基于使電源狀態(tài)遷移時的軟件上的執(zhí)行主體為OS和BIOS中的哪一個的視點來定義S34狀態(tài)。S34狀態(tài)是OS從SO狀態(tài)遷移到S3狀態(tài),然后BIOS自動地從S3狀態(tài)遷移到S4狀態(tài)的狀態(tài)。OS進行從SO狀態(tài)向Sx狀態(tài)轉移的處理,因此,原則上OS識別出的電源狀態(tài)與實際的電源狀態(tài)一致。與此相對,在S34狀態(tài)下,OS識別出遷移目的地為S3狀態(tài),但是電源狀態(tài)和數(shù)據(jù)狀態(tài)實質上與S4狀態(tài)相當。OS在遷移到S3狀態(tài)時,在系統(tǒng)上下文中包含從S3狀態(tài)恢復到SO狀態(tài)的代碼,因此,無法從S34狀態(tài)直接恢復到SO狀態(tài)。在從S34狀態(tài)恢復到SO狀態(tài)時,BIOS臨時將系統(tǒng)從S34狀態(tài)恢復到S3狀態(tài)后,從BIOS接管了控制權的OS需要從S3狀態(tài)恢復到SO狀態(tài)。與此相對,在遷移到S4狀態(tài)時,在OS將系統(tǒng)上下文寫入主存儲器15后,OS將主存儲器15存儲的數(shù)據(jù)保存到SSD23。OS在系統(tǒng)上下文中包含從S4狀態(tài)恢復到SO狀態(tài)的代碼,因此,可以使系統(tǒng)從S4狀態(tài)直接恢復到SO狀態(tài)。此外,在S34狀態(tài)和S4狀態(tài)下,有時在SSD23中保存的數(shù)據(jù)的結構存在少許差異。BIOS不識別主存儲器15存儲的有效的數(shù)據(jù)的區(qū)域(地址和數(shù)據(jù)長度)。在OS使筆記本PClO從SO狀態(tài)遷移到S34狀態(tài)時,BIOS通常也將主存儲器15的沒有存儲數(shù)據(jù)的地址的存儲區(qū)域以維持的狀態(tài)完全復制到SSD23,使筆記本PClO從S3狀態(tài)遷移到S34狀態(tài)。與此相對,在OS使系統(tǒng)從SO狀態(tài)遷移到S4狀態(tài)時,OS識別主存儲器15的數(shù)據(jù)結構,因此可以僅將所存儲的有效的數(shù)據(jù)的區(qū)域保存到SSD23。將從S4狀態(tài)或者S5狀態(tài)恢復到SO狀態(tài)稱為引導(boot),將從S3狀態(tài)恢復到SO狀態(tài)稱為恢復。引導和恢復由BIOS進行的處理和OS進行的處理構成。在從S34狀態(tài)遷移到SO狀態(tài)時,將從S34狀態(tài)恢復到S3狀態(tài)稱為引導,將從S3狀態(tài)恢復到SO狀態(tài)稱為恢復。在從SO狀態(tài)遷移到S34狀態(tài)時,將在S3狀態(tài)停留的時間稱為S34時間。從Sx狀態(tài)恢復到SO狀態(tài)時,對于被復位的設備執(zhí)行P0ST(Power on SelfTest)。POST是指如下的作業(yè),即從向CPUll供給復位信號到開始OS的加載為止的期間,在B10S_R0M25中存儲的代碼在芯片組的控制器或周邊設備中設定參數(shù)而成為可以使用的狀態(tài)。POST可以是從CPUll被復位開始到OS開始加載為止BIOS代碼進行的全部處理,或者從中去除對CPUll以及主存儲器15等基本的設備進行的初始化以外的處理后的處理。[主要硬件]返回圖1,ICH21包含未圖示的RTC (Real Time Clock)和RTC存儲器51。RTC和RTC存儲器51在AC/DC適配器以及電池組的電力停止,ICH21未被從DC/DC變換器35供電時,可以從紐扣電池接受電力的供給。RTC存儲器51是存儲BIOS的設置數(shù)據(jù)以及RTC生成的時間信息等的易失性存儲器。RTC存儲器51存儲在遷移到S3狀態(tài)時由BIOS參照的S34標志以及S34時間。對于RTC存儲器51進行的S34標志以及S34時間的設定,在BIOS設置代碼119 (參照圖2)向B10S_R0M25的數(shù)據(jù)區(qū)域83設定S34可用(enable)時進行。S34標志是用于在OS使筆記本PClO遷移到S3狀態(tài)時,向BIOS指示使其進行遷移到S34狀態(tài)的處理,或者BIOS檢測對SSD23的非法存取,然后決定執(zhí)行路徑的信息。S34時間是指從OS使系統(tǒng)遷移到S3狀態(tài)開始到BIOS自動遷移到S34狀態(tài)為止的時間。ICH21包含在S5狀態(tài)下維持電源的ACPI寄存器57和寄存器58。ACPI寄存器57和寄存器58可以由非易失性存儲器構成。ACPI寄存器57相當于在ACPI中規(guī)定的SLP_TYP寄存器以及SLP_EN寄存器。ACPI寄存器57在從SO狀態(tài)遷移到Sx狀態(tài)時通過OS來設定。在從遷移到S3狀態(tài)開始經過了 S34時間時,通過RTC在寄存器58中設定到時位。SSD23是具備由存儲OS、設備驅動程序、應用程序以及用戶數(shù)據(jù)等的閃速存儲器構成的存儲區(qū)域的大容量的存儲裝置。SSD23是引導盤驅動器,存儲在筆記本PClO啟動時被加載的引導映像。存儲區(qū)域被劃分為系統(tǒng)區(qū)域和用戶區(qū)域。系統(tǒng)區(qū)域是存儲SSD23的固件,禁止用戶進行的用于數(shù)據(jù)的寫入或讀出的存取的區(qū)域。當BIOS向SSD23發(fā)送SSD密碼和鎖定命令時,固件設定SSD密碼,并將所設定的密碼存儲到系統(tǒng)區(qū)域。當BIOS向被設定了 SSD密碼的SSD23發(fā)送SSD密碼和鎖定解除命令時,固件進行認證后解除鎖定,允許從系統(tǒng)向用戶區(qū)域的存取。在用戶區(qū)域中,在存儲用戶數(shù)據(jù)以及程序的區(qū)域以外,定義了在遷移到S4狀態(tài)或者S34狀態(tài)時保存在主存儲器15中展開的程序以及數(shù)據(jù)的保存區(qū)域。EC27是由CPU、ROM、RAM等構成的微型計算機,還具備多通道的A/D輸入端子、D/A輸出端子、計時器以及數(shù)字輸入輸出端子。EC27可以與CPUll獨立地執(zhí)行筆記本PClO的內部的動作環(huán)境的管理所涉及的程序。EC27包含鍵盤控制器。電源控制器33是基于來自EC27的指示來控制DC/DC變換器35的布線邏輯的數(shù)字控制電路(ASIC)。DC/DC變換器35將從未圖示的AC/DC適配器或者電池組供給的直流電壓轉換為用于使筆記本PClO工作所需的多個電壓,進而基于與電源狀態(tài)對應地定義的電力供給劃分,向各設備供給電力。當電源按鈕37被按下而生成啟動事件時,電源控制器33向筆記本PClO的所有設備供電,使系統(tǒng)遷移到HW_S0狀態(tài)。電源控制器33通過篡改檢測線67與SSD23連接。篡改檢測線67通過與電源控制器33相同的電源被上拉。SSD23在被安裝到筆記本PClO的期間,將篡改檢測線67的電位維持在大地電平。在將SSD23從筆記本PClO拆下時,篡改檢測線67的電位上升。電源控制器33具備設定篡改位的寄存器59和設定電源位的寄存器61。電源控制器33的邏輯電路在檢測出篡改位檢測線67的電位上升時的上升沿時,將寄存器59設定為邏輯值I。BIOS在密碼認證成功時將寄存器61設定為邏輯值I。寄存器59、61在電源控制器33的電源停止時被解除并被設定為邏輯值O。電源按鈕37是生成啟動事件的設備的例子。在其它生成啟動事件的設備中包含讀取傳感器、指紋認證裝置或者取得WOL的魔術包(magic packet)的網卡等。[B10S_R0M 的結構]
圖2是表示B10S_R0M25的數(shù)據(jù)結構的圖。存儲在B10S_R0M25中的BIOS代碼由UEFI固件構成。B10S_R0M25包含存儲BIOS代碼的BIOS區(qū)域81和BIOS代碼利用的數(shù)據(jù)區(qū)域83。B10S_R0M25為了減輕伴隨BIOS代碼的重寫的風險而采用了引導塊方式。BIOS區(qū)域81被劃分為引導塊85和系統(tǒng)塊87。引導塊85是被寫保護的存儲區(qū)域,在此存儲的程序或者代碼被作為在TPM (Trusted Platform Module)的說明書中規(guī)定的CRTM (Core Rootof Trustfor Measurement)來處理,如果沒有特別的權限則無法重寫。在引導塊85中存儲了作為CRTM的基本設備初始化代碼101、一貫性認證代碼103、P0ST選擇代碼105以及保存代碼113。CRTM被構成為BIOS代碼中具有一貫性的部分,在筆記本PClO進行引導時,一定在最初被執(zhí)行。通過一貫性認證代碼103來進行與筆記本PClO的平臺有關的全部的一貫性的測量。基本設備初始化代碼101在筆記本PClO啟動后從Sx狀態(tài)恢復到SO狀態(tài)時,在最低限范圍內進行直到將BIOS代碼加載到主存儲器15中開始執(zhí)行為止的處理中所需的CPU11、主存儲器15以及其它的基本的設備的檢測、檢查以及初始化。POST選擇代碼105參照ICH21的寄存器57、58、RTC存儲器51的S34標志、電源控制器33的寄存器59、61,判斷執(zhí)行基本POST代碼107、簡易POST代碼111或者S3P0ST代碼115中的哪一個,或者檢測對SSD23的非法存取的發(fā)生,然后控制BIOS代碼的執(zhí)行路徑。保存代碼113在從SO狀態(tài)遷移到S34狀態(tài)時,將S3狀態(tài)下的主存儲器15的狀態(tài)轉發(fā)到SSD23。保存代碼113與OS不同,不識別主存儲器15的存儲區(qū)域的數(shù)據(jù)結構,因此原則上將存儲區(qū)域的開始地址到最終地址的主存儲器15的地址全體的存儲狀態(tài)完全復制到SSD23?;綪OST代碼107為了從S4狀態(tài)或者S5狀態(tài)開始進行引導,進行將所有內部設備作為對象進行檢測、檢查以及初始化這樣的完整的POST處理?;綪OST代碼107在無法檢測預定的設備時以及檢測結果判斷為設備沒有進行正常動作時,通過嗶嗶聲或畫面顯示來輸出錯誤?;綪OST代碼107從與MCH13以及ICH21連接的周邊設備取得參數(shù),在當前的系統(tǒng)中選擇最佳參數(shù),設定到MCH13以及ICH21包含的控制器中。把這樣檢查內部設備并將基于從此取得的信息來選擇的最佳參數(shù)設定到控制器中的處理稱為初始化,把在任意的場所中保存的過去設定的參數(shù)設定到對應的控制器中的處理稱為還原(restore)。關于還原,由于省略了用于內部設備的檢測、檢查以及最佳參數(shù)的選擇的處理,因此與初始化相比能夠在短時間內完成。認證代碼109將用于設定加電密碼、SSD密碼以及管理者密碼等BIOS密碼的提示顯示在IXD19上,或者對所輸入的密碼進行認證或者發(fā)送到SSD23來解除鎖定。在設定了任意的BIOS密碼時,在基本POST代碼107的執(zhí)行過程中或者結束時一定執(zhí)行認證代碼109。在未設定任何BIOS密碼時,即使控制權轉移,也不執(zhí)行認證代碼109。認證代碼109可以對用戶輸入的密碼進行散列處理,然后發(fā)送到系統(tǒng)或者SSD23。簡易POST代碼111在從S4狀態(tài)或者S5狀態(tài)恢復到SO狀態(tài)時,省略一部分設備的檢測、檢查以及最佳參數(shù)的選擇等POST處理,與基本POST代碼107相比在短時間內完成引導。作為省略POST處理的設備的對象,可以選擇SSD23、USB設備以及無線模塊等因為響應時間長所以初始化花費時間多的設備、或者即使OS從動作的時刻開始進行初始化也沒有問題的設備等。
簡易POST代碼111可以構成為,將在從S4狀態(tài)或者S5狀態(tài)開始進行引導時執(zhí)行的基本POST代碼107所設定的最佳的參數(shù)或此時的設備的信息等(以下稱為參數(shù))存儲到B10S_R0M25的數(shù)據(jù)區(qū)域83或者NVRAM31,在進行引導時除了基本設備外還原已存儲的參數(shù),由此縮短POST時間。簡易POST代碼111被構成為縮短恢復時間,因此,在設定了 SSD密碼時不向用戶請求SSD密碼的輸入。簡易POST代碼111代替用戶向被設定了 SSD密碼的SSD23發(fā)送由用戶輸入的SSD密碼的散列值來解除鎖定。S3P0ST代碼115在從S3狀態(tài)進行恢復時,與簡易POST代碼111相比在短時間內完成POST處理。在從S4狀態(tài)或者S5狀態(tài)開始進行引導時,基本POST代碼107所設定的參數(shù)在SO狀態(tài)下被存儲到主存儲器15。當從SO狀態(tài)向S3狀態(tài)掛起時,維持在主存儲器15中存儲的參數(shù)以及S3P0ST代碼115的存儲。S3P0ST代碼115通過還原在主存儲器15中存儲的參數(shù),能夠在短時間內完成控制器的設定。S3P0ST代碼115在設定了 SSD密碼時,在從S3狀態(tài)向SO狀態(tài)遷移時,代替用戶自動地將用戶所輸入的SSD密碼的散列值發(fā)送到SSD23來解除鎖定。1/0代碼117提供用于在CPUll以實時模式工作時對周邊設備進行存取的輸入輸出的接口。BIOS設置代碼119提供用于由用戶定制引導驅動器的選擇、各設備的功能的可用/非可用、安全的可用/非可用等這樣的對于內部設備的設定的接口。在進行引導時,如果在OS被加載前操作預定的按鍵,則執(zhí)行BIOS設置代碼119,在IXD19上顯示BIOS設置畫面。用戶設定的設置數(shù)據(jù)多數(shù)被存儲在ICH21內的RTC存儲器51中。CPUll在執(zhí)行基本POST代碼107、簡易POST代碼111或者S3P0ST代碼115時,參照在RTC存儲器51中存儲的設置數(shù)據(jù)。用戶通過BIOS設置畫面可以將S34狀態(tài)的利用設定為可用或者非可用。并且,在將S34狀態(tài)的利用設定為可用時,還可以設定S34時間。所設定的S34可用標志和S34時間被存儲在數(shù)據(jù)區(qū)域83中。BIOS設置代碼119在將S34狀態(tài)設定為可用時,同時在RTC存儲器51中設定S34標志和S34時間。環(huán)境實用工具(utility)代碼121控制筆記本PClO的溫度以及電力。各BIOS代碼不必如圖2所示那樣由獨立的代碼構成,而可以共用代碼的一部分,控制執(zhí)行路徑以便實現(xiàn)各自的功能。本發(fā)明也可以應用于不采用引導塊方式的BIOS ROM或者將BIOS區(qū)域的全體作為引導塊的B10S_R0M中。[主存儲器的數(shù)據(jù)結構]圖3是用于說明SO狀態(tài)時的主存儲器15的數(shù)據(jù)結構的圖。在主存儲器15中定義了一般區(qū)域201和SMRAM區(qū)域203。在一般區(qū)域201中存儲了矢量表205、OS、設備驅動程序、應用程序等程序207以及編輯中的用戶數(shù)據(jù)209。矢量表205存儲分別由段地址和偏移地址的4字節(jié)構成的256個矢量地址。矢量表205存儲在CPUll中發(fā)生中斷時對該中斷進行處理的程序的地址。在一般區(qū)域201中還存儲除了在復位時由CPUll的高速緩存執(zhí)行的引導塊85中存儲的代碼以外的BIOS代碼211和系統(tǒng)上下文213。系統(tǒng)上下文213包含:通過OS或設備驅動程序設定在各設備的寄存器中的硬件上下文、OS或設備驅動程序在CPUll以及其它設備的高速緩存中存儲的控制數(shù)據(jù)等軟件上下文。OS在從SO狀態(tài)向S3狀態(tài)或者S4狀態(tài)遷移時,向主存儲器15中寫入系統(tǒng)上下文213,在從S3狀態(tài)恢復到SO狀態(tài)時,使系統(tǒng)上下文213返回到原來的設備,使系統(tǒng)恢復到SO狀態(tài)的狀態(tài)。系統(tǒng)上下文213還包含從S3狀態(tài)或者S4狀態(tài)遷移時由OS進行處理的代碼
的矢量。在SMRAM區(qū)域203中加載了 SMI處理程序(handler) 215、S3P0ST代碼115,并且確保SSM(狀態(tài)保存映射:State Save Map) 219這樣的區(qū)域。S3P0ST代碼115在從S3狀態(tài)向SO狀態(tài)遷移時,通過被SMI處理程序215調用來執(zhí)行。另外,在主存儲器15上,BIOS代碼211包含的基本POST代碼107、認證代碼109以及簡易POST代碼111在從S4狀態(tài)或S5狀態(tài)向SO狀態(tài)遷移時被執(zhí)行。另外,認證代碼109在從S34狀態(tài)恢復時,在檢測出對SSD23的非法存取而暫時將控制移交到基本POST代碼時被執(zhí)行。SMRAM區(qū)域203的代碼當在SO狀態(tài)和S3狀態(tài)之間進行遷移時被反復執(zhí)行,因此被維持到遷移到S4狀態(tài)或S5狀態(tài)為止,但是因為BIOS代碼211在恢復到SO狀態(tài)后沒有使用的必要,因此,存儲BIOS代碼211代碼的主存儲器15的區(qū)域被設定為可以重寫其它數(shù)據(jù)。
[密碼保護的步驟]接著,參照圖Γ圖10說明通過筆記本PClO實現(xiàn)的密碼保密的步驟。圖4是表示全體步驟的主流程圖,圖5 圖8是詳細的流程圖。圖9 (A)表示與圖Γ圖8的S34狀態(tài)有關的硬件的電源狀態(tài),圖9 (B)與其對應地表示包含了數(shù)據(jù)狀態(tài)的ACPI的電源狀態(tài)。圖10是POST選擇代碼105決定BIOS代碼的執(zhí)行路徑的邏輯值表。在圖10中,在寄存器61為邏輯值O時,與寄存器59的值無關而判定為發(fā)生了非法存取。在寄存器61的邏輯值為I時,同時寄存器59為O時判定為沒有非法存取,在寄存器59為I時判定為發(fā)生了非法存取。在圖4的塊251中,筆記本PClO遷移到Sx狀態(tài),在塊253中按下了電源按鈕37。在塊255中BIOS判定是否對SSD23設定了 SSD密碼。在沒有設定SSD密碼時,在塊257中即使遷移源是任意的Sx狀態(tài),BIOS也不向用戶請求密碼輸入,而使系統(tǒng)恢復到SO狀態(tài)(圖6的塊417)。在設定了 SSD密碼時,在塊259中,BIOS判斷遷移源是否是S34狀態(tài)。在判斷為遷移源是S34狀態(tài)時轉移到塊263,在判斷為是S34狀態(tài)以外的S3、S4、S5狀態(tài)時轉移到塊261。在塊261中,BIOS判斷出遷移源是S3狀態(tài)時轉移到塊263,在判斷為是S3狀態(tài)以外的S4狀態(tài)或者S5狀態(tài)時,轉移到塊269。在塊269中,BIOS向用戶請求密碼輸入,使系統(tǒng)向SO狀態(tài)遷移(圖7的塊505)。在塊263中,BIOS在檢測出對SSD23的非法存取時,轉移到塊265,在未檢測出非法存取時轉移到塊267。在塊265中,BIOS判斷遷移源是S3狀態(tài)或者S34狀態(tài)的哪一個。在判斷出是S3狀態(tài)時轉移到塊269,在判斷出是S34狀態(tài)時轉移到塊271。在塊269中,BIOS使系統(tǒng)強制地關機(圖7的塊555)。在塊271中,BIOS向用戶請求密碼輸入,使系統(tǒng)恢復到SO狀態(tài)(圖8的塊613、659)。在塊267中,BIOS不向用戶請求密碼輸入而使系統(tǒng)遷移到SO狀態(tài)(圖7的塊511、圖8的塊659)。在根據(jù)塊267、271從S34狀態(tài)恢復時,僅限于檢測出對SSD23的非法存取時請求密碼輸入。然后,在從S34狀態(tài)恢復時,BIOS只要沒有檢測出對SSD23的非法存取,就可以不請求密碼輸入地在短時間內結束引導處理。另外,BIOS在檢測出非法存取時,不省略從用戶的密碼輸入而自動地向SSD23發(fā)送密碼、或者使系統(tǒng)強制地遷移到S5狀態(tài),因此,能夠保護密碼并且使保存到SSD23的數(shù)據(jù)恢復。在圖5的塊301中,筆記本PClO最初遷移到S5狀態(tài),ACPI寄存器57被設定為S5狀態(tài)。另外,寄存器58、59以及RTC存儲器51的S34標志被清除并且表示邏輯值0,寄存器61被設定電源位來表示邏輯值I。當操作電源按鈕37來生成啟動事件,啟動筆記本PClO的電源時,電源控制器33使DC/DC變換器35動作,使筆記本PClO遷移到HW SO狀態(tài)。從EC27取得啟動事件的ICH21向CPUll發(fā)送復位信號,進行加電復位。被復位的CPUll從存儲在引導塊85中的基本設備初始化代碼101開始執(zhí)行。在塊303中,取得了復位信號的CPUll在電壓穩(wěn)定時對內部的高速緩存以及寄存器進行初始化。CPUll然后對預先決定的B10S_R0M25的地址(復位矢量)進行存取并取出指令。MCH13將作為CPUll的存取目的地的復位矢量切換為B10S_R0M25的基本設備初始化代碼101的地址。CPUll將在引導塊85中存儲的BIOS代碼讀出到高速緩存,進行主存儲器15以及MCH13等執(zhí)行BIOS代碼所需的基本的設備的檢測、檢查以及初始化?;驹O備初始化代碼101將為了進行初始化而在控制器中設定的參數(shù)寫入到數(shù)據(jù)區(qū)域83以及根據(jù)需要寫入其它非易失性存儲器。接著,基本設備初始化代碼101當主存儲器15可以利用時,將在系統(tǒng)塊87中存儲的BIOS代碼以及數(shù)據(jù)區(qū)域83的參數(shù)加載到主存儲器15,可以將主存儲器15用作影子RAM (Shadow RAM)ο CPUll當以下說明的在引導塊85中存儲的一貫性認證代碼103以及POST選擇代碼105的執(zhí)行結束時,對主存儲器15進行存取,執(zhí)行已加載的BIOS代碼。然后,一貫性認證代碼103進行與在系統(tǒng)塊87中存儲的BIOS代碼的改變有關的檢驗。當檢驗結束時,CPUll執(zhí)行POST選擇代碼105。POST選擇代碼105最初參照RTC存儲器51的S34標志。POST選擇代碼105,當確認沒有設定S34標志時,參照ACPI寄存器57。POST選擇代碼105包含圖10的邏輯值表。POST選擇代碼105,當確認在ACPI寄存器57中設定了 S5位時,按照圖10的執(zhí)行路徑# 6將控制移交到基本POST代碼107。另外,在以下的步驟中,每當CPUll被復位時,參照圖10的邏輯值表,以同樣的步驟執(zhí)行POST選擇代碼105。在此,因為沒有設定BIOS密碼,所以即使控制從基本POST代碼107移交到認證代碼109也不請求密碼輸入。在塊305中,在執(zhí)行基本POST代碼107的初始階段,當用戶按下鍵盤29的預定的功能鍵時,調用BIOS設置代碼119,將設置畫面顯示在IXD19上。在與本發(fā)明的關聯(lián)中,用戶通過設置畫面進行SSD密碼的設定、對于B10S_R0M25的數(shù)據(jù)區(qū)域83的S34標志的設定以及S34時間的設定??紤]S3狀態(tài)的便利性和節(jié)電的重要性,用戶可以在從O時間到預定的時間的范圍期間設定S34時間。BIOS設置代碼119對所輸入的SSD密碼進行散列處理,存儲在安全的非易失性存儲器中,將其它設置數(shù)據(jù)存儲到RTC存儲器51。BIOS設置代碼119將SSD密碼的散列值與密碼設定命令一起發(fā)送到SSD23。在塊306中,SSD23的固件對取得的密碼設定命令進行處理,設定SSD密碼。所設定的SSD密碼以后在每次SSD23被復位時有效。在用戶結束BIOS設置代碼119時,執(zhí)行已中斷的基本POST代碼107?;綪OST代碼107進行在通過基本設備初始化代碼101沒有被處理的剩余的所有設備的檢測、檢查以及初始化?;綪OST代碼107將為了進行初始化而在控制器或者周邊設備中設定的參數(shù)寫入數(shù)據(jù)區(qū)域83以及根據(jù)需要寫入其他非易失性存儲器。在BIOS的引導處理結束時,在塊307中控制移交到OS的引導處理。OS、設備驅動程序以及應用程序等程序被加載到主存儲器15來執(zhí)行。然后,OS除了從S3狀態(tài)恢復到SO狀態(tài)時所需要的代碼,為了一般的程序而釋放被加載了 B10S211的主存儲器15的存儲區(qū)域,并轉移到SO狀態(tài)。在塊309中,用戶通過進行電源按鈕37的按下、通過OS的接口的操作或者電源管理的執(zhí)行等,進行使筆記本PCio從SO狀態(tài)遷移到Sx狀態(tài)的操作。在進行了使筆記本PClO遷移到S34狀態(tài)的操作時轉移到塊311,在進行了使筆記本PClO遷移到S3狀態(tài)的操作時轉移到圖6的塊406,當進行了使筆記本PClO遷移到S4狀態(tài)或者S5狀態(tài)的操作時轉移到圖6的塊407。使筆記本PClO轉移到S3狀態(tài)的操作和使筆記本PClO轉移到S34狀態(tài)的用戶的操作或者電源管理的動作相同,但是,BIOS代碼判斷在B10S_R0M25中設定的S34狀態(tài)是可用還是非可用。當在塊311中檢測出操作事件的ICH21對CPUll進行中斷時,OS指示動作中的程序進行用于遷移到S3狀態(tài)的處理,將在S3狀態(tài)中消失的系統(tǒng)上下文213存儲到主存儲器15。OS以及根據(jù)需要由設備驅動程序和BIOS將系統(tǒng)上下文保存到主存儲器15。OS在從各程序取得向S3狀態(tài)遷移的準備完成的通知時,對ACPI寄存器57設定使向S3狀態(tài)的遷移成為可用。SMI處理程序215捕獲(trap)向ACPI寄存器57的設定,當確認在B10S_R0M25中設定了 S34標志時,在RTC存儲器51中設定S34標志和S34時間。當ACPI寄存器57被設定為可用時,ICH21對EC27指示停止用于維持主存儲器15的存儲所需的電源以外的電源,使RTC的報警機構(RTC Resume)動作。在塊313中,筆記本PClO向S3狀態(tài)遷移(時刻tl)。在塊315中,當RTC進行計時的時間達到在RTC存儲器51中設定的S34時間時,轉移到塊317。在塊317中,RTC在寄存器58中設定超時位,進而指示EC27遷移到HW_S0狀態(tài)(時刻t2)。SSD23在投入電源時初始化寄存器來進行復位。至此,被解除了鎖定的狀態(tài)的SSD23通過復位被鎖定,以后,SSD23只要不取得鎖定解除命令和用戶輸入的SSD密碼、或者POST選擇代碼105、簡易POST代碼111或S3P0ST代碼為了進行自動發(fā)送而管理的SSD密碼,則拒絕系統(tǒng)向用戶區(qū)域的存取。在塊319中,被復位的CPUll執(zhí)行POST選擇代碼105,轉移到圖6的塊401。在塊401中,POST選擇代碼105參照寄存器58、59、61和RTC存儲器51,在未檢測出對SSD23的非法存取的情況下,選擇圖10的執(zhí)行路徑#3,在檢測出非法存取的情況下,選擇執(zhí)行路徑#7,解除寄存器58的到時位。在本步驟中,在該時刻設想了沒有非法存取的情況,因此,POST選擇代碼105選擇執(zhí)行路徑#3。在POST選擇代碼105選擇了執(zhí)行路徑#7的情況下,強制關閉系統(tǒng)。因為SSD23已經在塊317中被鎖定,因此POST選擇代碼105自動地發(fā)送所管理的SSD密碼,解除SSD23的鎖定,然后將控制權交給保存代碼113。在塊403中,保存代碼113將主存儲器15的存儲狀態(tài)轉發(fā)到SSD23,在塊405中,通過EC27停止啟動所需的電源控制器33的電源以外的電源,使筆記本PClO遷移到HW_S4狀態(tài)。結果,筆記本PClO,OS識別為系統(tǒng)遷移到S3狀態(tài),但是電源狀態(tài)以及數(shù)據(jù)狀態(tài)遷移到作為S4狀態(tài)的S34狀態(tài)(時刻 t3)。
在塊406中,POST選擇代碼105確認B10S_R0M25被設定為非可用,省略對于RTC存儲器51的S34標志的設定。當OS在ACPI寄存器57中設定使向S3狀態(tài)的遷移成為可用時,ICH21向EC27指示使系統(tǒng)遷移到HW_S3狀態(tài)。在塊407中,當OS在ACPI寄存器57中設定使向S4狀態(tài)或者S5狀態(tài)的遷移成為可用時,ICH21指示EC27使系統(tǒng)遷移到HW_S4狀態(tài)或者HW_S5狀態(tài)。在塊409中,如果SSD23在Sx狀態(tài)期間被從筆記本PClO卸下并且被再安裝時,篡改檢測線67的電位暫時上升后變成零(時刻t4)。電源控制器33的邏輯電路檢測篡改檢測線67的電位的上升沿,將寄存器59的篡改位設為邏輯值I。在Sx狀態(tài)期間,如果電源控制器33的電源停止的情況下,寄存器59的篡改位被清除而成為邏輯值0,同時,寄存器61的電源位也被清除而成為邏輯值O。當在SSD23和ICH21之間插入竊聽裝置時也發(fā)生這樣的狀態(tài),因此,設想為發(fā)生了對SSD23的非法存取。在塊411中,當在任意的時刻按下電源按鈕37時,生成啟動事件,電源控制器33使DC/DC變換器35動作,使系統(tǒng)遷移到HW_S0狀態(tài)。在塊413中,CPUl I執(zhí)行POST選擇代碼105 (時刻t5)。在塊415中,POST選擇代碼105判斷是否在SSD23中設定了 SSD密碼。在圖5的塊306中,當設定了 SSD密碼時轉移到圖7的塊501,在沒有設定SSD密碼時轉移到塊417。在塊417中,無論遷移源的電源狀態(tài)是什么,都不向用戶請求密碼輸入,系統(tǒng)恢復到SO狀態(tài),返回到圖5的塊307。在塊501中,POST選擇代碼105確認是否在RTC存儲器51中設定了 S34標志。當設定了 S34標志時遷移源的電源狀態(tài)是S34狀態(tài),因此轉移到塊507。當沒有設定S34標志時,轉移到塊503,POST選擇代碼105進而確認是否在ACPI寄存器57中設定了 S3位。在設定了 S3位時,遷移源的電源狀態(tài)是S3狀態(tài),因此轉移到塊507。在沒有設定S3位時設定SSD密碼,并且遷移源的電源狀態(tài)為S4狀態(tài)或者S5狀態(tài),因此轉移到塊505。在塊505中,POST選擇代碼105參照ACPI寄存器57以及RTC存儲器51的S34標志,選擇圖10的執(zhí)行路徑#6,執(zhí)行基本POST代碼107和認證代碼109,向用戶請求密碼輸入,然后使系統(tǒng)恢復到SO狀態(tài)。在塊507中,POST選擇代碼105參照寄存器61,確認電源位。在設定了電源位時轉移到塊509,在電源位被清除時轉移到塊513。在塊509中,POST選擇代碼105參照寄存器59,確認篡改位。在設定了篡改位時,相當于檢測出對SSD23的非法存取,因此轉移到塊513。在沒有設定篡改位時,因為沒有檢測出對SSD23的非法存取,因此轉移到塊510。在塊510中,POST選擇代碼105參照RTC存儲器51,判斷是否設定了 S34標志。在設定了 S34標志時,選擇圖10的執(zhí)行路徑#1,轉移到圖8的塊651。在沒有設定S34標志時,是從S3狀態(tài)起的遷移,因此轉移到塊511。在塊511中,POST選擇代碼105參照ACPI寄存器57、寄存器59、61以及RTC存儲器51的S34標志,選擇圖10的執(zhí)行路徑#4,將控制轉移到S3P0ST代碼115。S3P0ST代碼115在POST處理結束時,將在安全區(qū)域中存儲的SSD密碼的散列值自動發(fā)送到SSD23,解除SSD23的鎖定。在塊507、509中確認了沒有非法存取后進行SSD密碼的自動發(fā)送,因此保護SSD23免于被竊聽裝置竊聽。在塊513中,POST選擇代碼105確認是否在RTC存儲器51中設定了 S34標志。當沒有設定S34標志時,遷移源的電源狀態(tài)是S3狀態(tài),因此轉移到塊555。當設定了 S3標志時,轉移到圖8的塊601。在塊555中,POST選擇代碼105參照ACPI寄存器57、寄存器59、61以及RTC存儲器51的S34標志,選擇圖10的執(zhí)行路徑#5時,不顯示密碼輸入的提示而強制地關閉系統(tǒng),使其遷移到S5狀態(tài)。在圖8的塊601中,POST選擇代碼105參照寄存器59、61以及RTC存儲器51的S34標志,在從S34狀態(tài)起的恢復時,判斷為檢測出對SSD23的非法存取,選擇圖10的執(zhí)行路徑#2,將控制轉移到基本POST代碼107。在塊603中,結束了 POST處理的基本POST代碼107將控制移交到認證代碼109時,認證代碼109向用戶請求密碼輸入。在塊605中,當用戶對認證代碼109顯示的密碼輸入畫面輸入了正確的SSD密碼時轉移到塊609。在認證失敗時轉移到塊607,停止引導。在引導停止時,可以再次啟動來輸入SSD密碼或執(zhí)行BIOS設置代碼119來清除SSD密碼,由此進行引導。在塊609中,通過正確的密碼的輸入已確認為安全的認證代碼109清除寄存器59的篡改位,在塊611中,在寄存器61中設定電源位。在塊613中,當認證代碼109復位CPUl I時,CPUll執(zhí)行POST選擇代碼105 (時亥Ij t7),返回圖6的塊415。此次,寄存器59、61表示的非法存取的狀態(tài)被解除,因此,POST選擇代碼105參照寄存器59、61以及RTC存儲器51的S34標志,選擇圖10的執(zhí)行路徑#1,從塊501經由塊510轉移到圖8的塊651,將控制移交給簡易POST代碼111。簡易POST代碼111在塊653中,將在安全區(qū)域中存儲的SSD密碼的散列值自動地發(fā)送到SSD23并解除鎖定。在塊507、509中確認了沒有非法存取后進行SSD密碼的自動發(fā)送,因此可以保護SSD23的密碼以及數(shù)據(jù)不被竊聽。在塊655中,簡易POST代碼111將在圖6的塊403中保存到SSD23中的主存儲器15的存儲狀態(tài)恢復到主存儲器15。在塊657中,簡易POST代碼111清除RTC存儲器51的S34標志。在該時刻,筆記本PClO的數(shù)據(jù)狀態(tài)是S3狀態(tài),但是電源狀態(tài)是HW_S0狀態(tài)。在數(shù)據(jù)轉發(fā)結束時,在塊659中,簡易POST代碼111將控制權移交給OS。OS參照ACPI寄存器57,識別出遷移源的電源狀態(tài)是S3狀態(tài),遷移到SO狀態(tài),因此,根據(jù)需要,設備驅動程序以及BIOS協(xié)調動作,同時使系統(tǒng)上下文213恢復到被復位的各設備,返回圖5的塊307 (時刻 t8)。根據(jù)圖5 圖8的步驟,在圖5的塊309中,OS識別出已使系統(tǒng)遷移到S3狀態(tài),在圖8的塊659中進行從S3狀態(tài)的恢復處理。在該期間的處理全部由BIOS進行,因此OS沒有必要確認BIOS正在執(zhí)行,因此沒有必要對OS加以變更。在從S34狀態(tài)向SO狀態(tài)遷移時,如從S3狀態(tài)向SO狀態(tài)遷移時那樣執(zhí)行S3P0ST代碼115時,在檢測出對SSD23的非法存取時使系統(tǒng)強制地關閉。在這點上,在本實施方式中,在沒有檢測出非法存取時可以執(zhí)行自動地向SSD23發(fā)送密碼的簡易POST代碼111來在短時間內恢復,僅在檢測出非法存取時執(zhí)行基本POST代碼107和認證代碼109,請求密碼輸入,由此,實現(xiàn)密碼的保護,并且使在遷移到S34狀態(tài)前的編輯數(shù)據(jù)不消失。至此,以從S34狀態(tài)恢復的情況為例說明了保護密碼和數(shù)據(jù)的方法,但是,本發(fā)明也可以應用于在從S4狀態(tài)恢復時,為了在比基本POST代碼107短的時間內引導而自動發(fā)送密碼,不向用戶請求密碼輸入的全體POST代碼。另外,表示了在檢測出非法存取時,將控制移交到基本POST代碼107來請求密碼輸入的例子,但是本發(fā)明也可以將BIOS代碼構成為在檢測出非法存取時向用戶請求密碼輸入,在沒有檢測出的情況下自動地發(fā)送密碼在短時間內完成引導。這樣的BIOS在圖10的時刻t5恢復到HW_S0狀態(tài)后,可以不復位CPUll而使系統(tǒng)恢復到SO狀態(tài)。至此,以圖示的特定的實施方式說明了本發(fā)明,但是本發(fā)明當然并不限于圖示的實施方式,只要能夠實現(xiàn)本發(fā)明的效果,也可以采用目前已知的任意結構。
權利要求
1.一種在具備能夠設定密碼的非易失性存儲器的計算機中保護所述密碼的方法,其特征在于, 具有如下步驟: 在所述非易失性存儲器中設定密碼; 將主存儲器存儲的數(shù)據(jù)保存到所述非易失性存儲器中并轉移到節(jié)電狀態(tài); 所述計算機檢測在所述節(jié)電狀態(tài)的期間發(fā)生的對所述非易失性存儲器的非法存取; 對檢測出所述非法存取的情況進行響應,請求密碼的輸入;以及 對所輸入的所述密碼的認證成功的情況進行響應,從所述節(jié)電狀態(tài)恢復到加電狀態(tài)。
2.根據(jù)權利要求1所述的方法,其特征在于, 所述被請求輸入的密碼是設定在所述非易失性存儲器中的密碼。
3.根據(jù)權利要求1或2所述的方法,其特征在于, 具有對未檢測出所述非法存取的情況進行響應,不請求所述密碼的輸入,由系統(tǒng)向所述非易失性存儲器發(fā)送密碼的步驟。
4.根據(jù)權利要求廣3中任一項所述的方法,其特征在于, 具有將保存到所述非易失性存儲器的數(shù)據(jù)恢復到所述主存儲器中的步驟。
5.根據(jù)權利要求廣4中任一項所述的方法,其特征在于, 恢復到所述加電狀態(tài)的步驟具有執(zhí)行省略在從斷電狀態(tài)恢復時要初始化的設備中包含的至少一部分的設備的初始化的第一 BIOS代碼的步驟。
6.根據(jù)權利要求5所述的方法,其特征在于, 請求所述密碼輸入的步驟具有執(zhí)行在從斷電狀態(tài)恢復時執(zhí)行的第二 BIOS代碼的步驟。
7.根據(jù)權利要求1飛中任一項所述的方法,其特征在于, 從將處理器復位來請求所述密碼輸入的步驟轉移到恢復到所述加電狀態(tài)的步驟。
8.根據(jù)權利要求廣7中任一項所述的方法,其特征在于, 檢測所述非法存取的步驟包含檢測已將所述非易失性存儲器從所述計算機電氣切斷的步驟。
9.根據(jù)權利要求廣8中任一項所述的方法,其特征在于, 檢測所述非法存取的步驟包含檢測為了啟動所述計算機所需的電源已停止的步驟。
10.一種在具備能夠設定密碼的非易失性存儲器的計算機中保護所述密碼的方法,其特征在于, 具有如下步驟: 在所述非易失性存儲器中設定密碼; 在主存儲器中保存系統(tǒng)上下文,轉移到將所述主存儲器的存儲保持所需的電源以外的電源停止的第一節(jié)電狀態(tài); 將所述主存儲器中存儲的數(shù)據(jù)保存到所述非易失性存儲器中,并轉移到將所述主存儲器的電源停止的第二節(jié)電狀態(tài); 所述計算機檢測在所述第二節(jié)電狀態(tài)的期間發(fā)生的對所述非易失性存儲器的非法存?。? 對檢測出所述非法存取的情況進行響應,請求密碼的輸入;對所輸入的所述密碼的認證成功的情況進行響應,將保存到所述非易失性存儲器的數(shù)據(jù)轉發(fā)到所述主存儲器;以及 恢復所述系統(tǒng)上下文,從所述第二節(jié)電狀態(tài)恢復到加電狀態(tài)。
11.根據(jù)權利要求10所述的方法,其特征在于, 所述第二節(jié)電狀態(tài)是操作系統(tǒng)進行從所述第一節(jié)電狀態(tài)的恢復處理的狀態(tài)。
12.根據(jù)權利要求10或11所述的方法,其特征在于, 轉移到所述第二節(jié)電狀態(tài)的步驟包含執(zhí)行BIOS代碼,將所述主存儲器存儲的數(shù)據(jù)保存到所述非易失性存儲器的步驟。
13.根據(jù)權利要求1(Γ12中任一項所述的方法,其特征在于, 向所述主存儲器轉發(fā)的步驟包含執(zhí)行比從斷電狀態(tài)引導到加電狀態(tài)時執(zhí)行的第一BIOS代碼在更短時間內完成的第二 BIOS代碼的步驟。
14.根據(jù)權利要求8 11中任一項所述的方法,其特征在于, 請求所述密碼的輸入的步驟包含將處理器復位,執(zhí)行所述第一 BIOS代碼的步驟。
15.一種具備能夠設定密碼的非易失性存儲器的計算機,其特征在于, 具有: 第一恢復電路,其在從斷電狀態(tài)恢復時請求密碼的輸入,進行恢復處理; 第二恢復電路,其在從將主存儲器的數(shù)據(jù)保存到所述非易失性存儲器的節(jié)電狀態(tài)恢復時,不請求密碼的輸入地進行恢復處理;以及 檢測電路,其檢測在所述節(jié)電狀態(tài)期間發(fā)生的對所述非易失性存儲器的非法存取, 從所述節(jié)電狀態(tài)恢復時,對所述檢測電路檢測出非法存取的情況進行響應,請求密碼的輸入。
16.根據(jù)權利要求15所述的計算機,其特征在于, 所述第一恢復電路執(zhí)行所述密碼的輸入的請求。
17.根據(jù)權利要求15或16所述的計算機,其特征在于, 所述第二恢復電路對所述檢測電路未檢測出非法存取的情況進行響應,進行恢復處理。
18.根據(jù)權利要求15 17中任一項所述的計算機,其特征在于, 所述檢測電路,在切斷所述計算機與所述非易失性存儲器之間的電氣連接時或者所述檢測電路的電源停止時,檢測出非法存取。
19.一種計算機,其具備能夠設定密碼的非易失性存儲器,并且能夠在斷電狀態(tài)、維持主存儲器的存儲的第一節(jié)電狀態(tài)和將所述主存儲器的數(shù)據(jù)保存到所述非易失性存儲器的第二節(jié)電狀態(tài)下工作,該計算機的特征在于, 具有: 第一恢復電路,其在從所述斷電狀態(tài)恢復時請求密碼的輸入來進行恢復處理; 第二恢復電路,其在從所述第二節(jié)電狀態(tài)向所述第一節(jié)電狀態(tài)恢復時,不請求密碼的輸入地進行恢復處理;以及 檢測電路,其檢測在所述第二節(jié)電狀態(tài)期間發(fā)生的對所述非易失性存儲器的非法存取, 所述第一恢復電路對所述檢測電路檢測出非法存取的情況進行響應,請求所述密碼輸入,在所輸入的密碼的認證成功時,所述第二恢復電路進行恢復處理。
20.根據(jù)權利要求19所述的計算機,其特征在于, 所述第二恢復電路比所述第一恢復電路在更短時間內結束恢復處理。
21.一種計算機程序,其特征在于, 使具備已被設定了密碼的非易失性存儲器的計算機執(zhí)行具有如下步驟的處理: 設定從休眠狀態(tài)恢復到加電狀態(tài)時請求的密碼; 從所述加電狀態(tài)轉移到所述休眠狀態(tài); 檢測在所述休眠狀態(tài)的期間發(fā)生的對所述非易失性存儲器的非法存??; 對檢測出所述非法存取的情況進行響應,請求密碼的輸入;以及對所輸入的所述密碼的認證成功的情況進行響應,將保存在所述非易失性存儲器中的數(shù)據(jù)轉發(fā)到所述主存儲器。
22.—種計算機程序,其特征在于, 使具備已被設定了密碼的非易失性存儲器的計算機執(zhí)行具有如下步驟的處理: 設定從掛起狀態(tài)恢復到加電狀態(tài)時請求的密碼; 從所述加電狀態(tài)轉移到所述掛起狀態(tài); 在所述掛起狀態(tài)下將主存儲器存 儲的數(shù)據(jù)保存到所述非易失性存儲器并停止所述主存儲器的電源; 檢測在所述主存儲器的電源停止期間發(fā)生的對所述非易失性存儲器的非法存?。? 對檢測出所述非法存取的情況進行響應,請求密碼的輸入;以及對所輸入的所述密碼的認證成功的情況進行響應,將保存在所述非易失性存儲器中的數(shù)據(jù)轉發(fā)到所述主存儲器,轉移到所述加電狀態(tài)。
全文摘要
本發(fā)明提供保護密碼的方法以及計算機。保護SSD密碼免于在S4狀態(tài)下的非法存取。在SSD中設定密碼。使OS在時刻t1轉移到S3狀態(tài),使BIOS在時刻t3轉移到S4狀態(tài)。在時刻t4進行對于SSD的非法裝卸。當在時刻t6檢測出SSD的裝卸時復位CPU,執(zhí)行通常的基本POST代碼并請求密碼輸入。在密碼認證成功時,在時刻t7復位CPU,執(zhí)行在短時間內結束到S3狀態(tài)的引導的簡易POST代碼。在未檢測出SSD的裝卸時不請求密碼輸入,簡易POST代碼自動地向SSD發(fā)送密碼,結束到S3狀態(tài)的引導。OS進行從S3狀態(tài)到S0狀態(tài)的恢復處理。
文檔編號G06F21/62GK103207975SQ20131000206
公開日2013年7月17日 申請日期2013年1月4日 優(yōu)先權日2012年1月15日
發(fā)明者萩原干雄, 笠松榮太郎, 塚本泰通, 荒木直幸 申請人:聯(lián)想(新加坡)私人有限公司