基于Virtex-5平臺(tái)的真隨機(jī)數(shù)發(fā)生器的設(shè)計(jì)實(shí)現(xiàn)
真隨機(jī)數(shù)發(fā)生器(TRNG)在統(tǒng)計(jì)學(xué)、信息安全等領(lǐng)域有著廣泛的應(yīng)用。在這些領(lǐng)域中,不僅要求數(shù)據(jù)序列分布均勻、彼此獨(dú)立,而且要求其具有不可預(yù)測(cè)性,能夠抵御針對(duì)隨機(jī)性的攻擊。B.Sunar,W.J.Martin和D.R.Stinson提出,真隨機(jī)數(shù)發(fā)生器的性能受3個(gè)因素的影響:熵源(Entropy Source),采集方式(Harvesting Mechanism)和后續(xù)處理(Post-Processing)。在電路系統(tǒng)中最常見的三種真隨機(jī)數(shù)產(chǎn)生方法為:1)直接放大法:放大電路中的電阻熱噪聲等物理噪聲,通過比較器進(jìn)行比較后獲得隨機(jī)數(shù)序列;2)振蕩采樣法:用帶有抖動(dòng)的慢振蕩器通過D觸發(fā)器采樣一個(gè)周期固定的快振蕩器,輸出隨機(jī)序列;3)離散時(shí)間混沌法:利用混沌電路不可預(yù)測(cè)以及對(duì)初始條件敏感的依賴性的特點(diǎn)產(chǎn)生隨機(jī)序列?;谀M電路的結(jié)構(gòu),熵源的統(tǒng)計(jì)分布更加理想,且熵源噪聲不隨采樣周期的變化而改變;基于數(shù)字電路的結(jié)構(gòu),集成度高,便于在FPGA等通用可編程平臺(tái)上實(shí)現(xiàn),但熵源的統(tǒng)計(jì)特性與模擬電路相比不夠理想。
本文引用地址:http://2s4d.com/article/269579.htm本文嘗試了一種用純數(shù)字電路實(shí)現(xiàn)的TRNG結(jié)構(gòu),且不使用諸如PLL等特殊資源,便于設(shè)計(jì)由FPGA驗(yàn)證移植到芯片設(shè)計(jì)。其核心思想是使用反相器和延時(shí)單元構(gòu)成兩個(gè)相互獨(dú)立的振蕩器,由于內(nèi)部噪聲的差異引起的相位偏移作為熵源,經(jīng)過一段時(shí)間振蕩后,隨機(jī)的狀態(tài)由數(shù)字雙穩(wěn)態(tài)電路鎖存。多組振蕩器的輸出,經(jīng)過異或和同步處理后得到隨機(jī)序列。該TRNG在FPGA物理平臺(tái)上實(shí)現(xiàn)并進(jìn)行了測(cè)試驗(yàn)證。
1 TRNG的設(shè)計(jì)
1.1 相位漂移與抖動(dòng)
由于受到電路中噪聲的影響,數(shù)字電路中時(shí)鐘信號(hào)的周期在每個(gè)不同的周期上可能縮短或者加長(zhǎng),這就是時(shí)鐘抖動(dòng)。抖動(dòng)可以用許多方法來衡量和表征,它是一個(gè)均值為零的隨機(jī)變量。振蕩器起振時(shí)刻的差異和電路元件的工藝偏差,使得振蕩器間存在相位漂移。因此抖動(dòng)信號(hào)和相位漂移適合在數(shù)字電路中作為TRNG的隨機(jī)源。
1.2 亞穩(wěn)態(tài)
鎖存器是有邏輯‘1’和‘0’兩個(gè)穩(wěn)定狀態(tài)的雙穩(wěn)態(tài)器件,但是在特殊情況下其可能進(jìn)入亞穩(wěn)態(tài),此時(shí)它的輸出是介于‘1’和‘0’之間的中間電平。如圖1所示鎖存器用兩個(gè)反相器和兩個(gè)開關(guān)表征。當(dāng)鎖存器導(dǎo)通時(shí),采樣開關(guān)閉合,保持開關(guān)打開(圖a);當(dāng)鎖存器關(guān)閉時(shí),采樣開關(guān)打開,保持開關(guān)閉合(圖b)。圖c展示了兩個(gè)反相器的直流傳輸特性。當(dāng)鎖存器關(guān)閉時(shí)A=B,穩(wěn)態(tài)是A=B=0和A=B=VDD,亞穩(wěn)態(tài)為A=B= Vm,其中Vm不是一個(gè)合理的邏輯值。因?yàn)殡娖皆谠擖c(diǎn)是相互穩(wěn)定的并且可以無限期停留,所以稱該點(diǎn)為亞穩(wěn)態(tài)。但是,任何噪聲或者其他干擾都會(huì)使得A和B最終穩(wěn)定在兩個(gè)穩(wěn)態(tài)中的一個(gè)狀態(tài)。圖d非常形象地表征了亞穩(wěn)態(tài),它就好像處于山頂?shù)男∏蛉魏胃蓴_都會(huì)使小球滾落到山兩端的穩(wěn)定狀態(tài)。
1.3 振蕩器的設(shè)計(jì)
如圖2所示,二選一復(fù)用器既作為延遲單元又作為選通單元使用。當(dāng)選通信號(hào)為‘1’時(shí),形成兩個(gè)相互獨(dú)立、自由振蕩的環(huán)形振蕩器。當(dāng)選通信號(hào)為‘0’時(shí),兩組反相器交叉相連形成雙穩(wěn)態(tài)器件。自由振蕩時(shí),兩個(gè)振蕩器之間存在著抖動(dòng)和相位偏移。在振蕩的停止時(shí)刻,即振蕩環(huán)路斷開、兩組反相器交叉連接時(shí),反相器的瞬時(shí)輸出電壓以及內(nèi)部噪聲的絕對(duì)和相對(duì)值決定了電路最終穩(wěn)定在哪個(gè)邏輯值上。有時(shí)即使反相器跨接在一起,電路也會(huì)振蕩很長(zhǎng)一段時(shí)間才能穩(wěn)定下來,形成亞穩(wěn)態(tài)。綜上所述,隨機(jī)序列的來源用到了抖動(dòng)和亞穩(wěn)態(tài)兩種機(jī)制。
波形如圖3所示,為了方便數(shù)據(jù)采集選通信號(hào)是由時(shí)鐘經(jīng)過分頻得到的。在自由振蕩階段,輸出信號(hào)快速變化不屬于任何穩(wěn)定狀態(tài),在圖中用斜線表示。在解析階段,電路是雙穩(wěn)態(tài)器件,此時(shí)應(yīng)該保持解析時(shí)間足夠長(zhǎng),從而使輸出電平在大多數(shù)情況下穩(wěn)定在邏輯‘1’或‘0’。
1.4 隨機(jī)源模塊的電路設(shè)計(jì)
各個(gè)振蕩器的輸出經(jīng)過異或運(yùn)算可以增加隨機(jī)性,而亞穩(wěn)態(tài)的傳播會(huì)造成后續(xù)電路的錯(cuò)誤動(dòng)作,因此使用同步器將異或后的隨機(jī)序列與后續(xù)電路隔離開來,同時(shí)也方便采集穩(wěn)定的輸出序列做性能分析。此處采用了三級(jí)寄存器的同步結(jié)構(gòu),由MTBF(Mean Time Between Failure)的定義可知,平均需要經(jīng)過數(shù)百年時(shí)間才會(huì)發(fā)生一次亞穩(wěn)態(tài)通過同步器向下傳播的事件,因此是滿足設(shè)計(jì)要求的。該模塊電路圖如圖4所示。
1.5 后續(xù)處理模塊的設(shè)計(jì)
理想情況下,D觸發(fā)器所采集的信號(hào)具有隨機(jī)的統(tǒng)計(jì)特性,可是FPGA內(nèi)部電路不可避免地會(huì)受到溫度漂移、電壓抖動(dòng)等不良因素影響,從而導(dǎo)致采樣得到的隨機(jī)信號(hào)中存在偏置,影響結(jié)果的統(tǒng)計(jì)特性。所以在采樣得到隨機(jī)序列后要對(duì)數(shù)據(jù)進(jìn)行消偏處理,使0和1出現(xiàn)的概率相當(dāng)。
本設(shè)計(jì)采用16位最大長(zhǎng)度二進(jìn)制偽隨機(jī)序列(Pseudo Random Binary Sequence)的輸出與采樣得到的隨機(jī)序列進(jìn)行異或運(yùn)算作為后續(xù)處理,PRBS產(chǎn)生電路消耗資源少并且使用線性反饋移位寄存器實(shí)現(xiàn),非常適合于在FPGA上實(shí)現(xiàn)。它的生成多項(xiàng)式是:
多項(xiàng)式表示如圖5所示。
評(píng)論