林基艷
(榆林學(xué)院 信息工程學(xué)院,陜西 榆林 719000)
目前對可信計算平臺的研究,主要集中在可信計算平臺的重要部件TPM上面。但是在計算機主板上安裝TPM的安全計算機存在下列問題:用戶在使用TPM的過程中不可避免的會出現(xiàn)某些故障或失誤,如TPM被拔出、TPM芯片燒毀等,現(xiàn)有的TPM1.2規(guī)范并沒有考慮這些問題。一旦出現(xiàn)這些情況,系統(tǒng)就不能正常啟動。TPM使用者就無法恢復(fù)出保存在TPM中的秘密信息以及用這些秘密信息加密的硬盤數(shù)據(jù),導(dǎo)致現(xiàn)有TPM的使用嚴重妨礙了易用性的原則。
針對這種情況,文獻[1]提出了一種基于硬件的解決方案,即通過在現(xiàn)有的TPM芯片的結(jié)構(gòu)基礎(chǔ)上,增設(shè)專用信息I/O接口模塊替代原有的PP引腳。其優(yōu)點是實現(xiàn)可信平臺模塊內(nèi)部信息的內(nèi)置,備份與恢復(fù),不足是需要改變現(xiàn)有的TPM芯片的結(jié)構(gòu),不符合兼容性的原則。文獻[2]提出了一種借鑒太行安全BIOS可信體系結(jié)構(gòu)與實現(xiàn)方案,其優(yōu)點是能夠保障BIOS安全,但是并未考慮TPM芯片發(fā)生故障的情況。
在借鑒上述研究成果的基礎(chǔ)上,提出了一種新的TPM增強應(yīng)用方案——在無需改變現(xiàn)有TPM結(jié)構(gòu)的情況下,當TPM故障時,可以使TPM進入功能禁用狀態(tài),不進行度量操作,計算機進入非可信工作模式;在啟動過程中,利用USB KEY,實現(xiàn)在BIOS層的身份認證;利用保存在USB KEY里的相關(guān)密鑰,恢復(fù)用戶的一些重要信息。
文獻[2]以構(gòu)建可信計算終端為出發(fā)點,通過分析可信BIOS的安全需求,提出太行安全BIOS可信體系結(jié)構(gòu),如圖1所示。
圖1 太行安全BIOS體系結(jié)構(gòu)Fig.1 Structure of Taihang secure BIOS
TPM正常時,太行安全BIOS體系結(jié)構(gòu)可以保障BIOS安全,但是一旦TPM發(fā)生故障,如TPM燒毀或者攻擊者破壞TPM芯片,芯片中的密鑰都會失效,從而失去使用這些密鑰加密的所有數(shù)據(jù),給用戶造成巨大的損失?;诖耍岢隽嘶赨SB KEY和BIOS的TPM故障解決方案,本方案的系統(tǒng)設(shè)計開發(fā)主要分為以下3個部分:禁用TPM模塊、訪問控制模塊、可信備份模塊。
TPM通過LPC(Low Pin Count)接口同主板的南橋芯片組連接。根據(jù)TCG規(guī)范,平臺加電或重啟時,可以由LRESET#來觸發(fā)TPM-Init命令進行TPM初始化操作。初始化階段,要讀取 TPM芯片的 VID(Vendor ID)和 DID(Device ID),確定主板上是否存在TPM,以決定運行過程中是否使用TPM進行可信測量。若檢測到TPM存在,則向TPM發(fā)出TPM_Startup(ST_CLEAR)和 TPM_Continue Self-Test命令使TPM進入完全操作狀態(tài),使TPM可用于后續(xù)的可信測量過程,狀態(tài)關(guān)系如圖2所示[3-5]。
圖2 TPM狀態(tài)圖Fig.2 TPM state diagram
TPM初始化階段,會根據(jù)TPM的狀態(tài)返回相應(yīng)的值,并保存在DL寄存器中。如果返回值為03h,即TPM-No-Response,說明TPM發(fā)生故障[6]。文中采取的方案是:在系統(tǒng)讀取DL寄存器中返回值時做一個判斷,如果返回值=03H,則調(diào)用禁用TPM模塊,使TPM進入禁用狀態(tài),不進行度量操作,計算機進入非可信工作模式,確保系統(tǒng)能正常啟動。如果返回值不等于03H,則進入可信工作模式。
禁用TPM模塊程序框架如下:
TPM故障時,為了保證系統(tǒng)安全,必須對系統(tǒng)的訪問進行控制。文中采取USB KEY結(jié)合訪問控制模塊來實現(xiàn)對用戶的訪問控制。用戶可以使用PIN碼來保護自己的USB KEY不被他人使用,該碼是可以修改的。如果輸入3次PIN碼錯誤,USB KEY便會自動鎖上,并自動關(guān)閉[7]。
BIOS中有一個模塊ISA(Industrial Standard Architecture)模塊來源于ISA協(xié)議,由于ISA協(xié)議是屬于早期的協(xié)議,內(nèi)容相對簡單,BIOS對ISA模塊的驗證也較為簡單,我們可以將程序做成ISA模塊掛到BIOS中,這樣BIOS啟動時,訪問控制模塊就會啟動,而且是先于操作系統(tǒng)之前運行。訪問控制模塊需要UFI(USB Floppy Interface)驅(qū)動的支持才可以對USB KEY進行訪問,而ISA模塊在UFI驅(qū)動之前加載,為了解決這個問題采用掛鉤19H中斷的方法。INT 19 h中斷是BIOS程序執(zhí)行的最后一條指令,之后將執(zhí)行操作系統(tǒng)的代碼。在ISA模塊的程序運行時,將自己的中斷服務(wù)程序掛鉤到INT 19 h中斷上,當BIOS代碼執(zhí)行完之后,調(diào)用INT 19 h中斷,就會執(zhí)行訪問控制模塊的程序,當訪問控制程序執(zhí)行完之后,恢復(fù)INT 19h中斷向量的內(nèi)容就可以啟動操作系統(tǒng)。
TCG的密鑰體系結(jié)構(gòu)保證可以從各種不同的災(zāi)難場景中恢復(fù)??蛇w移密鑰鏈在設(shè)計時允許遷移一個密鑰,即平臺可遷移密鑰,并將它之下的所有密鑰帶往一個新的設(shè)備中[6]。即使計算平臺改變,個體之間的報文消息交換仍能進行。本論文使用可信USB KEY來存儲備份的密鑰信息。系統(tǒng)正常運行時,把可遷移密鑰塊加載到TPM中,TPM解密可遷移密鑰塊得到可遷移密鑰,并把平臺可遷移密鑰傳送給USB KEY。當TPM發(fā)生故障時,把備份可遷移密鑰的USB KEY連接到一個包含TPM芯片的新系統(tǒng)中,新系統(tǒng)在通過身份認證得到可遷移密鑰后,就可以使用原系統(tǒng)上的可遷移密鑰來解密用戶需要的數(shù)據(jù)了。
結(jié)合文獻[2]以及第1節(jié)的功能模塊描述,得到如圖4所示的兼容TPM故障的BIOS體系結(jié)構(gòu)。
圖3 TCG密鑰體系結(jié)構(gòu)Fig.3 Structure of TCG secret key
圖4 兼容TPM故障的BIOS體系結(jié)構(gòu)Fig.4 BIOS structure of compatible with the fault of TPM
系統(tǒng)加電后,先加載平臺初始化模塊,完成CPU、芯片組、主板、內(nèi)存、堆棧的初始化工作,建立后續(xù)BIOS程序最小化運行環(huán)境;然后加載可信硬件驅(qū)動模塊初始化可信硬件設(shè)備。在初始化TPM時,如果TPM正常,CRTM執(zhí)行完后會對N-CRTM的調(diào)度引擎進行可信測量。測量成功則執(zhí)行調(diào)度引擎,測量失敗說明加載代碼不可信(遭到修改或破壞、或來源不可信),則CRTM會啟動可信恢復(fù)引擎要求用戶對BIOS系統(tǒng)進行可信恢復(fù)。調(diào)度引擎加載后續(xù)的N-CRTM的其他模塊時,需調(diào)用CRTM提供的可信測量引擎提供的加解密協(xié)議對其進行可信測量。測量成功則執(zhí)行下一個模塊,否則調(diào)用CRTM的可信恢復(fù)引擎作可信恢復(fù)??尚臖IOS執(zhí)行的最后一個階段是由可信BIOS引導(dǎo)模塊對IPL進行可信測量,成功后進入操作系統(tǒng)引導(dǎo)階段。
若TPM發(fā)生故障,即初始化時返回狀態(tài)值03h,則加載禁用TPM模塊,使TPM處于功能禁用狀態(tài),隨后跳轉(zhuǎn)執(zhí)行N-CRTM。當系統(tǒng)調(diào)用INT 19h時,系統(tǒng)會自動加載訪問控制模塊進行訪問控制,成功后進入操作系統(tǒng)引導(dǎo)階段,否則系統(tǒng)強制關(guān)機。
由此繪制出整個方案的流程圖,如圖5所示。
圖5 兼容TPM故障的BIOS系統(tǒng)開機流程圖Fig.5 Flow chart of BIOS compatible with the fault of TPM’s system
目前TPM芯片廠商都提供密鑰備份恢復(fù)機制,在初始化TPM時,可以選擇備份TPM密鑰及證書信息到USB KEY中,不需要對目前的TPM結(jié)構(gòu)做出改變;TPM故障時,在太行安全BIOS結(jié)構(gòu)基礎(chǔ)上不需要做較大的改變,只需要在BIOS執(zhí)行可信硬件驅(qū)動模塊時,加載一個可執(zhí)行模塊禁用TPM,并加入長跳轉(zhuǎn)指令,跳轉(zhuǎn)到平臺驅(qū)動模塊;再在ISA模塊上掛鉤訪問控制模塊即可。目前,不少主板廠商已經(jīng)開發(fā)出在Windows下升級BIOS的工具,簡單易用。刷新BIOS前,閱讀主板說明書,對主板BIOS的提供商和版本有所了解,再到主板廠商的網(wǎng)站上進行刷新軟件的下載,然后把可執(zhí)行模塊刷到BIOS中即可。
在BIOS可信驗證過程中需要運行散列函數(shù)SHA.1。根據(jù)文獻[8]的計算,在1 GHz Pentium機器上用SHA-1計算一個1MB文件的摘要值大約需要所以總的時間開銷為13 ms。在計算機正常啟動過程中需要驗證的代碼包括BIOS的平臺初始化模塊,可信硬件驅(qū)動模塊,可信測量模塊等,這些代碼的總量不會超過10 MB,按照1 MB文件的摘要值大約需要13 ms來計算,驗證這些代碼的時間大概為0.13 s;而不做可信測量的BIOS其啟動時間一般在十幾秒到幾十秒之間 (跟實際加載和測試的設(shè)備數(shù)量有關(guān)),關(guān)閉可信測量的啟動過程大約為29 s。可見可信測量對BIOS的啟動速度的影響幾乎可以忽略不計[2]。
TPM故障時,計算機節(jié)省了做可信驗證的時間,增加了在USB KEY中運行解密的時間,在USB KEY中運行一次解密的時間將近200 ms,另外還需要運行一個可執(zhí)行模塊、訪問控制模塊,由于模塊大小不會超過1 MB,在1 GHz Pentium機器上運行所消耗的時間不超過1 ms。TPM故障時,本方案加載訪問控制模塊實現(xiàn)BIOS層的訪問控制,因此在安全強度要求不是較高的情況下,本方案能達到很高的時間效率。
另外,目前有很多工具可以用來擴展BIOS空間,例如:生成空白的臨時文件,然后將空白的臨時文件插入到原始BIOS文件的剩余空間中,這樣我們就可以得到一個剩余空間較大的BIOS文件。綜上所述,本方案是可行的。
文中提出的TPM故障下基于USB KEY和改進BIOS的安全方案,在TPM故障下,能通過在現(xiàn)有BIOS中加入禁用TPM模塊,使系統(tǒng)禁用TPM進行可信測量,并結(jié)合USB KEY進行訪問控制,保證系統(tǒng)正常安全的運行。同時利用存儲在USB KEY中密鑰進行數(shù)據(jù)解密,恢復(fù)用戶的一些秘密信息,提高了平臺的易用性。后期的工作是在文獻[6]、[7]的基礎(chǔ)上,繼續(xù)完善禁用TPM模塊,訪問控制模塊和可信備份模塊。
[1]李鳳華,馬建峰.可信平臺模塊的體系結(jié)構(gòu)及其提供服務(wù)的方法:中國,200710199230.5[P].2007-12-14.
[2]周振柳,李銘,許榕生,等.太行安全BIOS可信體系結(jié)構(gòu)與實現(xiàn)研究[J].計算機工程與應(yīng)用,2008,44(18):76-79.ZHOU Zhen-liu, LI Ming, XU Rong-sheng, et al.Research on trusted architecture and implementation of Taihang secure BIOS[J].Computer Engineering and Applications,2008,44(18):76-79.
[3]TCG.TPM Main Part1 Design Principles Specification Version1.2[EB/OL].(2006-10)https://www.Trustedcomputing group.org.
[4]TCG.TPM Main Part 2 TPM Structures Specification Version1.2[EB/OL].(2006-10)https://www.Trustedcomputing group.org.
[5]TCG.TPM Main Part 3 Commands Specification Version1.2[EB/OL].(2006-10)https://www.Trustedcomputing group.org.
[6]TCG.TCG PC Specific Implementation Specification Version1.1[EB/OL].(2003-08)https://www.Trustedcomputing group.org.
[7]譚良,周明天.一種新的用戶登錄可信認證方案的設(shè)計與實現(xiàn)[J].計算機應(yīng)用, 2007(6):1070-1072.TAN Liang,ZHOU Ming-tian.Design and implementation of a trusted log in authentication project based on the trusted platform module[J].Computer Applications,2007,6:1070-1072.
[8]方艷湘,黃濤.Linux可信啟動的設(shè)計與實現(xiàn)[J].計算機工程,2006(6):61-63.FANG Yan-xiang,HUANG Tao.Design and implementation of trusted startup process for linux[J].Computer Engineering,2006(6):61-63.