一種基于sram puf的熵提取方法及電路的制作方法
【專利摘要】本發(fā)明提供一種基于SRAM PUF的熵提取方法及電路,本申請通過設(shè)置預(yù)定讀取次數(shù)、門檻值等提取條件以控制掉電時間和掉電次數(shù),首先篩選出SRAM中的有效震蕩節(jié)點,然后再根據(jù)最小熵的要求對震蕩節(jié)點進行第二輪篩選,確保振蕩節(jié)點能夠滿足提取要求。本發(fā)明通過從SRAM中篩除掉掉電后震蕩不能達到要求的節(jié)點,提取有效震蕩節(jié)點的熵信息以用作產(chǎn)生真隨機數(shù)或者身份認證信息,可以在保證生成隨機序列的隨機性的同時,簡化計算步驟,加快產(chǎn)生隨機數(shù)的速度。而且,本方法通過電路設(shè)計可以實現(xiàn)實時的改變提取條件重新對SRAM中的節(jié)點進行篩選,重新篩選的過程中仍會根據(jù)之前篩選出的信息進行輸出,保證輸出不會停止。
【專利說明】
_種基于SRAM PUF的;^提取方法及電路
技術(shù)領(lǐng)域
[0001]本發(fā)明涉及信息安全領(lǐng)域,特別涉及一種基于SRAM PUF的熵提取方法及電路。
【背景技術(shù)】
[0002] 近些年來,隨著智能卡、RFID(Radio Frequency IDentification射頻識別)標簽 和傳感器網(wǎng)絡(luò)節(jié)點等物理實體的廣泛應(yīng)用,如何對這些物理實體實施有效認證是確保系統(tǒng) 安全的關(guān)鍵因素。然而,由于這類實體普遍存在計算能力差、資源有限等問題,傳統(tǒng)基于密 碼學的認證方法在應(yīng)用時存在很大障礙。借鑒當前普遍使用的基于人體唯一特征指紋或虹 膜對個人實施認證的思想,人們提出了基于物理實體的內(nèi)在物理構(gòu)造來唯一地標識單個物 理實體,實現(xiàn)對物理實體有效認證的方法。這就是人們提出的物理不可克隆函數(shù)(Physical Unclonable Function,PUF)的概念。
[0003] SRAM(Static Random Access Memory),即靜態(tài)隨機存取存儲器。它是一種具有靜 止存取功能的內(nèi)存,不需要刷新電路即能保存它內(nèi)部存儲的數(shù)據(jù)。當SRAM掉電一段時間后, SRAM中儲存的數(shù)據(jù)會發(fā)生不可預(yù)測的變化,這是由生產(chǎn)制造決定的。所以正確的提取出 SRAM PUF的熵值以用作真隨機數(shù)或者身份認證信息是非常有用的。
[0004] 由于生產(chǎn)工藝,掉電時間,以及溫度等因素都會對SRAM中節(jié)點是否發(fā)生振蕩產(chǎn)生 影響。不同工藝,不同廠家生產(chǎn)的SRAM的節(jié)點在掉電相同時間時的振蕩特性都不同。即使是 同一工藝,同一廠家生產(chǎn)的同一批次SRAM的這一特性都存在一定的差距,這也是SRAM的 PUF特性所決定的。掉電時間長短會影響得到的SRAM的熵值的大小,也就是階段數(shù)據(jù)的隨機 性。溫度變化也會在一定程度上影響SRAM振蕩特性。因而需要對SRAM中的節(jié)點進行一定的 篩選才可以適應(yīng)提取隨機序列的要求。
[0005] 由于現(xiàn)有的技術(shù)并不能夠正確提取SRAM節(jié)點的隨機性,因而目前的隨機序列提取 技術(shù)所生成的也并非真正的隨機數(shù)。而將這些偽隨機數(shù)應(yīng)用于隨機數(shù)生成器及身份認證勢 必無法滿足需求。因而急需可以將SRAM PUF的特性用于隨機數(shù)提取的技術(shù)。
【發(fā)明內(nèi)容】
[0006] 本發(fā)明針對SRAM掉電后振蕩特性未知的情況,提出了一種對掉電后的節(jié)點數(shù)據(jù)進 行分層篩選,以提取那些真正的不可預(yù)測不可克隆的震蕩節(jié)點的熵信息的方法及其對應(yīng)的 電路。
[0007] -種基于SRAM PUF的熵提取方法,其特征在于,包括如下步驟:
[0008] 第一步,初始化:設(shè)置預(yù)定讀取次數(shù)、門檻值以及最小熵的值;
[0009] 第二步,尋找震蕩節(jié)點:對SRAM進行掉電處理,并存儲每次掉電后SRAM中各節(jié)點的 地址及對應(yīng)的數(shù)據(jù)值,當?shù)綦姶螖?shù)達到預(yù)定讀取次數(shù)后停止掉電;
[0010]第三步,篩選:對上一步中存儲的各節(jié)點的數(shù)據(jù)進行統(tǒng)計,若節(jié)點數(shù)據(jù)值的變化次 數(shù)沒達到門檻值,則認為該節(jié)點不經(jīng)常震蕩,篩除該節(jié)點;若節(jié)點數(shù)據(jù)值的變化次數(shù)達到門 檻值,則認為該節(jié)點是震蕩節(jié)點,存儲該震蕩節(jié)點的地址;
[0011] 第四步,判斷最小熵:計算震蕩節(jié)點的最小熵,若最小熵的值小于0.4,則提示更換 SRAM,更換SRAM后重新回到第一步進行處理;若計算得到的最小熵的值大于等于0.4,則完 成篩選;
[0012] 第五步,輸出:按照第三步中存儲的震蕩節(jié)點的地址讀取震蕩節(jié)點的數(shù)據(jù),將數(shù)據(jù) 進行哈希函數(shù)處理后輸出;若接收到重播請求,則跳轉(zhuǎn)到第二步,重新按步驟順序依次進行 處理。
[0013] 其中,所述的第二步中所述的SRAM掉電后數(shù)據(jù)預(yù)定讀取次數(shù)設(shè)置為40-200次。次 數(shù)可以使用者給出,建議1〇〇次,次數(shù)太少難以提取出隨機性,次數(shù)太多加大了不必要的計 算。
[0014] 其中,所述的門檻值為掉電次數(shù)的5%-30%。
[0015] 其中,所述的第四步中最小熵的值不小于0.4。
[0016]其中,所述基于SRAM PUF的熵提取方法的任一步中,一旦接到要求初始化信號則 立即跳轉(zhuǎn)至第一步,按步驟順序重新進行處理。
[0017] 本發(fā)明還包括一種基于SRAM PUF的熵提取電路,其特征在于,包括SRAM、讀取模 塊、節(jié)點篩選模塊、輸出模塊、先進先出存儲器、隨機存儲器和控制模塊;控制模塊先接收設(shè) 置的預(yù)定讀取次數(shù)、門檻值以及最小熵的值,然后通過讀取模塊控制SRAM掉電,讀取模塊讀 取SRAM每次掉電后各節(jié)點的地址及對應(yīng)的數(shù)據(jù)值并將各節(jié)點的地址及對應(yīng)的數(shù)據(jù)值傳輸 給先進先出存儲器存儲;當SRAM的掉電次數(shù)達到設(shè)置的預(yù)定讀取次數(shù)時停止掉電,節(jié)點篩 選模塊讀取先進先出存儲器中存儲的每次掉電后各節(jié)點的數(shù)據(jù)值,并將變化次數(shù)達到門檻 值的節(jié)點地址存入隨機存儲器;節(jié)點篩選模塊隨后計算最小熵,若計算的最小熵的值小于 0.4則向控制模塊發(fā)送提示更換SRAM的信號,否則向控制模塊發(fā)送完成篩選的信號;輸出模 塊按照隨機存儲中存儲的地址通過讀取模塊讀取SRAM中相應(yīng)節(jié)點的數(shù)據(jù)值,并將數(shù)據(jù)進行 哈希函數(shù)處理后輸出;當控制模塊接到重播請求時,重新通過讀取模塊控制SRAM掉電,重 新篩選節(jié)點,重新將相應(yīng)節(jié)點的數(shù)據(jù)值進行哈希函數(shù)處理后再輸出。
[0018] 其中,控制模塊存儲預(yù)定讀取次數(shù)、門檻值以及最小熵的值;控制模塊同時控制讀 取模塊實時修改掉電時間;每一次進行篩選時,控制模塊都會將最新的預(yù)定讀取次數(shù)、最小 熵的值和門檻值發(fā)送給節(jié)點篩選模塊。
[0019] 本發(fā)明作用機理在于:SRAM在掉電后,某些節(jié)點在很短的時間就丟失數(shù)據(jù),而另一 些節(jié)點在相對較長的時間里仍可以保存數(shù)據(jù)。SRAM中這些節(jié)點在掉電以后會對數(shù)字電平0 或者1有一定的偏向性,有的節(jié)點存在很強的偏向性,這些節(jié)點稱為固定節(jié)點,而另一些節(jié) 點沒有很明顯的偏向性,視為振蕩節(jié)點。為了提取出真正的隨機序列,需要對SRAM中的節(jié)點 進行篩選。計算節(jié)點掉電后的值與上一次的值的異或
[0021] 其中,i表示第i個節(jié)點,i為1~n范圍內(nèi)的整數(shù)(n為SRAM中節(jié)點的總數(shù))。如果X0R 為1則表示該節(jié)點發(fā)生變化,即振蕩一次。在掉電時間設(shè)置過長的情況下,除了震蕩節(jié)點的 值會發(fā)生變化以外,某些固定節(jié)點也可能發(fā)生偶然的振蕩。而在掉電時間過短的情況下,振 蕩節(jié)點很可能未能完全掉電,即下次上電時不發(fā)生振蕩。
[0022] 而且,通過對多塊SRAM進行測試,我們發(fā)現(xiàn)那些發(fā)生振蕩節(jié)的點不都是固定振蕩 的。在100測試中,統(tǒng)計X0R為1和0的次數(shù),換成概率p x=dPpx=Q的形式,并比較兩者大小得到 Pmax
[0023] pmax=max (px=i, px=o) (2)
[0024] 不難看出,Pmax值為1的概率為應(yīng)當1/2。但在實際測試中,有些節(jié)點只振蕩幾次,而 同時也有些節(jié)點變化的次數(shù)達到四十多次,異或值為1的概率不為1/2。
[0025] 因而,我們希望可以篩選掉那些偶然由于外界因素引起振蕩的節(jié)點。而實際上,這 些偶然發(fā)生震蕩的節(jié)點所對應(yīng)的地址數(shù)據(jù)量是龐大的。這無疑增加了后續(xù)運算壓力,減慢 了速度。
[0026] 在本發(fā)明所提供的方法中,通過第二步對SRAM的掉電處理,統(tǒng)計可用的出震蕩節(jié) 點并存這些儲震蕩節(jié)點的地址后,還需要再通過第四步來計算本塊SRAM的最小熵。若計算 出的最小熵沒有達到要求,則說明本塊SRAM不能適應(yīng)本次提取的需求,需要更換其他的 SRAM。通過這兩步的篩選,我們得到的震蕩節(jié)點數(shù)量已經(jīng)大大減少,而且可以保證隨機存儲 器中所存儲的節(jié)點是滿足要求。這樣的處理可以為后續(xù)的熵提取提供便利。
[0027]其中計算最小熵(Hmin) total的公式為:
[0029] 其中,i表示第i個節(jié)點,i為1~n范圍內(nèi)的整數(shù)(n為SRAM中節(jié)點的總數(shù));pimax為 節(jié)點i對應(yīng)的Pmx
[0030] SRAM整體數(shù)據(jù)的熵值是變化的。未經(jīng)篩選時,熵值變化幅度較大,開始設(shè)置門檻值 后,熵值變化幅度開始變小,開始具有較好的一致性。但如果門檻值設(shè)置過高,熵值又會出 現(xiàn)變化幅度較大的情況。因而,本發(fā)明中的門檻值設(shè)置為掉電次數(shù)的10%。
[0031 ]本方法中,當接收到重播信號時,控制模塊會重新激活節(jié)點篩選模塊,再次進行第 二步到第五步的篩選流程,并更新隨機存儲器(RAM)中存儲的節(jié)點地址。而在進行重新篩選 的這一個時間段,電路仍按照上一次篩選出的信息進行輸出,不存在輸出停止的情況。
[0032] 本發(fā)明相對于現(xiàn)有的熵提取方法而言,優(yōu)勢在于:
[0033] 由于采取節(jié)點震蕩情況和最小熵兩輪篩選以保證篩選出的震蕩節(jié)點都滿足要求, 因而可以減輕后續(xù)計算的壓力。本發(fā)明提高了輸出數(shù)據(jù)的隨機性,同時也加快了產(chǎn)生隨機 數(shù)的速度。
[0034]此外,由于控制模塊可以設(shè)置預(yù)定讀取次數(shù)、門檻值以及最小熵的值,使得本發(fā)明 可以通過逐步增加門檻的方式逐步剔除震蕩次數(shù)未達到門檻要求的節(jié)點,即通過設(shè)置門檻 值來控制用于提取熵的節(jié)點地址數(shù)據(jù)量。這使得本發(fā)明在保證數(shù)據(jù)隨機性、保證安全性的 情況下,能夠簡化生成隨機序列的步驟,提高產(chǎn)生隨機數(shù)的速度。
[0035]其次,由于節(jié)點的篩選條件可以人為輸入,電路在得到新的門檻值時重新進行篩 選,并更新振蕩節(jié)點地址。本方法中,當接收到重播信號時,控制模塊也會重新激活節(jié)點篩 選模塊,再次進行第二步到第五步的篩選流程,并更新隨機存儲器(RAM)中存儲的震蕩節(jié)點 的地址。而在進行重新篩選的這一個時間段,電路仍按照上一次篩選出的信息進行輸出,不 會存在輸出停止的情況。
【附圖說明】
[0036]附圖用來提供對本發(fā)明的進一步理解,并且構(gòu)成說明書的一部分,并與本發(fā)明的 實施例一起,用于解釋本發(fā)明,并不構(gòu)成對本發(fā)明的限制。在附圖中:
[0037]圖1是基于SRAM PUF的熵提取電路的框圖;
[0038]圖2是基于SRAM PUF的熵提取方法的流程圖
【具體實施方式】
[0039]本發(fā)明公開了一種基于SRAM PUF的熵提取方法及其電路,具體如下:
[0040] -種基于SRAM PUF的熵提取方法所對應(yīng)的電路,包括SRAM、讀取模塊、節(jié)點篩選 模塊、輸出模塊、先進先出存儲器、隨機存儲器和控制模塊;控制模塊先接收設(shè)置的預(yù)定讀 取次數(shù)、門檻值以及最小熵的值,然后通過讀取模塊控制SRAM掉電,讀取模塊讀取SRAM每次 掉電后各節(jié)點的地址及對應(yīng)的數(shù)據(jù)值并將各節(jié)點的地址及對應(yīng)的數(shù)據(jù)值傳輸給先進先出 存儲器存儲;當SRAM的掉電次數(shù)達到設(shè)置的預(yù)定讀取次數(shù)時停止掉電,節(jié)點篩選模塊讀取 先進先出存儲器中存儲的每次掉電后各節(jié)點的數(shù)據(jù)值,并將變化次數(shù)達到門檻值的節(jié)點地 址存入隨機存儲器;節(jié)點篩選模塊隨后計算最小熵,若計算的最小熵的值不滿足要求(小于 0.4),則向控制模塊發(fā)送提示更換SRAM的信號,否則則向控制模塊發(fā)送完成篩選的信號;輸 出模塊按照隨機存儲中存儲的地址通過讀取模塊讀取SRAM中相應(yīng)節(jié)點的數(shù)據(jù)值,并將數(shù)據(jù) 進行哈希函數(shù)處理后輸出;一旦控制模塊接到重播請求,就立即重新通過讀取模塊控制 SRAM掉電,按照上述過程重新篩選節(jié)點,重新將相應(yīng)節(jié)點的數(shù)據(jù)值進行哈希函數(shù)處理后再 輸出。
[0041 ]所述電路中,控制模塊存儲預(yù)定讀取次數(shù)、門檻值以及最小熵的值;控制模塊同時 控制讀取模塊實時修改掉電時間;每一次進行篩選時,控制模塊都會將最新的預(yù)定讀取次 數(shù)、最小熵的值和門檻值發(fā)送給節(jié)點篩選模塊。
[0042]在具體實施過程中,我們首先對SRAM進行掉電處理,通過設(shè)置門檻值,將那些變化 次數(shù)未達到門檻的節(jié)點剔除,統(tǒng)計出可用的震蕩節(jié)點并存這些儲震蕩節(jié)點的地址。試驗中 我們發(fā)現(xiàn),可用的震蕩節(jié)點會隨著門檻值的提高而銳減。振蕩節(jié)點數(shù)大概占總節(jié)點數(shù)的3% 到5%,如果門檻設(shè)置的過高,會將那些經(jīng)常振蕩的節(jié)點篩掉,剩下的節(jié)點數(shù)大大變少,用于 提取熵的節(jié)點地址數(shù)據(jù)量變少,安全性大大變差,增加了安全隱患。因而門檻值一般設(shè)置為 掉電次數(shù)的5 % -30 %較合理。
[0043]為了提高可靠性和安全性,整個提取策略需要考慮幾個交互信息。首先是在提取 出熵信息后,外部的隨機數(shù)發(fā)生器或者身份認證系統(tǒng)會提出重播的要求。此時,本模塊需要 放棄存儲的節(jié)點地址數(shù)據(jù)并重復之前的篩選步驟。其次節(jié)點篩選條件可以人為輸入,在得 到新的門檻值時,同樣需要重新進行篩選,更新振蕩節(jié)點地址。而在進行重新篩選的這一個 時間段,電路仍按照上一次篩選出的信息進行輸出,不會存在輸出停止的情況。
[0044]圖1為本發(fā)明熵提取方法的實現(xiàn)電路框圖。具體而言,在本發(fā)明提出的熵提取電路 中,讀取模塊控制SRAM上節(jié)點的掉電以及具體的掉電時間;節(jié)點篩選模塊負責根據(jù)節(jié)點掉 電后的情況篩序出合適的節(jié)點并記錄下來;輸出模塊根據(jù)節(jié)點篩選模塊得到的節(jié)點地址去 連續(xù)的讀取對應(yīng)振蕩節(jié)點掉電后的值;FIFO (先進先出存儲器)負責暫存篩選時的節(jié)點數(shù) 據(jù);RAM(隨機存儲器)負責存儲篩選確定的振蕩節(jié)點地址;控制模塊控制其他所有模塊,控 制其他模塊的控制信號及模塊間的交互。
[0045]如圖1所示,讀取模塊根據(jù)控制模塊提供的控制信號,對SRAM進行掉電控制。并讀 出SRAM中所有節(jié)點掉電后的數(shù)據(jù),根據(jù)FIFO (先進先出存儲器)和輸出模塊的訪問給出對應(yīng) 的輸出,F(xiàn)IFO有讀請求,則將所有數(shù)據(jù)發(fā)給FIFO,如果輸出模塊有請求,就根據(jù)輸出模塊給 出的節(jié)點地址將對應(yīng)的節(jié)點的數(shù)據(jù)給輸出模塊。
[0046]先進先出存儲器(FIFO)存儲SRAM每次掉電后的數(shù)據(jù),存滿一百次后發(fā)送交互信號 給節(jié)點篩選模塊,等待節(jié)點篩選模塊來讀數(shù)據(jù)。反復預(yù)定讀取次數(shù)由節(jié)點篩選模塊進行修 改。
[0047]節(jié)點篩選模塊和讀取模塊之間通過先進先出存儲器FIFO進行交互,F(xiàn)IFO將每一次 的節(jié)點數(shù)據(jù)暫存,存滿一百次后全部送給節(jié)點篩選模塊,節(jié)點篩選模塊對這些節(jié)點數(shù)據(jù)先 進行統(tǒng)計后找出振蕩節(jié)點,然后根據(jù)門檻值對統(tǒng)計得到的振蕩節(jié)點進行節(jié)點篩選,篩選完 成后進行最小熵的計算,然后與輸入的最小熵條件進行比較。如果最小熵條件不滿足說明 使用的SRAM不可用,節(jié)點篩選模塊向控制模塊報錯,請求換一塊SRAM;如果滿足,則將振蕩 節(jié)點的地址送至RAM保存,同時發(fā)送一個完成信號給控制模塊。
[0048]輸出模塊根據(jù)控制模塊給的控制信號,連續(xù)的訪問隨機存儲器RAM中存儲的振蕩 節(jié)點地址,并用這些地址求請求讀取模塊讀取對應(yīng)地址的節(jié)點數(shù)據(jù),而后對這些數(shù)據(jù)進行 哈希函數(shù)處理,將數(shù)據(jù)由一個不確定長度的滿足熵條件的一串數(shù)據(jù)處理成規(guī)定長度滿熵的 真隨機數(shù),最后發(fā)送給控制模塊作為電路的輸出。這個輸出可以用于隨機數(shù)發(fā)生器和身份 認證信息。
[0049 ]隨機存儲器RAM存儲振蕩節(jié)點的地址,并在節(jié)點篩選模塊給出新的地址時進行更 新。
[0050] 控制模塊需要對節(jié)點篩選模塊的參數(shù)設(shè)置進行控制,具體包括反復預(yù)定讀取次 數(shù)、最小熵條件、門檻值及篩選開始信號。具體工作時,控制模塊根據(jù)輸入的重播請求和參 數(shù)對其他模塊進行控制,向讀取模塊發(fā)送掉電控制信號,控制其對SRAM的掉電讀寫及對下 級模塊的輸出控制??刂颇K還控制節(jié)點篩選模塊的篩選時機以及篩選條件,除此之外控 制模塊還控制輸出模塊進行輸出控制。由于電路中SRAM讀取速率較慢,會出現(xiàn)時鐘不匹配 的問題,所以控制模塊中還設(shè)計有一個PLL(Phase Locked Loop,鎖相環(huán)),用來統(tǒng)一整合時 鐘信號,使各模塊間的數(shù)據(jù)可以正確快速地交互。
[0051] 參照圖2所述的詳細流程,本申請還提供了相應(yīng)的熵提取方法,本方法包括如下步 驟:
[0052]第一步,初始化:設(shè)置預(yù)定讀取次數(shù)、門檻值以及最小熵的值。一般而言,SRAM掉電 后數(shù)據(jù)預(yù)定讀取次數(shù)設(shè)置為40-200次,次數(shù)可以由使用者自行給出。但考慮到預(yù)定讀取次 數(shù)太少難以提取出SRAM節(jié)點的隨機性,次數(shù)太多則會增加不必要的計算負擔,因而此處設(shè) 置預(yù)定讀取次數(shù)為100次。設(shè)置的門檻值通常為掉電次數(shù)(即預(yù)定讀取次數(shù))的5%_30%。不 過,由于門檻值設(shè)置太少會使得篩選出來的節(jié)點不是震蕩節(jié)點,而設(shè)置太多則使得篩選后 可用的節(jié)點數(shù)太少,因而此處將門檻值設(shè)置為掉電次數(shù)的10%,即門檻值為10。一般,只要 最小熵的值不小于〇. 4,就可以認為該SRAM可以使用。因而此處最小熵的值設(shè)置為0.4。
[0053]第二步,尋找震蕩節(jié)點:本步驟包括流程圖中"開始存儲掉電數(shù)據(jù)"至"存滿數(shù)據(jù)" 兩小步。首先對SRAM進行掉電處理,并存儲每次掉電后SRAM中各節(jié)點的地址及對應(yīng)的數(shù)據(jù) 值,當?shù)綦姶螖?shù)達到預(yù)定讀取次數(shù)后(即存滿數(shù)據(jù)時)停止掉電,進行下一步的篩選。
[0054] 第三步,篩選:本步驟即流程圖中所示的"開始篩選"一步。本步驟對上一步中存儲 的各節(jié)點的數(shù)據(jù)進行統(tǒng)計,若節(jié)點數(shù)據(jù)值的變化次數(shù)沒達到門檻值,則認為該節(jié)點不經(jīng)常 震蕩,篩除該節(jié)點;若節(jié)點數(shù)據(jù)值的變化次數(shù)達到門檻值,則認為該節(jié)點是震蕩節(jié)點,存儲 該震蕩節(jié)點的地址;
[0055] 第四步,判斷最小熵:計算震蕩節(jié)點的最小熵;若計算得到的最小熵的值小于0.4, 則提示更換SRAM,更換SRAM后重新回到第一步進行處理;若計算得到的最小熵的值滿足要 求,即大于等于0.4,則表示完成篩選,上一步中存儲的節(jié)點地址可以使用。此處,最小熵的 計算過程參見說明書中的相關(guān)內(nèi)容,在此不再贅述。
[0056] 第五步,輸出。本步驟對應(yīng)流程圖的右半部分。首先按照第三步中存儲的震蕩節(jié)點 的地址讀取震蕩節(jié)點的數(shù)據(jù),然后將數(shù)據(jù)進行哈希函數(shù)處理,最后輸出。一旦接收到重播請 求,則跳轉(zhuǎn)到第二步,重新按步驟順序依次進行處理。
[0057] 根據(jù)隨機存儲器中保存的地址去讀寫掉電后SRAM中對應(yīng)節(jié)點的值,這個值就是前 文所指可以用于隨機數(shù)發(fā)生器或者身份認證的信息。另外,若控制模塊接收到重播請求,則 跳轉(zhuǎn)到第二步,重新按步驟順序依次進行處理。
[0058] 由流程可以看出,整個電路在得到重新播信號時,控制模塊會再次激活節(jié)點篩選 模塊,重復之前所述的篩選流程。在得到重新生成的請求到電路重新完成篩選之間,輸出模 塊仍有會根據(jù)上次篩選出的節(jié)點進行計算并輸出,直到完成重新篩選才會更新節(jié)點地址。
[0059] 整個電路模塊在篩選時,會進行最小熵的判斷,如果最小熵條件不滿足,電路輸出 會報錯,通知需要人為更換SRAM。這樣通過震蕩節(jié)點和最小熵的兩輪篩選保證篩選出的震 蕩節(jié)點都滿足要求,從因而減輕后續(xù)計算的壓力,進一步保障輸出數(shù)據(jù)的隨機性,同時也加 快產(chǎn)生隨機數(shù)的速度。
[0060] 本領(lǐng)域普通技術(shù)人員可以理解:以上所述僅為本發(fā)明的優(yōu)選實施例而已,并不用 于限制本發(fā)明,盡管參照前述實施例對本發(fā)明進行了詳細的說明,對于本領(lǐng)域的技術(shù)人員 來說,其依然可以對前述各實施例記載的技術(shù)方案進行修改,或者對其中部分技術(shù)特征進 行等同替換。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進等,均應(yīng)包含 在本發(fā)明的保護范圍之內(nèi)。
【主權(quán)項】
1. 一種基于SRAM PUF的熵提取方法,其特征在于,包括如下步驟: 第一步,初始化:設(shè)置預(yù)定讀取次數(shù)、門檻值以及最小熵的值; 第二步,尋找震蕩節(jié)點:對SRAM進行掉電處理,并存儲每次掉電后SRAM中各節(jié)點的地址 及對應(yīng)的數(shù)據(jù)值,當?shù)綦姶螖?shù)達到預(yù)定讀取次數(shù)后停止掉電; 第三步,篩選:對上一步中存儲的各節(jié)點的數(shù)據(jù)進行統(tǒng)計,若節(jié)點數(shù)據(jù)值的變化次數(shù)沒 達到門檻值,則認為該節(jié)點不經(jīng)常震蕩,篩除該節(jié)點;若節(jié)點數(shù)據(jù)值的變化次數(shù)達到門檻 值,則認為該節(jié)點是震蕩節(jié)點,存儲該震蕩節(jié)點的地址; 第四步,判斷最小熵:計算震蕩節(jié)點的最小熵,若最小熵的值小于0.4,則提示更換 SRAM,更換SRAM后重新回到第一步進行處理;若計算得到的最小熵的值大于等于0.4,則完 成篩選; 第五步,輸出:按照第三步中存儲的震蕩節(jié)點的地址讀取震蕩節(jié)點的數(shù)據(jù),將數(shù)據(jù)進行 哈希函數(shù)處理后輸出;若接收到重播請求,則跳轉(zhuǎn)到第二步,重新按步驟順序依次進行處 理。2. 根據(jù)權(quán)利要求1所述的基于SRAM PUF的熵提取方法,其特征在于,所述的第二步中所 述的SRAM掉電后數(shù)據(jù)預(yù)定讀取次數(shù)設(shè)置為40-200次。3. 根據(jù)權(quán)利要求1所述的基于SRAM PUF的熵提取方法,其特征在于,所述的門檻值為掉 電次數(shù)的5 %-30 %。4. 根據(jù)權(quán)利要求1所述的基于SRAM PUF的熵提取方法,其特征在于,所述的任一步中, 一旦接到要求初始化信號則立即跳轉(zhuǎn)至第一步,按步驟順序重新進行處理。5. -種基于SRAM PUF的熵提取電路,其特征在于,包括SRAM、讀取模塊、節(jié)點篩選模塊、 輸出模塊、先進先出存儲器、隨機存儲器和控制模塊;控制模塊先接收設(shè)置的預(yù)定讀取次 數(shù)、門檻值以及最小熵的值,然后通過讀取模塊控制SRAM掉電,讀取模塊讀取SRAM每次掉電 后各節(jié)點的地址及對應(yīng)的數(shù)據(jù)值并將各節(jié)點的地址及對應(yīng)的數(shù)據(jù)值傳輸給先進先出存儲 器存儲;當SRAM的掉電次數(shù)達到設(shè)置的預(yù)定讀取次數(shù)時停止掉電,節(jié)點篩選模塊讀取先進 先出存儲器中存儲的每次掉電后各節(jié)點的數(shù)據(jù)值,并將變化次數(shù)達到門檻值的節(jié)點地址存 入隨機存儲器;節(jié)點篩選模塊隨后計算最小熵,若計算的最小熵的值小于0.4則向控制模塊 發(fā)送提示更換SRAM的信號,否則向控制模塊發(fā)送完成篩選的信號;輸出模塊按照隨機存儲 中存儲的地址通過讀取模塊讀取SRAM中相應(yīng)節(jié)點的數(shù)據(jù)值,并將數(shù)據(jù)進行哈希函數(shù)處理后 輸出;當控制模塊接到重播請求時,重新通過讀取模塊控制SRAM掉電,重新篩選節(jié)點,重新 將相應(yīng)節(jié)點的數(shù)據(jù)值進行哈希函數(shù)處理后再輸出。6. 根據(jù)權(quán)利要求5所述的基于SRAM PUF的熵提取電路,其特征在于,控制模塊存儲預(yù)定 讀取次數(shù)、門檻值以及最小熵的值;控制模塊同時控制讀取模塊實時修改掉電時間;每一次 進行篩選時,控制模塊都會將最新的預(yù)定讀取次數(shù)、最小熵的值和門檻值發(fā)送給節(jié)點篩選 模塊。
【文檔編號】H04L9/32GK106055491SQ201610373362
【公開日】2016年10月26日
【申請日】2016年5月31日
【發(fā)明人】李冰, 王凱, 涂云晶, 楊超凡, 陳帥, 周岑軍, 金濤, 顧巍, 趙霞, 劉勇, 王剛, 董乾
【申請人】東南大學