本發(fā)明適用信息安全領(lǐng)域及集成電路領(lǐng)域,針對(duì)密鑰認(rèn)證系統(tǒng)的一種全新的系統(tǒng)。
背景技術(shù):
近些年來,隨著智能卡、射頻識(shí)別標(biāo)簽和傳感器網(wǎng)絡(luò)節(jié)點(diǎn)等物理實(shí)體的廣泛應(yīng)用,如何對(duì)這些物理實(shí)體實(shí)施有效認(rèn)證是確保系統(tǒng)安全的關(guān)鍵因素。然而,由于這類實(shí)體普遍存在計(jì)算能力差、資源有限等問題,傳統(tǒng)基于密碼學(xué)的認(rèn)證方法在應(yīng)用時(shí)存在很大障礙。借鑒當(dāng)前普遍使用的基于人體唯一特征指紋或虹膜對(duì)個(gè)人實(shí)施認(rèn)證的思想,人們提出了基于物理實(shí)體的內(nèi)在物理構(gòu)造來唯一地標(biāo)識(shí)單個(gè)物理實(shí)體,實(shí)現(xiàn)對(duì)物理實(shí)體有效認(rèn)證的方法。這就是人們提出的通過PUF(物理不可克隆函數(shù))集成電路識(shí)別概念。
PUF是指對(duì)一個(gè)物理實(shí)體輸入一個(gè)激勵(lì),利用其不可避免的內(nèi)在物理構(gòu)造的隨機(jī)差異輸出一個(gè)不可預(yù)測(cè)的響應(yīng)這樣一個(gè)物理不可克隆的函數(shù)。PUF最基本的應(yīng)用是利用實(shí)體的唯一標(biāo)識(shí)來實(shí)現(xiàn)認(rèn)證,隨著人們對(duì)PUF的理解和應(yīng)用的不斷深入,PUF又逐漸被應(yīng)用到系統(tǒng)認(rèn)證、密鑰生成等更多的領(lǐng)域,并逐漸成為硬件安全領(lǐng)域研究中的一個(gè)熱門話題。物理不可克隆函數(shù)最主要的優(yōu)勢(shì)在于它能夠提供物理不可克隆的激勵(lì)響應(yīng)行為,具備抵抗物理克隆攻擊的能力。針對(duì)上述存在的問題,利用物理不可克隆函數(shù)的優(yōu)勢(shì),結(jié)合概率論、安全協(xié)議設(shè)計(jì)和數(shù)字電路等相關(guān)理論,對(duì)物理不可克隆函數(shù)進(jìn)行研究與應(yīng)用具有重要的理論意義和實(shí)用價(jià)值。
目前的密鑰認(rèn)證系統(tǒng)大多是將密鑰存儲(chǔ)在客戶機(jī)上,通過加密算法進(jìn)行加密防止被黑客破解密碼,用戶輸入密碼后,客戶機(jī)通過比對(duì)密鑰進(jìn)行認(rèn)證成功與否的判斷,這種方法隨著黑客技術(shù)的進(jìn)步呈現(xiàn)出越來越大的風(fēng)險(xiǎn),再厲害的加密算法有被破解的風(fēng)險(xiǎn)。因此PUF電路的出現(xiàn)極大的提高了密鑰的安全性,使得依靠軟件破解密鑰的做法變得幾乎不可行。
目前PUF電路主要是采用基于延時(shí)電路和環(huán)形振蕩器,都是直接將PUF電路固化在芯片內(nèi)部,通過外部給一定的激勵(lì),得到不同的響應(yīng),通過存儲(chǔ)激勵(lì)和響應(yīng),作為識(shí)別設(shè)備的唯一標(biāo)識(shí)。然后該方法存在很大局限性,會(huì)有如下問題:1、目前大多是采用基于延時(shí)電路和環(huán)形振蕩器的PUF電路,電路原理簡(jiǎn)單,產(chǎn)生的密鑰也相對(duì)簡(jiǎn)單。2、通過解剖芯片,仍然可以發(fā)現(xiàn)電路的原理,攻擊者可以根據(jù)半導(dǎo)體廠商的工藝文件,反向提取出芯片的密鑰,因此該方法仍然存在一定的風(fēng)險(xiǎn)。3、目前的PUF電路對(duì)相同的激勵(lì)得到的響應(yīng)是固定的,長(zhǎng)期下去,密鑰有可能被全部復(fù)制。4、系統(tǒng)簡(jiǎn)單,靈活性差。
專利“一種基于FPGA的微處理器PUF實(shí)現(xiàn)系統(tǒng)”中,其特征在于,包括PUF特性采集模塊和數(shù)據(jù)流生成模塊,其中PUF特性采集模塊包括中央控制單元、時(shí)鐘調(diào)整單元、ALU單元、串口通信單元,數(shù)據(jù)流生成模塊包括判決單元和后處理單元。但存在以下問題:
(1)該專利的基于FPGA的PUF電路設(shè)計(jì)復(fù)雜,資源消耗多。
(2)只用到FPGA,在FPGA上進(jìn)行密鑰認(rèn)證,不安全。
(3)密鑰未進(jìn)行ECC校驗(yàn)。
(4)密鑰不可更新,有被破解的風(fēng)險(xiǎn)。
技術(shù)實(shí)現(xiàn)要素:
發(fā)明目的:本發(fā)明的目的在于針對(duì)現(xiàn)有技術(shù)的不足之處,提供一種應(yīng)用于密碼學(xué)領(lǐng)域的密鑰認(rèn)證系統(tǒng),具有更高的安全性、不可克隆性以及靈活性。
技術(shù)方案:本發(fā)明出了一種基于SoPC的動(dòng)態(tài)可配置密鑰認(rèn)證系統(tǒng),包括SOC模塊、AMBA AHB總線接口模塊、激勵(lì)判斷模塊、ECC編碼模塊以及PUF電路模塊。其中SOC模塊除了從串口接收激勵(lì)輸入外,還負(fù)責(zé)從AHB接口接收FPGA的經(jīng)過ECC編碼的PUF碼,然后進(jìn)行ECC解碼得到對(duì)應(yīng)激勵(lì)的PUF碼,SOC中CPU根據(jù)激勵(lì)經(jīng)過數(shù)據(jù)庫查詢到數(shù)據(jù)庫中的PUF碼,對(duì)比FPGA產(chǎn)生的PUF碼是否一致。AMBA AHB總線接口模塊負(fù)責(zé)CPU和FPGA通信,F(xiàn)PGA上的電路設(shè)計(jì)為基于AHB總線的CPU的從機(jī),該接口將CPU傳送過來的地址和數(shù)據(jù)進(jìn)行寄存,用于FPGA其他模塊。激勵(lì)判斷模塊負(fù)責(zé)進(jìn)行激勵(lì)可用與否的判斷,由于PUF電路只有部分激勵(lì)可用,因此必須要進(jìn)行激勵(lì)可用與否的判斷,若激勵(lì)可用則送到PUF電路模塊,否則不執(zhí)行PUF電路。ECC編碼模塊負(fù)責(zé)將PUF電路產(chǎn)生的PUF碼進(jìn)行ECC編碼,增強(qiáng)糾錯(cuò)能力。PUF電路模塊為FPGA上的核心模塊,該模塊根據(jù)激勵(lì)生成唯一的PUF碼,給到ECC編碼模塊,經(jīng)過編碼后通過AHB總線送給SOC的CPU進(jìn)行下一步處理。
所述密鑰認(rèn)證系統(tǒng)基于完全自主研發(fā)的SoPC芯片,采用龍芯CPU+國(guó)產(chǎn)千萬門級(jí)FPGA,該芯片采用SMIC 65nm工藝流片,并且基于該芯片設(shè)計(jì)了開發(fā)板,以此來驗(yàn)證密鑰認(rèn)證系統(tǒng)的可用性。
所述AMBA AHB總線接口模塊的AHB總線為AMBA 2.0協(xié)議,AHB擔(dān)當(dāng)高性能系統(tǒng)的中樞總線。AHB支持處理器,片上存儲(chǔ)器,片外存儲(chǔ)器以及低功耗外設(shè)宏功能單元之間的有效連接。該設(shè)計(jì)中,AHB的主機(jī)為CPU,從機(jī)為基于FPGA的電路系統(tǒng)。
所訴激勵(lì)判斷模塊,識(shí)別輸入的激勵(lì)序列,只有滿足特定長(zhǎng)度的序列才能被當(dāng)作合法激勵(lì),否則丟棄該次輸入。
所述ECC編碼模塊采用BCH編碼,支持10位碼元糾錯(cuò)2位,該模塊采用BCH編碼IP核實(shí)現(xiàn)。
PUF電路模塊主要由三部分組成,分別為基于仲裁器PUF電路陣列和基于環(huán)形振蕩器PUF陣列以及組合矩陣模塊組成。
所述組合矩陣可以通過SOC對(duì)FPGA動(dòng)態(tài)配置完成,實(shí)現(xiàn)了密碼的可更改性,這一特點(diǎn)是完全原創(chuàng)性的。
本發(fā)明主要提供了一種基于SoPC的動(dòng)態(tài)可配置密鑰認(rèn)證系統(tǒng),認(rèn)證方法流程如下所示:
(1)通過串口線連接計(jì)算機(jī)和開發(fā)板,打開串口調(diào)試助手,開發(fā)板上電,按下板子復(fù)位按鍵,CPU執(zhí)行初始化程序,同時(shí)串口打印出CPU的初始化信息。
(2)等待串口提示輸入激勵(lì)。
(3)輸入10位二進(jìn)制數(shù)據(jù),回車鍵確認(rèn)。
(4)CPU通過APB總線收到激勵(lì)后,串口顯示請(qǐng)等待確認(rèn)。
(5)CPU通過AHB總線向FPGA發(fā)送激勵(lì)寄存地址和激勵(lì)。
(6)FPGA的AHB接口收到激勵(lì)后,將激勵(lì)給到激勵(lì)判斷模塊,激勵(lì)判斷模塊判斷該激勵(lì)可用后給到PUF主電路。
(7)運(yùn)行PUF電路,得到10位PUF原始碼。
(8)PUF原始碼經(jīng)過ECC編碼得到經(jīng)過ECC編碼的PUF碼,隨后FPGA產(chǎn)生中斷,CPU收到中斷請(qǐng)求后,向FPGA讀取經(jīng)過ECC編碼后的PUF碼。
(9)CPU清除中斷標(biāo)志位,軟件解碼經(jīng)過ECC編碼后的PUF碼。
(10)CPU通過虛擬數(shù)據(jù)庫查詢激勵(lì)對(duì)應(yīng)的PUF碼。
(11)比較數(shù)據(jù)庫返回的PUF碼和FPGA產(chǎn)生的PUF碼。
(12)若一致則串口輸出確認(rèn)成功,開始使用開發(fā)板,若失敗則彈出確認(rèn)失敗提示,并且CPU時(shí)鐘處于等待輸入新的激勵(lì)狀態(tài),此時(shí)不能使用開發(fā)板。
本發(fā)明還提供了附加功能,增強(qiáng)安全性。具體體現(xiàn)為:
(a)開發(fā)板的每個(gè)激勵(lì)只能使用一次,使用完后,CPU向數(shù)據(jù)庫申請(qǐng)標(biāo)記該激勵(lì)以及PUF碼,遇到重復(fù)請(qǐng)求相同激勵(lì)的情況,CPU視為無效,大大提高了PUF碼的安全性。
(b)可以通過CPU對(duì)FPGA進(jìn)行動(dòng)態(tài)配置從而實(shí)現(xiàn)PUF碼的更改,主要更改PUF主電路中的組合交換矩陣,增強(qiáng)安全性。
附圖說明
圖1為基于SoPC的動(dòng)態(tài)可配置密鑰認(rèn)證系統(tǒng)框圖;
圖2為SoPC芯片系統(tǒng)架構(gòu);
圖3為基于仲裁器PUF的電路原理圖;
圖4為基于環(huán)形振蕩器PUF的電路原理圖;
圖5為可配置PUF電路原理圖;
圖6為系統(tǒng)工作流程;
圖7為系統(tǒng)工作流程,接著圖6;
具體實(shí)施方式
參見圖6、圖7,本發(fā)明包括以下幾個(gè)步驟:
步驟一:將USB數(shù)據(jù)線一端插在開發(fā)板上,另外一端接在電腦上,打開串口調(diào)試助手,此時(shí)開發(fā)板上電。按下復(fù)位按鍵,串口調(diào)試助手界面會(huì)顯示SoPC啟動(dòng)信息,例如初始化內(nèi)存,功能寄存器等。其他說明:開發(fā)板有USB轉(zhuǎn)串口芯片,并且此處串口為CPU的串口信號(hào),串口顯示界面可以理解為一個(gè)微型操作系統(tǒng)界面,通過串口進(jìn)行人機(jī)通信;
步驟二:SoPC啟動(dòng)之后,等待內(nèi)部初始化完成后,會(huì)首先在串口顯示界面顯示“請(qǐng)輸入激勵(lì)”在未正確驗(yàn)證之前,開發(fā)板均處于鎖定狀態(tài),無法使用,類似于計(jì)算機(jī)打開需要開機(jī)密碼;
步驟三:輸入10位二進(jìn)制信號(hào)作為激勵(lì),此處10位為默認(rèn)位寬,若要更改激勵(lì)的位寬,可通過動(dòng)態(tài)配置進(jìn)行更改,動(dòng)態(tài)配置見權(quán)利要求書中所述;
步驟四:CPU通過串口接收到激勵(lì)后,首先判斷該激勵(lì)是否被使用過,為了提高認(rèn)證的安全性,規(guī)定同一個(gè)激勵(lì)只能被使用一次(在認(rèn)證成功的前提下),若判斷該激勵(lì)已經(jīng)被使用過,則CPU通過串口外給出該激勵(lì)無效的信息,串口界面顯示“該激勵(lì)無效”,如該激勵(lì)有效,則調(diào)至步驟五;
步驟五:CPU通過AMBA AHB總線向FPGA發(fā)送激勵(lì),F(xiàn)PGA通受AHB接口模塊部分接收該激勵(lì);
步驟六:由于每次FPGA上的電路只接受設(shè)計(jì)好的激勵(lì)位寬,因此FPGA會(huì)首先判斷該激勵(lì)是否滿足當(dāng)前電路的激勵(lì)輸入位寬要求,例如默認(rèn)的位寬是10,若通過動(dòng)態(tài)配置,將位寬更改為20,則此時(shí)FPGA只能接受位寬為20的,若收到位寬不等于20,則產(chǎn)生中斷通知CPU該激勵(lì)不合法;
步驟七:FPGA激勵(lì)判斷模塊若判斷該激勵(lì)長(zhǎng)度合法,則將該激勵(lì)送到PUF電路模塊,運(yùn)行PUF電路,得到原始的PUF碼;
步驟八:為了減少傳輸過程中的無碼,需要對(duì)原始的PUF碼進(jìn)行ECC編碼,然后在CPU中進(jìn)行軟件ECC解碼,ECC采用BCH編解碼,設(shè)計(jì)為10位糾錯(cuò)2位;
步驟九:ECC編碼完成之后,將編碼后的PUF碼存在特定的編碼寄存器中,然后產(chǎn)生中斷,CPU查詢到此中斷時(shí),通過AHB總線讀取FPGA中編碼寄存器的數(shù)據(jù);
步驟十:CPU得到編碼后的PUF碼后,首先按照相同規(guī)則進(jìn)行ECC解碼,得到原始的PUF碼記為A1,然后,CPU根據(jù)輸入的激勵(lì)查詢數(shù)據(jù)庫中該激勵(lì)對(duì)應(yīng)的PUF碼,記為A2,若A1、A2完全相同,則此次認(rèn)證成功,串口界面顯示“確認(rèn)成功”。此時(shí)CPU還剩下一件極其重要的事,就是標(biāo)記該激勵(lì),并寫會(huì)數(shù)據(jù)庫,表明該激勵(lì)已經(jīng)使用過一次,下次遇到該激勵(lì)的輸入直接判定為激勵(lì)非法;
步驟十一:若A1、A2不相等,則回到步驟三。