◆陳鑫 劉賢達 張博文 王慶輝
基于JTAG和SM3的嵌入式儀表設備可信啟動技術研究與實現(xiàn)
◆陳鑫1,2,3,4劉賢達2,3,4張博文2,3,4王慶輝1
(1.沈陽化工大學信息工程學院 遼寧 110142;2.中國科學院網(wǎng)絡化控制系統(tǒng)重點實驗室 遼寧 110016;3.中國科學院機器人與智能制造創(chuàng)新研究院 遼寧 110169;4.中國科學院沈陽自動化研究所 遼寧 110016)
以可信計算理論為基礎,針對尺寸、成本、能源或其他方面受限而不適合植入可信根的嵌入式設備在啟動過程中代碼執(zhí)行漏洞帶來的安全威脅等問題,提出外置可信度量環(huán)境進行校驗的觀點,探討了基于JTAG和SM3的可信啟動方法。該方法首先用JTAG控制信號將ZYNQ平臺CPU掛起,依托JTAG傳輸協(xié)議對存儲在Flash中的啟動信息進行讀取,之后在PC端搭建基于SM3的可信度量環(huán)境,對讀取固件程序進行驗證,校驗成功之后,允許平臺啟動,否則,需要重新配置與燒錄,直至達到安全啟動的標準。經過在ZYNQ平臺上進行實驗,論證了在沒有可信根的情況下依然可以實現(xiàn)可信啟動的可行性,可以實現(xiàn)對啟動程序的可信度量,提高該ZYNQ平臺的安全性。該方案能夠對以后通過FPGA編程將外置改進為內嵌來實現(xiàn)啟動校驗設備一體化具有非常重要的意義。
ZYNQ;JTAG技術;可信度量環(huán)境;雜湊算法(SM3)
隨著計算機技術和通信技術的發(fā)展,特別是互聯(lián)網(wǎng)的普及,嵌入式設備在世界范圍內得到了越來越廣泛的應用。嵌入式設備領域正在迅速發(fā)展,包括儀表、PDA等設備。隨著嵌入式設備功能需求的不斷增加,芯片的連接越來越多,它們也越來越容易受到攻擊(包括網(wǎng)絡攻擊和物理攻擊)[1]。大部分的防火墻、入侵檢測、病毒防御等網(wǎng)絡安全防護手段都側重于保護服務器的信息安全,相對脆弱的終端平臺就越來越成為信息系統(tǒng)安全的主要薄弱環(huán)節(jié)。
引導期間的安全攻擊可以說是最難防御的,因為在設備生命周期的這個階段,防火墻和防病毒等傳統(tǒng)防御措施不到位,攻擊很難檢測到。因此,在引導期間保護設備仍然是一個活躍的研究領域[2-6]。針對引導攻擊的常見防御措施是認證或安全引導[7]。在這種形式的引導中,設備只讀存儲器被提供公鑰,該公鑰用于認證下一層固件。這確保了設備只能用由授權實體(例如設備制造商)簽名的固件來引導。雖然認證引導形成了許多系統(tǒng)的第一道防線,但它仍然容易受到許多攻擊[8-9]。例如,經過身份驗證的引導并不能阻止攻擊者使用具有已知漏洞的舊版本固件來引導設備。為了防止這種攻擊,許多系統(tǒng)部署了一種更強、更安全的引導協(xié)議,稱為測量引導[9-10]。在許多系統(tǒng)中,測量引導使用TPM[11]來支持,TPM是連接到主機CPU的專用硬件芯片。在具有TPM的系統(tǒng)中,每一層固件都被配置為測量和記錄TPM中下一層固件的散列。啟動后,TPM可以使用由TPM制造商提供的唯一簽名密鑰生成固件測量的簽名日志??梢詮耐獠框炞C該日志,以確定設備是否使用預期的固件啟動。
但有許多設備(如低成本儀表設備)并沒有搭載用于度量驗證的TPM芯片,為了滿足這種情況下設備可信啟動的需求,我們提出了一種基于JTAG的外置可信度量方案,能夠解決一些無法搭載TPM系統(tǒng)的嵌入式儀表設備的可信度量問題,需要的硬件支持少得多。
JTAG以編碼它的聯(lián)合測試行動小組命名,是一個工業(yè)標準,用于在制造后驗證設計和測試印刷電路板,被廣泛使用于SoCs中[12]。通常,測試信號作為輸入信號發(fā)送到系統(tǒng)芯片的不同部分,相關的輸出信號將通過JTAG接口發(fā)送回來。換句話說,JTAG可以向集成電路的任何可尋址部分發(fā)送信號或數(shù)據(jù),或者從集成電路的任何可尋址部分讀取數(shù)據(jù)。大多數(shù)SoCs集成了JTAG接口,因此用戶可以通過JTAG接口訪問SoCs中的任何部分。由于能夠訪問片上系統(tǒng)內部電路,通過通用串行總線或以太網(wǎng)端口的JTAG接口被廣泛用于系統(tǒng)調試、片上系統(tǒng)編程和片上系統(tǒng)程序調試。
JTAG的主要功能有兩種:一種用于測試芯片的電氣特性,檢測芯片是否有問題;另一種用于Debug,對各類芯片及其外圍設備進行調試。一個含有JTAG Debug接口模塊的CPU,只要時鐘正常,就可以通過JTAG接口訪問CPU的內部寄存器、掛在CPU總線上的設備以及內置模塊的寄存器,JTAG功能簡圖如圖1所示。
圖1 JTAG功能簡圖
JTAG邊界掃描寄存器提供了一種便捷的方式用于觀測和控制所需調試的芯片。另外,芯片輸入/輸出引腳上的邊界掃描寄存器單元可以互相連接起來,在芯片的周圍形成一個邊界掃描鏈。邊界掃描鏈可以串行輸入和輸出,通過相應的時鐘信號,就可以方便的觀察和控制處在調試狀態(tài)下的芯片。
隨著現(xiàn)代集成電路(IC)橋接USB(通用串行接口)和JTAG接口(如FTDI FTx232H class[3])的引入,各大供應商已經決定放棄昂貴的專用JTAG適配器概念,轉而開發(fā)更便宜更通用的JTAG設備,如圖2所示。
圖2 FTDI芯片電路板
針對上述背景中提出的問題以及相關技術的研究,提出以下基于JTAG的外置度量環(huán)境的可信啟動流程,如圖3所示。
圖3 ZYNQ可信啟動設計流程圖
(1)JTAG控制CPU上電后啟動
選擇JTAG模式啟動方式時,ZYNQ平臺會自動確認通過JTAG直接從PC端下載啟動配置程序,此時PS端的CPU將保持在空閑狀態(tài),等待啟動鏡像的加載。在這段CPU空閑狀態(tài)期間,利用PC端的J-Flash將保存在Flash中的啟動程序通過JTAG讀取到PC端。
(2)JTAG讀取Flash程序到PC端
由于PC機對目標板的調試就是通過TAP接口完成對相關數(shù)據(jù)寄存器和指令寄存器的訪問,所以該實驗設計通過TAP訪問芯片提供的所有數(shù)據(jù)寄存器和指令寄存器,對Flash芯片進行數(shù)據(jù)讀取。該平臺片上測試原理圖如圖4所示。
圖4 JTAG邊界掃描原理
(3)搭建可信度量環(huán)境確認啟動程序安全
?●算法運用
消息驗證碼算法利用密碼雜湊算法SM3,對于給定的消息和驗證雙方共享的秘密信息產生長度為t個字節(jié)的消息驗證碼。
●SM3測試環(huán)境搭建
(4)平臺安全啟動
啟動程序校驗無誤后,啟動模式改為QSPI啟動,加載已經確認安全的啟動程序,完成可信任的啟動過程。
實驗被度量開發(fā)板搭載的是Xilinx公司的ZYNQ-7000系列芯片,ZYNQ-7000系列的亮點之一在于它包含了完整的ARM處理子系統(tǒng),每一個ZYNQ-7000系列的處理器都包含了雙核的Cortex-A9處理器[13],整個處理器的搭建都以處理器為中心,而且處理器子系統(tǒng)中集成了內存控制器和大量外設,使Cortex-A9的核在ZYNQ-7000中完全獨立于可編程邏輯單元。其二,ZYNQ-7000 AP SoC的啟動配置是分多級進行的[14],PS-PL啟動過程如圖5所示。
圖5 ZYNQ的啟動過程
根據(jù)配置程序燒錄扇區(qū)的不同,能夠快速定位問題區(qū)域,進行配置更改。根據(jù)ZYNQ-7000系列的特點,即使ARM核掛起后,仍能通過程序下載器訪問外設Flash,并進行數(shù)據(jù)提取與度量,來保證平臺的安全啟動。本實驗所度量的啟動程序就存儲在處理器之外的QSPI FLASH中。用來給核心板發(fā)送命令的控制信號則是底板的啟動模式控制開關。實驗采用的軟件為SEGGER公司的J-Flash,該軟件不僅可以向開發(fā)板中燒寫固件程序,同時也可以從開發(fā)板中回讀運行的固件程序。整體架構如圖6所示。
圖6 ZYNQ可信啟動的結構框架圖
可信計算PC規(guī)范指出SRTM是BIOS中的模塊,SRTM的安全性直接和BIOS相關[15],在信任鏈中起著信任錨點的作用?;赟M3雜湊算法的可信度量環(huán)境作為靜態(tài)可信度量根對數(shù)據(jù)進行可靠性度量,使其進行的計算具有真實性、機密性、可控性等特性,并利用這些特性來彌補僅依靠傳統(tǒng)安全防護方式的不足,從而更好地解決計算機安全面臨的挑戰(zhàn)和問題[16]。
4.2.1 SM3簡要介紹
SM3密碼雜湊算法的輸入長度為1(1<2^64)比特的消息m,經過填充、迭代壓縮,生成雜湊值,雜湊值輸出長度為256比特[17]。
(1)填充
假設消息m的長度為l比特,則首先將比特“l(fā)”添加到消息的末尾,再添加個“0”,k是滿足l+1+k≡448(mod512)的最小非負整數(shù)。然后再添加一個64位比特串,該比特串是長度l的二進制表示。填充后的消息的比特長度為512的倍數(shù)。
(2)迭代壓縮
將填充后的消息按512比特進行分組:m'=B^((0))B^((1))???B^((n-1)),其中n=(l+k+65)/512。對m'按下列方式迭代:
FOR?i=0?TO?n-1
V^((i+1))=CF(V^((i)),B^((i)))
ENDFOR
其中CF是壓縮函數(shù),V(0)為256比特值IV,B(i)為填充后的消息分組,迭代壓縮結果為V(n)。
將消息分組B(i)擴展生成132個消息字W0,W1,?W67,W'0,W'1,?W'63,用于壓縮函數(shù)CF:
B(i)→W0,W1,?W15
FOR?j=16?TO?67
Wi←Pi(Wi-16⊕Wi-9⊕(Wi-3<<<15)⊕(Wi-13<<<7)⊕Wi-6
ENDFOR
FOR?j=0?TO?63
Wi'=Wi⊕Wi+4
ENDFOR
令A,B,C,D,E,F(xiàn),G,H,為字寄存器,SS1,SS2,TT1,TT2,為中間變量,壓縮函數(shù)V^(i+1)=CF(V^((i)),B^((i))),0≤i≤n-1。計算過程如下:
ABCDEFG←V^((i))
FOR?j=0?TO?63
SS1←((A<<<12)+E+(Ti<< SS2←SS1⊕(A<<<12) TT1←FFi(A,B,C)+D+SS2+W'i TT2←GGi(E,F(xiàn),G)+H+SS1+Wi D←C C←B<<<9 B←A A←TT1 H←G G←F<<<19 F←E E←P_0 (TT2) ENDFOR V^((i+1))←ABCDEFGH⊕V^((i)) 4.2.2算法接口實現(xiàn) ulAlgID←SGD_SM3 procedure SKF_DigestInit(hDev,ulAlgID,NULL,NULL,0,&hHash) if Print SKF_DigestInit Wrong fflush(stdin) getchar() else Print SKF_DigestInit OK endif procedure SKF_DigestUpdata(hHash,bIndata,ulIndataLen) if Print SKF_DigestInit Wrong fflush(stdin) getchar() else Print SKF_DigestUpdata OK endif procedure SKF_DigestFinal(hHash,bOutData, &ulOutdataLen) if < SKF_DigestFinal!= SAR_OK> Print SKF_DigestFinal Wrong fflush(stdin) getchar() else< SKF_DigestFinal = SAR_OK> PrintMsg SKF_DigestFinal OK endif 選取所讀扇區(qū)的一部分數(shù)據(jù)如圖7所示。實驗驗證,當芯片ARM核被掛起時,J-Flash可以通過JTAG下載器訪問Flash,并讀取固件啟動程序,能夠預防漏洞程序由于平臺上電自啟帶來的安全風險。 圖7 提取數(shù)據(jù)部分截圖 經過對所搭建環(huán)境的調試,結果如圖8所示,實驗搭建的基于SM3的度量環(huán)境能夠對提取數(shù)據(jù)進行運算,并對其進行消息鑒別。 圖8 環(huán)境測試信息 本文針對許多嵌入式儀表設備無法搭載用于度量驗證的TPM芯片的情況,提出一種基于JTAG傳輸協(xié)議的嵌入式設備可信啟動關鍵技術的設計方案,運用國密SM3算法搭建外置可信度量環(huán)境,對通過邊界掃描器提取的ZYNQ平臺配置信息進行度量,從而得到安全啟動可信依據(jù)。經過實驗驗證,本文提出的實驗設計能夠有效讀取ZYNQ平臺的配置信息,并能對其進行可信度量,最后實現(xiàn)平臺的可信啟動。 該技術的創(chuàng)新之處是構建一種連接嵌入式處理器和Flash的橋梁,通過控制傳入ZYNQ平臺的JTAG信號,掛起CPU;再通過JTAG的邊界掃描控制器,對存儲在Flash芯片上的啟動程序進行讀取,最后進行校驗??梢源_保長期存儲在Flash的啟動程序與平臺配置的動態(tài)可信性。在可信環(huán)境搭建過程中,SM3算法的使用不僅有助于從根本上解決嵌入式平臺面臨的信息安全問題,還能提高校驗的真實性和自主可控性。為保證工業(yè)系統(tǒng)中設備產品化目的,也就是該方案的改進之處就是可以通過FPGA編程實現(xiàn)度量環(huán)境內置化,之后再通過JTAG信號的發(fā)送控制設備的安全啟動。該技術的實現(xiàn)則為上述通過FPGA編程實現(xiàn)基于JTAG的可信啟動設備一體化打下堅實基礎。 [1]Facon,A.,Guilley,S.,Ngo,X.-T.,Perianin,T.Hardware-enabled AI for embedded security:A new paradigm.(2019)Proceedings - 2019 3rd International Conference on Recent Advances in Signal Processing,Telecommunications and Computing,SigTelCom 2019,art.no. 8696136,pp. 80-84. [2]Byron Cook,Kareem Khazem,Daniel Kroening,SerdarTasiran,Michael Tautschnig,and Mark R. Tuttle. Model checking boot code from AWS data centers. In 30th International Conference on Computer Aided Verification(CAV),2018. [3]KarimEldefrawy,Gene Tsudik,Aurélien Francillon,and DanielePerito. SMART:secure and minimal architecture for (establishing dynamic)root of trust. In 19th Network and Distributed System Security Symposium(NDSS). The Internet Society,2012. [4]Sujit Kumar Muduli,PramodSubramanyan,and SayakRay. V erification of authenticated firmware loaders. In Formal Methods in Computer Aided Design(FMCAD).IEEE, 2019. [5]Steffen Schulz,André Schaller,F(xiàn)lorian Kohnh?user,and Stefan Katzenbeisser. Boot attestation:Secure remote reporting with off-the-shelf IoT sensors. In European Symposium on Research in Computer Security(ESORICS).Springer,2017. [6]Shijun Zhao,Qianying Zhang,Guangyao Hu,Yu Qin,and Dengguo Feng. Providing root of trust for ARM TrustZone using on-chip SRAM. In 4th International Workshop on Trustworthy Embedded Devices(TrustED).ACM,2014. [7]William A. Arbaugh,David J. Farber,and Jonathan M.Smith. A secure and reliable bootstrap architecture. In IEEE Symposium on Security and Privacy(S&P). IEEE Computer Society,1997. [8]Corey Kallenberg,Sam Cornwell,XenoKovah,and John Butterworth. Setup for failure: defeating secure boot. In The Symposium on Security for Asia Network (SyScan),2014. [9]Microsoft. Secure the Windows 10 boot process.https://docs.microsoft.com/en-us/Windows/security/information-protection/secure-the-Windows-10-boot-process,2018. [10]Richard Wilkins and Brian Richardson. Uefi secure boot in modern computer security solutions. In UEFI Forum,2013. [11]Trusted Computing Group. TPM main specification level 2 version 1.2,revision 116.https://trustedcomputinggroup.org/resource/tpm-main-specification/,2011. [12]https://en.wikipedia.org/wiki/JTAG. [13]Zynq-7000 SoC Data Sheet: Overview DS190(v1.12.2)July 2,2018. [14]Zynq-7000 SoC Technical Reference Manual UG585(v1.12.2)July 1,2018. [15]徐明迪,明瑞揚,任正偉,沈楚楚. 一種靜態(tài)可信度量根安全證明方法[A]. 中國造船工程學會電子技術學術委員會.中國造船工程學會電子技術學術委員會2017年裝備技術發(fā)展論壇論文集[C].中國造船工程學會電子技術學術委員會:中國造船工程學會,2017:5. [16]程戈,李聰.可信計算環(huán)境構建機制研究進展[J].計算機工程與應用,2013,49(13):59-64+197. [17]王小云,于紅波.SM3密碼雜湊算法[J].信息安全研究,2016,2(11):983-994. 國家重點研發(fā)計劃項目:功能安全與信息安全融合的儀表共性關鍵技術研究與產品開發(fā)(2019YFB2006300)5 實驗結果與分析
5.1 可信度量環(huán)境
5.2 PC端度量環(huán)境測試
5 結束語