本發(fā)明涉及真隨機數(shù)發(fā)生器領(lǐng)域,尤其涉及一種基于加密算法的高速真隨機數(shù)的產(chǎn)生方法。
背景技術(shù):
真隨機數(shù)發(fā)生器(TRNG)是信息加密設(shè)備中一個重要的組成部分,它產(chǎn)生的不可預(yù)知、不可再現(xiàn)的密鑰數(shù)字串對信息加密有著重要的作用。從某種程度上講,隨機數(shù)的隨機性和安全性決定了整個加密算法的性能和安全性?;谖锢黼S機源的真隨機數(shù)雖然在隨機序列的長度、獨立性等方面相比偽隨機數(shù)發(fā)生器得到了突破性進(jìn)展,但是其產(chǎn)生的真隨機數(shù)序列的隨機性不夠穩(wěn)定,隨機數(shù)的質(zhì)量不高,生成速率也較慢。因此,現(xiàn)有技術(shù)真隨機數(shù)發(fā)生器研究的一個重要方向是基于振蕩器采樣實現(xiàn)真隨機數(shù)發(fā)生器,利用CMOS環(huán)形振蕩器中的相位噪聲及相位抖動作為隨機源,可以很方便的利用純數(shù)字電路實現(xiàn)。早期的嘗試中,F(xiàn)isher、Kohlbrenner和Tkacik等人都是采用基于時鐘信號抖動的方法,實現(xiàn)了隨機數(shù)發(fā)生器,但是隨機數(shù)的生成速率不高,通常小于1Mbit/s。隨后,Sunar等人采用等長環(huán)形振蕩器實現(xiàn)了輸出速率為2.5Mbit/s的隨機數(shù)發(fā)生器。速率低主要是由于半導(dǎo)體噪聲、串?dāng)_以及其他不穩(wěn)定因素需要積累到一定程度才能引起相位抖動,通過相位抖動引起每次采樣時刻的不確定性,使輸出序列具有隨機性。參見圖1,所示為現(xiàn)有技術(shù)環(huán)形振蕩器的采樣示意圖,基于傳統(tǒng)環(huán)振的真隨機數(shù)發(fā)生器采樣一般在產(chǎn)生相位抖動的地方進(jìn)行,而從電路上電到發(fā)生相位抖動還需要經(jīng)歷過渡階段、穩(wěn)定振蕩階段以及噪聲影響的積累階段,實際采樣中如果采樣過快,則可能會因為噪聲積累不夠而造成隨機數(shù)質(zhì)量的降低,生成隨機數(shù)相關(guān)性增大,降低最終隨機數(shù)的隨機性。為了保證隨機性,每次相位抖動積累需要較長震蕩時間,導(dǎo)致生成真隨機數(shù)序列速度較慢。由此同時,噪聲在一定環(huán)境下趨于穩(wěn)定,導(dǎo)致了生成真隨機數(shù)序列仍具有一定相關(guān)性。為了克服上述技術(shù)問題,現(xiàn)有技術(shù)通過在環(huán)形振蕩器各個環(huán)路中增加多項式反饋環(huán),通過反饋縮減相位抖動的積累時間,同時,在一定程度上也能夠使序列相關(guān)性減弱。比如,Goli c'首先提出了Fibonacci環(huán)形振蕩器(FIRO)和Galois(GARO)環(huán)形振蕩器的概念,參見圖2,所示為Fibonacci環(huán)形振蕩器的結(jié)構(gòu)框圖,采用n個反相器連接成環(huán)形振蕩器,每個反相器的輸出端通過反饋環(huán)路反饋至第一個反相器的輸入端;參見圖3,所示為Galois環(huán)形振蕩器的結(jié)構(gòu)框圖,采用n個反相器連接成環(huán)形振蕩器,第n個反相器的輸出端信號通過反饋環(huán)路反饋至每個反相器的輸入端。進(jìn)一步的,等人在Goli′c的基礎(chǔ)上采用7個31級GARO與15級FIRO構(gòu)成的熵源,經(jīng)過馮諾依曼糾偏法后處理后,能夠達(dá)到最高31.25Mbit/s的輸出速率。但是,上述電路結(jié)構(gòu)中相位抖動仍然需要相當(dāng)?shù)姆e累時間,導(dǎo)致序列速度提高有限;另外相位抖動比較小的時候輸出頻譜中可能會存在一個優(yōu)勢頻率,這會導(dǎo)致輸出序列具有相關(guān)性;同時采樣頻率的提高會造成序列偏置加劇,序列中0和1分布不均勻,導(dǎo)致隨機數(shù)質(zhì)量不佳。
故,針對目前現(xiàn)有技術(shù)中存在的上述缺陷,實有必要進(jìn)行研究,以提供一種方案,解決現(xiàn)有技術(shù)中存在的缺陷。
技術(shù)實現(xiàn)要素:
有鑒于此,確有必要提供一種高速真隨機數(shù)的產(chǎn)生方法,能夠提高隨機數(shù)的輸出速率且極大改善隨機性,從而滿足高速加密系統(tǒng)的應(yīng)用需求。
為了克服現(xiàn)有技術(shù)的缺陷,本發(fā)明的技術(shù)方案如下:
一種高速真隨機數(shù)的產(chǎn)生方法,包括以下步驟:
采用多個亞穩(wěn)態(tài)子環(huán)振形成亞穩(wěn)態(tài)環(huán)形振蕩器并通過控制信號使每個亞穩(wěn)態(tài)子環(huán)振交替工作以下兩種工作狀態(tài):接入大環(huán)路進(jìn)入穩(wěn)定振蕩狀態(tài)或者從大環(huán)路中斷開形成獨立的子環(huán)振進(jìn)入亞穩(wěn)定狀態(tài);
采用多路選擇器連接多個亞穩(wěn)態(tài)環(huán)形振蕩器作為熵源,通過控制信號控制多路選擇器在當(dāng)前時刻僅選通一個亞穩(wěn)態(tài)環(huán)形振蕩器并在其穩(wěn)定振蕩狀態(tài)時采樣使所述熵源輸出隨機序列;
采用兩個獨立的熵源分別產(chǎn)生第一隨機序列和第二隨機序列并輸入加密運算單元;
以第一隨機序列作為明文數(shù)據(jù)且以第二隨機序列作為密鑰進(jìn)行加密運算并輸出密文數(shù)據(jù)作為隨機數(shù)輸出。
優(yōu)選地,用于產(chǎn)生第一隨機序列和第二隨機序列的兩個獨的熵源采用不同的振蕩器結(jié)構(gòu)。
優(yōu)選地,所述熵源采用多個新型FIRO環(huán)形振蕩器異或輸出或者采用多個新型GARO環(huán)形振蕩器異或輸出。
優(yōu)選地,兩個獨的熵源中,采用不同的本原多項式使所述第一隨機序列和所述第二隨機序列正交。
優(yōu)選地,所述第一隨機序列和所述第二隨機序列分別經(jīng)異或鏈電路處理后再輸出至所述加密運算單元。
優(yōu)選地,所述異或鏈電路包括多個串接的D觸發(fā)器,所述第一隨機序列或第二隨機序列串行輸入至第一個D觸發(fā)器,每個D觸發(fā)器的輸出端均與其下一級D觸發(fā)器的輸入端相連接,所述多個串接的D觸發(fā)器通過一同步時鐘信號控制每個D觸發(fā)器同時輸出信號并通過一異或門異或輸出后作為所述異或鏈電路的輸出。
優(yōu)選地,所述加密運算單元為DES加密運算單元。
優(yōu)選地,所述新型FIRO環(huán)形振蕩器包括多路改進(jìn)型FIRO環(huán)形振蕩器,每路改進(jìn)型FIRO環(huán)形振蕩器的輸出端分別與多路選擇器的多個輸入端相連接,所述多路選擇器受控于控制信號使其在當(dāng)前時刻僅選通一路改進(jìn)型FIRO環(huán)形振蕩器并輸出信號;所述改進(jìn)型FIRO環(huán)形振蕩器采用n個反相器連接成環(huán)形振蕩器,每個反相器的輸出信號均通過反饋環(huán)路反饋至第一個反相器的輸入端,每個反相器的輸入端都接一個二選一選擇器,所述二選一選擇器的輸出端與該反相器的輸入端相連接,所述二選一選擇器的第一輸入端與該反相器的輸出端相連接,所述二選一選擇器的第二輸入端與前級反相器的輸出端相連接,所述二選一選擇器受控于控制信號使其選通第一輸入端或第二輸入端,當(dāng)所述第一輸入端選通時,每個反相器從大環(huán)路中斷開,形成獨立的子環(huán)振進(jìn)入亞穩(wěn)定狀態(tài);當(dāng)所述第二輸入端選通時,每個反相器從子環(huán)振斷開,重新接入大環(huán)振,快速進(jìn)入穩(wěn)態(tài)。
優(yōu)選地,所述新型GARO環(huán)形振蕩器包括多路改進(jìn)型GARO環(huán)形振蕩器,每路改進(jìn)型GARO環(huán)形振蕩器的輸出端分別與多路選擇器的多個輸入端相連接,所述多路選擇器受控于控制信號使其在當(dāng)前時刻僅選通一路改進(jìn)型GARO環(huán)形振蕩器并輸出信號;所述改進(jìn)型GARO環(huán)形振蕩器采用n個反相器連接成環(huán)形振蕩器,第n個反相器的輸出端信號通過反饋環(huán)路反饋至每個反相器的輸入端,每個反相器的輸入端都接一個二選一選擇器,所述二選一選擇器的輸出端與該反相器的輸入端相連接,所述二選一選擇器的第一輸入端與該反相器的輸出端相連接,所述二選一選擇器的第二輸入端與前級反相器的輸出端相連接,所述二選一選擇器受控于控制信號使其選通第一輸入端或第二輸入端,當(dāng)所述第一輸入端選通時,每個反相器從大環(huán)路中斷開,形成獨立的子環(huán)振進(jìn)入亞穩(wěn)定狀態(tài);當(dāng)所述第二輸入端選通時,每個反相器從子環(huán)振斷開,重新接入大環(huán)振,快速進(jìn)入穩(wěn)態(tài)。
優(yōu)選地,所述熵源采用9個新型FIRO環(huán)形振蕩器異或輸出或者采用9個新型GARO環(huán)形振蕩器異或輸出。
與現(xiàn)有技術(shù)相比較,本發(fā)明采用加密的方式實現(xiàn)高速產(chǎn)生真隨機數(shù)的方法,它的熵源是在FIRO和GARO結(jié)構(gòu)的基礎(chǔ)上通過加入亞穩(wěn)態(tài)控制電路,使振蕩器的輸出不斷的在亞穩(wěn)態(tài)與穩(wěn)態(tài)之間轉(zhuǎn)換,從而使熵源獲得足夠的熵值,并通過異或鏈和DES算法將生成隨機數(shù)進(jìn)行均衡校正實現(xiàn)兩種環(huán)形振蕩器產(chǎn)生隨機數(shù)的組合,最終隨機數(shù)生成速率達(dá)到400Mbit/s。
附圖說明
圖1為現(xiàn)有技術(shù)環(huán)形振蕩器的采樣示意圖。
圖2為Fibonacci環(huán)形振蕩器(FIRO)的結(jié)構(gòu)框圖。
圖3為Galois(GARO)環(huán)形振蕩器的結(jié)構(gòu)框圖。
圖4為本發(fā)明高速真隨機數(shù)的產(chǎn)生方法的流程框圖。
圖5為實現(xiàn)本發(fā)明方法的高速真隨機數(shù)發(fā)生器的結(jié)構(gòu)框圖。
圖6為本發(fā)明提出的新型FIRO環(huán)形振蕩器的電路原理圖。
圖7為改進(jìn)型FIRO環(huán)形振蕩器的電路原理圖。
圖8為本發(fā)明提出的新型GARO環(huán)形振蕩器的電路原理圖。
圖9為改進(jìn)型GARO環(huán)形振蕩器的電路原理圖。
圖10為本發(fā)明采用的亞穩(wěn)態(tài)子振環(huán)的結(jié)構(gòu)框圖。
圖11為第一反饋環(huán)振真隨機源和第二反饋環(huán)振真隨機源一種實施方式的結(jié)構(gòu)框圖。
圖12為本發(fā)明采用的異或鏈電路的原理框圖。
圖13為加密運算單元的的原理框圖。
圖14為本發(fā)明真隨機數(shù)發(fā)生器的功能仿真圖。
圖15為最終輸出信號的波形圖。
如下具體實施例將結(jié)合上述附圖進(jìn)一步說明本發(fā)明。
具體實施方式
以下將結(jié)合附圖對本發(fā)明提供的一種高速真隨機數(shù)發(fā)生器作進(jìn)一步說明。
參見圖1,現(xiàn)有技術(shù)通常將隨機數(shù)采樣點設(shè)置相位抖動的地方,而相位抖動的發(fā)生還需要經(jīng)歷過渡階段、穩(wěn)定振蕩階段以及噪聲影響的積累階段,從而導(dǎo)致隨機數(shù)速率較慢。實際上,振蕩器從起振到穩(wěn)定振蕩還要經(jīng)歷的另一個不確定的亞穩(wěn)態(tài)狀態(tài),亞穩(wěn)態(tài)狀態(tài)存在與起振時的過渡階段,此時電路的輸出將會取決于電路的噪聲特性而變得具有真隨機性。只是亞穩(wěn)態(tài)狀態(tài)稍縱即逝,只存在于起振階段,進(jìn)入穩(wěn)定振蕩之后就不會再出現(xiàn)。
為了克服上述技術(shù)缺陷,本發(fā)明提出一種高速真隨機數(shù)的產(chǎn)生方法,參見圖4,所示為本發(fā)明高速真隨機數(shù)的產(chǎn)生方法的流程框圖,包括以下步驟:
步驟S1:采用多個亞穩(wěn)態(tài)子環(huán)振形成亞穩(wěn)態(tài)環(huán)形振蕩器并通過控制信號使每個亞穩(wěn)態(tài)子環(huán)振交替工作在穩(wěn)定振蕩狀態(tài)或者亞穩(wěn)態(tài)狀態(tài);當(dāng)工作在穩(wěn)定振蕩狀態(tài)時,每個亞穩(wěn)態(tài)子環(huán)振接入大環(huán)路形成環(huán)形振蕩器,從而能夠快速進(jìn)入穩(wěn)定振蕩狀態(tài);當(dāng)工作在亞穩(wěn)態(tài)時,每個亞穩(wěn)態(tài)子環(huán)振從大環(huán)路中斷開形成獨立的子環(huán)振從而進(jìn)入亞穩(wěn)定狀態(tài)。也即,通過在環(huán)形振蕩器中引入狀態(tài)切換開關(guān),從而能夠不斷地重現(xiàn)亞穩(wěn)態(tài)狀態(tài),從而將隨機數(shù)采樣點大大的提前,提高隨機數(shù)產(chǎn)生速率,同時,每次狀態(tài)切換,都會引入新的亞穩(wěn)態(tài),從而去除了兩次采樣的隨機數(shù)之間的相關(guān)性。
步驟S2:采用多路選擇器連接多個亞穩(wěn)態(tài)環(huán)形振蕩器作為熵源;通過控制信號控制多路選擇器在當(dāng)前時刻僅選通一個亞穩(wěn)態(tài)環(huán)形振蕩器并在其穩(wěn)定振蕩狀態(tài)時采樣使所述熵源輸出隨機序列。步驟S1中讓振蕩器交替工作在穩(wěn)定振蕩狀態(tài)或者亞穩(wěn)態(tài)狀態(tài),雖然能夠?qū)㈦S機數(shù)采樣點大大提前,但亞穩(wěn)態(tài)狀態(tài)仍然需要一定的積累時間。為了進(jìn)一步提高隨機數(shù)的產(chǎn)生速率,通過選擇器將多個亞穩(wěn)態(tài)環(huán)形振蕩器組合在一起,每個亞穩(wěn)態(tài)環(huán)形振蕩器都能獨立的工作,通過控制信號選擇,每個時刻僅有一個亞穩(wěn)態(tài)環(huán)形振蕩器輸出隨機數(shù),而此時其他亞穩(wěn)態(tài)環(huán)形振蕩器能夠完成亞穩(wěn)態(tài)的積累,從而理論上能夠完全消除了進(jìn)入亞穩(wěn)態(tài)的積累時間,進(jìn)一步提高隨機數(shù)產(chǎn)生的速率;同時,由于采用多個亞穩(wěn)態(tài)環(huán)形振蕩器,每個亞穩(wěn)態(tài)環(huán)形振蕩器的積累時間各不相同,有些剛剛從亞穩(wěn)態(tài)進(jìn)入穩(wěn)定振蕩狀態(tài),有些則已經(jīng)在穩(wěn)定振蕩狀態(tài)運行一段時間完成了相位抖動積累,實際上經(jīng)歷了兩次隨機過程,從而進(jìn)一步提升了隨機數(shù)的質(zhì)量,能夠完全消除兩個隨機數(shù)之間的相關(guān)性。
步驟S3:采用兩個獨立的熵源分別產(chǎn)生第一隨機序列和第二隨機序列并輸入加密運算單元;
步驟S4:以第一隨機序列作為明文數(shù)據(jù)且以第二隨機序列作為密鑰進(jìn)行加密運算并輸出密文數(shù)據(jù)作為隨機數(shù)輸出。通過兩路獨立的熵源產(chǎn)生隨機序列分別作為明文和密鑰,利用加密算法來進(jìn)一步提高生隨機數(shù)的質(zhì)量。
在一種優(yōu)選實施方式中,用于產(chǎn)生第一隨機序列和第二隨機序列的兩個獨的熵源采用不同的振蕩器結(jié)構(gòu)。而熵源采用多個新型FIRO環(huán)形振蕩器異或輸出或者采用多個新型GARO環(huán)形振蕩器異或輸出。
參見圖5,所示為實現(xiàn)本發(fā)明高速真隨機數(shù)產(chǎn)生方法的真隨機數(shù)發(fā)生器的結(jié)構(gòu)框圖,該真隨機數(shù)發(fā)生器至少包括第一反饋環(huán)振真隨機源、第二反饋環(huán)振真隨機源和加密運算單元,第一反饋環(huán)振真隨機源用于產(chǎn)生第一隨機序列,第二反饋環(huán)振真隨機源用于產(chǎn)生第二隨機序列,加密運算單元以第一隨機序列作為明文數(shù)據(jù)且以第二隨機序列作為密鑰進(jìn)行加密運算并輸出密文數(shù)據(jù)作為隨機數(shù)輸出。圖5中,第一反饋環(huán)振真隨機源和第二反饋環(huán)振真隨機源組成了熵源部分,異或鏈電路和加密運算單元組成了真隨機數(shù)發(fā)生器的后處理單元,最終真隨機數(shù)通過輸出寄存器送至片上系統(tǒng)總線。本發(fā)明通過兩路獨立的熵源產(chǎn)生隨機序列分別作為明文和密鑰,利用加密算法來進(jìn)一步提高生隨機數(shù)的質(zhì)量。
為了進(jìn)一步提高經(jīng)加密處理后序列的隨機性,兩路熵源采用不同的振蕩器結(jié)構(gòu),第一反饋環(huán)振真隨機源和第二反饋環(huán)振真隨機源至少包括一個新型FIRO環(huán)形振蕩器或新型GARO環(huán)形振蕩器。
要實現(xiàn)一個高質(zhì)量的真隨機數(shù)發(fā)生器不僅要通過后處理單元提高隨機數(shù)質(zhì)量,同時還要提高熵源的品質(zhì)?,F(xiàn)有技術(shù)也提出了許多不同原理不同結(jié)構(gòu)的設(shè)計方案,比如圖2和圖3所示的Fibonacci環(huán)形振蕩器(FIRO)和Galois(GARO)環(huán)形振蕩器,其優(yōu)點在于設(shè)計簡單,僅需使用少量邏輯塊,利用相對較少的資源就可輸出很高熵值,并且能夠在所有的FPGA家族或者在ASIC中實現(xiàn);能夠利用FPGA工具全自動綜合。但是目前的實現(xiàn)方法中輸出速率都相對較低,且輸出頻譜中可能會存在一個優(yōu)勢頻率。針對上述技術(shù)缺陷,本發(fā)明從隨機數(shù)生成速率的角度出發(fā)對上述電路進(jìn)行了改進(jìn),提出了新型FIRO環(huán)形振蕩器和新型GARO環(huán)形振蕩器的電路結(jié)構(gòu)。
參見圖6,所示為本發(fā)明提出的新型FIRO環(huán)形振蕩器的電路原理圖,包括多路改進(jìn)型FIRO環(huán)形振蕩器,每路改進(jìn)型FIRO環(huán)形振蕩器的輸出端分別與多路選擇器的多個輸入端相連接,多路選擇器受控于控制信號使其在當(dāng)前時刻僅選通一路改進(jìn)型FIRO環(huán)形振蕩器并輸出信號。雖然圖6的電路僅給出了兩路改進(jìn)型FIRO環(huán)形振蕩器并接的情況,本領(lǐng)域普通技術(shù)人員應(yīng)該能夠明白該電路結(jié)構(gòu)理論上能夠擴充為任意路。
參見圖7,所示為改進(jìn)型FIRO環(huán)形振蕩器的電路原理圖,采用n個反相器連接成環(huán)形振蕩器,每個反相器的輸出信號均通過反饋環(huán)路反饋至第一個反相器的輸入端,每個反相器的輸入端都接一個二選一選擇器,二選一選擇器的輸出端與該反相器的輸入端相連接,二選一選擇器的第一輸入端與該反相器的輸出端相連接,二選一選擇器的第二輸入端與前級反相器的輸出端相連接,二選一選擇器受控于控制信號使其選通第一輸入端或第二輸入端,當(dāng)?shù)谝惠斎攵诉x通時,每個反相器從大環(huán)路中斷開,形成獨立的子環(huán)振進(jìn)入亞穩(wěn)定狀態(tài);當(dāng)?shù)诙斎攵诉x通時,每個反相器從子環(huán)振斷開,重新接入大環(huán)振,快速進(jìn)入穩(wěn)態(tài)。
參見圖8,所示為本發(fā)明提出的新型GARO環(huán)形振蕩器的電路原理圖,包括多路改進(jìn)型GARO環(huán)形振蕩器,每路改進(jìn)型GARO環(huán)形振蕩器的輸出端分別與多路選擇器的多個輸入端相連接,多路選擇器受控于控制信號使其在當(dāng)前時刻僅選通一路改進(jìn)型GARO環(huán)形振蕩器并輸出信號。雖然圖8的電路僅給出了兩路改進(jìn)型GARO環(huán)形振蕩器并接的情況,本領(lǐng)域普通技術(shù)人員應(yīng)該能夠明白該電路結(jié)構(gòu)理論上能夠擴充為任意路。
參見圖9,所示為改進(jìn)型GARO環(huán)形振蕩器的電路原理圖,采用n個反相器連接成環(huán)形振蕩器,第n個反相器的輸出端信號通過反饋環(huán)路反饋至每個反相器的輸入端,每個反相器的輸入端都接一個二選一選擇器,二選一選擇器的輸出端與該反相器的輸入端相連接,二選一選擇器的第一輸入端與該反相器的輸出端相連接,二選一選擇器的第二輸入端與前級反相器的輸出端相連接,二選一選擇器受控于控制信號使其選通第一輸入端或第二輸入端,當(dāng)?shù)谝惠斎攵诉x通時,每個反相器從大環(huán)路中斷開,形成獨立的子環(huán)振進(jìn)入亞穩(wěn)定狀態(tài);當(dāng)?shù)诙斎攵诉x通時,每個反相器從子環(huán)振斷開,重新接入大環(huán)振,快速進(jìn)入穩(wěn)態(tài)。
現(xiàn)有技術(shù)通常將隨機數(shù)采樣點設(shè)置相位抖動的地方,而忽略振蕩器從起振到穩(wěn)定振蕩所要經(jīng)歷的另一個不確定的亞穩(wěn)態(tài)狀態(tài),此時電路的輸出將會取決于電路的噪聲特性而變得具有真隨機性。因此,亞穩(wěn)態(tài)狀態(tài)使一種理想的熵源,但是亞穩(wěn)態(tài)狀態(tài)稍縱即逝,只存在于起振階段,進(jìn)入穩(wěn)定振蕩之后就不會再出現(xiàn)。如圖1所示,起振時從過渡階段進(jìn)入穩(wěn)定振蕩階段時,由于起振時的電路噪聲會出現(xiàn)亞穩(wěn)態(tài)狀態(tài),從而使穩(wěn)定振蕩階段的初始電平無法確定。本發(fā)明圖7和圖9的電路結(jié)構(gòu)中每個反相器增加了亞穩(wěn)態(tài)子振環(huán),通過控制信號使每次采樣時都引入新的亞穩(wěn)態(tài)狀態(tài),從而有效降低輸出序列的相關(guān)性。
參見圖10,所示亞穩(wěn)態(tài)子振環(huán)的結(jié)構(gòu)框圖,當(dāng)開關(guān)閉合后,它的輸出將會逐漸收斂于亞穩(wěn)定狀態(tài),并由于電路熱噪聲的影響,輸出會在亞穩(wěn)定狀態(tài)細(xì)微的波動,而當(dāng)開關(guān)斷開后,由于反相器在非邏輯值范圍有非常大的反饋系數(shù),反相器的輸出會快速的離開亞穩(wěn)態(tài)區(qū)域進(jìn)去穩(wěn)態(tài),但由于半導(dǎo)體熱噪聲的影響,最終反相器的輸出是進(jìn)入邏輯高電平還是低電平將會變得具有不確定性。
采用上述技術(shù)方案,就構(gòu)成了能夠不斷在亞穩(wěn)態(tài)和穩(wěn)態(tài)之間轉(zhuǎn)換的FIRO環(huán)振和GARO環(huán)振,這里稱之為基于亞穩(wěn)態(tài)的Fibonacci反饋環(huán)陣(MFIRO)和基于亞穩(wěn)態(tài)的Galois反饋環(huán)陣(MGARO)。根據(jù)控制信號不同,環(huán)形振蕩器會處于以下兩種狀態(tài):當(dāng)控制信號為低電平時,各反相器會從大環(huán)路斷開,各子環(huán)振進(jìn)入亞穩(wěn)定狀態(tài);當(dāng)控制信號變?yōu)楦唠娖綍r,各反相器從子環(huán)振斷開,接入大環(huán)振,同時它們會結(jié)束亞穩(wěn)定狀態(tài),快速進(jìn)入穩(wěn)態(tài)。當(dāng)電路從先前的亞穩(wěn)態(tài)模式切換至穩(wěn)態(tài)時,每一個反相器的輸出值都由其隨機噪聲決定,環(huán)振的瞬時電壓同樣也是隨機的,如此就產(chǎn)生了高熵值。在控制信號為高電平時,采樣1bit隨機數(shù)據(jù),在采樣完成后,此真隨機數(shù)發(fā)生器熵源又進(jìn)入亞穩(wěn)態(tài)來收集新的隨機性。因此對于整個過程,僅需要等待幾個環(huán)振周期,相較于傳統(tǒng)的利用環(huán)振抖動結(jié)構(gòu)的發(fā)生器輸出速率顯著提高,同時,通過選擇器將多個改進(jìn)型環(huán)振組合在一起,每個改進(jìn)型環(huán)振都能獨立的工作,通過控制信號選擇,每個時刻僅有一個改進(jìn)型環(huán)振輸出隨機數(shù),而其他改進(jìn)型環(huán)振已經(jīng)完成亞穩(wěn)態(tài)過程,進(jìn)一步消除了進(jìn)入亞穩(wěn)態(tài)的積累時間,至少可以在控制信號的高電平和低電平都采樣,在控制信號頻率相同的情況下,其輸出信號頻率至少提升了一倍以上。
在一種優(yōu)選實施方式中,第一反饋環(huán)振真隨機源采用多個新型FIRO環(huán)形振蕩器異或輸出;第二反饋環(huán)振真隨機源采用多個新型GARO環(huán)形振蕩器異或輸出。參見圖11,所示為第一反饋環(huán)振真隨機源和第二反饋環(huán)振真隨機源一種實施方式的結(jié)構(gòu)框圖,采用9級反饋環(huán)振,每個反饋環(huán)振連接一個D觸發(fā)器,通過采樣信號控制D觸發(fā)器采樣反饋環(huán)振的振蕩信號,每個D觸發(fā)器的輸出端均與異或門的輸入端相連接,異或門輸出端再經(jīng)由D觸發(fā)器同步后輸出給后處理電路。由于第一反饋環(huán)振真隨機源采用9個新型FIRO環(huán)形振蕩器,第二反饋環(huán)振真隨機源采用9個新型GARO環(huán)形振蕩器,從而能夠進(jìn)一步改善隨機序列的隨機性。
為了避免一些極端的環(huán)境下,單一的環(huán)形振蕩器的輸出序列特征被暴露,在一種優(yōu)選實施方式中,在改進(jìn)型FIRO環(huán)形振蕩器和改進(jìn)型GARO環(huán)形振蕩器中,除第n反相器以外的其他反相器輸出端的反饋環(huán)路中接入反饋開關(guān)(fi,i為1至n-1的自然數(shù)),采用本原多項式作為反饋多項式控制反饋開關(guān)。
本原多項式的二進(jìn)制系數(shù)決定著環(huán)形振蕩器的反饋連接,規(guī)定當(dāng)fi=1時反饋開關(guān)閉合,當(dāng)fi=0時反饋開關(guān)斷開,用二進(jìn)制的多項式來表示為:
對于改進(jìn)型FIRO環(huán)形振蕩器,反饋多項式只有在滿足以下條件時,它的輸出才不會出現(xiàn)固定不變的狀態(tài):
f(x)=(1+x)h(x)且h(1)=1 (2)
即f(x)可以被1+x整除,但是h(x)不能被1+x整除,其中級數(shù)n(即反相器的個數(shù))可以是奇數(shù)也可以是偶數(shù),但是不能等于2。
而對于改進(jìn)型GARO環(huán)形振蕩器,只有在反饋多項式滿足以下條件時,它的輸出才不會出現(xiàn)固定不變的狀態(tài):
f(x)=(1+x)h(x) (3)
即f(x)可以被1+x整除,其中級數(shù)n只能是奇數(shù)。
如果反饋多項式h(x)是一個本原多項式,那么上述的條件都能得到滿足,同時即使控制信號始終為高電平,生成的序列也將是一個周期長度為2n-2的偽隨機序列。
隨機源的隨機性主要是由邏輯門的隨機延時和傳輸時間引入,同時亞穩(wěn)態(tài)結(jié)束后,由于各種內(nèi)外部噪聲的影響,例如熱噪聲、電壓和溫度不可預(yù)測的短期或者長期波動等,每個反相器的延遲與相位抖動實際上都不相同,這些反相器的輸出很難會在同一時刻變化,會導(dǎo)致反饋到第一個反相器的信號很難預(yù)料,從而會使反饋信號出現(xiàn)競爭冒險,隨機的延遲和轉(zhuǎn)換時間導(dǎo)致環(huán)形振蕩器信號變得不規(guī)則,使得輸出信號最終具備真隨機和偽隨機特性。
進(jìn)一步的,第一反饋環(huán)振真隨機源和第二反饋環(huán)振真隨機源中,采用不同的本原多項式使第一隨機序列和第二隨機序列正交。采用不同本原多項式作為反饋多項式的Fibonacci環(huán)形振蕩器和Galois環(huán)形振蕩器輸出序列是正交的[,因此他們中的任何一個都可作為原始數(shù)據(jù)或密鑰輸入。
實際設(shè)計中為了進(jìn)一步增加熵源隨機性,第一反饋環(huán)振真隨機源和第二反饋環(huán)振真隨機源均采用9級反饋環(huán)形振蕩器,每級反饋環(huán)形振蕩器都采用不同的本原多項式組合,具體見表1。
表1本原多項式表
實際電路中,由于電路內(nèi)外部各種噪聲影響,隨機源輸出的隨機位不可能如理想情況那樣,‘0’和‘1’等概率出現(xiàn),輸出序列的分布可能不能滿足要求,影響最終結(jié)果的統(tǒng)計特性,因此必須采取后處理電路對數(shù)據(jù)進(jìn)行消偏處理。
為了克服上述技術(shù)缺陷,本發(fā)明高速真隨機數(shù)發(fā)生器還包括異或鏈電路,第一反饋環(huán)振真隨機源產(chǎn)生的第一隨機序列和第二反饋環(huán)振真隨機源產(chǎn)生的第二隨機序列分別經(jīng)異或鏈電路處理后再輸出至加密運算單元。
參見圖12,所示為本發(fā)明采用的異或鏈電路的原理框圖,包括多個串接的D觸發(fā)器,第一隨機序列或第二隨機序列串行輸入至第一個D觸發(fā)器,每個D觸發(fā)器的輸出端均與其下一級D觸發(fā)器的輸入端相連接,多個串接的D觸發(fā)器通過一同步時鐘信號控制每個D觸發(fā)器同時輸出信號并通過一異或門異或輸出后作為異或鏈電路的輸出。
上述異或鏈電路的原理如下:假設(shè)輸入隨機序列中1出現(xiàn)的概率為P,0出現(xiàn)的概率為1-P,則要使相鄰兩個D觸發(fā)器的異或輸出為1,則他們的輸入必須為01或10,此時輸出為1的概率為2P(1-P),當(dāng)他們的輸入是00和11時,最終的異或輸出將為0,概率為P2+(1-P)2。當(dāng)有n個D觸發(fā)器時,由數(shù)學(xué)歸納法知,輸出為1的概率為:
P(1)=0.5-2n-1(P-0.5)n (4)
輸出為0的概率為:
P(0)=0.5+2n-1(P-0.5)n (5)
因此,當(dāng)n趨于無窮大時,P(1)與P(0)都會無限接近0.5。通過以上分析,隨著異或鏈級數(shù)的增加,它可以有效的消除序列偏置,實際上當(dāng)級數(shù)為6時,序列的偏置就已經(jīng)非常小了。
經(jīng)過異或鏈電路處理后的序列仍然不能滿足大多數(shù)安全系統(tǒng)的要求,因為經(jīng)過嚴(yán)格的游程檢測會發(fā)現(xiàn)在序列中仍然存在不均勻的分布。上述各環(huán)形振蕩器的輸出雖然是真隨機的,但是它們包含了共模分量,而長游程檢測會很大可能的揭示共模分量的存在。美國國家標(biāo)準(zhǔn)和技術(shù)研究所(NIST,即National Institute of Standards and Technology)發(fā)布了sp800-22標(biāo)準(zhǔn),明確規(guī)定了如何評價隨機數(shù)質(zhì)量的好壞。通過加密/解密算法迭代運算可以有效消除輸出比特流中的共模分量,有效的提高共模抑制比(CMRR)。
在一種優(yōu)選實施方式中,加密運算單元為DES加密運算單元。參見圖13,所示為DES加密運算單元的原理框圖,明文寄存器和密鑰寄存器從異或鏈輸出端獲取數(shù)據(jù),當(dāng)明文寄存器和密鑰寄存器存滿以后,控制模塊發(fā)送使能信號給加密運算模塊,加密運算工作完成后,密文輸出端將64位隨機數(shù)送到真隨機數(shù)輸出寄存器等待其他模塊取用。
參見圖14,所示為本發(fā)明真隨機數(shù)發(fā)生器的功能仿真圖。其中,Reset、Start和Clk為輸入信號,當(dāng)Start為高電平時電路開始工作,Reset為復(fù)位信號當(dāng)為低電平時電路復(fù)位,系統(tǒng)時鐘Clk經(jīng)二分頻后得到狀態(tài)控制時鐘Clk_ctrl,通過它控制熵源不斷的亞穩(wěn)態(tài)和穩(wěn)態(tài)之間轉(zhuǎn)換,Clk_Sampling是采樣時鐘,在它的上升沿采樣1bit數(shù)據(jù),F(xiàn)ibonacci_out和Galois_out是經(jīng)過異或電路處理后的輸出,它們分別經(jīng)過串轉(zhuǎn)并電路后轉(zhuǎn)換為64位的并行信號Des_in和Key_in,當(dāng)每次轉(zhuǎn)換完成后Des_in_vld和Key_in_vld會被拉高,告知DES模塊數(shù)據(jù)已準(zhǔn)備完畢,可以開始DES運算,經(jīng)過17個系統(tǒng)時鐘后,DES運算全部完成,此時Des_vld信號會被拉高,輸出鎖存器會將此時的Des_out 64位輸出數(shù)據(jù)進(jìn)行鎖存,Trng_out和Trng_rdy是最終的輸出信號,當(dāng)Trng_rdy被拉高后,說明DES模塊的輸出數(shù)據(jù)已被鎖存,系統(tǒng)可以通過64位的輸出總線Trng_out獲取生成的隨機數(shù)。
借助某型FPGA平臺,綜合后共占用1,041個邏輯單元和412個寄存器,系統(tǒng)時鐘頻率為50MHz,通過PLL倍頻后產(chǎn)生200MHz的時鐘作為工作時鐘,通過示波器觀察后處理電路處理后的第一反饋環(huán)振真隨機源和第二反饋環(huán)振真隨機源輸出信號,最終信號輸出波形如圖15所示,輸出頻率為6.25MHz左右。由于DES加密運算單元輸出為64位,按照計算公式:輸出速率=位寬*頻率,因此,得到最終真隨機數(shù)生成速率在400Mbit/s,相對于現(xiàn)有技術(shù),隨機數(shù)生成速率有了較大的提升。
為了進(jìn)一步測試本發(fā)明所產(chǎn)生隨機數(shù)的隨機性,根據(jù)美國國家標(biāo)準(zhǔn)和技術(shù)研究所提供的NIST SP800-22標(biāo)準(zhǔn),使用其隨機數(shù)測試套件對所接收到的1000組總計126Mbit的真隨機數(shù)數(shù)據(jù)進(jìn)行隨機性評估測試,測試項目和結(jié)果如表2所示。
表2隨機序列的NIST測試結(jié)果
由表2的測試結(jié)果驗證本發(fā)明的技術(shù)方案通過了NIST認(rèn)證。同時,該方案采用純數(shù)字電路設(shè)計,功耗較低,集成度較高,便于實現(xiàn),可以作為IP核使用,能快速移植到集成電路設(shè)計流程中,縮短開發(fā)周期,且輸出速率較高,從而能夠在實際芯片設(shè)計和產(chǎn)業(yè)化中得到了廣泛應(yīng)用。
在獲得完整的FPGA結(jié)果后,本發(fā)明技術(shù)方案被采納應(yīng)用于USB閃存盤(USB Flash Memory Drive)控制器芯片中。該控制器主要特征有:
具有USB2.0接口,數(shù)據(jù)傳輸速率480Mb/s,
數(shù)據(jù)存儲速度:連續(xù)讀30MB/s,連續(xù)寫20MB/s.
驅(qū)動2通道NAND型閃存(Flash Memory),
具有8個片選信號,最大支持16顆NAND型閃存,
具有72bit糾錯算法(ECC)和均衡算法(Wear-Leveling),
片上數(shù)據(jù)加密算法,速度達(dá)到50MB/s.
針對數(shù)據(jù)加密功能,該控制器集成了AES加密算法和商密MS4算法實現(xiàn)數(shù)據(jù)流的對稱加密/解密,而本發(fā)明的真隨機數(shù)發(fā)生器就是用來產(chǎn)生密鑰。芯片采用110納米(110nm)邏輯工藝實現(xiàn),芯片面積3.085mm*2.750mm,采用QFN封裝(48引腳),已經(jīng)進(jìn)入了批量生產(chǎn),投入市場數(shù)量已超過100萬顆,是國際上當(dāng)前主流的加密型U盤控制器芯片之一。
以上實施例的說明只是用于幫助理解本發(fā)明的方法及其核心思想。應(yīng)當(dāng)指出,對于本技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明原理的前提下,還可以對本發(fā)明進(jìn)行若干改進(jìn)和修飾,這些改進(jìn)和修飾也落入本發(fā)明權(quán)利要求的保護(hù)范圍內(nèi)。
對所公開的實施例的上述說明,使本領(lǐng)域?qū)I(yè)技術(shù)人員能夠?qū)崿F(xiàn)或使用本發(fā)明。對這些實施例的多種修改對本領(lǐng)域的專業(yè)技術(shù)人員來說將是顯而易見的,本文中所定義的一般原理可以在不脫離本發(fā)明的精神或范圍的情況下,在其它實施例中實現(xiàn)。因此,本發(fā)明將不會被限制于本文所示的這些實施例,而是要符合與本文所公開的原理和新穎特點相一致的最寬的范圍。