《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設(shè)計應(yīng)用 > 基于芯片仿真器的程序訪問權(quán)限配置方案
基于芯片仿真器的程序訪問權(quán)限配置方案
2019年電子技術(shù)應(yīng)用第10期
張海峰1,2,劉 俊1,2,種 挺1,2,原義棟1,2
1.北京智芯微電子科技有限公司 國家電網(wǎng)公司重點實驗室電力芯片設(shè)計分析實驗室,北京100192; 2.北京智芯微電子科技有限公司 北京市電力高可靠性集成電路設(shè)計工程技術(shù)研究中心,北京100192
摘要: 芯片仿真器是一種在嵌入式軟件開發(fā)過程中有效的調(diào)試手段,目前很多芯片仿真器缺少在調(diào)試過程中對軟件程序進(jìn)行保護(hù)。提出一種在調(diào)試階段對軟件程序訪問權(quán)限進(jìn)行控制的方案,該方案主要包括三步:首先以密文配置文件的形式生成程序的訪問權(quán)限配置信息,其次將程序數(shù)據(jù)進(jìn)行加密處理,最后將密文配置文件及密文程序數(shù)據(jù)一并下載到芯片仿真器。方案實現(xiàn)了程序訪問權(quán)限的靈活配置,并采用密文處理方式,防止配置權(quán)限及程序數(shù)據(jù)的非法篡改,提高了調(diào)試的安全性。
中圖分類號: TP39
文獻(xiàn)標(biāo)識碼: A
DOI:10.16157/j.issn.0258-7998.190618
中文引用格式: 張海峰,劉俊,種挺,等. 基于芯片仿真器的程序訪問權(quán)限配置方案[J].電子技術(shù)應(yīng)用,2019,45(10):80-82,87.
英文引用格式: Zhang Haifeng,Liu Jun,Chong Ting,et al. Solution of program access rights configuration based on chip simulator[J]. Application of Electronic Technique,2019,45(10):80-82,87.
Solution of program access rights configuration based on chip simulator
Zhang Haifeng1,2,Liu Jun1,2,Chong Ting1,2,Yuan Yidong1,2
1.State Grid Key Laboratory of Power Industrial Chip Design and Analysis Technology, Beijing Smart-Chip Microelectronics Technology Co.,Ltd.,Beijing 100192,China; 2.Beijing Engineering Research Center of High-reliability IC with Power Industrial Grade, Beijing Smart-Chip Microelectronics Technology Co.,Ltd.,Beijing 100192,China
Abstract: The chip emulator is an effective debugging tool in the embedded software development, and many existing chip emulators lack the protection of the software program during the debugging process. This paper proposes a solution to control the access rights of software programs during the debugging phase. The solution mainly includes three steps: firstly, the program access rights is generated in the form of an encrypted configuration file, then the program data is encrypted, and finally the encrypted configuration file and the encrypted program data are downloaded to the chip emulator. The solution realizes flexible configuration of program access rights and adopts encrypted files to prevent unauthorized tampering of configuration rights and program data, and increases the security of debugging.
Key words : chip emulator;secure debug;configurable;encrypted download

0 引言

    隨著科技的進(jìn)步,芯片作為信息化、智能化建設(shè)的核心部件之一, 大量應(yīng)用在人工智能、物聯(lián)網(wǎng)、大數(shù)據(jù)等領(lǐng)域[1],并在安全、通信、運算方面起著重要作用。由于芯片應(yīng)用場景的多樣化、復(fù)雜化,芯片上的嵌入式軟件程序的規(guī)模及復(fù)雜度也越來越高,如何提高嵌入式軟件程序的開發(fā)效率和質(zhì)量成為熱點問題[2]。

    芯片仿真器,本文特指通過使用FPGA仿真芯片硬件邏輯[3]的硬件仿真器,作為一種嵌入式程序調(diào)試工具,與集成開發(fā)環(huán)境配合使用,通過對程序進(jìn)行單步調(diào)試、斷點調(diào)試、變量查看、寄存器查看等調(diào)試手段,實現(xiàn)對問題的追蹤、定位。從一定程度上說,調(diào)試操作直接影響到程序的質(zhì)量和開發(fā)周期[4-5]

    嵌入式程序的規(guī)模及復(fù)雜度的提高導(dǎo)致程序開發(fā)的難度越來越大。為解決這一問題,嵌入式程序開發(fā)一般采用分層程序設(shè)計方法,一般依據(jù)功能自底向上分為驅(qū)動層、系統(tǒng)層和應(yīng)用層。分層設(shè)計在降低設(shè)計開發(fā)難度的同時,便于廠商之間實現(xiàn)協(xié)作開發(fā),專注于各自擅長的領(lǐng)域。一般由不同的廠商負(fù)責(zé)不同層次的軟件開發(fā),低層程序通過提供函數(shù)接口供上層程序調(diào)用,為統(tǒng)一描述,將提供函數(shù)接口的程序統(tǒng)稱為應(yīng)用編程接口(Application Programming Interface,API)程序,使用API的程序稱為用戶程序。這種開發(fā)模式使得程序?qū)哟吻逦?,設(shè)計明確,維護(hù)方便,加快了產(chǎn)品的開發(fā)周期。

    然而,在使用芯片仿真器進(jìn)行調(diào)試時也面臨著一些問題。在調(diào)試用戶程序時,需要將API程序一并下載到仿真器,而API程序提供者出于知識產(chǎn)權(quán)的保護(hù),一般不會直接提供程序源碼。如果以Intel 十六進(jìn)制編碼(Hexadecimal,HEX)文件形式提供[6],仍存在查看匯編代碼及反匯編的風(fēng)險。目前有一種方法是提供相應(yīng)的調(diào)試版本的HEX文件,調(diào)試版本程序的接口與實際版本相同,而把算法、認(rèn)證等關(guān)鍵操作進(jìn)行修改,導(dǎo)致用戶程序雖然可以完成接口的正常調(diào)用,但程序調(diào)試時的執(zhí)行結(jié)果與實際預(yù)期不符,調(diào)試的真實性受到了很大的影響,存在程序問題不能及時被發(fā)現(xiàn)或誤報的風(fēng)險。還有一種常用的方法,在實際芯片投片生產(chǎn)時,API程序預(yù)先掩模到芯片中,用戶程序通過特定的下載通道下載到芯片,然后通過直接操作芯片接口進(jìn)行程序測試,此種方法雖然與芯片的應(yīng)用場景一致,可以發(fā)現(xiàn)問題,但不容易進(jìn)行問題定位,一般用于項目后期程序功能相對穩(wěn)定的階段,不適用于程序開發(fā)初期階段。

    為兼顧調(diào)試的真實性及知識產(chǎn)權(quán)的保護(hù),本文提出一種程序訪問權(quán)限可配置的方法,此方法基于芯片仿真器提供的程序訪問權(quán)限配置(簡稱為“權(quán)限配置”)機(jī)制及程序下載保護(hù)機(jī)制,實現(xiàn)API程序在仿真器中進(jìn)行安全下載、調(diào)試。此方案能夠較好地對敏感程序進(jìn)行保護(hù),且可靈活配置,對軟件協(xié)同開發(fā)、調(diào)試提供了一種安全方案。

1 系統(tǒng)結(jié)構(gòu)模型

    普通的芯片仿真器系統(tǒng)是由硬件和軟件兩部分構(gòu)成的。硬件部分主要由芯片仿真電路、調(diào)試協(xié)議轉(zhuǎn)換電路及其他接口電路組成[7],其中芯片仿真電路通過FPGA實現(xiàn)芯片邏輯;調(diào)試協(xié)議基于聯(lián)合測試工作組(Joint Test Action Group,JTAG)實現(xiàn);軟件部分主要由軟件集成開發(fā)環(huán)境(Integrated Development Environment,IDE)及調(diào)試驅(qū)動接口組成,其中IDE主要包括程序編譯、鏈接、調(diào)試等功能,調(diào)試驅(qū)動接口以動態(tài)鏈接庫(Dynamic Link Library,DLL)形式存在,主要包括軟件與硬件進(jìn)行交互的接口函數(shù)。

    為實現(xiàn)在芯片仿真器上程序訪問權(quán)限可配置的功能,除了具有普通仿真器的功能外,仿真器硬件包括一個訪問權(quán)限控制模塊,仿真器軟件包括程序加密模塊、程序加密下載模塊、權(quán)限配置生成模塊、權(quán)限配置下載模塊。

    程序加密模塊主要實現(xiàn)對HEX格式的API程序文件進(jìn)行加密,并生成密文格式的文件。權(quán)限配置生成模塊主要實現(xiàn)對程序的訪問權(quán)限以配置文件的形式進(jìn)行靈活配置,并生成密文格式的文件。程序加密下載模塊和權(quán)限配置下載模塊位于調(diào)試驅(qū)動接口DLL中,分別完成密文格式的API程序及權(quán)限配置文件的下載操作。

    系統(tǒng)框圖如圖1所示。

jsj1-t1.gif

    使用IDE進(jìn)行用戶程序調(diào)試時,IDE首先調(diào)用DLL接口,將訪問權(quán)限配置文件及密文程序文件進(jìn)行解析,然后通過通用串行總線(Universal Serial Bus,USB)接口[8]發(fā)送到調(diào)試協(xié)議轉(zhuǎn)換模塊,調(diào)試協(xié)議轉(zhuǎn)換模塊通過JTAG[9]通道將程序數(shù)據(jù)及訪問權(quán)限配置信息寫入芯片仿真模塊。

    完成API程序的寫入及訪問權(quán)限配置后,將用戶程序下載到芯片仿真模塊,即可啟動正常的調(diào)試流程。出于安全考慮,程序加密、程序訪問權(quán)限配置實現(xiàn)原理及工具對用戶程序開發(fā)者嚴(yán)格保密。API程序開發(fā)者將生成好的密文文件傳遞給用戶程序開發(fā)者。

2 設(shè)計及實現(xiàn)

    本節(jié)主要對程序加密、訪問權(quán)限配置生成、程序及權(quán)限配置下載的設(shè)計及實現(xiàn)方法進(jìn)行說明。

2.1 程序加密

    程序加密模塊采用可視化工具的方式實現(xiàn),通過對API程序進(jìn)行加密處理,輸入的原始數(shù)據(jù)為HEX格式的程序文件,輸出的目標(biāo)數(shù)據(jù)為加密后的數(shù)據(jù),并支持程序地址范圍檢查和空白區(qū)域的填充功能。

    程序加密模塊的處理流程如圖2所示。

jsj1-t2.gif

    設(shè)定的地址范圍通過界面輸入,如果程序數(shù)據(jù)實際地址范圍小于設(shè)定的地址范圍,可以選擇是否進(jìn)行空白區(qū)域填充:如果不選擇填充,空白區(qū)域?qū)⒉粫畛鋽?shù)據(jù);如果選擇填充,將以一字節(jié)為單位重復(fù)進(jìn)行填充,填充值可以通過界面指定,如圖3所示。

jsj1-t3.gif

2.2 訪問權(quán)限配置信息生成

    程序訪問權(quán)限配置信息以配置記錄的形式存在于配置文件中,每條配置記錄通過索引對應(yīng)于芯片硬件中程序訪問控制模塊中的配置區(qū)。配置文件通過將明文配置記錄按索引號從小到大順序進(jìn)行組合,加密處理后生成密文配置文件。訪問權(quán)限配置信息生成流程如圖4所示。

jsj1-t4.gif

    每條配置記錄以界面的形式進(jìn)行輸入,如圖5所示。

jsj1-t5.gif

    權(quán)限配置內(nèi)容包括程序地址范圍配置、讀寫權(quán)限配置、調(diào)試權(quán)限配置,其中讀寫權(quán)限是指調(diào)試過程中是否允許讀、寫操作,調(diào)試權(quán)限是指調(diào)試過程中是否允許單步和斷點調(diào)試。

    通過配置文件生成訪問權(quán)限配置信息,可以對配置信息進(jìn)行靈活的修改,并支持多條記錄同時配置,滿足不同的配置需求。其中配置文件以密文形式存儲,隱藏了配置細(xì)節(jié)。

2.3 程序及權(quán)限配置下載

    芯片仿真模塊提供程序訪問權(quán)限控制的配置接口及硬件實現(xiàn),配置接口主要以寄存器的形式提供,DLL通過寫寄存器完成配置操作。密文API程序數(shù)據(jù)由DLL進(jìn)行解析后下載仿真器硬件中的芯片仿真模塊。如果有多段API程序數(shù)據(jù)需要保護(hù),可以生成多個加密后的程序數(shù)據(jù),DLL分別進(jìn)行解析、下載。下載順序為先進(jìn)行訪問權(quán)限配置下載,然后再執(zhí)行程序下載。具體操作流程如圖6所示。

jsj1-t6.gif

    在獲取每條配置記錄信息時,對配置記錄信息的合法性進(jìn)行檢查,主要包括不同的配置記錄的地址范圍不能重疊;在進(jìn)行API程序下載時,對程序數(shù)據(jù)的合法性進(jìn)行檢查,包括不同程序的地址范圍不能重疊、單個程序的地址必須位于一條配置記錄的地址范圍內(nèi)。如果合法性檢查階段出錯,則進(jìn)行報錯提示并終止流程。

2.4 應(yīng)用舉例

    API程序及權(quán)限配置信息下載操作完成后,芯片仿真模塊重新上電,權(quán)限配置信息生效,然后執(zhí)行正常的用戶程序調(diào)試即可。

    本例中程序地址范圍為0x10000~0x100FF,訪問權(quán)限配置為不可讀、不可寫、不可調(diào)試,在調(diào)試用戶程序時,如果執(zhí)行到調(diào)用該API程序的用戶代碼時,則無法進(jìn)入API程序內(nèi)部執(zhí)行,并且無法通過IDE存儲器窗口查看實際內(nèi)容,讀出來的數(shù)據(jù)將以全0顯示,如圖7所示。

jsj1-t7.gif

3 結(jié)束語

    本文提供芯片仿真器上API程序保護(hù)的一種實現(xiàn)方案,通過對程序加密及權(quán)限配置控制,實現(xiàn)在下載及調(diào)試階段對程序進(jìn)行保護(hù),在一定程度上達(dá)到了對API程序安全調(diào)試的目的。 

參考文獻(xiàn)

[1] 劉青龍,董家山.物聯(lián)網(wǎng)無人機(jī)應(yīng)用關(guān)鍵技術(shù)研究[J].電子技術(shù)應(yīng)用,2017,43(11):22-26.

[2] 姚遠(yuǎn).基于仿真開發(fā)環(huán)境的嵌入式調(diào)試的研究與實現(xiàn)[D].成都:電子科技大學(xué),2008.

[3] 謝長生,徐睿.FPGA在ASIC設(shè)計流程中的應(yīng)用[J].微電子技術(shù),2001,29(6):50-52.

[4] 張欣.基于ARM芯片的嵌入式調(diào)試系統(tǒng)的研究與實現(xiàn)[D].青島:中國海洋大學(xué),2007.

[5] 陳崢.基于動態(tài)連續(xù)數(shù)據(jù)的GPU調(diào)試系統(tǒng)設(shè)計和實現(xiàn)[J].電子技術(shù)應(yīng)用,2018,44(6):8-10,14.

[6] 魏忠,蔡勇,雷紅衛(wèi).嵌入式開發(fā)詳解[M].北京.電子工業(yè)出版社,2003.

[7] 王永生,葉以正,肖立伊,等.采用JTAG結(jié)構(gòu)實現(xiàn)SoC芯片的片上仿真器及接口[J].計算機(jī)工程與應(yīng)用,2002,38(16):240-243.

[8] 陳云飛.基于USB2.0的邊界掃描控制器的研制[D].武漢:武漢理工大學(xué),2007.

[9] IEEE.1149.1-2013-IEEE standard for test access port and boundary-scan architecture[S/OL].(2013-05-13)[2019-05-28].https://standards.ieee.org/standard/1149_1-2013.html.



作者信息:

張海峰1,2,劉  俊1,2,種  挺1,2,原義棟1,2

(1.北京智芯微電子科技有限公司 國家電網(wǎng)公司重點實驗室電力芯片設(shè)計分析實驗室,北京100192;

2.北京智芯微電子科技有限公司 北京市電力高可靠性集成電路設(shè)計工程技術(shù)研究中心,北京100192)

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。