HRNG 物理真隨機數發生器(Hardware Random Numeral Generator)隨著計算機技術、通信技術、網路技術的迅速發展,信息在存儲、傳送、接收和處理過程中的安全問題已受到人們的廣泛關注。隨機數在信息安全系統中扮演著重要的角色,在基於計算機或internet的通信和交易中有著廣泛的套用。比如數據加密、密鑰管理、公鑰和私鑰的產生、電子商務、數字簽名、身份鑑定以及蒙特卡羅仿真等都要用到隨機數。在信息安全系統的設計中,對隨機數發生器性能有較高的要求,因此通常採用真隨機數發生器。隨機數序列的隨機性能的好壞直接決定了信息安全系統的安全性性能。通常只要在真隨機數發生器的設計中存在缺陷,人們就可能利用這個缺陷對整個安全系統進行破解。
基本介紹
- 中文名:物理真隨機數發生器
- 外文名:HRNG,Hardware Random Numeral Generator
- 屬性:隨機數發生器
內容簡介,實現種類,實現方法,檢驗方式,重要意義,
內容簡介
所謂真隨機數發生器(TRNG)是指利用物理方法實現的隨機數發生器。它是自然界隨機的物理過程(所產物理現象的不確定性)的反映,即使算法等TRNG的所有信息都被暴露,都無法猜測其結果,即高質量的真隨機數發生器產生的隨機數永遠不具備周期性。這就使其在本質上區別於廣泛套用的偽隨機數發生器(PRNG),偽隨機數發生器是基於數學算法的隨機數發生器,它由真隨機的種子和偽隨機網路構成。一旦真隨機的種子被暴露,偽隨機數發生器的結果就是確定了。真隨機數發生器所產生的隨機數來源於真實的隨機物理過程,因而徹底地消除了偽隨機數的周期性問題, 只有真隨機數發生器才能提供真正的、永不重複的隨機數序列。這對於某些對隨機數質量有特殊要求的套用有重要意義。此外,真隨機數發生器產生的隨機數與計算機的CPU無關。可用於某些要求獨立地產生隨機數的場合。
實現種類
真隨機數發生器是指用物理方法實現的隨機數發生器。各種隨機物理過程如宇宙噪聲、電路的熱噪聲和放射性衰變均可用來產生隨機物理信號。其中與IC工藝兼容的三種隨機源:放大電路噪聲、振盪採樣、混沌電路。
1.電路噪聲放大。電路中的噪聲主要來源有:散粒噪聲、接觸噪聲、突發噪聲、雪崩噪聲、熱噪聲等。在晶片設計中,電路中大電阻的熱噪聲是最易於獲得的隨機物理信號。最常見的電阻噪聲源電路如圖1所示,它廣泛套用於晶片式或板卡式的隨機數發生器的設計中。
由於真隨機數發生器所需要的是均勻分布的高斯型噪聲, 因此在噪聲發生器中應儘量突出噪聲源電阻所產生的熱噪聲的貢獻,並儘量抑制由運算放大器所產生的1/f噪聲和突發噪聲等非高斯型的噪聲。低噪聲運算放大器的噪聲指標越低越好。
高速度高性能的數字物理噪聲源晶片的核心部分採用噪聲疊代環原理來提高輸出數據的不可預測性。噪聲的影響在這個環內被不斷放大,經疊代後,這種噪聲的影響就將和電路的初始狀態混在一起,使得幾次疊代後的電路的狀態完全無法估計,當然也就不可預測。
採用參數略微拉開的兩路噪聲疊代環,在數據處理部分,利用異或來進一步改善數據的比。兩路信號異或01還將增加對輸出數預測的難度。
2.振盪採樣法。振盪採樣法來產生所需要的隨機數。即通過一個高電平觸發的D觸發器把兩個獨立的方波進行數字混合,用低速波來採樣高速波,這種方法是利用環形振盪器的頻率抖動來作為隨機源的。
環形振盪器產生低頻的時鐘作為D觸發器的時鐘輸入端。壓控振盪器VCO(或CCO)產生的高頻數據作為D觸發器的數據輸入端。經過D觸發器採樣輸出後,產生一位真隨即數RGB。輸出端經過偽隨機網路後,通過D/A轉換電路反饋到VCO的輸入。這樣就使得每次採樣間隔內高頻數據的頻率都不同,從而增強了每次採樣結果的隨機性。當高頻數據的頻率在低頻時鐘頻率一半的整數倍時,輸出隨機數的統計特性最差。為了保證輸出數據的隨機性能,低頻時鐘和高頻數據要求互不相關且頻率偏差較大。
此外,有的晶片採用噪聲疊代環原理來提高輸出數據的不可預測性。噪聲的影響在這個環內被不斷放大,經疊代後,這種噪聲的影響就將和電路的初始狀態混在一起,使得幾次疊代後的電路的狀態完全無法預測。
3.混沌電路。利用混沌電路本質特點:不可預測,對初始條件的敏感的依賴性。以及混沌電路在晶片中易於實現的特點,就使其成為製作真隨機數發生器晶片的很好的選擇。
近來有很多文獻報導了很多真隨機數發生器晶片中混沌電路的實現方法。例如,雙環振盪的電路結構;利用開關電容實現的混沌電路等。其中雙環振盪的電路結構產生兩個洛倫茲奇怪吸引子分別代表0和1,經採樣量化後可得到真隨機數。
實現方法
眾所周知,隨機源的隨機性能的好壞直接決定了真隨機數發生器晶片的質量。但是,即使有好的隨機源也未必能夠產生高質量的隨機數。通常在實際晶片的製作中,還要對隨機源進行處理,使其輸出的隨機序列能夠更好的滿足統計性檢驗。
增強隨機性的常用方法有兩類:
1.採用兩路或多路相互獨立且相同的隨機源各自產生隨機數,然後經雜化網路(異或鏈網路或哈希雜化網路等)擾亂輸出位流,在通過一個偽隨機數發生器後得到最終的隨機數輸出。
2.可以選取上述方法中的二種或者更多種進行最佳化組合,使其得到高質量的隨機數。
檢驗方式
在信息安全領域的基本標準有美國商務部國家標準技術協會NIST發布的ITSEC、CC及FIPS系列標準。對於真隨機數發生器而言,常用的評價標準有德國BSI在2001年9月25日發布的AIS31標準。高質量的隨機數序列必須通過一系列的統計檢驗。結合上述標準可設計出合適的檢驗方法,主要用於檢測隨機序列的分布均勻性、相關性等。常用的檢驗方法如下:
1.比特分布檢測。這是隨機數發生器最基本的檢測標準,用以判斷隨機序列是否滿足分布的均勻性。主要測試長為n比特的序列中0和1的個數,理想情況0和1等機率分布。
2.跟隨特性檢測(又稱轉移檢測)。序列的跟隨特性指序列中相鄰元素的出現情況。主要用來測試長為n比特的序列中00,01,10,11的機率是否相等。採樣低頻採樣的措施有利於保證輸出數的跟隨特性。
3.遊程檢測。遊程是由連續0或者1組成的序列,並且其前後元素與遊程的元素不同。遊程數目為序列長度的一半時,產生的隨機序列較好。
4.碰撞檢測。這種檢測法是以抽象機率試驗小球碰撞為比喻的。假定我們將n個小球隨機的扔進m個空的缸里,這裡m>>n,當小球掉進非空的缸里時我們認為碰撞發生。理論上,一個缸里有k個球的機率為:
因此碰撞次數的期望值為:
5.撲克檢測。撲克檢測先將待測序列劃分成若干個長為m(m為任意正整數)的二進制子序列,長為m的二進制子序列有2m種類型,然後檢測這2m種子序列類型的個數是否相等。
此外,隨機序列的檢測方法還有相關性檢測、線性複雜度檢測、長遊程檢測等。
重要意義
隨著計算機技術、通信技術的充分發展,信息在傳遞、處理、存儲過程中的安全問題已引起了人們的廣泛關注。信息安全領域內的核心問題之一就是如何製作高質量的隨機數發生器晶片。本文全面論述了真隨機數發生器晶片的隨機源的實現方法及其檢測方法,為今後製作出強隨機性和高速率的真隨機數發生器晶片打下了基礎。