周衛(wèi)斌,張達(dá)強(qiáng),畢明帆,胡陽陽,楊永剛
(天津科技大學(xué)電子信息與自動化學(xué)院,天津 300457)
眾所周知,集成電路(integrated circuit,IC)分為設(shè)計、制造、封裝測試三大環(huán)節(jié),封裝測試環(huán)節(jié)是最重要的環(huán)節(jié)[1].集成電路封裝測試技術(shù)是集成電路發(fā)展過程中的三大支撐技術(shù)之一;集成電路測試的能力和水平也是集成電路測試產(chǎn)業(yè)的重要標(biāo)志,對半導(dǎo)體行業(yè)的發(fā)展至關(guān)重要[2].通過芯片測試可以發(fā)現(xiàn)芯片的缺陷,淘汰不合格產(chǎn)品,從而達(dá)到規(guī)避風(fēng)險的目的.目前國內(nèi)芯片封裝測試技術(shù)也在飛速發(fā)展[3],但與國外相比還有一定的差距,國際上大型測試公司對其測試設(shè)備和測試技術(shù)進(jìn)行封鎖,使得國內(nèi)生產(chǎn)制造的一些高性能芯片也要依靠國外的先進(jìn)測試技術(shù)進(jìn)行相關(guān)測試[4],這會將我國最新研發(fā)的芯片設(shè)計制造技術(shù)暴露給國外,對我國的國家安全產(chǎn)生很大的威脅.同時,在目前的芯片測試過程中,通常不對芯片測試的數(shù)據(jù)進(jìn)行加密,采用一種明文傳輸,在通過網(wǎng)絡(luò)進(jìn)行芯片測試數(shù)據(jù)傳輸?shù)臅r候,經(jīng)常會面臨很多信息安全問題,如信息欺騙、信息偽造、信息篡改等[5].因此,亟須提高國內(nèi)芯片的測試水平和測試安全性,研發(fā)高水平的信息安全傳輸芯片測試系統(tǒng).只有這樣,才能打破國外壟斷,更好地推進(jìn)芯片行業(yè)的安全發(fā)展,為我國綜合國力的提升注入新的活力[4].
本文設(shè)計了一種芯片測試軟件平臺,實現(xiàn)對以海思Hi3798M V200高性能芯片為主處理器的封裝內(nèi)系統(tǒng)(SiP)芯片功能測試板卡的測試,平臺采用安全套接字層/傳輸層安全(SSL/TLS)協(xié)議,在網(wǎng)絡(luò)傳輸?shù)幕A(chǔ)上,使用 OpenSSL庫完成加密[6];同時設(shè)計采用一種線程池方法,可以同時對多塊芯片開展測試,能夠很好地實現(xiàn)芯片測試系統(tǒng)信息傳輸?shù)陌踩院陀行裕徽麄€測試軟件平臺實行人機(jī)互動機(jī)制,擁有多種測試模式,系統(tǒng)性能穩(wěn)定,傳輸效率較高.
本文的芯片測試軟件平臺的測試對象是在以海思Hi3798M V200高性能芯片為主處理器的基礎(chǔ)上封裝完成的自主可控SiP芯片功能測試板卡,該板卡以海思Hi3798M V200芯片為主體完成硬件設(shè)計,主要包括電源模塊、時鐘模塊、存儲器模塊以及接口模塊等.該芯片測試板卡組成框圖如圖1所示.
圖1 SiP芯片功能測試板卡組成示意圖 Fig.1 Composition diagram of SiP chip function test board
芯片測試平臺由3部分組成:上位機(jī)人機(jī)交互軟件層、信息數(shù)據(jù)傳輸加密層以及嵌入式系統(tǒng)測試執(zhí)行層.上位機(jī)人機(jī)交互軟件層采用C#語言編寫人機(jī)交互界面[7-8];底層嵌入式系統(tǒng)測試執(zhí)行層使用Linux系統(tǒng)作為操作系統(tǒng);中間信息數(shù)據(jù)傳輸加密層進(jìn)行芯片測試指令以及芯片數(shù)據(jù)信息的加密傳輸,保障芯片測試軟件平臺能夠進(jìn)行安全有效的測試.本設(shè)計將底層嵌入式系統(tǒng)測試執(zhí)行層與上位機(jī)人機(jī)交互軟件層分開,實現(xiàn)了遠(yuǎn)程控制;上位機(jī)人機(jī)交互軟件運(yùn)行在Windows10 Visual Studio 2015中,底層嵌入式測試系統(tǒng)運(yùn)行于被測芯片測試功能板卡中;將上位機(jī)人機(jī)交互軟件設(shè)置為服務(wù)器端,嵌入式測試系統(tǒng)設(shè)置為客戶端,服務(wù)器端下發(fā)加密測試指令,客戶端執(zhí)行測試的過程,并將測試完成經(jīng)過加密的測試數(shù)據(jù)信息傳輸?shù)椒?wù)器端進(jìn)行解密和解析,對結(jié)果進(jìn)行顯示保存.整個測試過程可以實時反饋芯片測試的狀態(tài)信息,完成測試任務(wù),滿足測試人員的要求.芯片測試軟件平臺的整體通信架構(gòu)圖如圖2所示.
圖2 芯片測試軟件平臺通信架構(gòu) Fig.2 Communication architecture of chip test software platform
在開展芯片測試時,SSL/TLS協(xié)議負(fù)責(zé)服務(wù)器和客戶端的數(shù)據(jù)傳輸,在指令數(shù)據(jù)傳輸和測試信息數(shù)據(jù)傳輸前完成信息加密;然后將信息進(jìn)行打包,在收到打包信息后進(jìn)行解密,解析包文件,執(zhí)行測試和測試信息的反饋.通過線程池來進(jìn)行線程的管理,實現(xiàn)一個服務(wù)器可以對多個客戶端的連接,大大提高了芯片測試平臺的效率,芯片測試軟件平臺工作流程圖如圖3所示.
圖3 芯片測試平臺工作流程圖 Fig.3 Workflow diagram for chip test platform
測試平臺的主要測試步驟如下:
(1)芯片測試人員登錄上位機(jī)芯片測試平臺界面,進(jìn)行服務(wù)器登錄,登錄成功后進(jìn)行服務(wù)器初始化,等待測試系統(tǒng)客戶端的連接.如果有客戶端請求連接,經(jīng)過驗證通過后接受客戶端的請求,連接成功.
(2)選中需要測試的測試項,將指令信息采用OpenSSL加密傳輸至客戶端.客戶端進(jìn)行指令的解析,執(zhí)行測試,獲取到芯片的測試數(shù)據(jù)后將測試數(shù)據(jù)進(jìn)行加密傳輸至服務(wù)器端;服務(wù)器端進(jìn)行解密操作,執(zhí)行數(shù)據(jù)的解析,同時對數(shù)據(jù)的有效性進(jìn)行判斷,在上位機(jī)芯片測試軟件界面顯示測試的結(jié)果信息.
安全套接字層(SSL)協(xié)議[9]最初是網(wǎng)景(Netscape)公司設(shè)計的在萬維網(wǎng)上獲得廣泛應(yīng)用的安全傳輸協(xié)議.在1999年,因特網(wǎng)工程任務(wù)組(IETF)設(shè)計實現(xiàn)將SSL進(jìn)行標(biāo)準(zhǔn)化(RFC2246)操作,在SSL協(xié)議的基礎(chǔ)上發(fā)布了傳輸層安全(TLS)協(xié)議[10].目前,SSL/TLS協(xié)議已經(jīng)成為互聯(lián)網(wǎng)上被廣泛使用的一種安全協(xié)議[11].
SSL協(xié)議[12-13]建立在可靠連接(如TCP協(xié)議)之上,是一個能夠防止出現(xiàn)偷聽、篡改和消息偽造等安全問題的協(xié)議.它采用一種分層協(xié)議,服務(wù)器和客戶端建立安全的連接,將服務(wù)器傳輸下來的數(shù)據(jù)進(jìn)行分片、壓縮、計算報文認(rèn)證碼(MAC)、加密,之后將數(shù)據(jù)發(fā)送至客戶端;客戶端在收到數(shù)據(jù)后,對信息數(shù)據(jù)進(jìn)行解密、驗證、解壓、重組,完成一次對于信息加密傳輸?shù)耐ㄐ胚^程[12].
在IOS七層網(wǎng)絡(luò)模型中,SSL/TLS協(xié)議處于傳輸層和會話層之間;在TCP/IP網(wǎng)絡(luò)模型中,SSL/TLS協(xié)議位于傳輸層和應(yīng)用層之間[14].因此,SSL/TLS協(xié)議將建立一種安全可靠傳輸?shù)倪B接,能夠防止竊聽、篡改和消息偽造,保證信息通信的有效性和可用性.
SSL/TLS協(xié)議為通信的雙方建立一條安全的通道,實現(xiàn)數(shù)據(jù)的機(jī)密性傳輸.SSL/TLS協(xié)議分成記錄層和協(xié)議高層兩部分,記錄層指SSL記錄層協(xié)議,協(xié)議高層由4部分組成,分別是SSL握手協(xié)議、SSL密碼規(guī)范變更協(xié)議、SSL報警協(xié)議、SSL應(yīng)用數(shù)據(jù)協(xié) 議[13].SSL記錄層協(xié)議設(shè)計在TCP協(xié)議之上,可以封裝各種高層的應(yīng)用協(xié)議并為高層協(xié)議提供一些基本的安全服務(wù),而協(xié)議高層則用于實現(xiàn)管理SSL的通信.
一個SSL記錄由兩部分構(gòu)成,包括記錄頭數(shù)據(jù)和非零長度數(shù)據(jù).記錄頭用于指示記錄數(shù)據(jù)的類型和長度,為3字節(jié)或者4字節(jié).3字節(jié)記錄頭的最大記錄長度為32767字節(jié),4字節(jié)記錄頭的最大記錄長度為16383字節(jié)[13].握手協(xié)議、密鑰規(guī)范變更協(xié)議、報警協(xié)議報文需要放在一個SSL記錄層的記錄里,應(yīng)用數(shù)據(jù)協(xié)議報文可以允許占用多個 SSL 記錄層來完成對數(shù)據(jù)的傳送.
SSL握手協(xié)議是SSL/TLS協(xié)議中最重要的一個協(xié)議,該協(xié)議用于實現(xiàn)在SSL/TLS客戶端和SSL/TLS服務(wù)器端之間鑒別雙方的身份,協(xié)商加密算法和密鑰的參數(shù),建立一條安全的通信通道[15].SSL握手協(xié)議的類型包括:Client_Hello、Server_Hello、Certification、Server_Key_Exchange、Certification_ Request、Server_Hello_Done、Certification_Verity、Client_Key_Exchange、Finished.
整個握手過程分為4個階段:
(1)客戶端發(fā)起一個請求發(fā)送給服務(wù)器建立一個安全連接;
(2)服務(wù)器進(jìn)行身份鑒別以及對服務(wù)器端的密鑰進(jìn)行交換;
(3)客戶端進(jìn)行身份鑒別以及對客戶端的密鑰進(jìn)行交換;
(4)連接完成.
當(dāng)客戶端和服務(wù)器端第一次進(jìn)行通信時,握手協(xié)議實現(xiàn)數(shù)據(jù)在傳輸過程中的驗證,商定服務(wù)器端和客戶端使用的加密算法,然后采用加密技術(shù)產(chǎn)生共享加密信息或者雙方報告錯誤,將數(shù)據(jù)進(jìn)行保護(hù),完成數(shù)據(jù)傳輸.
SSL密碼規(guī)范變更協(xié)議主要包含一條消息,即Change cipher spec.當(dāng)服務(wù)器端和客戶端協(xié)商新的密碼規(guī)范時,該消息用于通知對方立即開始生效,標(biāo)志著隨后的通信雙方交換的是經(jīng)過加密的密文.
SSL報警協(xié)議為服務(wù)器端和客戶端通信提供的報警信息有錯誤、嚴(yán)重、致命3種類型;只要有一方發(fā)生異常,錯誤方就會給對方發(fā)送一條報警信息.
在SSL協(xié)議中,設(shè)計采用了很多手段去保護(hù)數(shù)據(jù)(如對稱密碼、公鑰密碼、證書、完成行校驗等),從而完成對數(shù)據(jù)的安全傳輸.而OpenSSL是一套開源的密碼學(xué)工具包,很好地實現(xiàn)了SSL協(xié)議的SSLv2和SSLv3,并且支持SSL協(xié)議的大部分算法協(xié)議[5],能夠提供豐富的應(yīng)用程序用來進(jìn)行開發(fā)測試,執(zhí)行數(shù)據(jù)的加密功能,它能夠很好地實現(xiàn)在嵌入式環(huán)境下的應(yīng)用,具有良好的可移植性和可裁剪性.在本設(shè)計中通過使用OpenSSL完成對芯片測試平臺系統(tǒng)上位機(jī)人機(jī)交互軟件層和嵌入式系統(tǒng)測試執(zhí)行層之間的信息數(shù)據(jù)傳輸加密,以保證數(shù)據(jù)傳輸?shù)陌踩?
3.1.1 OpenSSL加密傳輸模型
傳統(tǒng)的芯片測試信息傳輸系統(tǒng)不能完成信息的加密傳輸,其在客戶端完成對socket的創(chuàng)建,利用connect()進(jìn)行服務(wù)器的連接,recv()/send()接收/發(fā)送數(shù)據(jù)以及close()關(guān)閉連接的功能.服務(wù)器端完成socket套接字的創(chuàng)建,IP地址的綁定,進(jìn)行端口的監(jiān)聽;然后等待客戶端的請求連接,在連接成功后,進(jìn)行測試數(shù)據(jù)的接收/發(fā)送;最后在數(shù)據(jù)傳輸完成后,結(jié)束連接.
本設(shè)計在傳統(tǒng)芯片測試傳輸系統(tǒng)的基礎(chǔ)上,加入OpenSSL加密傳輸協(xié)議,使測試數(shù)據(jù)的傳輸有了安全保障,在芯片測試數(shù)據(jù)傳輸?shù)陌踩陨嫌辛司薮蟮母倪M(jìn),能夠有效防止數(shù)據(jù)在傳輸過程中被竊取和篡改,具有良好的應(yīng)用性,系統(tǒng)整體框架如圖4所示.
圖4 OpenSSL加密傳輸系統(tǒng)整體框架 Fig.4 Overall block diagram of OpenSSL encrypted transmission system
3.1.2 OpenSSL客戶端加密設(shè)計
在OpenSSL客戶端加密設(shè)計時,在原有TCP網(wǎng)絡(luò)通信協(xié)議的基礎(chǔ)上,增加了SSL庫的初始化并載入了SSL算法以及錯誤信息.在socket創(chuàng)建完成后,與服務(wù)器端進(jìn)行連接,創(chuàng)建出SSL會話環(huán)境SSL_CTX,并將創(chuàng)建好的socket加入SSL之中,此時便可以建立SSL通信,并且利用SSL進(jìn)行芯片測試數(shù)據(jù)的收發(fā)操作;在芯片測試平臺測試完成后,進(jìn)行SSL的釋放,當(dāng)測試平臺測試完成后系統(tǒng)結(jié)束連接,釋放SSL_CTX,客戶端的OpenSSL加密設(shè)計過程如圖5所示.
圖5 OpenSSL客戶端加密設(shè)計 Fig.5 OpenSSL client encryption design
3.1.3 OpenSSL服務(wù)器端加密設(shè)計
OpenSSL服務(wù)器端加密設(shè)計采用了數(shù)字證書和密鑰的方法,在芯片測試的過程中能夠確保數(shù)據(jù)傳輸?shù)陌踩?在通信的過程中,SSL庫進(jìn)行初始化,載入SSL算法和SSL錯誤信息.建立本次連接所需要使用的協(xié)議,申請SSL的會話環(huán)境SSL_CTX,載入用戶的數(shù)字證書,載入私鑰并檢查正確性;創(chuàng)建出所需要的socket套接字,開啟監(jiān)聽,等待客戶端發(fā)送連接請求.基于SSL_CTX產(chǎn)生新的SSL,將連接成功的用戶加入新的SSL中,建立SSL連接,完成SSL的握手操作;接收芯片的測試數(shù)據(jù),進(jìn)行保存和結(jié)果的判斷顯示.最后,關(guān)閉SSL連接,釋放SSL連接;關(guān)閉 socket套接字,關(guān)閉監(jiān)聽 socket,釋放SSL_CTX.服務(wù)器端的OpenSSL加密設(shè)計的過程如圖6所示.
圖6 OpenSSL服務(wù)器端加密設(shè)計 Fig.6 OpenSSL server encryption design
3.2.1 工作原理
在操作系統(tǒng)中,進(jìn)程是操作系統(tǒng)資源分配和調(diào)度的最小單位;而線程是CPU調(diào)度和分配的最小單位,一個優(yōu)秀的服務(wù)器端可以針對多個客戶端進(jìn)行連接操作,進(jìn)行信息數(shù)據(jù)的交互,提升系統(tǒng)的工作效率.因此,本設(shè)計中加入了一種線程池優(yōu)化設(shè)計的技術(shù),采用一種多線程任務(wù)的開展形式,提前創(chuàng)建好具有一定數(shù)目的線程.當(dāng)需要新的客戶端接入的時候,服務(wù)器端可以從提前創(chuàng)建好的線程池中拿出一個當(dāng)前沒有連接任務(wù)的線程來處理此任務(wù);當(dāng)執(zhí)行測試任務(wù)完成后,此線程便放回到線程池中,等待新的客戶端連接,這樣可以保證多個客戶端均可連接服務(wù)器端,減少工作的時間.
3.2.2 優(yōu)點(diǎn)
(1)節(jié)約進(jìn)程資源.線程池中所設(shè)計的多線程可以實現(xiàn)進(jìn)程資源的共享,減少了內(nèi)存以及資源的分配,在創(chuàng)建過程中,進(jìn)行上下文線程轉(zhuǎn)換的時候可有效節(jié)約資源.
(2)降低成本.打破傳統(tǒng)芯片測試平臺一對一測試的瓶頸,采用一對多進(jìn)行芯片測試,降低了測試的人員成本和硬件成本.
(3)提高工作效率.上位機(jī)芯片測試軟件同時可以針對多塊芯片開展測試,能夠有效幫助測試人員減少芯片測試工作的時間,大幅度地提高芯片測試平臺的自動化控制水平以及人機(jī)交互能力,可以直觀地發(fā)現(xiàn)芯片存在的問題,順利完成測試任務(wù).
本設(shè)計測試對象是基于海思Hi3798M V200高性能芯片為主處理器的SiP芯片功能測試板卡,上位機(jī)服務(wù)器軟件登錄成功后進(jìn)入芯片測試平臺界面,如圖7所示.為此平臺設(shè)計了3種測試模式,分別為單次測試、多次測試、自動測試,可以對芯片的11項功能開展測試驗證[16].單次測試結(jié)果如圖8所示.
圖7 芯片測試平臺界面 Fig.7 Chip test platform interface
圖8 芯片測試平臺單次測試結(jié)果 Fig.8 Single test results of chip test platform
在嵌入式Linux測試系統(tǒng)中完成交叉編譯環(huán)境的創(chuàng)建、操作系統(tǒng)和驅(qū)動的移植、OpenSSL的移植,指定IP和端口號連接到芯片測試平臺開展測試任 務(wù)[17].實驗結(jié)果表明,該平臺能夠很好地完成測試數(shù)據(jù)信息的加密傳輸,防止了數(shù)據(jù)被泄露和被篡改;同時,設(shè)計了一種線程池的方法,通過線程池來管理線程,提高了芯片測試的效率.
SSL/TLS協(xié)議建立在TCP傳輸層之上,在數(shù)據(jù)傳輸前已經(jīng)完成了SSL的建立,保證了在數(shù)據(jù)傳輸?shù)倪^程中對數(shù)據(jù)的加密.
在客戶端對服務(wù)器端的安全認(rèn)證過程中,完成對身份的驗證,保證是芯片測試人員的操作.
上位機(jī)芯片測試軟件服務(wù)器端對芯片測試結(jié)果 進(jìn)行分析認(rèn)證,在保證安全性的前提下,能夠很好地測試驗證芯片的各項功能,提高了芯片測試的效率,具有較高的可靠性.
通過測試發(fā)現(xiàn),整個芯片測試軟件平臺的功能可以正常運(yùn)行,顯示出了良好的測試性能.同時,通過采用SSL/TLS協(xié)議對上位機(jī)交互界面和底層嵌入式Linux測試系統(tǒng)的數(shù)據(jù)傳輸進(jìn)行有效的認(rèn)證和加密操作,保證了非法用戶無法解讀或者篡改數(shù)據(jù),具有很高的安全性.
本文設(shè)計了一種芯片測試軟件平臺,對以海思Hi3798M V200高性能芯片為主處理器的SiP芯片功能測試板卡進(jìn)行測試,對芯片測試過程中數(shù)據(jù)的安全有效傳輸進(jìn)行研究,使用SSL/TLS協(xié)議設(shè)計了數(shù)據(jù)傳輸?shù)募用芰鞒?,并且移植開源OpenSSL實現(xiàn)加密過程,同時設(shè)計一種線程池,保證了多個客戶端的連接.該芯片測試軟件平臺極大地保護(hù)了數(shù)據(jù)安全和信息安全,使測試人員能夠準(zhǔn)確地把握芯片的狀態(tài)信息,加速了國內(nèi)芯片測試平臺的良好發(fā)展.