能夠驗(yàn)證軍事和其他應(yīng)用中使用的系統(tǒng)的完整性以確保它們沒有被修改或損壞至關(guān)重要。當(dāng)然,最好防止系統(tǒng)被篡改。如果無法做到這一點(diǎn),則檢測(cè)篡改至關(guān)重要。在許多情況下,如果您不能確定系統(tǒng)未被修改,最好阻止系統(tǒng)運(yùn)行。在所有情況下,保護(hù)系統(tǒng)上的信息,尤其是加密密鑰等關(guān)鍵機(jī)密至關(guān)重要。
操作系統(tǒng)級(jí)別的各種工具有助于確保軟件的完整性。其中包括存儲(chǔ)加密、軟件包的加密簽名、文件的校驗(yàn)和以及用于檢查系統(tǒng)的工具。但是,可以做些什么來確保底層系統(tǒng)沒有受到損害 - 驗(yàn)證硬件,BIOS和其他固件以及引導(dǎo)加載程序?如果檢測(cè)到問題,該怎么辦?
讓我們考慮一下使用硬件信任根可以做什么,以及 Linux 操作系統(tǒng)中的最新發(fā)展,這些開發(fā)提供了底層系統(tǒng)完整性的視圖。
第一個(gè)因素是LUKS,這是Linux內(nèi)置的強(qiáng)大而安全的存儲(chǔ)加密功能。LUKS 對(duì)從磁盤驅(qū)動(dòng)器到 USB 驅(qū)動(dòng)器、SD 卡甚至網(wǎng)絡(luò)存儲(chǔ)的所有內(nèi)容進(jìn)行加密。LUKS 在卷級(jí)別加密,Linux 系統(tǒng)可以配置為單個(gè)卷或單個(gè)驅(qū)動(dòng)器上的多個(gè)獨(dú)立卷。這為配置和保護(hù)嵌入式系統(tǒng)上的信息提供了相當(dāng)大的靈活性和功能。
LUKS 的用例之一是加密系統(tǒng)驅(qū)動(dòng)器。完成此操作后,必須提供LUKS密碼才能引導(dǎo)系統(tǒng)。對(duì)于筆記本電腦等系統(tǒng),這通常通過輸入密碼來完成。網(wǎng)絡(luò)綁定磁盤加密 (NBDE) 是一種新的 Linux 軟件包,它使用網(wǎng)絡(luò)服務(wù)或硬件信任根來提供 LUKS 密鑰來引導(dǎo)系統(tǒng)。
NBDE 是一個(gè)靈活的加密框架,它使用各種引腳或加密引擎來加密和解密 LUKS 密鑰等機(jī)密。NBDE 旨在擴(kuò)展,目前支持兩個(gè)引腳:網(wǎng)絡(luò)唐服務(wù)器和 TPM 2.0 硬件信任根??梢蚤_發(fā)其他引腳,例如系統(tǒng)集成商可能會(huì)實(shí)現(xiàn)支持 CAC 卡的 NBDE 引腳。(作為旁注,開源Linux社區(qū)歡迎提交NBDE的其他引腳。NBDE 還實(shí)施了允許組合多個(gè)引腳的策略。
帶有 TPM2 的 NBDE 是沒有安全網(wǎng)絡(luò)連接的遠(yuǎn)程位置嵌入式系統(tǒng)的不錯(cuò)選擇。這可確保僅當(dāng)操作系統(tǒng)磁盤位于具有正確配置的 TPM2 模塊的系統(tǒng)中并且已綁定到該 TPM2 模塊時(shí),系統(tǒng)才會(huì)啟動(dòng)。
下一個(gè)要考慮的元素是安全啟動(dòng)。這是在 UEFI 固件中實(shí)現(xiàn)的,并要求引導(dǎo)加載程序和操作系統(tǒng)使用已知且批準(zhǔn)的軟件密鑰進(jìn)行簽名,然后才能允許系統(tǒng)引導(dǎo)。安全啟動(dòng)是確保操作系統(tǒng)有效的好工具。行業(yè)標(biāo)準(zhǔn)安全啟動(dòng)密鑰通常安裝在出廠時(shí)的 UEFI 固件中。這些鍵可以按原樣使用,可以添加自定義鍵,也可以刪除標(biāo)準(zhǔn)鍵,并且僅使用自定義鍵。
安全啟動(dòng)是一種有效的工具,應(yīng)使用。但是,安全啟動(dòng)無法驗(yàn)證底層硬件、固件或安全啟動(dòng)本身是否正在運(yùn)行。這就是 TPM2 和測(cè)量啟動(dòng)發(fā)揮作用的地方。測(cè)量的引導(dǎo)有時(shí)稱為受信任的引導(dǎo)。
測(cè)量的引導(dǎo)在多個(gè)級(jí)別工作。TPM2 模塊包含一組 24 個(gè)平臺(tái)配置寄存器或 PCR。 軟件(如 UEFI 固件)使用 SHA-256 等算法進(jìn)行哈希處理,哈希存儲(chǔ)在 PCR 中。但是,哈希不會(huì)直接寫入 PCR。相反,哈希使用 TPM2 中的加密操作擴(kuò)展到 PCR 中。多個(gè)測(cè)量可以組合成一個(gè)PCR。PCR中的最終值取決于每個(gè)文件的哈希值和文件的評(píng)估順序。這個(gè)過程是確定性的,給定一組文件和一個(gè)測(cè)量順序,你每次都會(huì)得到相同的結(jié)果。這些測(cè)量和擴(kuò)展操作可以在 TPM 外部復(fù)制 - 您可以提前確定 PCR 中的最終值應(yīng)該是多少。
測(cè)量啟動(dòng)按一系列操作更新 PCR:一個(gè)非常低級(jí)別的軟件例程(本質(zhì)上是硬件的一部分)測(cè)量 UEFI 固件和選項(xiàng) rom,例如 NIC 和存儲(chǔ)控制器。UEFI 固件測(cè)量主引導(dǎo)記錄和引導(dǎo)加載程序。引導(dǎo)加載程序測(cè)量?jī)?nèi)核和相關(guān)文件。然后,其他工具(如 Linux 完整性測(cè)量體系結(jié)構(gòu) (IMA))可以測(cè)量系統(tǒng)的其余部分。測(cè)量可以包括文件和配置。其中 8 個(gè) PCR 寄存器已預(yù)定義供系統(tǒng)使用,8 個(gè)寄存器可供應(yīng)用定制使用。
TPM和PCR模型旨在使未經(jīng)檢測(cè)就無法修改PCR測(cè)量,并且在不檢測(cè)的情況下很難干擾測(cè)量過程。
PCR測(cè)量可用于多種目的,包括系統(tǒng)完整性的本地和遠(yuǎn)程證明。它們還可用于 TPM 內(nèi)部的密封操作。在 TPM 密封中,TPM 保護(hù)的機(jī)密進(jìn)一步受到 TPM 策略的保護(hù),該策略在解密機(jī)密之前根據(jù)批準(zhǔn)的值檢查 PCR 值。
舉個(gè)具體的例子,使用 NBDE,您可以根據(jù) PCR 0、2 和 7 密封 LUKS 密碼。這將測(cè)量 UEFI BIOS (PCR0)、系統(tǒng)中其他設(shè)備上的固件 (PCR2) 和安全啟動(dòng) (PCR7)。僅當(dāng) UEFI 固件未修改、其他設(shè)備固件未修改且仍啟用安全啟動(dòng)時(shí),才會(huì)提供 LUKS 密碼。請(qǐng)注意,這些檢查是在 TPM 內(nèi)部完成的。這些測(cè)量可確保固件未損壞,并且未添加任何 rootkit。雖然不是絕對(duì)的保護(hù),但它顯著提高了系統(tǒng)的完整性。
在此示例中,無需接觸 TPM 即可輕松更新操作系統(tǒng)和應(yīng)用程序。固件仍然可以更新 - 這需要使用新值重新密封 TPM。
不應(yīng)在倉庫甚至工廠級(jí)維護(hù)之外更改的安全軍事系統(tǒng)可以更嚴(yán)格地鎖定,也許使用多個(gè)PCR和其他因素,例如連接到網(wǎng)絡(luò)服務(wù);傳感器陣列必須通信才能有用,因此這可能是一種合理的方法。
可以使用此處描述的方法保護(hù)任何機(jī)密。加密密鑰可以直接從 TPM2 加載到內(nèi)存中,然后在不再需要時(shí)立即擦除;它們沒有理由保留在磁盤上。并且可以通過發(fā)出TPM_reset命令立即擦除整個(gè)TPM。
審核編輯:郭婷
-
嵌入式
+關(guān)注
關(guān)注
5083文章
19131瀏覽量
305544 -
Linux
+關(guān)注
關(guān)注
87文章
11310瀏覽量
209621
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論