《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > 基于芯片仿真器的程序訪問(wèn)權(quán)限配置方案
基于芯片仿真器的程序訪問(wèn)權(quán)限配置方案
2019年電子技術(shù)應(yīng)用第10期
張海峰1,2,劉 俊1,2,種 挺1,2,原義棟1,2
1.北京智芯微電子科技有限公司 國(guó)家電網(wǎng)公司重點(diǎn)實(shí)驗(yàn)室電力芯片設(shè)計(jì)分析實(shí)驗(yàn)室,北京100192; 2.北京智芯微電子科技有限公司 北京市電力高可靠性集成電路設(shè)計(jì)工程技術(shù)研究中心,北京100192
摘要: 芯片仿真器是一種在嵌入式軟件開(kāi)發(fā)過(guò)程中有效的調(diào)試手段,目前很多芯片仿真器缺少在調(diào)試過(guò)程中對(duì)軟件程序進(jìn)行保護(hù)。提出一種在調(diào)試階段對(duì)軟件程序訪問(wèn)權(quán)限進(jìn)行控制的方案,該方案主要包括三步:首先以密文配置文件的形式生成程序的訪問(wèn)權(quán)限配置信息,其次將程序數(shù)據(jù)進(jìn)行加密處理,最后將密文配置文件及密文程序數(shù)據(jù)一并下載到芯片仿真器。方案實(shí)現(xiàn)了程序訪問(wèn)權(quán)限的靈活配置,并采用密文處理方式,防止配置權(quán)限及程序數(shù)據(jù)的非法篡改,提高了調(diào)試的安全性。
中圖分類號(hào): TP39
文獻(xiàn)標(biāo)識(shí)碼: A
DOI:10.16157/j.issn.0258-7998.190618
中文引用格式: 張海峰,劉俊,種挺,等. 基于芯片仿真器的程序訪問(wèn)權(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ùn)算方面起著重要作用。由于芯片應(yīng)用場(chǎng)景的多樣化、復(fù)雜化,芯片上的嵌入式軟件程序的規(guī)模及復(fù)雜度也越來(lái)越高,如何提高嵌入式軟件程序的開(kāi)發(fā)效率和質(zhì)量成為熱點(diǎn)問(wèn)題[2]。

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

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

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

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

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

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

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

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

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

jsj1-t1.gif

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

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

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

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

2.1 程序加密

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

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

jsj1-t2.gif

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

jsj1-t3.gif

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

    程序訪問(wèn)權(quán)限配置信息以配置記錄的形式存在于配置文件中,每條配置記錄通過(guò)索引對(duì)應(yīng)于芯片硬件中程序訪問(wèn)控制模塊中的配置區(qū)。配置文件通過(guò)將明文配置記錄按索引號(hào)從小到大順序進(jìn)行組合,加密處理后生成密文配置文件。訪問(wè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)試過(guò)程中是否允許讀、寫操作,調(diào)試權(quán)限是指調(diào)試過(guò)程中是否允許單步和斷點(diǎn)調(diào)試。

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

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

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

jsj1-t6.gif

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

2.4 應(yīng)用舉例

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

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

jsj1-t7.gif

3 結(jié)束語(yǔ)

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

參考文獻(xiàn)

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

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

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

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

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

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

[7] 王永生,葉以正,肖立伊,等.采用JTAG結(jié)構(gòu)實(shí)現(xiàn)SoC芯片的片上仿真器及接口[J].計(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.北京智芯微電子科技有限公司 國(guó)家電網(wǎng)公司重點(diǎn)實(shí)驗(yàn)室電力芯片設(shè)計(jì)分析實(shí)驗(yàn)室,北京100192;

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

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