摘 要 安全芯片的功能隱患可能造成重大事故。安全芯片的內部功能模塊很多,運行過程中是多個模塊并行隨機工作,采用順序執(zhí)行方式很難發(fā)現(xiàn)芯片的潛在問題。因此,提出一種多模塊隨機組合驗證方法,在多款芯片上的驗證結果表明:所提方法能夠高效率、高概率地發(fā)現(xiàn)芯片的多模塊組合問題,提高了發(fā)現(xiàn)和解決安全芯片問題的效率。
關鍵詞 安全芯片 多模塊 隨機組合 密鑰 加密 解密 可編程邏輯陣列
中圖分類號 TN06"" 文獻標志碼 A"" 文章編號 1000 3932(2025)01 0131 07
隨著網(wǎng)絡的發(fā)展,數(shù)據(jù)的傳輸與存儲更加頻繁。在信息安全領域,安全芯片成為了一種關鍵技術。安全芯片是指在硬件層面上實現(xiàn)加密、安全等功能的芯片。安全芯片可以有效保護信息的安全性,提高安全技術的可靠度[1]。安全芯片的原理是通過密鑰的生成和使用實現(xiàn)加密和解密操作。由于加密和解密的密鑰是由芯片本身生成,且密鑰操作過程不會外泄,攻破安全芯片的難度極大,因而保證了數(shù)據(jù)的安全性。同時,安全芯片采用硬件安全設計方案,難以破解,以更安全的物理方式進行加密來抵抗攻擊。硬件安全芯片大多應用于金融、交通、通信、醫(yī)療、軍事等領域。隨著車聯(lián)網(wǎng)、物聯(lián)網(wǎng)、智能家居等新業(yè)務的逐漸擴大,安全芯片的需求量也隨之增多[2,3]。由于安全芯片應用廣泛,場景復雜,如果芯片存在功能隱患未被發(fā)現(xiàn)和解決,影響很大甚至會造成財產(chǎn)損失或危及生命。
由于安全芯片的算法模塊和外設模塊較多,應用場景也很復雜,單一發(fā)送命令考核安全芯片的驗證方法存在很多局限性,難以發(fā)現(xiàn)芯片的潛在問題。目前,各安全芯片公司均采用PC機發(fā)送單一命令調用安全模塊驗證芯片的安全功能和穩(wěn)定性的方法。安全模塊運行過程中幾乎不會被任何外部事件打斷運行,驗證結果只要正確即可。在整個驗證過程中與其他主控芯片同時通信驗證的場景也較少,很難覆蓋所有應用場景,因此設計一種高效且貼近應用場景的驗證方法十分必要。
1 安全芯片的傳統(tǒng)評估方法
安全芯片的傳統(tǒng)評估方法有3種:
a. 方法1,PC機通過單一接口發(fā)送多條命令;
b. 方法2,安全芯片內部模塊隨機運行;
c. 方法3,主控芯片[4]透傳命令且提供外部激勵。
1.1 方法1
PC機通過單一接口發(fā)送多條命令的原理如圖1所示。這種方式是在PC機上開發(fā)驗證腳本,通過USB接口轉換成安全芯片可對接的接口(SPI、UART、I2C等)[5],驗證腳本發(fā)送命令給安全芯片,安全芯片逐條接收命令執(zhí)行并給出響應,PC機接收響應并進行判斷,如果正確則繼續(xù)執(zhí)行,否則停止驗證。
方法1的評估步驟如下:
a. PC機控制安全芯片上電,發(fā)送命令獲取芯片隨機數(shù),并檢驗隨機數(shù)的正確性;
b. PC機發(fā)送命令驗證,用PC機的軟件算法驗證各算法模塊的正確性;
c. PC機發(fā)送命令驗證外設模塊功能的正確性;
d. PC機判斷是否達到驗證時間,若未達到驗證時間則重復步驟b、c,反之驗證停止。
該方法的優(yōu)點是簡單易實施,多個算法和外設模塊都可以驗證。但所有命令都順序執(zhí)行,雖然遍歷次數(shù)較多,一旦開始運行各模塊都相互獨立運行,相互之間沒有交集,做不到多個模塊組合運行,難以覆蓋使用較為復雜的場景,尤其是外設中斷場景的驗證很難覆蓋到。因此該方法的驗證效果較差。
1.2 方法2
安全芯片內部模塊隨機運行的原理如圖2所示。這種方式與方法1類似,PC機通過USB接口轉換成安全芯片可對接的接口,驗證腳本發(fā)送命令給安全芯片執(zhí)行;區(qū)別是PC機發(fā)送驗證指令后,安全芯片內部產(chǎn)生隨機數(shù),使用隨機數(shù)對內部模塊隨機順序調用,每次收到命令后,內部模塊的調用順序先后不同,內部對各個模塊運算結果進行校對,最后給出命令響應。PC機接收響應并判斷是否正確,如果正確則繼續(xù)執(zhí)行,反之停止驗證。
相對于方法1,方法2的腳本開發(fā)簡單,雖然達到了隨機調用效果,但其缺點也突出:內部隨機管理,嵌入式軟件開發(fā)難度增加;內部各個模塊順序執(zhí)行,外設與算法模塊間無交互;一旦芯片內部隨機源出問題,而模塊調用順序不變,外部是無法發(fā)現(xiàn)的;一旦芯片內部運行當機卡死,問題追溯困難。
1.3 方法3
主控芯片透傳命令且提供外部激勵的原理如圖3所示。
方法3是在PC機和安全芯片間使用主控芯片橋接(SOC、MCU或FPGA)[6]芯片,主控芯片發(fā)送命令給安全芯片,調用安全芯片的算法模塊,同時給安全芯片的算法模塊施加激勵。相比于方法1、2,方法3能夠將外部激勵和內部模塊有效組合起來,做到了外部激勵和內部模塊交互,但是也存在不足:模塊調用順序隨機性難以滿足;外部激勵和內部模塊的工作都由主控芯片產(chǎn)生,難以做到并行;當發(fā)現(xiàn)錯誤時難以定位問題。
方法1采用順序方式,并沒有隨機調用各個模塊,因此很難貼近實際應用場景。方法2在芯片內部隨機調用模塊,如果芯片隨機源產(chǎn)生問題,隨機性無法保證,芯片內部的軟件開發(fā)復雜度較大,問題定位困難,同時未考慮外設中斷。方法3的主控芯片未必能產(chǎn)生隨機數(shù)去隨機調用安全芯片的各個模塊,也不能產(chǎn)生任意的外部激勵,因此3種方法均存在驗證不全面的問題。綜上所述,目前的3種評估方法存在的共性問題是:模塊順序運行,隨機調用效果差;外設激勵與模塊隨機并行效果差;難以貼近芯片實際應用場景??梢姡壳霸O計一種高效率的安全芯片多模塊組合驗證方法迫在眉睫。
2 多模塊組合驗證方案設計
根據(jù)以上分析可知,要解決安全芯片的多模塊組合驗證存在的問題,驗證方法需要覆蓋隨機性、交互性和全面性,每個模塊的功能需要隨機調用,每個模塊的安全功能需要覆蓋全面,模塊運行之間存在交互性,這樣才能覆蓋應用場景。
首先了解安全芯片的主要功能模塊。安全芯片主要涵蓋隨機數(shù)模塊、算法模塊、中斷模塊及外設模塊等[7,8](表1),這些模塊相互獨立,將它們隨機調用起來需要使用隨機數(shù)。由表1可知,安全芯片可以產(chǎn)生真隨機數(shù)[9],PC機端口也可以產(chǎn)生隨機數(shù)[10],如果將兩個隨機數(shù)利用起來隨機調用算法模塊和外設模塊,同時外部激勵和內部中斷也隨機產(chǎn)生,就能保證安全芯片的內部模塊和外部激勵達到很好的交互性。
綜上可知,可以由PC機和芯片分別產(chǎn)生兩組隨機數(shù),PC機產(chǎn)生的隨機數(shù)用來決定每個模塊運行的順序,芯片產(chǎn)生的隨機數(shù)用來決定每個模塊運行時的次數(shù),外部產(chǎn)生的隨機數(shù)和內部產(chǎn)生的隨機數(shù)可以組成隨機組合,這樣芯片每次在運行時,內部模塊和外部激勵就成了隨機組合,能夠很容易發(fā)現(xiàn)問題并貼近應用場景。同時,芯片可以使用串口(若無則模擬串口)將內部運行過程打印出來,實現(xiàn)隨時觀測芯片運行狀況的目標。
搭建的驗證系統(tǒng)如圖4所示。該系統(tǒng)的工作原理是,PC1通過USB接口連接主控芯片,將命令透傳給安全芯片,同時主控芯片也可施加外部激勵給安全芯片;PC1通過USB接口控制激勵設備1,產(chǎn)生隨機激勵給安全芯片;PC2通過USB接口控制激勵設備2產(chǎn)生隨機激勵給安全芯片;安全芯片通過串口連接PC2,將芯片運行狀態(tài)輸出給PC2,外部激勵設備數(shù)目可根據(jù)應用場景添加。
3 多模塊隨機組合驗證流程設計
根據(jù)圖4,結合整個安全芯片功能模塊驗證項梳理出的工作流程如圖5、6所示。
由于各廠商的安全芯片功能不同,本研究以其中某安全芯片舉例說明:該芯片支持SHA 1、SHA 256、MD5、DES、TDES、RSA、ECC、CRC等算法,具有GPIO接口、RNG隨機數(shù)、看門狗定時器(WDT)、定時器(Timer)、計數(shù)器(Systick)等模塊。在驗證工作開始前先初始化,該芯片共有SHA 1、SHA 256、MD5、DES、RSA、TDES、ECC、CRC共N(N=8)個算法,可以建立一個長度為N(N=8)的數(shù)組A[N],初始化A[N]中數(shù)據(jù)全部為0,即A[N]={0,0,0,0,0,0,0,0};將N個安全模塊分別編號為:
SHA 1:"" (1)
SHA 256:" (2)
MD5:""""" (3)
DES:""" (4)
RSA:""" (5)
TDES:""" (6)
ECC:""" (7)
CRC:"""""""" (8)
…:"""""" (N)
PC1初始化完成后,驗證工作開始,步驟如下:
a. 初始化狀態(tài),PC1發(fā)送命令關閉安全芯片內部和外部中斷,先關閉Timer、Systick、WDT和外部GPIO觸發(fā)中斷,同時關閉激勵設備1。
b. 產(chǎn)生安全模塊調用順序數(shù)組數(shù)值,PC1循環(huán)產(chǎn)生一組數(shù)值各不相同的隨機數(shù)B遍歷1~N,并將其賦值給數(shù)組A[N],當N=8時產(chǎn)生的數(shù)組A[8]={7,4,1,2,8,3,6,5}。要求數(shù)組內的數(shù)據(jù)遍歷1~8,且在每次給數(shù)組賦值均需要給數(shù)組A[N]賦一次值,并保證后續(xù)數(shù)組順序盡量不同,如第2次給數(shù)組賦值時A[8]={6,3,5,7,8,1,2,4}。
c. 外部中斷初始化隨機數(shù)和安全模塊運行隨機數(shù)生成。PC1調用安全芯片的RNG模塊,產(chǎn)生一組隨機數(shù)C,利用該隨機數(shù)初始化Timer、WDT、Systick初始化配置以及外部GPIO觸發(fā)中斷的初始化配置;同時從C中取出部分數(shù)據(jù)建立數(shù)組D[N],D[N]確定了A[N]中每個安全模塊調用時的次數(shù);從C中取出部分數(shù)據(jù)建立數(shù)組E[N],E[N]確定了每個安全模塊的配置使能,同時初始化配置激勵設備1。
d. 啟動外部中斷和安全功能配置。PC1發(fā)送命令啟動Timer、WDT、Systick、外部GPIO觸發(fā)中斷,并根據(jù)E[N]配置每個安全模塊功能使能,同時啟動激勵設備1產(chǎn)生激勵。
e. 調用和執(zhí)行安全模塊。建立變量X,依次按照數(shù)組A[N]和D[N]的數(shù)值來決定安全模塊的調用順序和調用次數(shù),直至X遍歷1~N,如A[8]={7,4,1,2,8,3,6,5},D[8]={8,10,3,4,5,9,5,7},根據(jù)之前的編號,當X=1時A[1]=7、D[1]=8表明調用ECC安全模塊運行8次;當X=2時A[2]=4、
D[2]=10表明調用DES安全模塊運行10次;…;當X=8時A[8]=5、D[8]=7表明調用RSA安全模塊運行7次。在調用安全模塊運行過程中,Timer、WDT、Systick安全模塊所使用的數(shù)據(jù)均來自C;如果安全模塊運行過程中出錯就停止驗證;PC1會使用隨機數(shù)控制激勵設備1產(chǎn)生隨機激勵,同時安全芯片通過串口向PC2輸出打印測試日志,PC2檢測到串口有數(shù)據(jù)時,生成隨機數(shù)控制激勵設備2產(chǎn)生激勵提供給安全芯片,這些隨機激勵會觸發(fā)安全芯片產(chǎn)生中斷并給予外部激勵響應。
f. 當X遍歷1~N后,若達到驗證時間或運行次數(shù)則停止驗證,否則回到步驟a繼續(xù)驗證。
上述步驟在執(zhí)行過程中安全芯片功能模塊發(fā)生異常或者發(fā)生外部激勵設備報警,則實驗結束。
4 驗證實驗與效果
4.1 硬件
根據(jù)圖4搭建如圖7所示的芯片驗證實驗硬件系統(tǒng),STM32F446作為主控芯片,脈沖發(fā)生器和FPGA作為激勵設備。其中,PC1通過USB接口和STM32F446連接透傳命令給安全芯片,同時PC1控制脈沖發(fā)生器產(chǎn)生激勵源[11],PC2控制FPGA產(chǎn)生激勵給安全芯片[12]。整個過程中安全芯片內部模塊需要響應STM32F446傳遞過來的命令,同時對激勵設備1和激勵設備2產(chǎn)生響應。
圖8是驗證過程中打印的日志,右邊窗口顯示W(wǎng)表示W(wǎng)DT中斷,S表示Systick中斷,T表示Timer中斷,I1表示外部中斷1,I2表示外部中斷2。左邊是安全芯片運行過程中算法模塊的運行狀態(tài)。
4.2 實驗結果與對比
圖7所示的驗證環(huán)境已在射頻識別芯片檢測技術北京市重點實驗室進行了系統(tǒng)級驗證并取得了良好的效果。對兩款安全芯片進行驗證,均發(fā)現(xiàn)應用上的問題。表2匯總了4種方法下發(fā)現(xiàn)芯片問題的數(shù)目,這些問題均是在對芯片所有模塊單獨驗證后再使用筆者方法驗證后發(fā)現(xiàn)的。這些問題在模塊單獨運行時很難發(fā)現(xiàn),只有在多模塊組合時才能顯現(xiàn)出來,一旦這些問題遺漏到終端客戶使用時可能會造成重大損失。
表2中,Chip X的問題是某一模塊的寄存器標志位A為讀清零,A和另一個標志位B在同一寄存器中。在模塊正常運行過程中,如果該模塊一直在被訪問,A標志位可以被讀取到。但讀取過程中被中斷去讀B時,該標志位因為讀B會被清零,導致A標志丟失從而使數(shù)據(jù)傳輸失敗。對Chip X,方法2和筆者方法都復現(xiàn)了該問題,但筆者方法復現(xiàn)該問題場景的概率高達90%,而方法2的復現(xiàn)概率僅10%。方法1由于順序執(zhí)行無法復現(xiàn),方法3則因外部激勵單一而難以復現(xiàn)(表3)。
在Chip Y芯片發(fā)現(xiàn)了兩個問題:
a. 某一安全功能被打開時,如果在FIFO傳輸數(shù)據(jù)的某時刻被外部中斷打斷,就會導致數(shù)據(jù)傳輸失敗。僅固定中斷并不能觸發(fā)該問題,需要隨機中斷才能觸發(fā)該問題,僅有方法2和筆者方法發(fā)現(xiàn)了該問題。
b. 芯片系統(tǒng)時鐘在分頻切換時受外部中斷影響出現(xiàn)死機現(xiàn)象,僅方法3和筆者方法發(fā)現(xiàn)了問題。
實驗后總結出筆者方法與傳統(tǒng)3種方法的效果對比,詳見表4。
綜上所述,筆者提出的多模塊隨機組合驗證方法與現(xiàn)有方法相比具有以下優(yōu)點:
a. 全面性。能夠覆蓋安全芯片的多種應用場景,安全功能隨機關閉和打開可以全面驗證。
b. 隨機性。各模塊能夠隨機先后組合調用。
c. 交互性。內外部中斷和各功能模塊都能隨機交互運行。
d. 應用性。貼近安全芯片的實際應用場景。
5 結束語
筆者利用PC機產(chǎn)生隨機數(shù)和安全芯片產(chǎn)生隨機數(shù)的功能,設計并實現(xiàn)了一套多模塊隨機組合驗證方法,根據(jù)目前的結果分析,筆者方法相對于其他3種方法,可以對安全芯片進行全面的功能驗證,能夠高效率和高概率地發(fā)現(xiàn)芯片的多模塊組合問題,彌補了現(xiàn)有方法存在的不足,提高了發(fā)現(xiàn)和解決安全芯片問題的效率。
但筆者方法還存在兩個問題:一是流程復雜,軟件開發(fā)有一定難度,需花費時間調試軟件;二是外部激勵產(chǎn)生和內部模塊運轉時間尚未說明,需要軟件開發(fā)人員根據(jù)各安全芯片情況確定。
參 考 文 獻
[1] 汪釗旭,鄒雪城,江鴻,等.一塊用于V2X通信的國密安全芯片設計與驗證[J].汽車科技,2023(3):65-70.
[2] CHEN F,LUO D M,LI J Q.Arm PSA Certified IoT Chip Security:A Case Study[J].Tsinghua Science and Technology,2023,28(2):244-257.
[3] 李玉凱,白焰,高喜奎,等.智能分析儀表PROFIBUS DP接口的研發(fā)[J].化工自動化及儀表,2011,38(1):56-64.
[4] 閆麗琴,馮建呈,王占選,等.國產(chǎn)超大規(guī)模集成電路測試系統(tǒng)綜合試驗驗證方法[J].計算機測量與控制,2022,30(8):277-282.
[5] 沈志春,夏玥,農(nóng)凱政.基于物聯(lián)網(wǎng)高安全MCU芯片的回樣驗證[J].數(shù)字通信世界,2022(8):75-83.
[6] 楊帆,王哲.一種多種接口時序兼容性驗證設計方法[J].化工自動化及儀表,2023,50(3):392-395.
[7] 劉偉.SoC的安全存儲器模塊分析與設計[D].合肥:合肥工業(yè)大學,2009.
[8] 黃曉咪.基于ARM架構的安全加密專用SOC的研究與實現(xiàn)[D].桂林:桂林電子科技大學,2022.
[9] NAGATA M,MIURA N,MIKI T.Analog Techniques for Digital Security:My Gratitudes to Visionary Discussions[J].IEEE Solid state Circuits Magazine,2023,15(1):25-31.
[10] 趙儉.基于USB接口的真隨機數(shù)生成平臺設計[J].微處理機,2016,37(6):76-84.
[11] 邢國鵬.高性能ADC/DAC性能測試系統(tǒng)研究與實現(xiàn)[D].杭州:中國計量大學,2021.
[12] 秦友倫,袁強,劉峰,等.一種全國產(chǎn)化多接口便攜式測試設備[J].兵工自動化,2023,42(2):42-45.
(收稿日期:2024-04-24,修回日期:2024-05-15)
Design and Implementation of Multi module Random Combination Verification Method for Security Chips
DONG Pan, WANG Yan bin, CHEN Wen yong
(Beijing Key Laboratory of RFID Chip Test Technology, CEC Huada Electronic Design Co., Ltd.)
Abstract Considering the fact that the hidden trouble in the security chip may cause some accidents. the security chip has many internal function modules which works randomly in parallel during the operation and it’s difficult for sequential execution to find out chip’s potential problems. In this paper, a multi module random combination verification method was proposed and verified on multiple chips to show that, the proposed method can find out multi module combination problem of the chip with high efficiency and high probability.
Key words security chip, multiple modules, random combination, secret key, encryption, decryption, FPGA