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