鄒小花 李房云
摘要:真隨機(jī)數(shù)發(fā)生器(TRNG) 是一種用于生成真隨機(jī)數(shù)的設(shè)備,是安全芯片中的重要單元之一,生成的真隨機(jī)數(shù)是確保通信加密及身份認(rèn)證等密碼協(xié)議安全性的必要工具。仿真實(shí)驗(yàn)結(jié)果表明,隨著抖動(dòng)源抖動(dòng)程度的增大,每次采樣的熵趨近于1,即使在最壞的情況下也能達(dá)到誤差低于10-4的水平。文章進(jìn)一步分析環(huán)振蕩器(RO)的數(shù)學(xué)模型并提出一種基于環(huán)振蕩器的高效率、低成本的真隨機(jī)數(shù)發(fā)生器。
關(guān)鍵詞:真隨機(jī)數(shù)發(fā)生器;TRNG;環(huán)振蕩器;RO;抖動(dòng)源;jitter
中圖分類號(hào):TN79,TN918? ? ? ? 文獻(xiàn)標(biāo)識(shí)碼:A
文章編號(hào):1009-3044(2024)09-0008-04
開放科學(xué)(資源服務(wù))標(biāo)識(shí)碼(OSID)
0 引言
隨機(jī)數(shù)在現(xiàn)實(shí)世界中有廣泛的應(yīng)用,比如保障互聯(lián)網(wǎng)安全的各種加密算法、計(jì)算機(jī)仿真、電子游戲、抽簽等方面。隨機(jī)數(shù)分為兩種,偽隨機(jī)數(shù)和真隨機(jī)數(shù)。偽隨機(jī)數(shù)是以數(shù)論和計(jì)算機(jī)理論為基礎(chǔ)生成的,實(shí)現(xiàn)方便、分布均勻、成本低。由于存在有限的可計(jì)算狀態(tài),偽隨機(jī)數(shù)具有周期性,使其很容易破解[1]。自然現(xiàn)象或物理過程中的各種隨機(jī)噪聲是真隨機(jī)數(shù)發(fā)生器(True Random Number Generator,TRNG)產(chǎn)生隨機(jī)數(shù)的方式。偽隨機(jī)數(shù)存在的周期性問題的解決方法讓序列具有了真正的隨機(jī)性,根據(jù)熱噪聲、閃爍噪聲等隨機(jī)噪聲往往都是不可預(yù)測和產(chǎn)生的隨機(jī)數(shù)無規(guī)律難破解的特點(diǎn)。真隨機(jī)數(shù)發(fā)生器產(chǎn)生的隨機(jī)數(shù)存在生成速率相對(duì)較慢、隨機(jī)數(shù)的統(tǒng)計(jì)特性不好、內(nèi)外部環(huán)境影響的問題。如何設(shè)計(jì)滿足現(xiàn)代加密系統(tǒng)加密需求、具備良好性能的隨機(jī)數(shù)已成為研究的重要問題。關(guān)注熵源的設(shè)計(jì)和優(yōu)化非常重要,因?yàn)殪卦吹钠焚|(zhì)從根本上決定著隨機(jī)數(shù)發(fā)生器性能的好壞[2]。
梳理國內(nèi)外相關(guān)研究的現(xiàn)狀表明,有些科研人員已經(jīng)實(shí)現(xiàn)了根據(jù)不同原理結(jié)構(gòu)設(shè)計(jì)的真隨機(jī)數(shù)發(fā)生器。國內(nèi)科研人員如魯迎春提出基于可配置異步反饋環(huán)形振蕩器的真隨機(jī)數(shù)發(fā)生器,利用與非門和異或門形成可配置的異步反饋環(huán)形振蕩器,改善熵源的隨機(jī)性通過增加相位噪聲和擴(kuò)大時(shí)間抖動(dòng)范圍來實(shí)現(xiàn)[3]。汪鵬君提出基于壓控振蕩器的真隨機(jī)數(shù)發(fā)生器,通過電阻熱噪聲放大后作為VCO的控制信號(hào),振蕩器中心頻率隨機(jī)抖動(dòng)[4]。這些真隨機(jī)數(shù)發(fā)生器設(shè)計(jì)方法中有的隨機(jī)數(shù)發(fā)生頻率太低、有的算法好,但卻實(shí)現(xiàn)難度大、成本高,有些需要特定的工作環(huán)境。基于電路噪聲的隨機(jī)數(shù)是不可預(yù)測的,具有高安全性。目前基于數(shù)字電路的真隨機(jī)數(shù)發(fā)生器設(shè)計(jì)方法有振蕩器采樣、亞穩(wěn)態(tài)電路等。根據(jù)熵源產(chǎn)生隨機(jī)數(shù)的原理[5-8],以基于環(huán)振蕩器的真隨機(jī)數(shù)發(fā)生器為研究對(duì)象,給出了環(huán)振蕩器RO的數(shù)學(xué)模型分析,通過在環(huán)路中添加多路選擇器的方法,使熵源功耗低、體積小、適應(yīng)性強(qiáng),最后采用Matlab對(duì)模型進(jìn)行仿真。
1 真隨機(jī)數(shù)發(fā)生器設(shè)計(jì)
真隨機(jī)數(shù)發(fā)生器分成三個(gè)功能模塊:熵源、采樣/量化、數(shù)字后處理。如圖1所示,分別對(duì)應(yīng)產(chǎn)生隨機(jī)數(shù)的三個(gè)階段。
熵源是用來產(chǎn)生原始數(shù)據(jù)列,這里產(chǎn)生的信號(hào)是模擬隨機(jī)信號(hào)。采樣/量化是對(duì)前階段產(chǎn)生的隨機(jī)信號(hào)采樣和量化,通過D觸發(fā)器、模擬開關(guān)等實(shí)現(xiàn)。如果熵源的隨機(jī)性差或采樣電器存在偏置性,后處理單元會(huì)對(duì)采樣量化后的數(shù)字序列進(jìn)一步處理,保證輸出隨機(jī)數(shù)具有良好的統(tǒng)計(jì)特性。
利用振蕩器中存在的相位噪聲和器件的差異性來產(chǎn)生隨機(jī)數(shù)?;诃h(huán)振蕩器采樣TRNG如圖2所示。至少需要兩個(gè)頻率不同的振蕩器,高頻振蕩器的信號(hào)采樣通過D觸發(fā)器完成,采樣時(shí)鐘是低頻時(shí)鐘,熵源是高頻振蕩器里的時(shí)序抖動(dòng)。實(shí)際設(shè)計(jì)中,高頻振蕩器的振動(dòng)頻率大于低頻振蕩器,輸出結(jié)果具有不確定性。如果存在非隨機(jī)噪聲,這種方法很有效。由于振蕩器的時(shí)序抖動(dòng)不足,只對(duì)熵源采樣是不夠的,生成的隨機(jī)數(shù)的統(tǒng)計(jì)性不理想,需要在熵源和采樣兩個(gè)單元進(jìn)行優(yōu)化。
在不同的具體周期上會(huì)出現(xiàn)的不可預(yù)測的縮短或變長為時(shí)鐘周期,振蕩器的時(shí)鐘周期在某一個(gè)周期上的暫時(shí)變化為時(shí)鐘抖動(dòng)[9]。振蕩器的振蕩頻率在中心頻率附近輕微的無規(guī)則變動(dòng)是時(shí)鐘抖動(dòng)在時(shí)域上的反映[10]。將奇數(shù)個(gè)反相器首尾相連并將最后一個(gè)反相器的輸出反饋到第一個(gè)反相器的輸入端是采用環(huán)形振蕩器的結(jié)構(gòu)。 環(huán)形振蕩器結(jié)構(gòu)圖如圖3所示。
環(huán)形振蕩器結(jié)構(gòu)圖中的振蕩器的時(shí)鐘信號(hào)周期與外部信號(hào)沒有關(guān)系[11-13],與反相器的門延遲和反相器的個(gè)數(shù)相關(guān)。假設(shè)單個(gè)反相器的延遲時(shí)長為?t,反相器的個(gè)數(shù)為 N,各個(gè)反相器的延遲時(shí)長在相同的情況下環(huán)形振蕩器的振蕩周期為:
[T=2*N*Δt]? ? ? ? ?(1)
通過三個(gè)反相器(A,B,C)的例子推導(dǎo)出一個(gè)環(huán)形振蕩器的振蕩周期。[T0] 為某一時(shí)刻,反相器 A 的輸出端(反相器 B 的輸入端)在延遲?t后將會(huì)變?yōu)榈碗娖?,反相?A 的輸入端為高電平,則此時(shí)t = [T0]+ ?t。
當(dāng)t =[T0]+ 2?t時(shí),反相器 B 的輸出端(反相器 C 的輸入端)將變?yōu)楦唠娖健?/p>
當(dāng)t = [T0]+ 3?t時(shí),反相器 A 的輸入端電平與 [T0]時(shí)刻相反,反相器 C 的輸出端(反相器 A 的輸入端)將變?yōu)榈碗娖?,通過推導(dǎo)得出從[T0] 時(shí)刻開始共需要 6 個(gè)?t后完成一個(gè)完整的周期振蕩。如此反復(fù)進(jìn)行,反相器 A 的輸入端再次變回高電平,振蕩頻率為:
[T=2*3*Δt=6Δt]? ? ? ? ? ? (2)
完全由反相器構(gòu)成的環(huán)形振蕩器的缺點(diǎn)是功耗相對(duì)較大,當(dāng)不需要隨機(jī)數(shù)發(fā)生器工作時(shí),關(guān)閉環(huán)振,從而降低電路整體的功耗,通過環(huán)路中添加多路選擇器控制環(huán)振[7]。
方案的RO布局說明中,ro_clk中的震蕩環(huán)完全由奇數(shù)個(gè)反相器構(gòu)成,這個(gè)震蕩環(huán)的頻率設(shè)計(jì)為30M左右,即從震蕩環(huán)起始點(diǎn)經(jīng)過整個(gè)震蕩環(huán)返回到起始點(diǎn)的這條環(huán)路徑的延遲設(shè)計(jì)為15ns左右[14-18]。ro_source中的三十二個(gè)震蕩環(huán)為可控的震蕩環(huán),每個(gè)震蕩環(huán)由一個(gè)與非門和偶數(shù)個(gè)反相器構(gòu)成,三十二個(gè)震蕩環(huán)的震蕩頻率盡量保持不同,具體配置如表1所示。
2 性能分析
2.1 理想情況分析
在這里,理想情況是指沒有jitter的情況,此時(shí)整個(gè)過程是一個(gè)確定性的過程[6]。我們可以看到,32個(gè)ro_source一共分為兩類:ro_clk的周期15ns是r1~r9、r12、r13、r17、r22、r32(共14個(gè))等于ro的周期的倍數(shù),因此每次采樣這些ro的采樣結(jié)果都是一樣的;其余18個(gè)ro的周期和15ns不存在整除關(guān)系,因此ro的采樣結(jié)果是不同的,但是對(duì)于這些ro來說,采樣的結(jié)果也只有若干種可能[16]。
2.2 加入抖動(dòng)后的分析
將一次采樣作為一個(gè)隨機(jī)事件來考察,采樣的結(jié)果[Bout∈{0,1}]。令[xi]表示ri (i=1,2,...,32) ,在此次采樣時(shí)輸出的隨機(jī)變量,則有[Bout=⊕32i=1xi],[Bout=1]的概率為
[P(Bout=1)=12+(-2)31?(P(x1=1)-12)?...]? ? ? ? ?[? (P(X32=1)]? ? (3)
Xi=1的概率,采用如下記號(hào):
[Ti]:ri的周期;
T:采樣周期,固定為150(以0.1ns為單位);
[T1iTTi]:在一個(gè)周期T內(nèi),ri采樣次數(shù)的期望;
[X1=1]:一次采樣中ri處在周期[Ti]的前半段;
[X1=0]:一次采樣中ri處在周期[Ti]的后半段;
[tio]:ri在采樣周期開始時(shí)的延遲;
[Jij]:在一個(gè)采樣周期內(nèi),ri在第j個(gè)周期的jitter;
[σi]:ri的jitter的標(biāo)準(zhǔn)差;同時(shí)滿足下述兩個(gè)條件時(shí),可以認(rèn)為發(fā)生采樣時(shí),ri處在第m+1個(gè)[Ti]周期內(nèi):
[ti0+j=1m(Ti+Ji1) [T-ti0+j=1m(Ti+Ji1) 滿足下述條件時(shí),[X1=1]: [T-ti0+j=1m(Ti+Ji1) 進(jìn)一步令[Ji=mj=1Jij],則有: [j=1m(Ti+Ji1)=m?Ti+j=1mJi1=m?Ti+Ji]? (7) 其中:[Ji]為m個(gè)獨(dú)立同分布的高斯jitter之和,因此也服從高斯分布,[Ji~N(0,m?σ2i]) 。綜上可知, [P(xi=1)=k=1∞(P(ti0+j=1k(Ti+Jik+1)] [?P(T-ti0+j=1k(Ti+Ji1) 在jitter值合理的前提下,式(8)中的k值不需要取[1,∞]這么大的范圍,假設(shè)jitter的標(biāo)準(zhǔn)差為σ,那么只需要[T1i]前后各取[4×σTi]個(gè)就夠了,并且近似認(rèn)為式(6)蘊(yùn)涵式(5),因此式(8)修正為: [Bout=1]的概率,將(9)代入(3)可以得到[Bout=1]的概率。進(jìn)一步,按照每個(gè)jitter都服從均值為0的正態(tài)分布的假設(shè),可以進(jìn)一步展開表達(dá)式。熵分析根據(jù)熵的定義,在一次采樣中,熵值為: [Entropy(Bout)=-P(Bout=1)?log2(P(Bout=1))-P(Bout=0)?log2(P(Bout=0))]? ? ? (10) 3 數(shù)值仿真 TRNG的實(shí)驗(yàn)環(huán)境由FPGA開發(fā)板、外部時(shí)鐘源以及邏輯分析儀組成。 軟件環(huán)境為QuartusII 軟件進(jìn)行集成開發(fā)。硬件平臺(tái)是基于 Altera 開發(fā)平臺(tái)的 FPGA 開發(fā)板,開發(fā)板具有豐富的外圍接口,包括PS/2 接口、串口、VGA 接口、網(wǎng)口等。FPGA產(chǎn)生隨機(jī)數(shù)據(jù),邏輯分析采集數(shù)據(jù)后,檢驗(yàn)隨機(jī)序列的性能。使用Matlab對(duì)前述數(shù)學(xué)模型進(jìn)行仿真,實(shí)驗(yàn)共進(jìn)行了10次。采樣數(shù)據(jù)如圖4和圖5所示。 從圖4可以看出,隨著jitter的增大,P(Bout=1)的概率越來越趨近于0.5,即每次采樣的熵趨近于1。Jitter的標(biāo)準(zhǔn)差以0.1ms為單位,P(Bout=1)-0.5的值隨jitter標(biāo)準(zhǔn)差的變化而越來越小。振蕩器加入抖動(dòng)的數(shù)量直接影響隨機(jī)源模塊產(chǎn)生序列的統(tǒng)計(jì)性能,振蕩器抖動(dòng)數(shù)量越多,TRNG輸出序列的隨機(jī)性越好。 如果振蕩器加入的抖動(dòng)太多,會(huì)消耗過多的硬件資源,功耗也過大。從圖5可以看出,即使最壞的情況P(Bout=1)也非常接近0.5,最壞的情況下P(Bout=1)-0.5= 3.69E-05。這個(gè)實(shí)驗(yàn)結(jié)果大大改善了現(xiàn)有真隨機(jī)數(shù)的熵源和采樣的方式,提高了TRNG輸出的統(tǒng)計(jì)特性和隨機(jī)性。 4 結(jié)束語 本文根據(jù)熵源產(chǎn)生隨機(jī)數(shù)的原理,提出了一種高速的熵源改進(jìn)結(jié)構(gòu)。該結(jié)構(gòu)解決了制約隨機(jī)數(shù)發(fā)生器輸出速率的困難,采取增加振蕩器熵源的抖動(dòng)和輪流采樣方式來降低單一熵源的采樣速率,輸出序列的相關(guān)性得到減弱,提高輸出序列的隨機(jī)性。性能分析表明加入抖動(dòng)后,采樣的熵趨近于1,仿真結(jié)果表明,重新組合熵源產(chǎn)生的隨機(jī)數(shù)在提高隨機(jī)數(shù)生成速率的同時(shí)增強(qiáng)了真隨機(jī)數(shù)發(fā)生器的抗攻擊能力。 參考文獻(xiàn): [1] 張鴻飛,王堅(jiān),羅春麗,等.基于抖動(dòng)的高速真隨機(jī)數(shù)發(fā)生器的設(shè)計(jì)和實(shí)現(xiàn)[J].核技術(shù),2011,34(7):556-560. [2] 周新淳.一位硬件隨機(jī)數(shù)發(fā)生器的設(shè)計(jì)與仿真[J].電子設(shè)計(jì)工程,2017,25(6):19-22. [3] 魯迎春,韓倩,劉新穎,等.基于可配置異步反饋環(huán)形振蕩器的真隨機(jī)數(shù)發(fā)生器[J].電子測量與儀器學(xué)報(bào),2022,36(11):126-133. [4] 汪鵬君,李楨,李剛,等.基于壓控振蕩器的真隨機(jī)數(shù)發(fā)生器設(shè)計(jì)[J].電子學(xué)報(bào),2019,47(2):417-421. [5] 朱亮亮.真隨機(jī)數(shù)發(fā)生器的研究與設(shè)計(jì)[D].杭州:杭州電子科技大學(xué),2017. [6] 金杰,羅敏,宮月紅.一種基于熱噪聲的真隨機(jī)數(shù)發(fā)生器的設(shè)計(jì)與實(shí)現(xiàn)[J].微電子學(xué)與計(jì)算機(jī),2015,32(10):7-11,16. [7] 趙海英.隨機(jī)數(shù)發(fā)生器隨機(jī)性檢測系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D].成都:電子科技大學(xué),2014. [8] 董俊,朱文,蒲秀英,等.物理真隨機(jī)數(shù)發(fā)生器的設(shè)計(jì)[J].電光與控制,2013,20(2):93. [9] 陳爽,曹素梅,左金印.隨機(jī)數(shù)發(fā)生器檢測與設(shè)計(jì)[J].信息安全與通信保密,2012,10(12):103-105. [10] 李清,王立輝,劉丹,等.一種基于 Galois 環(huán)振的真隨機(jī)數(shù)發(fā)生器設(shè)計(jì)[J].科學(xué)技術(shù)與工程,2012, 12(17):4057-4060. [11] 郭亞煒,鄧煥,曾曉洋,等.基于振蕩器的真隨機(jī)數(shù)發(fā)生器:CN1752924A[P].2006-03-29. [12] 李艷平.高速時(shí)鐘信號(hào)抖動(dòng)的ADC測量技術(shù)研究[D].成都:電子科技大學(xué),2009. [13] WIECZOREK P Z,GO?OFIT K.Dual-metastability time-competitive true random number generator[J].IEEE Transactions on Circuits and Systems I:Regular Papers,2014,61(1):134-145. [14] 張建國,化騰飛,馬荔,等.基于物理噪聲源的真隨機(jī)數(shù)發(fā)生器的設(shè)計(jì)與實(shí)現(xiàn)[J].機(jī)械工程與自動(dòng)化,2015(5):1-3. [15] 張亮,戎蒙恬,諸悅,等.基于混沌系統(tǒng)的真隨機(jī)數(shù)發(fā)生器芯片設(shè)計(jì)和實(shí)現(xiàn)[J].上海交通大學(xué)學(xué)報(bào),2006,40(3):421-424,430. [16] 宋勇,陳賢富,姚海東.隨機(jī)數(shù)發(fā)生器探討及一種真隨機(jī)數(shù)發(fā)生器實(shí)現(xiàn)[J].計(jì)算機(jī)工程,2007,33(2):71-73. [17] 孫曹鈞.數(shù)字真隨機(jī)數(shù)發(fā)生器的設(shè)計(jì)與實(shí)現(xiàn)[D].南京:東南大學(xué),2014. [18] JOHNSON A P,CHAKRABORTY R S,MUKHOPADYAY D.An improved DCM-based tunable true random number generator for xilinx FPGA[J].IEEE Transactions on Circuits and Systems II:Express Briefs,2017,64(4):452-456. 【通聯(lián)編輯:代影】