用于防篡改引導(dǎo)的系統(tǒng)和方法
【專利摘要】此處公開了用于引導(dǎo)具有使用全盤加密的加密存儲(chǔ)介質(zhì)的計(jì)算設(shè)備的系統(tǒng)、方法和非暫時(shí)性計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),所述引導(dǎo)被稱為防篡改引導(dǎo)。該系統(tǒng)從未加密存儲(chǔ)介質(zhì)檢索內(nèi)核緩存和內(nèi)核緩存摘要,并且基于憑證和內(nèi)核緩存摘要檢驗(yàn)內(nèi)核緩存的真實(shí)性。如果內(nèi)核緩存是可信的,執(zhí)行操作系統(tǒng)的啟動(dòng)和執(zhí)行。在一個(gè)實(shí)施例中,系統(tǒng)通過(guò)利用口令檢驗(yàn)器和口令證明檢驗(yàn)禁止防篡改引導(dǎo)的請(qǐng)求的真實(shí)性。
【專利說(shuō)明】用于防篡改引導(dǎo)的系統(tǒng)和方法
[0001]與相關(guān)申請(qǐng)的交叉引用
[0002]本申請(qǐng)要求序列號(hào)N0.13/007,529,提交于2011年I月14日,題目為“SYSTEM ANDMETHOD FOR TAMPER-RESISTANT BOOTING”的美國(guó)專利申請(qǐng)的優(yōu)先權(quán),通過(guò)引用將其完整結(jié)
合在此。
【技術(shù)領(lǐng)域】
[0003]本公開涉及加密,并且更具體地,涉及計(jì)算設(shè)備的防篡改引導(dǎo)。
【背景技術(shù)】
[0004]當(dāng)今,許多計(jì)算設(shè)備需要某種程度的信息保護(hù)。密碼術(shù)是用于保護(hù)計(jì)算設(shè)備的這樣一種方法。密碼術(shù)指信息加密和解密兩者。加密是將可理解的信息(明文)改變?yōu)闊o(wú)法理解的信息(密文)的處理,并且解密是將密文改變回明文的處理。
[0005]計(jì)算設(shè)備可以加密不同大小的數(shù)據(jù),從小數(shù)據(jù)集合到大塊數(shù)據(jù)。全盤加密(FDE)是對(duì)計(jì)算設(shè)備上的整個(gè)盤卷加密的方法。在盤卷成為可訪問(wèn)之前,必須對(duì)整個(gè)盤卷解密。全盤加密被認(rèn)為比文件級(jí)加密更安全,因?yàn)樗形募?包括臨時(shí)文件)都被加密。
[0006]雖然FDE被認(rèn)為比文件級(jí)加密更安全,采用FDE的系統(tǒng)仍然易受攻擊。在一種簡(jiǎn)單攻擊中,黑客可以改變計(jì)算設(shè)備的引導(dǎo)序列,從而引導(dǎo)來(lái)自黑客自己的惡意代碼,而不是執(zhí)行正常引導(dǎo)序列。FDE系統(tǒng)必須在引導(dǎo)時(shí)提示用戶輸入口令以便解鎖FDE卷。黑客的惡意代碼可以顯示一個(gè)相同外觀的屏幕,其要求FDE 口令,但是偷竊該FDE 口令,而不是使用該口令解鎖FDE卷。當(dāng)用戶輸入所述口令時(shí),黑客記錄該口令并且獲得對(duì)計(jì)算設(shè)備的訪問(wèn)。因此黑客可以暗中偷竊了用戶的口令。沒(méi)有從引導(dǎo)程序到操作系統(tǒng)內(nèi)核的信任鏈,這種攻擊甚至能夠挫敗全盤加密的計(jì)算設(shè)備。
【發(fā)明內(nèi)容】
[0007]本公開的附加特征和優(yōu)點(diǎn)將在下面的描述中闡述,并且將從該描述中部分地明了,或可以通過(guò)此處公開的原理的實(shí)施認(rèn)識(shí)到??梢越柚綑?quán)利要求中特別指出的手段和組合實(shí)現(xiàn)和獲得本公開的特征和優(yōu)點(diǎn)。根據(jù)以下的描述和所附的權(quán)利要求,將更全面地清楚了解本公開的這些及其他特征,或可通過(guò)此處闡述的原理的實(shí)現(xiàn)了解本公開的這些及其他特征。
[0008]公開了用于引導(dǎo)具有使用全盤加密的加密存儲(chǔ)介質(zhì)的計(jì)算設(shè)備的系統(tǒng)、方法和非暫時(shí)性計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),所述引導(dǎo)被稱為防篡改引導(dǎo)。一種補(bǔ)救上面概述的攻擊的方法被稱為防篡改引導(dǎo)。當(dāng)計(jì)算設(shè)備采用高安全模式諸如FDE時(shí),黑客應(yīng)當(dāng)比在較低安全模式下操作時(shí)更難以改變引導(dǎo)序列。然而,即使在具有FDE使能的存儲(chǔ)介質(zhì)的計(jì)算設(shè)備中,操作系統(tǒng)內(nèi)核也不能被加密。這是因?yàn)橐龑?dǎo)環(huán)境不足以復(fù)雜到能夠解密FDE卷。而是,引導(dǎo)環(huán)境必須依靠操作系統(tǒng)內(nèi)核進(jìn)行解密。未加密的操作系統(tǒng)內(nèi)核是整個(gè)FDE安全模型中的一個(gè)明顯薄弱環(huán)節(jié),因?yàn)樗杀还粽甙抵刑鎿Q為惡意口令竊取代碼。一種用于計(jì)算設(shè)備解決這種不足的方法是通過(guò)建立從固件到操作系統(tǒng)中的內(nèi)核的信任鏈,檢驗(yàn)引導(dǎo)序列的真實(shí)性。圖1示出了可以實(shí)現(xiàn)此處公開的方法的示例性系統(tǒng)100。系統(tǒng)100在引導(dǎo)時(shí)接收來(lái)自用戶的與用于FDE使能的加密存儲(chǔ)介質(zhì)的卷密鑰相關(guān)聯(lián)的憑證。系統(tǒng)從存儲(chǔ)介質(zhì)中檢索未加密內(nèi)核和未加密內(nèi)核緩存摘要。系統(tǒng)然后通過(guò)比較檢索到的內(nèi)核緩存摘要和計(jì)算的摘要檢驗(yàn)內(nèi)核緩存是真實(shí)可信的。如果系統(tǒng)確定內(nèi)核緩存是可信的,則執(zhí)行操作系統(tǒng)的啟動(dòng)和執(zhí)行。如果內(nèi)核緩存不是真實(shí)可信的,系統(tǒng)生產(chǎn)一個(gè)錯(cuò)誤。
[0009]一種實(shí)現(xiàn)所述方法的系統(tǒng)通過(guò)首先基于從用戶處接收的全盤加密口令產(chǎn)生卷密鑰,發(fā)起防篡改引導(dǎo)處理。該系統(tǒng)以所述卷密鑰對(duì)存儲(chǔ)介質(zhì)加密,以便產(chǎn)生全盤加密存儲(chǔ)介質(zhì)。然后,所述系統(tǒng)以所述全盤加密卷密鑰加密內(nèi)核緩存,以便產(chǎn)生內(nèi)核緩存摘要,系統(tǒng)將內(nèi)核緩存摘要以及內(nèi)核緩存本身存儲(chǔ)在未加密存儲(chǔ)介質(zhì),或加密存儲(chǔ)介質(zhì)的未加密的部分上。當(dāng)系統(tǒng)引導(dǎo)時(shí),它基于存儲(chǔ)的內(nèi)核緩存摘要和計(jì)算的摘要檢驗(yàn)內(nèi)核緩存的完整性。
[0010]系統(tǒng)通過(guò)以固件引導(dǎo)系統(tǒng),并且通過(guò)所述固件確認(rèn)引導(dǎo)程序的完整性,檢驗(yàn)操作系統(tǒng)沒(méi)有被篡改。在引導(dǎo)程序基于存儲(chǔ)的內(nèi)核緩存摘要和計(jì)算的摘要確認(rèn)了操作系統(tǒng)的內(nèi)核緩存的情況下,系統(tǒng)將控制傳遞給引導(dǎo)程序。一旦系統(tǒng)確定操作系統(tǒng)沒(méi)有被篡改,它將控制傳遞給操作系統(tǒng)以便啟動(dòng)和執(zhí)行,并且進(jìn)行任意其余的引導(dǎo)任務(wù)。
[0011]在一個(gè)實(shí)施例中,所述系統(tǒng)通過(guò)在固件級(jí)產(chǎn)生口令檢驗(yàn)器,并且將其與口令證明進(jìn)行比較來(lái)禁止防篡改引導(dǎo)。所述系統(tǒng)通過(guò)對(duì)混淆值和口令應(yīng)用加密算法的一數(shù)目的迭代產(chǎn)生所述口令檢驗(yàn)器。一旦所述系統(tǒng)從用戶處接收到禁止防篡改引導(dǎo)的請(qǐng)求,所述操作系統(tǒng)產(chǎn)生部分口令證明。通過(guò)對(duì)所述請(qǐng)求口令和混淆值應(yīng)用所述加密算法的所述數(shù)目的迭代中的一部分,并且然后重新引導(dǎo)計(jì)算設(shè)備,來(lái)產(chǎn)生部分口令證明。一旦所述系統(tǒng)重新引導(dǎo),所述固件檢索所述部分口令證明,并且執(zhí)行所述加密算法的所述數(shù)目的迭代的剩余部分,以便生產(chǎn)完整的口令證明。如果口令證明與口令檢驗(yàn)器匹配,則系統(tǒng)禁止防篡改引導(dǎo)。這樣,系統(tǒng)驗(yàn)證禁止防篡改引導(dǎo)的請(qǐng)求。
[0012]另外,通過(guò)建立存儲(chǔ)口令檢驗(yàn)器的數(shù)據(jù)庫(kù),所述系統(tǒng)初始化防篡改引導(dǎo)。操作系統(tǒng)產(chǎn)生被授權(quán)禁止防篡改引導(dǎo)的用戶的列表,并且將該列表發(fā)送到所述固件。操作系統(tǒng)為每個(gè)用戶產(chǎn)生口令檢驗(yàn)器,并且將它們也發(fā)送到所述固件。所述固件在非易失隨機(jī)訪問(wèn)存儲(chǔ)器(NVRAM)中存儲(chǔ)這個(gè)數(shù)據(jù)庫(kù)。該系統(tǒng)還在所述固件中產(chǎn)生系統(tǒng)混淆,并且將系統(tǒng)混淆存儲(chǔ)在NVRAM中以便以后使用。此處公開的原理適用于具有使用全盤加密的加密存儲(chǔ)介質(zhì)的計(jì)算設(shè)備。
【專利附圖】
【附圖說(shuō)明】
[0013]為了描述可以獲得本公開上面列舉的優(yōu)點(diǎn)以及其他的優(yōu)點(diǎn)和特征的方式,將通過(guò)參考特定實(shí)施例給出對(duì)上面簡(jiǎn)要描述的原理的更具體的描述,在附圖中示出了這些實(shí)施例。應(yīng)當(dāng)理解,這些附圖僅僅示出了本公開的示例性實(shí)施例,并且因此不被認(rèn)為是對(duì)其范圍的限制,通過(guò)使用附圖,以附加的具體性和細(xì)節(jié)描述和解釋此處的原理,其中:
[0014]圖1示出了一個(gè)示例的系統(tǒng)實(shí)施例;
[0015]圖2示出了一個(gè)用于防篡改引導(dǎo)的示例方法實(shí)施例;
[0016]圖3示出了對(duì)內(nèi)核緩存的驗(yàn)證;
[0017]圖4示出了建立示例系統(tǒng)實(shí)施例;[0018]圖5示出了用于建立防篡改引導(dǎo)的示例方法實(shí)施例;
[0019]圖6示出了用于禁止防篡改引導(dǎo)的示例方法實(shí)施例;
[0020]圖7示出了產(chǎn)生口令檢驗(yàn)器;
[0021]圖8示出了用于產(chǎn)生口令檢驗(yàn)器的示例性邏輯流程;
[0022]圖9示出了產(chǎn)生部分口令證明;
[0023]圖10示出了產(chǎn)生完整的口令證明;
[0024]圖11示出了用于產(chǎn)生部分口令證明的示例性邏輯流程;
[0025]圖12示出了用于產(chǎn)生完整的口令證明的示例性邏輯流程;
[0026]圖13示出了建立全盤加密;和
[0027]圖14示出了用于建立全盤加密的示例方法實(shí)施例。
【具體實(shí)施方式】
[0028]下面詳細(xì)地討論本公開的各種實(shí)施例。雖然討論了特定的實(shí)現(xiàn),應(yīng)當(dāng)理解,這僅是出于說(shuō)明的目的。相關(guān)領(lǐng)域的技術(shù)人員將認(rèn)識(shí)到可以使用其它部件和配置,而不脫離本公開的精神和范圍。
[0029]本公開解決現(xiàn)有技術(shù)中對(duì)檢驗(yàn)引導(dǎo)序列的真實(shí)性的需要。公開了一種引導(dǎo)具有使用全盤加密的加密存儲(chǔ)介質(zhì)的計(jì)算設(shè)備的系統(tǒng)、方法和非暫時(shí)性計(jì)算機(jī)可讀介質(zhì)。圖1提供了對(duì)可用于實(shí)現(xiàn)此處公開的概念的基礎(chǔ)通用系統(tǒng)或計(jì)算設(shè)備的討論。其后是用于在使用全盤加密(FDE)的計(jì)算設(shè)備上建立、管理、使用和去除防篡改引導(dǎo)的方法的更詳細(xì)的說(shuō)明。此處在闡述各種實(shí)施例的同時(shí)討論這些變化。所述公開現(xiàn)在轉(zhuǎn)到圖1。
[0030]參考圖1, 一個(gè)示例性系統(tǒng)100包括通用計(jì)算設(shè)備100,包括處理單元(CPU或處理器)120和將各種系統(tǒng)部件耦連到處理器120的系統(tǒng)總線110,所述系統(tǒng)部件包括系統(tǒng)存儲(chǔ)器130,諸如只讀存儲(chǔ)器(ROM) 140和隨機(jī)訪問(wèn)存儲(chǔ)器(RAM) 150。系統(tǒng)100可以包括與處理器120直接連接、與處理器120緊鄰、或作為處理器120的一部分的高速存儲(chǔ)器的高速緩存122。系統(tǒng)100將數(shù)據(jù)從存儲(chǔ)器130和/或存儲(chǔ)設(shè)備160拷貝到高速緩存以便由處理器120快速存取。這樣,高速緩存提供在等待數(shù)據(jù)時(shí)消除處理器120延遲的性能提升。這些及其他模塊可以控制或被配置為控制處理器120,以便執(zhí)行各種動(dòng)作。還可以獲得其它系統(tǒng)存儲(chǔ)器130。存儲(chǔ)器130可以包括具有不同性能特性的多個(gè)不同類型的存儲(chǔ)器。可以理解,本公開可以運(yùn)行于具有多于一個(gè)處理器120的計(jì)算設(shè)備100,或聯(lián)網(wǎng)在一起以便提供更好的處理能力的計(jì)算設(shè)備的組或集群。處理器120可以包括任意通用處理器和硬件模塊或軟件模塊,諸如存儲(chǔ)在存儲(chǔ)設(shè)備160內(nèi)的模塊1162、模塊2164和模塊3166,這些模塊被配置為控制處理器120以及其中軟件指令被結(jié)合在實(shí)際處理器設(shè)計(jì)內(nèi)的專用處理器。處理器120本質(zhì)上可以是完全自包含的計(jì)算系統(tǒng),包含多個(gè)核或處理器、總線、存儲(chǔ)器控制器、高速緩存等等。多核處理器可以是對(duì)稱的或非對(duì)稱的。
[0031]系統(tǒng)總線110可以是若干類型的總線結(jié)構(gòu)中的任意一種,包括存儲(chǔ)器總線或存儲(chǔ)器控制器、外圍總線和使用各種總線體系結(jié)構(gòu)中的任意一種的局部總線。存儲(chǔ)在R0M140等中的基本輸入/輸出(BIOS)可以提供諸如在啟動(dòng)期間幫助在計(jì)算設(shè)備100內(nèi)的元件之間傳輸信息的基本例程。計(jì)算設(shè)備100還包括存儲(chǔ)設(shè)備160,諸如硬盤驅(qū)動(dòng)器、磁盤驅(qū)動(dòng)器、光盤驅(qū)動(dòng)器、磁帶驅(qū)動(dòng)器等等。存儲(chǔ)設(shè)備160可以包括用于控制處理器120的軟件模塊162、164、166??梢詷?gòu)想其它硬件或軟件模塊。存儲(chǔ)設(shè)備160被通過(guò)驅(qū)動(dòng)器接口連接到系統(tǒng)總線110。所述驅(qū)動(dòng)器和相關(guān)計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)提供用于計(jì)算設(shè)備100的計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊及其他數(shù)據(jù)的非易失存儲(chǔ)。在一個(gè)方面,執(zhí)行特殊功能的硬件模塊包括存儲(chǔ)在與必要硬件組件,諸如,處理器120、總線110、顯示器170等等相連的非暫時(shí)性計(jì)算機(jī)可讀介質(zhì)內(nèi)的軟件組件,以便執(zhí)行該功能。所述基本組件是本領(lǐng)域技術(shù)人員已知的,并且可以根據(jù)設(shè)備類型構(gòu)想適當(dāng)?shù)淖兓?,諸如設(shè)備100是小型、手持計(jì)算設(shè)備、臺(tái)式計(jì)算機(jī)、還是計(jì)算機(jī)服務(wù)器。
[0032]雖然此處描述的示例性實(shí)施例采用硬盤160,本領(lǐng)域技術(shù)人員應(yīng)當(dāng)理解,還可以在示例性操作環(huán)境中使用可由計(jì)算機(jī)訪問(wèn)的可以存儲(chǔ)數(shù)據(jù)的其他類型的計(jì)算機(jī)可讀介質(zhì),諸如磁帶盒、閃存卡、數(shù)字通用盤、盒式磁帶、隨機(jī)訪問(wèn)存儲(chǔ)器(RAM) 150、只讀存儲(chǔ)器(ROM)140、包含位流的有線或無(wú)線信號(hào)等等。非暫時(shí)性計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)明確地排除諸如能量、載波信號(hào)、電磁波和信號(hào)本身的介質(zhì)。
[0033]為了使得用戶能夠與計(jì)算設(shè)備100交互,輸入設(shè)備190表示任意數(shù)目的輸入機(jī)制,諸如用于語(yǔ)音的麥克風(fēng)、用于手勢(shì)或圖形輸入的觸敏顯示器、鍵盤、鼠標(biāo)、運(yùn)動(dòng)輸入、語(yǔ)音等等。輸出設(shè)備170還可以是本領(lǐng)域技術(shù)人員已知的若干輸出機(jī)制中的一個(gè)或多個(gè)。在有些情況下,多模態(tài)系統(tǒng)使得用戶能夠提供多種類型的輸入,以便與計(jì)算設(shè)備100通信。通信接口 180通常支配和管理用戶輸入和系統(tǒng)輸出。不存在關(guān)于任意特定硬件結(jié)構(gòu)上的操作的限制,并且因此此處的基本特征可被容易地以所開發(fā)的改進(jìn)的硬件或固件結(jié)構(gòu)所替代。
[0034]為了說(shuō)明清楚起見,給出了包括各個(gè)功能塊的說(shuō)明性系統(tǒng)實(shí)施例,其中功能塊包括以“處理器”或處理器120標(biāo)記的功能塊。可以通過(guò)使用共享硬件或者專用硬件提供這些塊表示的功能,包括但不限于能夠執(zhí)行軟件的硬件,和為特定目的而建造以便作為在通用處理器上執(zhí)行的軟件的等同物操作的諸如處理器120之類的硬件。例如,可由單個(gè)共享處理器或多個(gè)處理器(術(shù)語(yǔ)“處理器”的使用不被解釋為僅僅指能夠執(zhí)行軟件的硬件)提供在圖1中給出的一個(gè)或多個(gè)處理器的功能。說(shuō)明性的實(shí)施例可以包括微處理器和/或數(shù)字信號(hào)處理器(DSP)硬件、用于存儲(chǔ)執(zhí)行下面討論的操作的軟件的只讀存儲(chǔ)器(ROM) 140、以及用于存儲(chǔ)結(jié)果的隨機(jī)訪問(wèn)存儲(chǔ)器(RAM) 150。還可以提供超大規(guī)模集成電路(VLSI)硬件實(shí)施例以及與通用DSP電路結(jié)合的定制VLSI電路。
[0035]各種實(shí)施例的邏輯操作被實(shí)現(xiàn)為:(I)在通用計(jì)算機(jī)內(nèi)的可編程電路上運(yùn)行的一系列以計(jì)算機(jī)執(zhí)行的步驟、操作或過(guò)程,(2)在專用可編程電路上運(yùn)行的一系列以計(jì)算機(jī)執(zhí)行的步驟、操作或過(guò)程;和/或(3)可編程電路內(nèi)的互連的機(jī)器模塊或程序引擎。圖1所示的系統(tǒng)100可以實(shí)現(xiàn)列舉的方法的全部或部分,可以是列舉的系統(tǒng)的一部分和/或可以根據(jù)列舉的非暫時(shí)性計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)內(nèi)的指令操作。這些邏輯操作可被實(shí)現(xiàn)為模塊,配置為根據(jù)所述模塊的編程控制處理器120執(zhí)行特殊功能。例如,圖1示出了配置為控制處理器120的三個(gè)模塊即模塊1162、模塊2164和模塊3166。這些模塊可被存儲(chǔ)在存儲(chǔ)設(shè)備160上,并且在運(yùn)行時(shí)裝入RAM150或存儲(chǔ)器130,或可被如本領(lǐng)域中已知的那樣存儲(chǔ)在其它計(jì)算機(jī)可讀存儲(chǔ)器位置中。
[0036]已經(jīng)公開了某些基礎(chǔ)系統(tǒng)組件,如圖2的示例方法實(shí)施例中所示,現(xiàn)在本公開回到對(duì)防篡改引導(dǎo)的討論。為了清楚起見,根據(jù)一種示例系統(tǒng)討論該方法,諸如配置為實(shí)現(xiàn)該方法的圖1所示的示例性系統(tǒng)。[0037]圖2示出了用于引導(dǎo)具有使用全盤加密的加密存儲(chǔ)介質(zhì)的計(jì)算設(shè)備或被稱為防篡改引導(dǎo)的示例方法實(shí)施例。防篡改引導(dǎo)使得黑客難以以未經(jīng)授權(quán)的方式改變授權(quán)的引導(dǎo)序列,或插入其自己的未經(jīng)授權(quán)的引導(dǎo)序列。一種保護(hù)引導(dǎo)序列的方法是建立從固件到操作系統(tǒng)內(nèi)核的信任鏈。固件指控制設(shè)備的低級(jí)基本操作的固定程序。然而,雖然固件被稱為固定程序,在某些情況下,固件更新可以修改固件提供的功能。對(duì)于基于BIOS (基本輸入/輸出系統(tǒng))或基于EFI (可擴(kuò)展固件接口)的計(jì)算機(jī)引導(dǎo)實(shí)現(xiàn),固件通常被存儲(chǔ)在ROM、EEPROM等中。內(nèi)核是操作系統(tǒng)的中心組件,其給軟件應(yīng)用提供對(duì)計(jì)算資源的訪問(wèn),所述計(jì)算資源諸如是計(jì)算設(shè)備的硬件,包括中央處理單元(CPU)、存儲(chǔ)器及其他設(shè)備。在建立信任鏈時(shí),固件可以確認(rèn)引導(dǎo)程序的完整性,但是引導(dǎo)程序不能確認(rèn)內(nèi)核的完整性。計(jì)算機(jī)在出廠后更新其內(nèi)核,并且包含在引導(dǎo)時(shí)用于特定機(jī)器的內(nèi)核擴(kuò)展。內(nèi)核被針對(duì)特定用戶的機(jī)器定制。引導(dǎo)程序必須確認(rèn)內(nèi)核的完整性以便保護(hù)整個(gè)引導(dǎo)序列。
[0038]當(dāng)系統(tǒng)100使用全盤加密時(shí),用于加密卷的卷密鑰作為引導(dǎo)程序和內(nèi)核之間的共享秘密。引導(dǎo)程序必須具有卷密鑰以便檢驗(yàn)口令,并且將其傳遞到操作系統(tǒng)內(nèi)核,然后操作系統(tǒng)內(nèi)核可以解密所述盤。在系統(tǒng)運(yùn)行時(shí),內(nèi)核在存儲(chǔ)器內(nèi)也具有全盤加密卷密鑰。在引導(dǎo)時(shí),引導(dǎo)程序使用卷密鑰執(zhí)行內(nèi)核的完整性檢查。卷密鑰可以與所述口令相同,或可被至少部分地基于所述口令得出。
[0039]系統(tǒng)100建立從固件到內(nèi)核的信任鏈,以便保護(hù)計(jì)算設(shè)備的引導(dǎo)序列。系統(tǒng)在引導(dǎo)時(shí)接收210與來(lái)自用戶的卷密鑰相關(guān)聯(lián)的憑證。在密碼學(xué)中,憑證用于確定用戶的身份。憑證的某些例子包括口令、證書或生物統(tǒng)計(jì),諸如指紋或聲紋。卷密鑰與所述憑證相同或是其導(dǎo)出物。例如,卷密鑰可以是用戶口令、口令的加密版本、或采用用戶口令作為輸入的算法的輸出。一旦系統(tǒng)100確定了卷密鑰,系統(tǒng)從未加密的存儲(chǔ)介質(zhì)中檢索230內(nèi)核和由操作系統(tǒng)產(chǎn)生的內(nèi)核緩存摘要。使用密碼散列函數(shù)、密鑰和內(nèi)核緩存產(chǎn)生內(nèi)核緩存摘要。內(nèi)核緩存包含內(nèi)核代碼和內(nèi)核擴(kuò)展。該摘要還被稱為散列值、消息摘要或散列消息驗(yàn)證碼(HMAC)。HMAC可被用于同時(shí)檢驗(yàn)消息的真實(shí)性和完整性兩者。密碼散列函數(shù)是獲取一個(gè)數(shù)據(jù)塊,并且返回被稱為散列值或消息摘要的固定大小的位串的過(guò)程。對(duì)數(shù)據(jù)塊的任意改變將改變?cè)撜?nèi)核緩存摘要是內(nèi)核緩存的帶密鑰散列,其中所述密鑰是FDE卷密鑰。
[0040]一旦系統(tǒng)檢索到存儲(chǔ)的內(nèi)核緩存摘要,系統(tǒng)基于用戶輸入的憑證檢驗(yàn)240內(nèi)核緩存是可信的,并且如果系統(tǒng)確定內(nèi)核緩存是可信的,使能250操作系統(tǒng)的啟動(dòng)和執(zhí)行。如果內(nèi)核緩存不可信,系統(tǒng)生產(chǎn)錯(cuò)誤260并且不執(zhí)行操作系統(tǒng)。如果不能檢驗(yàn)內(nèi)核的完整性,系統(tǒng)假定計(jì)算設(shè)備已被篡改。該處理被稱為防篡改引導(dǎo),這是因?yàn)樵谝龑?dǎo)處理的每個(gè)階段執(zhí)行完整性檢查,使得系統(tǒng)能夠抵御篡改,并且能夠檢測(cè)到引導(dǎo)處理的關(guān)鍵部分何時(shí)被未經(jīng)授權(quán)而改變。
[0041 ] 用戶可以手動(dòng)地使能全盤加密或某個(gè)自動(dòng)處理可以啟動(dòng)全盤加密,但是大多數(shù)自動(dòng)處理需要某種用戶輸入,諸如輸入口令,系統(tǒng)根據(jù)該口令產(chǎn)生卷密鑰。當(dāng)使能全盤加密時(shí)和/或在可以獲得某些其它適合的共享秘密作為全盤加密卷密鑰的替代物的其它情況下,可以使用防篡改引導(dǎo)處理。
[0042]圖3示出了作為建立從固件到內(nèi)核的信任鏈的一部分,對(duì)內(nèi)核緩存的驗(yàn)證。系統(tǒng)100通過(guò)使用加密算法、用戶輸入的口令和內(nèi)核緩存計(jì)算310HMAC,檢驗(yàn)240內(nèi)核緩存是可信的。系統(tǒng)100使用內(nèi)核緩存和所述口令作為密碼散列函數(shù)的輸入,該密碼散列函數(shù)輸出HMAC0系統(tǒng)100比較320計(jì)算的HMAC和存儲(chǔ)的內(nèi)核緩存摘要,以便確定操作系統(tǒng)是否已被篡改。如果比較的值匹配330,操作系統(tǒng)未被篡改,并且被認(rèn)為是可信的,并且系統(tǒng)可以繼續(xù)引導(dǎo)。如果比較的值不同340,自從創(chuàng)建內(nèi)核緩存摘要以來(lái),操作系統(tǒng)已被改變,并且是不可信的。此時(shí),系統(tǒng)可以停止引導(dǎo)處理,提示用戶重新輸入口令,向遠(yuǎn)程設(shè)備發(fā)送警告,和/或觸發(fā)任意其它希望的動(dòng)作。
[0043]圖4示出了一種防篡改引導(dǎo)處理。系統(tǒng)100通過(guò)以固件410引導(dǎo)系統(tǒng),并且通過(guò)固件410確認(rèn)引導(dǎo)程序420的完整性,檢驗(yàn)操作系統(tǒng)未被篡改。一旦系統(tǒng)通過(guò)固件確認(rèn)了引導(dǎo)程序的完整性,系統(tǒng)將控制傳遞給引導(dǎo)程序420。引導(dǎo)程序基于存儲(chǔ)的內(nèi)核緩存摘要430和在引導(dǎo)時(shí)輸入的口令420確認(rèn)操作系統(tǒng)的內(nèi)核緩存440。通過(guò)使用內(nèi)核緩存和用戶輸入的口令計(jì)算450HMAC,確定內(nèi)核緩存的真實(shí)性。一旦引導(dǎo)處理確定操作系統(tǒng)未被篡改,弓I導(dǎo)處理將控制傳遞給操作系統(tǒng)以便啟動(dòng)和執(zhí)行。
[0044]圖5示出了防篡改引導(dǎo)處理的啟動(dòng)。系統(tǒng)100通過(guò)首先基于從用戶處接收的全盤加密口令產(chǎn)生卷密鑰510發(fā)起防篡改引導(dǎo)處理。系統(tǒng)100以該卷密鑰加密520存儲(chǔ)介質(zhì)以便產(chǎn)生全盤加密存儲(chǔ)介質(zhì)。可以作為用于全盤加密的設(shè)置處理和/或用戶注冊(cè)處理的一部分產(chǎn)生卷密鑰。例如,如果用戶決定在存儲(chǔ)卷上設(shè)置全盤加密,則系統(tǒng)提示用戶輸入全盤加密口令或口令等同物。隨后系統(tǒng)基于該全盤加密口令產(chǎn)生卷密鑰,以該卷密鑰加密該卷,并且可以為防篡改引導(dǎo)同時(shí)使用相同的卷密鑰。然后系統(tǒng)100使用內(nèi)核緩存和全盤卷密鑰產(chǎn)生530內(nèi)核緩存摘要,系統(tǒng)100將內(nèi)核緩存摘要存儲(chǔ)在未加密卷540上。當(dāng)系統(tǒng)引導(dǎo)時(shí),它基于存儲(chǔ)的內(nèi)核緩存摘要和計(jì)算的摘要檢驗(yàn)內(nèi)核緩存的完整性。在至少一種變化中,系統(tǒng)100在加密存儲(chǔ)卷之外的場(chǎng)所存儲(chǔ)內(nèi)核緩存摘要,這是因?yàn)橐龑?dǎo)環(huán)境不能解鎖全盤加密卷,因?yàn)榻怄i處理太復(fù)雜,并且需要具有功能更加全面的內(nèi)核。因此,內(nèi)核緩存不能駐留在加密卷上,因?yàn)橐龑?dǎo)程序不能解鎖全盤加密卷。結(jié)果,內(nèi)核緩存未加密地駐留在與全盤加密卷分離的卷上,引導(dǎo)程序可以從其得到內(nèi)核緩存,而不需要執(zhí)行引導(dǎo)程序無(wú)能力的解密。即使數(shù)據(jù)被在FDE卷上加密,內(nèi)核緩存也可能沒(méi)有被完全地保護(hù),并且可能遭受攻擊者替換。
[0045]內(nèi)核可以駐留在無(wú)保護(hù)的卷上,只要帶密鑰的HMAC摘要(其中全盤加密卷密鑰被用作摘要密鑰)駐留在內(nèi)核旁邊即可。因此,攻擊者可以用惡意內(nèi)核替換該內(nèi)核,但是因?yàn)楣粽卟恢廊P加密口令,攻擊者不能創(chuàng)建匹配的摘要文件,并且引導(dǎo)程序?qū)⒕芙^引導(dǎo)惡意內(nèi)核。
[0046]已經(jīng)討論了防篡改引導(dǎo)處理的啟動(dòng)和執(zhí)行,現(xiàn)在本公開討論如何禁止計(jì)算設(shè)備的防篡改引導(dǎo)。系統(tǒng)100必須首先驗(yàn)證禁止防篡改引導(dǎo)的請(qǐng)求,以便檢驗(yàn)該請(qǐng)求是有效的,并且不是來(lái)自一個(gè)黑客。系統(tǒng)通過(guò)產(chǎn)生口令證明檢驗(yàn)禁止防篡改引導(dǎo)的請(qǐng)求是有效的。因?yàn)楣碳筒僮飨到y(tǒng)不同時(shí)運(yùn)行,傳統(tǒng)方法不提供用于這兩個(gè)處理彼此通信的可行方法。操作系統(tǒng)可以發(fā)送信息給固件,并且重新引導(dǎo)機(jī)器,允許固件在引導(dǎo)時(shí)接收來(lái)自操作系統(tǒng)的消息。然而,在某些情況下,多次重新引導(dǎo)是不可接受的,所以系統(tǒng)僅被允許向固件發(fā)送一次命令。固件被存儲(chǔ)在不可寫但是可由操作系統(tǒng)讀取的非易失隨機(jī)訪問(wèn)存儲(chǔ)器(NVRAM)芯片內(nèi)。操作系統(tǒng)不能發(fā)送原始口令,因?yàn)樗灰悦魑拇鎯?chǔ),并且可由操作系統(tǒng)讀取。操作系統(tǒng)也不能發(fā)送口令的散列,因?yàn)楣粽呖梢宰x取該散列并且觸發(fā)解鎖機(jī)制。操作系統(tǒng)必須發(fā)送不被保護(hù),但是仍然檢驗(yàn)禁止請(qǐng)求的真實(shí)性的數(shù)據(jù)。這可以使用口令檢驗(yàn)器和口令證明完成。[0047]圖6示出了通過(guò)在固件級(jí)產(chǎn)生口令檢驗(yàn)器并且將其和口令證明比較,禁止防篡改引導(dǎo)。系統(tǒng)100產(chǎn)生口令驗(yàn)證器610并且存儲(chǔ)它以便以后使用。系統(tǒng)100從用戶處接收禁止防篡改引導(dǎo)的請(qǐng)求620和口令。操作系統(tǒng)通過(guò)對(duì)請(qǐng)求口令和混淆值應(yīng)用加密算法的一數(shù)目的迭代中的一部分產(chǎn)生630部分口令證明,并且重新啟動(dòng)640計(jì)算設(shè)備。一旦系統(tǒng)重新引導(dǎo),固件檢索650部分口令證明,并且執(zhí)行660加密算法的數(shù)目的迭代的其余部分以便產(chǎn)生完整口令證明。如果口令證明與口令檢驗(yàn)器匹配,系統(tǒng)100禁止防篡改引導(dǎo)670。系統(tǒng)僅在它可以檢驗(yàn)該請(qǐng)求是可信的時(shí)才禁止防篡改弓I導(dǎo)。
[0048]圖7和8示出了產(chǎn)生口令檢驗(yàn)器。系統(tǒng)100通過(guò)執(zhí)行加密算法的多個(gè)迭代,利用在前迭代的輸出作為當(dāng)前迭代720的輸入產(chǎn)生口令檢驗(yàn)器。例如,處理使用PV1產(chǎn)生PV2,并且使用PV99產(chǎn)生PVltltl。在第一次迭代710中,口令P被用作輸入因?yàn)閬?lái)自前一迭代的輸出不存在。系統(tǒng)100通過(guò)執(zhí)行例如100次迭代740產(chǎn)生口令檢驗(yàn)器??诹钭C明是從一個(gè)或多個(gè)中間迭代,諸如,中點(diǎn)迭代730的輸出獲得的。除了使用在前迭代的輸出作為加密算法的輸入之外,還使用混淆值?;煜蛋挥米髅荑€導(dǎo)出函數(shù)(通常是密碼散列函數(shù))的輸入之一的隨機(jī)位?;煜龜?shù)據(jù)使得難以進(jìn)行攻擊,因?yàn)樗黾恿舜_定口令所需的存儲(chǔ)和計(jì)算的數(shù)量。為了從偷來(lái)的散列確定口令,攻擊者必須計(jì)算隨機(jī)字符的散列,從而增加了所需的計(jì)算時(shí)間。在某些情況下,該處理被限制為由具有全盤加密卷的設(shè)備上的處理器執(zhí)行。因此,可以基于處理器的速度選擇或確定迭代數(shù)目,從而任意攻擊所需的時(shí)間是處理器速度的函數(shù),并且不能被輕易地暴力攻破。在計(jì)算HMAC時(shí)可以使用任意密碼散列函數(shù),例如,SHA-1或 MD5。
[0049]口令檢驗(yàn)器的產(chǎn)生需要810 口令P、混淆值S、執(zhí)行的迭代數(shù)目η和索引i。系統(tǒng)比較820索引i和迭代數(shù)目η以便檢查是否完成了所需數(shù)目的迭代。如果它們不相等,處理未完成,并且需要附加迭代。接著,系統(tǒng)產(chǎn)生當(dāng)前輪i的輪檢驗(yàn)器830。使用加密算法、來(lái)自前一輪的口令檢驗(yàn)器PVp1 (如果當(dāng)前輪不是I)和混淆值S,執(zhí)行輪口令檢驗(yàn)器PVi的產(chǎn)生830。因?yàn)閷?duì)于第一輪沒(méi)有前一輪檢驗(yàn)器,口令P被用于初始化PVm接著,系統(tǒng)增加索引830,并且比較索引和迭代數(shù)目,以便檢查是否完成了所需的迭代數(shù)目820。當(dāng)索引等于迭代數(shù)目時(shí),處理完成并且系統(tǒng)輸出口令檢驗(yàn)器840。
[0050]除了產(chǎn)生口令證明包括重新引導(dǎo)計(jì)算設(shè)備之外,系統(tǒng)遵循相同處理產(chǎn)生口令檢驗(yàn)器和口令證明。系統(tǒng)僅執(zhí)行所需迭代總次數(shù)的一部分,通常為一半,并且然后重新引導(dǎo)自己。一旦系統(tǒng)重新啟動(dòng),則執(zhí)行剩余的迭代次數(shù)以便產(chǎn)生最后的口令證明。圖9和10示出了產(chǎn)生口令證明。例如,當(dāng)產(chǎn)生口令證明所需的迭代總數(shù)是100時(shí),系統(tǒng)使用50次迭代產(chǎn)生910部分口令證明,并且在重新引導(dǎo)之前存儲(chǔ)該結(jié)果。一旦系統(tǒng)重新啟動(dòng),它檢索存儲(chǔ)的部分口令證明,并且執(zhí)行剩余的50次迭代,以便產(chǎn)生1010最后的口令證明??梢栽谠摻M迭代內(nèi)的中間點(diǎn)或在某個(gè)其它點(diǎn)產(chǎn)生部分口令證明。部分口令證明不揭示關(guān)于原始口令、迭代數(shù)目、口令檢驗(yàn)器或口令證明的任意有用信息,并且因此將其存儲(chǔ)為明文和/或存儲(chǔ)在其它處理可以讀取的存儲(chǔ)器區(qū)域內(nèi)是安全的。
[0051]圖11和12示出了產(chǎn)生口令證明。系統(tǒng)100通過(guò)執(zhí)行加密算法的多個(gè)迭代,利用在前迭代的輸出作為當(dāng)前迭代的輸入,產(chǎn)生口令證明。例如,處理使用PV1產(chǎn)生PV2,并且使用PV99產(chǎn)生PV.。在第一次迭代的情況下,因?yàn)椴淮嬖谠谇暗妮敵?,使用口令P。除了使用在前迭代的輸出作為加密算法的輸入之外,還使用混淆值。[0052]口令證明的產(chǎn)生需要1110 口令P、混淆值S、執(zhí)行的迭代數(shù)目η、索引i和索引j,其中j是迭代數(shù)目除以2。系統(tǒng)比較1120索引i和索引j,以便檢查是否完成了所需數(shù)目的迭代。如果它們不相等,處理未完成,并且需要附加迭代。接著,系統(tǒng)產(chǎn)生用于當(dāng)前輪i的輪檢驗(yàn)器1130。使用加密算法、來(lái)自前一輪的口令檢驗(yàn)器PVp1 (如果當(dāng)前輪不是I)和混淆值S,執(zhí)行輪口令檢驗(yàn)器PVi的產(chǎn)生1130。因?yàn)閷?duì)于第一輪沒(méi)有前一輪檢驗(yàn)器,使用口令P初始化PVQ1110。接著,系統(tǒng)增加索引1130并且比較該索引和迭代數(shù)目,以便檢查是否完成1120 了所需數(shù)目的迭代。當(dāng)索引i等于索引j時(shí),系統(tǒng)存儲(chǔ)該部分口令證明1140,并且重新引導(dǎo)計(jì)算設(shè)備。
[0053]一旦計(jì)算設(shè)備重新引導(dǎo),固件計(jì)算剩余的迭代以便產(chǎn)生完整的口令證明。因?yàn)橐呀?jīng)執(zhí)行了迭代的一半,索引i被初始化1210為j+Ι。系統(tǒng)比較1220索引i和迭代數(shù)目η,以便檢查是否完成了所需數(shù)目的迭代。如果它們不相等,處理未完成,并且需要附加迭代。接著,系統(tǒng)產(chǎn)生用于當(dāng)前輪i的輪口令檢驗(yàn)器1230。使用加密算法、來(lái)自前一輪PVp1的口令檢驗(yàn)器和混淆值S執(zhí)行輪口令檢驗(yàn)器PVi的產(chǎn)生1230。接著,系統(tǒng)增加索引1230,并且比較該索引和迭代數(shù)目,以便檢查是否完成1220 了所需數(shù)目的迭代。當(dāng)索引i等于迭代數(shù)目η時(shí),處理完成,并且系統(tǒng)輸出1240完整的口令證明PVn。
[0054]圖13示出了產(chǎn)生口令證明。部分口令證明是安全的,因?yàn)樗皇窃伎诹?,而是該口令的衍生物。系統(tǒng)100將其存儲(chǔ)在NVRAM1310內(nèi),以便由任意處理讀取,即使是潛在的惡意處理。處理必須擁有原始口令1320以便使得證明到達(dá)中點(diǎn)。然后固件1330可以通過(guò)剩余的迭代進(jìn)行迭代,以便檢驗(yàn)來(lái)自擁有原始口令的處理的證明。該處理有助于自己隨著硬件的改進(jìn)而自動(dòng)改進(jìn),因?yàn)樗谝粋€(gè)循環(huán)中運(yùn)行HMAC迭代,直到到達(dá)設(shè)定的時(shí)間數(shù)量,并且可被容易地修改以適應(yīng)更新的更快的硬件。更快的硬件可以簡(jiǎn)單地運(yùn)行更高次數(shù)的迭代,以便實(shí)現(xiàn)類似的性能特性??梢曰谒M膱?zhí)行性能、安全性、和/或其它特性閾值(多個(gè))選擇或確定迭代數(shù)目。
[0055]圖14示出了禁止全盤加密。系統(tǒng)產(chǎn)生1410被授權(quán)禁止防篡改引導(dǎo)的用戶的列表,并且將該列表發(fā)送1420到該固件。系統(tǒng)為每個(gè)用戶產(chǎn)生1430 口令檢驗(yàn)器,并且存儲(chǔ)檢驗(yàn)器作為NVRAM1310內(nèi)的軟件1340。當(dāng)系統(tǒng)發(fā)出具有用于一個(gè)用戶的口令證明的命令時(shí),系統(tǒng)將該口令證明放入已驗(yàn)證命令接口(ACI)的“投遞箱(dropbox)”,NVRAM1310在下次引導(dǎo)時(shí)從中讀取該命令。因?yàn)镹VRAM對(duì)于操作系統(tǒng)以及所有用戶是可讀的,任意用戶可以讀取放入NVRAM的該命令,并且潛在地偷竊口令證明。傳統(tǒng)上,使用混淆彌補(bǔ)這個(gè)問(wèn)題。然而,這不容易實(shí)現(xiàn)。因此,系統(tǒng)創(chuàng)建系統(tǒng)混淆1440,并且當(dāng)機(jī)器第一次引導(dǎo)時(shí),將系統(tǒng)混淆存儲(chǔ)在NVRAM1450內(nèi)。存儲(chǔ)在NVRAM內(nèi)的系統(tǒng)混淆用于通過(guò)ACI接口向固件發(fā)出的下一個(gè)命令。每次發(fā)出一個(gè)命令,固件在NVRAM內(nèi)放入新的隨機(jī)混淆。
[0056]通過(guò)此處闡述的方法實(shí)現(xiàn)的一個(gè)新結(jié)果是全盤加密使能系統(tǒng)中的更安全的引導(dǎo)處理,其能夠檢測(cè)引導(dǎo)信任鏈中的非授權(quán)改變。這些方法的另一個(gè)結(jié)果是以最少數(shù)目的系統(tǒng)重新引導(dǎo)允許和/或禁止這種安全引導(dǎo)。
[0057]本公開的范圍內(nèi)的實(shí)施例還可以包括用于承載或在其上存儲(chǔ)計(jì)算機(jī)可執(zhí)行指令或數(shù)據(jù)結(jié)構(gòu)的有形和/或非暫時(shí)性計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)。這種非暫時(shí)性計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)可以是可由通用或?qū)S糜?jì)算機(jī)訪問(wèn)的任意可獲得的介質(zhì),包括上面討論的任意專用處理器的功能設(shè)計(jì)。作為例子而不是限制,這種非暫時(shí)性計(jì)算機(jī)可讀介質(zhì)可以包括RAM、R0M、EEPROM、CD-ROM或其它光盤存儲(chǔ)器、磁盤存儲(chǔ)器或其它磁存儲(chǔ)設(shè)備、或可用于以計(jì)算機(jī)可執(zhí)行指令、數(shù)據(jù)結(jié)構(gòu)或處理器芯片設(shè)計(jì)的形式承載或存儲(chǔ)所希望的程序代碼裝置的任意其它介質(zhì)。當(dāng)在網(wǎng)絡(luò)或到計(jì)算機(jī)的另一種通信連接上傳輸或提供信息時(shí)(或是硬布線的、無(wú)線的、或其組合),計(jì)算機(jī)適當(dāng)?shù)貙⒃撨B接視為計(jì)算機(jī)可讀介質(zhì)。因此,任意這種連接被適當(dāng)?shù)胤Q為計(jì)算機(jī)可讀介質(zhì)。上述的組合也被包括在計(jì)算機(jī)可讀介質(zhì)的范圍內(nèi)。
[0058]計(jì)算機(jī)可執(zhí)行指令包括,例如,使得通用計(jì)算機(jī)、專用計(jì)算機(jī)、或?qū)S锰幚碓O(shè)備執(zhí)行某種功能或功能組的指令和數(shù)據(jù)。計(jì)算機(jī)可執(zhí)行指令還包括由獨(dú)立或網(wǎng)絡(luò)環(huán)境中的計(jì)算機(jī)執(zhí)行的程序模塊。通常,程序模塊包括執(zhí)行特定任務(wù)或?qū)崿F(xiàn)特定抽象數(shù)據(jù)類型的專用處理器等的設(shè)計(jì)所固有的例程、程序、組件、數(shù)據(jù)結(jié)構(gòu)、對(duì)象和函數(shù)。計(jì)算機(jī)可執(zhí)行指令、相關(guān)聯(lián)的數(shù)據(jù)結(jié)構(gòu)和程序模塊表示用于執(zhí)行此處公開的方法的步驟的程序代碼裝置。這些可執(zhí)行指令或相關(guān)聯(lián)的數(shù)據(jù)結(jié)構(gòu)的特定序列表示用于執(zhí)行在這些步驟中描述的功能的對(duì)應(yīng)活動(dòng)的例子。
[0059]本領(lǐng)域技術(shù)人員可以理解可以在具有許多類型的計(jì)算機(jī)系統(tǒng)配置的網(wǎng)絡(luò)計(jì)算環(huán)境中實(shí)現(xiàn)本公開的其他實(shí)施例,所述計(jì)算機(jī)系統(tǒng)配置包括個(gè)人計(jì)算機(jī)、手持設(shè)備、多處理器系統(tǒng)、基于微處理器或可編程的消費(fèi)電子設(shè)備、網(wǎng)絡(luò)PC、迷你計(jì)算機(jī)、大型計(jì)算機(jī)等。這些實(shí)施例還可被在分布式計(jì)算環(huán)境中實(shí)現(xiàn),其中通過(guò)本地和通過(guò)通信網(wǎng)絡(luò)連接(通過(guò)硬布線連接、無(wú)線連接、或通過(guò)其組合)的遠(yuǎn)程處理設(shè)備執(zhí)行任務(wù)。在分布式計(jì)算環(huán)境中,程序模塊可以位于本地和遠(yuǎn)程存儲(chǔ)器存儲(chǔ)設(shè)備兩者內(nèi)。
[0060]上面描述的各種實(shí)施例僅被以說(shuō)明的方式提供,并且不應(yīng)被解釋為對(duì)本公開的范圍的限制。例如,本文的原理適用于其中希望安全的防篡改引導(dǎo)處理的具有適合的共享秘密,諸如,卷密鑰的臺(tái)式和膝上計(jì)算機(jī)、移動(dòng)設(shè)備和任意其它計(jì)算環(huán)境。本領(lǐng)域技術(shù)人員將容易地認(rèn)識(shí)到,在不遵循此處示出并且描述的示例實(shí)施例和應(yīng)用,并且不脫離本公開的精神和范圍的情況下,可對(duì)此處描述的原理做出的各種修改和改進(jìn)。
【權(quán)利要求】
1.一種用于引導(dǎo)具有加密存儲(chǔ)介質(zhì)的計(jì)算設(shè)備的方法,所述加密存儲(chǔ)介質(zhì)使用全盤加密并且存儲(chǔ)操作系統(tǒng),該方法包括: 在引導(dǎo)時(shí)在所述計(jì)算設(shè)備處接收來(lái)自用戶的憑證,其中所述憑證與用于所述加密存儲(chǔ)介質(zhì)的卷密鑰相關(guān)聯(lián); 從未加密存儲(chǔ)介質(zhì)檢索內(nèi)核緩存和內(nèi)核緩存摘要,所述內(nèi)核緩存摘要由所述操作系統(tǒng)產(chǎn)生; 基于所述憑證和所述內(nèi)核緩存摘要檢驗(yàn)所述內(nèi)核緩存是可信的;和 如果所述內(nèi)核是可信的,使能所述操作系統(tǒng)的啟動(dòng)和執(zhí)行以及所述加密存儲(chǔ)介質(zhì)的解LU O
2.如權(quán)利要求1所述的方法,還包括: 將所述憑證的至少一部分提供給所述操作系統(tǒng)作為用戶登錄。
3.如權(quán)利要求1所述的方法,其中所述計(jì)算設(shè)備的固件檢驗(yàn)所述內(nèi)核緩存是可信的。
4.如權(quán)利要求1所述的方法,其中所述操作系統(tǒng)使用加密算法、用戶憑證和所述內(nèi)核緩存產(chǎn)生所述內(nèi)核緩存摘要。
5.一種存儲(chǔ)指令的非暫時(shí)性計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),當(dāng)被計(jì)算設(shè)備執(zhí)行時(shí),所述指令使得計(jì)算設(shè)備禁止所述計(jì)算設(shè)備上的防篡改引導(dǎo),所述指令包括: 通過(guò)對(duì)與所述防篡改引導(dǎo)相關(guān)聯(lián)的混淆值和口令應(yīng)用加密算法的一數(shù)目的迭代,在固件級(jí)產(chǎn)生口令檢驗(yàn)器;
從用戶接收禁止所述防篡改引導(dǎo)的請(qǐng)求,所述請(qǐng)求包括請(qǐng)求口令; 在操作系統(tǒng)級(jí),通過(guò)對(duì)所述請(qǐng)求口令和所述混淆值應(yīng)用所述加密算法的所述數(shù)目的迭代的第一部分,產(chǎn)生口令證明; 重新啟動(dòng)所述計(jì)算設(shè)備;和 在固件級(jí): 檢索所述口令證明; 對(duì)所述口令證明執(zhí)行所述數(shù)目的迭代的剩余的第二部分,以便產(chǎn)生迭代口令證明,從而所述數(shù)目的迭代的第一部分加上所述數(shù)目的迭代的剩余的第二部分等于所述數(shù)目的迭代;和 如果所述迭代口令證明與所述口令檢驗(yàn)器匹配,則禁止防篡改引導(dǎo)。
6.如權(quán)利要求5所述的非暫時(shí)性計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其中基于所希望的執(zhí)行間隔確定所述迭代的數(shù)目。
7.如權(quán)利要求5所述的非暫時(shí)性計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其中所述口令檢驗(yàn)器被存儲(chǔ)在固件內(nèi)。
8.如權(quán)利要求5所述的非暫時(shí)性計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其中所述混淆值是隨機(jī)的。
9.如權(quán)利要求5所述的非暫時(shí)性計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其中所述混淆值在每次引導(dǎo)時(shí)改變。
10.如權(quán)利要求5所述的非暫時(shí)性計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其中所述口令證明存儲(chǔ)在非易失隨機(jī)訪問(wèn)存儲(chǔ)器內(nèi)。
11.如權(quán)利要求5所述的非暫時(shí)性計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其中所述加密算法是基于散列的消息驗(yàn)證碼算法。
12.如權(quán)利要求5所述的非暫時(shí)性計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其中產(chǎn)生所述口令檢驗(yàn)器包括: 使用口令和混淆值作為加密算法的第一迭代的輸入;和 對(duì)于第一迭代之后的每次相應(yīng)迭代,使用加密算法前一次迭代的輸出作為該相應(yīng)迭代的輸入。
13.一種用于在引導(dǎo)時(shí)并且在固件級(jí)確認(rèn)來(lái)自計(jì)算設(shè)備上的操作系統(tǒng)的禁止計(jì)算設(shè)備上的防篡改引導(dǎo)的請(qǐng)求的系統(tǒng),所述系統(tǒng)包括: 處理器; 其中存儲(chǔ)有指令的非暫時(shí)性計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),所述指令用于控制所述處理器,以便執(zhí)行一種方法,該方法包括: 檢索操作系統(tǒng)結(jié)合所述請(qǐng)求并且基于用戶輸入的口令產(chǎn)生的口令證明; 檢索應(yīng)用于所述口令證明的第一迭代數(shù)目; 對(duì)所述口令證明以所述第一迭代數(shù)目應(yīng)用加密算法,以便產(chǎn)生迭代口令證明; 將所述迭代口令證明與通過(guò)對(duì)原始口令以第二迭代數(shù)目應(yīng)用所述加密算法產(chǎn)生的以固件產(chǎn)生的口令檢驗(yàn)器進(jìn)行比較;和 如果所述迭代口令證明對(duì)應(yīng)于所述口令檢驗(yàn)器,則禁止所述計(jì)算設(shè)備上的防篡改引`導(dǎo)。
14.如權(quán)利要求13所述的系統(tǒng),其中所述固件是基本輸入/輸出系統(tǒng)固件和可擴(kuò)展固件接口固件之一。
15.如權(quán)利要求13所述的系統(tǒng),其中基于所希望的執(zhí)行間隔確定所述第一迭代數(shù)目和所述第二迭代數(shù)目。
16.如權(quán)利要求13所述的系統(tǒng),其中所述以固件產(chǎn)生的口令檢驗(yàn)器存儲(chǔ)在固件內(nèi)。
17.如權(quán)利要求13所述的系統(tǒng),其中作為使能防篡改引導(dǎo)的處理的一部分產(chǎn)生所述以固件產(chǎn)生的口令檢驗(yàn)器。
18.如權(quán)利要求13所述的系統(tǒng),其中應(yīng)用所述加密算法還基于隨機(jī)混淆值。
19.如權(quán)利要求13所述的系統(tǒng),其中所述口令證明存儲(chǔ)在非易失隨機(jī)訪問(wèn)存儲(chǔ)器內(nèi)。
20.如權(quán)利要求19所述的系統(tǒng),其中所述操作系統(tǒng)在一個(gè)位置存儲(chǔ)命令,所述非易失隨機(jī)訪問(wèn)存儲(chǔ)器在后續(xù)引導(dǎo)時(shí)從所述位置讀取所述命令。
【文檔編號(hào)】G06F21/46GK103502992SQ201280005183
【公開日】2014年1月8日 申請(qǐng)日期:2012年1月13日 優(yōu)先權(quán)日:2011年1月14日
【發(fā)明者】I·科爾斯蒂克, J·埃維恩 申請(qǐng)人:蘋果公司