一種基于sram puf的安全認(rèn)證方法及一種終端、認(rèn)證系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及一種安全認(rèn)證方法,尤其涉及一種基于SRAM PUF(靜態(tài)隨機(jī)存取存儲器物理不可克隆函數(shù))的安全認(rèn)證方法,屬于網(wǎng)絡(luò)安全技術(shù)領(lǐng)域。
【背景技術(shù)】
[0002]PUF (Physical Uncloable Funct1ns,物理不可克隆函數(shù),或簡稱PUFs)廣泛存在于現(xiàn)有的移動及互聯(lián)網(wǎng)終端設(shè)備中。國內(nèi)外的相關(guān)論文及專著對物理不可克隆函數(shù)作了多種定義,總的來說,物理不可克隆函數(shù)是指一種物理實體,該實體可以依靠制造過程中的差異性來產(chǎn)生其特有的輸出(通常為二進(jìn)制數(shù)),這些輸出是很難被克隆的。PUFs的各個組成部分都存在著局部參數(shù)差異,通過PUFs“算法”,這些局部差異會被組合、比較或者直接輸出,從而形成該電路特有的二進(jìn)制輸出。由于各組成部分之間的局部差異是不能被外部控制的,因此,PUFs是不可復(fù)制的。在PUFs的典型應(yīng)用中,其輸出值-響應(yīng)(response)決定于輸入信號-激勵(challenge)對其內(nèi)部的局部差異的選擇,因此PUFs是一個函數(shù)。
[0003]2001年P(guān)appu首先提出了物理不可克隆函數(shù)這一概念,并將其命名為物理單向函數(shù)。他首先設(shè)計和實現(xiàn)了光學(xué)PUFs (Optical PUFs)。光學(xué)PUFs通過量化透明光學(xué)介質(zhì)的干涉圖樣來形成其獨特輸出。但是過高的復(fù)雜度使得其很難實現(xiàn)工程應(yīng)用。隨著集成電路技術(shù)的發(fā)展,PUFs的實現(xiàn)重點逐漸轉(zhuǎn)移到電學(xué)領(lǐng)域,這一變革極大地促進(jìn)了 PUFs的發(fā)展。現(xiàn)在已有多種PUFs實現(xiàn)方式。目前主流的PUFs實現(xiàn)方式包括:仲裁器(Arbiter)PUFs是基于兩條電路路徑的延遲差異設(shè)計而成的;環(huán)形振蕩器(Ring Oscillators,R0)PUFs則是由于制造差異而產(chǎn)生的頻率不同,經(jīng)頻率對比后產(chǎn)生不同輸出;SRAM PUFs是SRAM單元內(nèi)部MOS管的不對稱性而造成的輸出隨機(jī)性。除此之外還存在很多很優(yōu)秀的PUFs電路設(shè)計,例如,鎖存PUFs、觸發(fā)器PUFs、毛刺PUFs。
[0004]在應(yīng)用中,PUFs可以被看做一個黑盒,該黑盒是一個激勵響應(yīng)系統(tǒng)。即輸入一個激勵c至PUFs,會返回一個響應(yīng)r = f (c),其中函數(shù)f (.)描述了 PUFs輸入/輸出(激勵/響應(yīng))的關(guān)系。因為該函數(shù)是PUFs電路內(nèi)部由于制造差異而產(chǎn)生的,PUFs利用該差異來形成特有的CRPs,因此對于用戶來說f(.)是不可見的。強(qiáng)PUFs與弱PUFs的本質(zhì)區(qū)別便在于兩者的f(.)不同導(dǎo)致的其能夠產(chǎn)生的CRPs數(shù)目差異。弱PUFs只能產(chǎn)生少量的激勵響應(yīng)對(甚至只有一個)。而強(qiáng)PUFs可以產(chǎn)生大量的激勵響應(yīng)對,以至于攻擊者在一定時間范圍內(nèi)不能夠檢測完所有的激勵響應(yīng)對。這兩類PUFs分別被用于兩個應(yīng)用領(lǐng)域:低功耗認(rèn)證,密鑰的產(chǎn)生和存儲。強(qiáng)PUFs通常被用作認(rèn)證,而弱PUFs通常被用作密鑰存儲和產(chǎn)生。其中比較有代表性的強(qiáng)PUFs為仲裁器PUFs,弱PUFs有SRAM PUFs和環(huán)形振蕩器PUFs。
[0005]在現(xiàn)有PUF應(yīng)用技術(shù)中,基于SRAM PUF的認(rèn)證系統(tǒng)的設(shè)計實現(xiàn)相對簡單且易于實現(xiàn)與現(xiàn)存設(shè)備兼容,因此有著廣泛的應(yīng)用前景。但是,經(jīng)過研宄發(fā)現(xiàn),SRAM PUF的以下特性制約了其作為認(rèn)證系統(tǒng)的應(yīng)用。
[0006]SRAM PUF,其能產(chǎn)生的獨立激勵響應(yīng)對與其節(jié)點數(shù)量呈線性關(guān)系。S卩,攻擊者只需要監(jiān)聽一定數(shù)量的激勵響應(yīng)對就可以獲取整個PUF中節(jié)點的輸出值,通過軟件或NVM就可以模擬出該P(yáng)UF。同時,對于現(xiàn)有的SRAM,其譯碼一般是連續(xù)的字節(jié)譯碼,響應(yīng)的地址不具有離散型,這更加限制了激勵響應(yīng)對數(shù)量。對于SRAM PUF在認(rèn)證系統(tǒng)中的應(yīng)用,主流的方案是將SRAM PUF當(dāng)做密鑰(身份認(rèn)證信息)儲存器,將該信息經(jīng)過哈希算法以提高安全性,并加入糾錯碼增加其可靠性。但是該方法存在明顯的缺陷:哈希算法作為一種單向散列函數(shù),在信息認(rèn)證中受到廣泛應(yīng)用。其主要的特點包括:原始信息經(jīng)過哈希計算后得到一個哈希值;若改變原始信息,哈希值也會隨之改變;同樣的信息,哈希計算結(jié)果是相同的;哈希是單向的、不可逆的。但是,隨著眾多破解方法的出現(xiàn),單純的哈希算法將不再是安全的。較流行的攻擊方法包括字典破解(Dict1nary Attack)和暴力破解(Brute-forceAttack)。這兩種方法的缺陷在于效率太低。但是如果攻擊者知道了數(shù)據(jù)庫中信息的哈希值,或者是已經(jīng)建立了一個常用信息的查詢表,則可以使用查表法(Lookup Table)或者彩虹表(Rainbow Table)等方法進(jìn)行破解。一旦原始信息被破解成功,則弱PUF的安全認(rèn)證即宣告失敗。解決該問題的方法有很多,一種是哈希算法結(jié)合加密算法,雖提高了安全性卻導(dǎo)致了成本急劇增加和效率的降低。
【發(fā)明內(nèi)容】
[0007]本發(fā)明所要解決的技術(shù)問題在于克服現(xiàn)有技術(shù)的不足,提供一種基于SRAM PUF的安全認(rèn)證方法,能夠有效的提高現(xiàn)有基于SRAM PUF認(rèn)證系統(tǒng)的安全性。
[0008]本發(fā)明具體采用以下技術(shù)方案解決上述技術(shù)問題:
[0009]一種基于SRAM PUF的安全認(rèn)證方法,包括注冊階段和認(rèn)證階段,
[0010]所述注冊階段包括以下步驟:
[0011]步驟1、具有SRAM PUF模塊的終端預(yù)先將自身SRAM PUF模塊中的每個節(jié)點劃分為隨機(jī)節(jié)點和認(rèn)證節(jié)點這兩類,并將各節(jié)點的地址及其所對應(yīng)的節(jié)點類型發(fā)送至服務(wù)器;
[0012]步驟2、服務(wù)器隨機(jī)生成一系列由部分認(rèn)證節(jié)點地址所組成的激勵,并發(fā)送至所述終端;
[0013]步驟3、所述終端將所述激勵依次輸入SRAM PUF模塊,并將SRAM PUF模塊所產(chǎn)生的響應(yīng)反饋回服務(wù)器;
[0014]步驟4、服務(wù)器將所得到的一系列激勵-響應(yīng)對作為該終端的認(rèn)證數(shù)據(jù)進(jìn)行存儲;所述認(rèn)證階段包括以下步驟:
[0015]步驟5、服務(wù)器從當(dāng)前待認(rèn)證終端的認(rèn)證數(shù)據(jù)中取一個激勵-響應(yīng)對,將其中的激勵發(fā)送至待認(rèn)證終端;
[0016]步驟6、待認(rèn)證終端將所接受的激勵輸入SRAM PUF模塊,得到相應(yīng)的響應(yīng),以該響應(yīng)作為認(rèn)證序列,并將SRAM PUF模塊的一次完整輸出中的部分或全部隨機(jī)節(jié)點的輸出構(gòu)成一個隨機(jī)數(shù)序列;待認(rèn)證終端利用所述隨機(jī)數(shù)序列對所述認(rèn)證序列進(jìn)行加鹽哈希運(yùn)算,并將運(yùn)算結(jié)果及所述隨機(jī)數(shù)序列發(fā)送至服務(wù)器;
[0017]步驟7、服務(wù)器利用所接收到的隨機(jī)數(shù)序列對所選取激勵-響應(yīng)對中的響應(yīng)進(jìn)行同樣的加鹽哈希運(yùn)算,并將得到的運(yùn)算結(jié)果與待認(rèn)證終端所發(fā)送的運(yùn)算結(jié)果進(jìn)行比較,如兩者相同,則本次認(rèn)證成功,否則,本次認(rèn)證失敗。
[0018]優(yōu)選地,具有SRAM PUF模塊的終端按照以下方法將自身SRAM PUF模塊中的每個節(jié)點劃分為隨機(jī)節(jié)點和認(rèn)證節(jié)點這兩類:統(tǒng)計在所述SRAM PUF模塊的多次完整輸出中各節(jié)點輸出發(fā)生震蕩的頻次,未出現(xiàn)震蕩的節(jié)點為認(rèn)證節(jié)點,其余節(jié)點為隨機(jī)節(jié)點。
[0019]進(jìn)一步地,所述認(rèn)證階段還包括:
[0020]步驟8、如本次認(rèn)證失敗,則轉(zhuǎn)至步驟5,進(jìn)行再一次認(rèn)證;如在預(yù)設(shè)最大認(rèn)證次數(shù)以內(nèi)有一次認(rèn)證成功,則該終端最終認(rèn)證成功,否則,認(rèn)證失敗。
[0021]根據(jù)同樣的發(fā)明思路還可以得到一種終端及一種認(rèn)證系統(tǒng),具體如下:
[0022]一種終端,內(nèi)嵌有SRAM PUF模塊,所述SRAM PUF模塊中的每個節(jié)點被預(yù)先劃分為隨機(jī)節(jié)點和認(rèn)證節(jié)點這兩類;所述終端還包括用于完成安全認(rèn)證的認(rèn)證單元,所述認(rèn)證單元具體包括:
[0023]地址映射表,用于儲存SRAM PUF模塊中各節(jié)點的地址及其所對應(yīng)的節(jié)點類型;隨機(jī)數(shù)序列生成模塊,用于將SRAM PUF模塊的一次完整輸出中的部分或全部隨機(jī)節(jié)點的輸出構(gòu)成一個隨機(jī)數(shù)序列;
[0024]數(shù)據(jù)串組合模塊,用于將SRAM PUF模塊所輸出的認(rèn)證序列與隨機(jī)數(shù)序列生成模塊所輸出的隨機(jī)數(shù)序列組合為組合數(shù)據(jù)串;
[0025]哈希模塊,用于對數(shù)據(jù)串組合模塊輸出的組合數(shù)據(jù)串進(jìn)行哈希運(yùn)算。
[0026]優(yōu)選地,所述SRAM PUF模塊中的每個節(jié)點按照以下方法被預(yù)先劃分為隨機(jī)節(jié)點和認(rèn)證節(jié)點這兩類:統(tǒng)計在所述SRAM PUF模塊的多次完整輸出中各節(jié)點輸出發(fā)生震蕩的頻次,未出現(xiàn)震蕩的節(jié)點為認(rèn)證節(jié)點,其余節(jié)點為隨機(jī)節(jié)點。
[0027]優(yōu)選地,所述數(shù)據(jù)串組合模塊所使用的數(shù)據(jù)串組合方式為前端鏈接、后