楊 霞,雷 林,吳新勇,吳開均,桑 楠
(1. 電子科技大學(xué)信息與軟件工程學(xué)院 成都 610054;2. 保密通信國家重點(diǎn)實(shí)驗(yàn)室 成都 610041;3. 四川九洲集團(tuán)研究院 成都 610041)
采用數(shù)字簽名技術(shù)的可信啟動方法研究
楊 霞1,2,雷 林1,吳新勇3,吳開均2,桑 楠1
(1. 電子科技大學(xué)信息與軟件工程學(xué)院 成都 610054;2. 保密通信國家重點(diǎn)實(shí)驗(yàn)室 成都 610041;3. 四川九洲集團(tuán)研究院 成都 610041)
為保障嵌入式設(shè)備系統(tǒng)啟動時的可信性,分析了現(xiàn)有可信啟動技術(shù)對硬件模塊嚴(yán)重依賴的現(xiàn)狀,結(jié)合可信度量和可信鏈理論,提出了一套基于嵌入式Linux的可信啟動方法。該方法以固件IROM作為信任根,利用數(shù)字簽名和完整性驗(yàn)證技術(shù)檢查啟動實(shí)體的完整性和真實(shí)性,建立了一條從設(shè)備開機(jī)到內(nèi)核啟動的信任鏈。實(shí)驗(yàn)結(jié)果表明:該方法能有效地驗(yàn)證啟動實(shí)體的完整性和真實(shí)性;與采用硬件模塊保護(hù)啟動實(shí)體預(yù)期度量值的方法比較,該方法無需增加任何硬件開銷便可有效地保護(hù)預(yù)期度量值;同時保證實(shí)體更新時的可信檢測。
信任鏈; 數(shù)字簽名技術(shù); 嵌入式Linux; 信任根; 可信啟動技術(shù); 可信計(jì)算
信息技術(shù)的高速發(fā)展,在帶來信息產(chǎn)業(yè)空前繁榮的同時,危害信息安全的事件也不斷發(fā)生,信息安全形勢日益嚴(yán)峻。目前有多種保障系統(tǒng)安全的技術(shù),比如系統(tǒng)訪問控制、入侵檢測技術(shù)和防病毒體系等[1],這些技術(shù)大都只能提高系統(tǒng)應(yīng)用層的安全。一個系統(tǒng)能夠正常運(yùn)行的前提是系統(tǒng)本身是安全的,如果系統(tǒng)在啟動之前就由于被篡改或破壞等原因進(jìn)入一種不可信的狀態(tài),則基于該系統(tǒng)而建立的任何安全機(jī)制都無法確保系統(tǒng)的可信性。傳統(tǒng)嵌入式系統(tǒng)的設(shè)計(jì)很少考慮系統(tǒng)安全問題,存在較多的安全隱患,如用戶可通過刷機(jī)進(jìn)入一種不確定的系統(tǒng)狀態(tài),或者內(nèi)核被惡意程序植入而遭篡改,這些操作都可能給用戶帶來嚴(yán)重的損失和破壞。
目前,已經(jīng)有一些研究成果可以做到防止內(nèi)核等關(guān)鍵信息被篡改。本文將現(xiàn)有的可信啟動相關(guān)研究方法分為兩類:一類是需要增加額外硬件輔助,如在PC機(jī)領(lǐng)域添置可信平臺模塊[2-4](TPM)以及在移動設(shè)備終端添置移動可信模塊[5-10](mobile trustedmodule, MTM)這類安全芯片,在安全芯片中存儲啟動實(shí)體初始的預(yù)期度量值,啟動時將實(shí)體加載到內(nèi)存中,通過比較初始預(yù)期度量值和當(dāng)前計(jì)算值的一致性,確定啟動過程是否可以安全繼續(xù)。該方法為了保護(hù)可信啟動預(yù)期度量值,需要增加額外的可信硬件模塊,這將增加硬件開銷和成本。而對成本控制非常嚴(yán)格的嵌入式設(shè)備,大多沒有這樣的可信模塊。因此,該類方法對于嵌入式系統(tǒng)而言,具有很大的局限性。
另一類可信啟動方法是設(shè)計(jì)只讀的塊設(shè)備存儲啟動實(shí)體[11],啟動時從該設(shè)備中讀取未受更改的實(shí)體。因?yàn)橹蛔x設(shè)備中實(shí)體在出廠時一次性燒寫,所以啟動中實(shí)體無法被篡改,可保證啟動實(shí)體的完整性。此方法需要加載的實(shí)體一次性燒寫,無法實(shí)現(xiàn)正常的系統(tǒng)更新。
針對上述問題,本文提出了一種無需增加額外的硬件模塊,便可有效保障嵌入式系統(tǒng)啟動時可信性的方法。該方法利用完整性驗(yàn)證技術(shù)和數(shù)字簽名技術(shù)建立嵌入式可信啟動信任鏈,并可有效地保護(hù)預(yù)期度量值。這種通過驗(yàn)證簽名的技術(shù)可以驗(yàn)證啟動實(shí)體內(nèi)容的完整性和來源的真實(shí)性,簡化了硬件設(shè)計(jì)難度,縮減了開銷,在保障可信啟動的前提下降低了開發(fā)難度,同時做到實(shí)體可更新。
在計(jì)算機(jī)系統(tǒng)中,啟動過程是系統(tǒng)一切行為的基礎(chǔ)。為創(chuàng)建可信執(zhí)行環(huán)境,首先需要明確可信的定義。可信計(jì)算組織(trusted computing group, TCG)將可信定義為[12]:如果一個實(shí)體的行為總是以預(yù)期的方式朝著預(yù)期的目標(biāo)前進(jìn),那么這個實(shí)體就是可信的。以TCG定義為基礎(chǔ),本文結(jié)合嵌入式系統(tǒng)的特征提出了可信啟動模型。
定義 1 每個啟動階段為一個實(shí)體E。
定義 2 第一個啟動的實(shí)體E0,稱為信任根,是可信啟動信任的基礎(chǔ)。
定義 3 在啟動過程中,實(shí)體Ei-1啟動實(shí)體Ei,其中1≤i≤n。如果啟動鏈中的每一個實(shí)體都被驗(yàn)證為可信,則整個啟動過程是可信的。在可信啟動中,為了確保實(shí)體Ei的可信性,必須首先信任Ei-1??尚艈拥尿?yàn)證模型為:
式中,vi-1作為一個可信驗(yàn)證模塊,用于實(shí)體Ei-1對Ei的可信性驗(yàn)證。
以信任根為基礎(chǔ)逐級驗(yàn)證,最終得到一個可信啟動信任鏈:E0→E1→E2→…→En。
2.1 安全算法介紹
數(shù)字簽名[13]技術(shù)是通過密碼技術(shù)對電子文檔進(jìn)行電子形式的簽名,是維護(hù)網(wǎng)絡(luò)數(shù)據(jù)安全的重要技術(shù),可用來保證信息內(nèi)容的完整性和信息來源的真實(shí)性。本文采用數(shù)字簽名技術(shù)建立了可信啟動信任鏈,使用哈希算法驗(yàn)證啟動實(shí)體的完整性,及非對稱加密算法RSA保護(hù)預(yù)期度量值。
2.2 可信啟動框架設(shè)計(jì)
針對嵌入式系統(tǒng)的啟動過程,設(shè)計(jì)如圖1所示的可信啟動框架。
圖1 可信啟動框架
該框架在正常的嵌入式Linux啟動過程中增加了固件IROM,作為信任根。系統(tǒng)上電啟動后,IROM為第一個啟動實(shí)體,然后逐步建立一個可信啟動信任鏈:IROM→BootLoader→Kernel。
在可信啟動鏈的上一個階段實(shí)體的尾部增加一個驗(yàn)證公鑰和驗(yàn)證模塊;下一個階段實(shí)體的鏡像頭部增加一個簽名頭部,頭部包含實(shí)體自身的簽名信息、頭部信息大小、除去頭部信息后的大小、簽名算法等相關(guān)參數(shù)。上一個啟動實(shí)體(如IROM)在驗(yàn)證下一個實(shí)體(如BootLoader)的可信性和完整性時,由其尾部增加的可信驗(yàn)證模塊用“驗(yàn)證公鑰”解密下一個啟動實(shí)體的“簽名信息”,得到一個完整性度量值。接著,將此完整性度量值與當(dāng)前計(jì)算的預(yù)啟動實(shí)體的完整性度量值作對比,如果一致,表明實(shí)體完整,準(zhǔn)予啟動;否則,結(jié)束啟動過程,并報(bào)錯。此技術(shù)無需額外硬件支持便可以保護(hù)可信啟動過程中完整性預(yù)期度量值的安全性。
2.3 啟動實(shí)體的簽名和驗(yàn)證過程
本文采用數(shù)字簽名技術(shù)對啟動實(shí)體簽名的過程:首先,用非對稱加密算法RSA生成一對密鑰;其次,用哈希算法對編譯好的啟動實(shí)體鏡像制作鏡像的摘要,用私鑰對摘要值加密;然后,將加密后的密文添加到啟動實(shí)體鏡像的頭部作為頭部的一部分,生成新的鏡像。
鏡像啟動時的驗(yàn)證過程:上一階段鏡像用公鑰解密下一階段鏡像簽名頭部中的簽名信息;上一階段啟動實(shí)體計(jì)算下一階段鏡像除去頭部后內(nèi)容的摘要;比較摘要和解密后的明文,如果相同,則可證明下一階段鏡像的完整性和來源真實(shí)性。為了建立完整的可信啟動信任鏈,需要對BootLoader鏡像和Kernel鏡像添加簽名頭部信息,BootLoader鏡像和IROM中添加驗(yàn)證尾部,如圖1所示。
為了保障啟動過程實(shí)體的完整性、真實(shí)性及形成信任鏈,使用數(shù)字簽名技術(shù)重新制作BootLoader鏡像和Kernel鏡像,重新生成的鏡像能夠被上一階段鏡像驗(yàn)證,證明鏡像自身的完整性和來源的真實(shí)性。
3.1 BootLoader簽名頭部的生成
圖2 BootLoader鏡像添加頭部信息的過程
對BootLoader源代碼進(jìn)行編譯,生成可執(zhí)行鏡像execute-Bimage。在本地計(jì)算機(jī)上用公開Hash算法對鏡像execute-Bimage進(jìn)行Hash計(jì)算,得到鏡像的哈希值BHash-result,然后用受信方提供的與IROM驗(yàn)證代碼中存放的公鑰相匹配的私鑰對BHash-result進(jìn)行加密,得到加密后的值E(BHash-result),將E(BHash-result)、鏡像大小、頭部大小、Hash算法、RSA算法等信息與execute-Bimage重新鏈接生成鏡像BootLoader-image,BootLoader-image為最終生成的BootLoader鏡像。添加頭部信息流程如圖2所示。
3.2 Kernel簽名頭部的生成
與上面為BootLoader鏡像添加頭部信息流程一樣,為Kernel鏡像添加頭部信息過程中生成Kernel原始鏡像execute-Kimage、哈希值KHash-result、加密后的值E(KHash-result)和最終鏡像Kernel-image。
IROM作為可信根,在出廠時一次性燒寫之后無法被更改,以此保障其自身的可信性。當(dāng)芯片上電啟動時,最先跳轉(zhuǎn)到IROM中執(zhí)行,由它對BootLoader進(jìn)行完整性檢測。從信任根開始,逐級向下檢測,通過檢測后執(zhí)行下一階段鏡像,從而完成整個可信啟動流程。
IROM作為可信啟動最初的啟動鏡像,具有CPU最初的執(zhí)行權(quán),主要功能是簡單硬件初始化及驗(yàn)證相關(guān)鏡像:初始化系統(tǒng)時鐘和設(shè)備控制器,以及準(zhǔn)備啟動設(shè)備并驗(yàn)證下一階段鏡像的真實(shí)性和完整性。IROM驗(yàn)證BootLoader鏡像,如果驗(yàn)證通過,則跳轉(zhuǎn)到BootLoader在內(nèi)存的起始地址開始處執(zhí)行,將CPU的執(zhí)行權(quán)交給BootLoader;如果驗(yàn)證不通過,則執(zhí)行相關(guān)驗(yàn)證失敗操作,如關(guān)機(jī)等。該鏡像不涉及被檢驗(yàn),制作時可以直接通過源碼編譯生成,然后將生成的鏡像文件在出廠前燒寫即可。
根據(jù)信任鏈傳遞思想:先度量,再驗(yàn)證,最后跳轉(zhuǎn)[14]。如圖1在IROM、BootLoader的尾部添加了驗(yàn)證模塊和驗(yàn)證公鑰兩個部分。驗(yàn)證模塊采用數(shù)字簽名驗(yàn)證技術(shù)對啟動實(shí)體的可信性進(jìn)行驗(yàn)證,確保啟動實(shí)體的來源可信。為了滿足系統(tǒng)各階段不同安全級別的要求,分別在IROM、BootLoader中的驗(yàn)證模塊和驗(yàn)證公鑰中使用不同的Hash算法和不同密鑰長度的RSA算法。上一階段實(shí)體的驗(yàn)證公鑰需和下一階段實(shí)體頭部中的簽名信息生成時的私鑰配對??尚艈臃譃镮ROM驗(yàn)證BootLoader和由BootLoader驗(yàn)證內(nèi)核兩個階段,各個階段的驗(yàn)證過程類似,此處僅以第二階段為例進(jìn)行闡述。
BootLoader驗(yàn)證內(nèi)核的過程分為如下幾個步驟:
1) 首先將內(nèi)核鏡像拷貝到內(nèi)存中,然后根據(jù)鏡像Kernel-image頭部信息解析出E(KHash-result)與execute-Kimage。
2) 使用與制作內(nèi)核鏡像時用到的私鑰相匹配的公鑰解密E(KHash-result),根據(jù)非對稱加密算法原理,如果能夠解密,則說明該鏡像頭部中E(KHashresult)為可信的,同時得到解密的結(jié)果KHash-result。如果不能解密,則說明該鏡像來源不合法,鏡像不可信,將執(zhí)行驗(yàn)證失敗操作。
3) 同時對鏡像Kernel-image的尾部execute-Kimage用與制作Kernel鏡像時用到的Hash算法相同的算法進(jìn)行計(jì)算,得到重新計(jì)算的哈希值KHashresult-T。
4) 如果KHash-result-T與KHash-result相等,則說明execute-Kimage的內(nèi)容是完整的,因此可以確定整個鏡像的來源真實(shí),內(nèi)容完整;如果不相等,則說明該鏡像遭到篡改,不具備完整性特性,將執(zhí)行驗(yàn)證失敗操作。驗(yàn)證過程如圖3所示。
圖3 IROM對BootLoader的可信驗(yàn)證
經(jīng)過以上兩階段的驗(yàn)證,保證了從固件IROM到Kernel的整個過程的可信,即建立了整個啟動過程完整的信任鏈。
實(shí)驗(yàn)系統(tǒng)的硬件平臺為天嵌2440嵌入式開發(fā)板;軟件平臺BootLoader為U-Boot1.1.6,內(nèi)核為Linux2.6.30。采用SHA-1哈希算法和2 048位密鑰的RSA算法實(shí)現(xiàn)系統(tǒng)啟動時的可信驗(yàn)證。本文對兩個可信啟動階段都進(jìn)行了反復(fù)50次以上的測試,兩個階段均符合預(yù)期,此處同樣以第二階段為例進(jìn)行實(shí)驗(yàn)和測試。
6.1 合法內(nèi)核的可信啟動測試
圖4為U-boot驗(yàn)證一個合法的Kernel-image鏡像,圖中打印了鏡像的頭部簽名信息E(KHashresult)、除頭部信息后內(nèi)容的SHA-1值KHash-result-T和解密簽名信息后的結(jié)果KHash-result。圖中解密得到了KHash-result值,說明鏡像頭部的簽名信息真實(shí)完整,再有KHash-result和KHash-result-T兩值相等,說明exeute-Kimage內(nèi)容和頭部簽名信息匹配。所以該Kernel鏡像是合法的鏡像,結(jié)果成功啟動。
圖4 合法Kernel-image的驗(yàn)證測試
6.2 非法內(nèi)核的可信啟動測試
圖5為非法的Kernel-image鏡像啟動信息。
圖5 Kernel-image被篡改后的驗(yàn)證測試
同圖4比較,圖5a、5c中無法解密得到Kernelresult值,說明頭部簽名信息被篡改;圖5b中KHash-result值未發(fā)生改變,說明頭部簽名信息完整。KHash-result-T值發(fā)生改變,說明exeute-Kimage內(nèi)容發(fā)生改變。KHash-result值和KHash-result-T值不相等,說明exeute-Kimage內(nèi)容和頭部的簽名信息不匹配。此處的3種情況都為非法鏡像,故啟動失敗。
6.3 內(nèi)核更新時的可信啟動測試
同圖4比較,圖6中E(KHash-result)值發(fā)生改變,同時KHash-result值能夠被解密得到,說明此時的E(KHash-result)值為新的鏡像的合法簽名信息;KHash-result-T值和KHash-result值相同,說明exeute-Kimage內(nèi)容和頭部簽名信息匹配。所以此鏡像是合法的鏡像,成功啟動,升級成功。
圖6 Kernel-image升級時可信驗(yàn)證
本文針對嵌入式系統(tǒng)所面臨的安全威脅,提出了一種采用數(shù)字簽名技術(shù)的可信啟動方法,以嵌入式Linux操作系統(tǒng)為平臺構(gòu)建了一個可信啟動信任鏈。該方法無需增加額外的硬件設(shè)備(如TPM、MTM等),通過數(shù)字簽名技術(shù)保護(hù)實(shí)體的預(yù)期完整性度量值,確保啟動實(shí)體的完整性和來源的真實(shí)性,防止關(guān)鍵系統(tǒng)軟件被篡改,為應(yīng)用程序搭建可信的執(zhí)行環(huán)境。此外,該方法還可實(shí)現(xiàn)系統(tǒng)更新,并確保更新內(nèi)容來源的可信性。由于該方法無需增加任何的硬件成本,便可有效地保證系統(tǒng)啟動過程的可信性,因此可廣泛應(yīng)用于嚴(yán)格控制成本的嵌入式系統(tǒng)開發(fā)中,以提高系統(tǒng)的高可信能力。
[1] 馮登國. 可信計(jì)算理論與實(shí)踐[M]. 北京:清華大學(xué)出版社, 2013. FENG Deng-guo. Trusted computing theory and practice[M]. Beijing: Tsinghua University Press, 2013.
[2] ASOKAN N, EKBERG J E, KOSTIAINEN K, et al. Mobile trusted computing[J]. Proceedings of the IEEE, 2014, 102(8):1189-1206.
[3] YU Chao, YUAN Men-ting. Security Bootstrap based on trusted computing[C]//2010 Second International Conference on Networks Security Wireless Communications and Trusted Computing. Washington D C, USA: IEEE Computer Society, 2010: 486-489.
[4] YU Fa-jiang, ZHANG Huan-guo. Design and implementation of a bootstrap trust chain[J]. Wuhan University Journal of Natural Sciences, 2006, 11(6):1449-1452.
[5] Trusted Computing Group. TCG mobile trusted module specification, specification version 1.0, revision 6[EB/OL].[2014-11-26]. http://www.trustedcomputinggroup.org/files/ resource_files/87852F33-1D09-3519-AD0C0F141CC6B10D/ Revision_6-tcg-mobile-trusted-module-1_0pdf.
[6] KAI Tang, XIN Xu, GUO Chun-xia . The secure boot of embedded system based on mobile trusted module[C]//2012 International Conference on Intelligent System Design and Engineering Application. New York, USA: IEEE, 2012:1131-1134.
[7] 趙波, 費(fèi)永康, 向騻, 等. 嵌入式系統(tǒng)的安全啟動機(jī)制研究與實(shí)現(xiàn)[J]. 計(jì)算機(jī)工程與應(yīng)用, 2014, 50(10): 72-77. ZHAO Bo, FEI Yong-kang, XIANG Shuang, et al. Research and implementation of secure boot mechanism for embedded systems[J]. Computer Engineering and Applications, 2014, 50(10): 72-77.
[8] 張煥國, 李晶, 潘丹鈴, 等. 嵌入式系統(tǒng)可信平臺模塊研究[J]. 計(jì)算機(jī)研究與發(fā)展, 2011, 48(7): 1269-1278. ZHANG Huan-guo, LI Jing, PAN Dan-ling, et al. Trusted platform module in embedded system[J]. Journal of Computer Research and Development, 2011, 48(7):1269-1278.
[9] PARNO B, MCCUNE J M, PERRIG A. Bootstrapping trust in commodity computers[C]//2010 IEEE Symposium on Security and Privacy. Oakland, USA: IEEE, 2010: 414-429.
[10] KHALID O, ROLFES C, IBING A. On implementing trusted boot for embedded systems[C]//2013 IEEE International Symposium on Hardware-Oriented Security and Trust (HOST). New York, USA: IEEE, 2013: 75-80.
[11] CLARK P C, HOFFMAN L J. A smartcard protected operating system[J]. Communications of the ACM, 1994,37(11): 67-70.
[12] Trusted Computing Platform Alliance. TCG PC specific implementation specification, Version1.1[EB/OL]. [2014-12-10]. http://www.trustedcomputinggroup.org/files/resource_ files/87B92DAF-1D093519AD80984BBE62D62D/TCG_P CSpecificSpecification_v1_1.pdf .
[13] SHEN Chang-xiang, ZHANG Huang-guo, FENG Deng-guo, et al. Survey of information security[J]. Science in China Series F: Information Seiences, 2007, 50(3):273-298.
[14] FENG Deng-guo, QIN Yu, FENG Wei, et al. The theory and practice in the evolution of trusted computing[J]. Chinese Science Bulletin, 2014, 59(32): 4173-4189.
編 輯 蔣 曉
Research on the Trusted-Boot Technology Using Digital Signature Technique
YANG Xia1,2, LEI Lin1, WU Xin-yong3, WU Kai-jun2, and SANG Nan1
(1. School of Information and Software Engineering, University of Electronic Science and Technology of China Chengdu 610054;2. Science and Technology on Communication Security Laboratory Chengdu 610041;
3. Jezetek Research Chengdu 610041)
Device booting is a critical step and the foundation of trust for embedded systems. Through analyzing related work we find that most current trusted boot technologies rely heavily on the hardware modules such as trusted platform module (TPM). A new trusted boot method is proposed in this paper for embedded Linux system, which is based on the trusted measurement policy and trust chain mechanism. Firstly, this approach takes the firmware IROM as root of trust, which is used to check the integrity and authenticity of the next booting step like BootLoader. Then the BootLoader do the same to the Kernel. So the chain of trust is established from the top of booting to the Kernel. Using the technology of digital signature and Hash algorithm, we implemented the integrity and authenticity checking for each booting entity. The results show that this method can verify the integrity and authenticity of booting entity, and protect the expected metric easily and effectively without other hardware modules. Besides, it ensures the integrity and authenticity of booting entity when they are updated.
chain of trust; digital signature technique; embedded Linux; root of trust; trusted boot technology; trusted computing
TP309
A
10.3969/j.issn.1001-0548.2016.02.023
2015 - 02 - 03;
2015 - 07 - 08
國家核高基項(xiàng)目(M1401060112ZX0103301);保密通信重點(diǎn)實(shí)驗(yàn)室基金(2014006275)
楊霞(1978 - ),女,博士,副教授,主要從事可信計(jì)算、嵌入式系統(tǒng)、操作系統(tǒng)安全增強(qiáng)技術(shù)等方面的研究.