摘 要: 隨著信息技術的發(fā)展,智能IC卡在認證、銀行、交通等領域得到廣泛應用,系統的真隨機數的產生及其改進成為人們的研究重點之一。簡單論述了真?zhèn)坞S機數的產生方法,并對其隨機性進行了偽隨機方法的改進。測試結果表明,經過算法處理后的隨機性得到了較大的提高,完全通過國家商用密碼管理局的隨機性檢測規(guī)范的測試。
0 引言
隨機數在智能卡芯片操作系統(Chip Operation System,COS)中主要用于卡片和讀卡器之間的認證、數據加密及其安全傳輸。隨機數是以現代密碼學為基礎的信息安全系統的基石。整個系統的安全性完全依賴于隨機數序列的生成效率和質量。因此,高質量的隨機數對COS的安全舉足輕重,如果隨機數的隨機性不夠安全,整個系統極有可能被攻擊者攻破,造成無法挽回的損失。
1 偽隨機數和真隨機數
信息安全系統中的隨機數序列要求具有足夠的長度和周期,以及盡可能高的熵值,即具有高度的隨機性和不可預測性。
隨機數序列的產生方法有兩種:偽隨機數和真隨機數。
1.1偽隨機數
目前應用的隨機數通常是通過某些數學公式計算而產生的偽隨機數,即由偽隨機數發(fā)生器(Pseudo Random Number Generator,PRNG)產生的,它是由一個初始狀態(tài)開始,通過一個確定的算法來生成隨機數。一旦給定算法和種子,輸出序列就確定了,有一定的周期性。
偽隨機序列一般都有比較好的隨機統計特性,其用數學算法生成,在一些統計特性方面接近真隨機序列,但卻是周期的和可預測的。
偽隨機數容易獲得且方便使用,一般用于仿真、測試等場合。
1.2 真隨機數
真隨機數是不可預測的,因而不可能重復產生兩個相同的真隨機數數列。真隨機數只能用某些隨機物理過程來產生。例如放射性衰變、電子熱噪聲、宇宙射線的觸發(fā)時間等。
真隨機數序列是由真隨機數發(fā)生器(True Random Number Generator,TRNG)產生,是依托自然界物理現象的隨機特性。對一個TRNG來說,不存在初始序列或種子,沒有任何一種算法可以預先決定下一個輸出是什么,消除了偽隨機性的周期問題,而且是獨立和不相關的。
真隨機序列雖然有難以預測、不能重復的特性,但隨機統計卻不理想。真隨機序列用物理方法生成,通過選取真實世界的自然隨機性,所生成的隨機數稱為真隨機數。
真隨機數取自物理世界的真實隨機源,難以破解,主要應用在數據加密、密鑰管理、身份鑒定等對安全性要求較高的領域。
2 基于振蕩采樣產生隨機數
在智能卡中隨機數通常用于產生密鑰以及與讀卡器之間的認證。由于高安全的原因,隨機數應當是真隨機數而不是偽隨機數?,F在所有的智能卡控制芯片都有產生真隨機數的硬件隨機數產生器。所產生的隨機數的隨機性必須不能受到外部物理環(huán)境的影響,比如溫度、電壓。
本文真隨機數的產生基于振蕩采樣的設計方法?;谡袷幉蓸拥腡RNG從時鐘抖動中獲得隨機性。圖1所示是基于振蕩器的真隨機數發(fā)生器。
帶有抖動的慢振蕩器通過D觸發(fā)器采樣一個周期固定的快振蕩器,輸出隨機序列Y。由于慢振蕩器的抖動是不確定的[1],并且其抖動范圍遠遠大于快振蕩器周期,因此輸出0和1的概率基本相等,從而輸出的序列Y隨機。
振蕩器的相位抖動使得采樣值具有不確定性,理想情況每一次采樣都能產生一個隨機位。但產生的隨機數不具有較好的統計屬性,所以通常會用偽隨機的方法來對采樣輸出進行處理,改善其隨機性。
3 隨機數隨機性的算法改進及測試
3.1 真隨機數的偽隨機處理
雖然真隨機數發(fā)生器在密碼、密鑰的應用中起著重要作用,但是目前大多數真隨機數發(fā)生器還是基于一種理想狀況來分析其輸出的隨機序列的性能。由于各種物理環(huán)境變化的影響,基于硬件實現的隨機序列源通常具有一定的相關性。
實際中產生的隨機數存在分布性較差、穩(wěn)定性不佳等缺點,所以在實際應用中,通常還需要對其發(fā)生器的輸出序列進行進一步的處理和運算來改進,才能使輸出的序列通過各種隨機性的測試。
幾乎每個智能卡操作系統都包括有用于鑒別的加密算法。使用它作為真隨機數的偽隨機改進是一個必然的選擇。實現一個盡可能把明文攪亂的加密算法,如果不了解密鑰就無法從密文得出明文。稱之為“雪崩準則”的原理:平均而言,輸人改變1位則輸出的各位中將有一半要改變[2]。這個特性能很好地為隨機數發(fā)生器所應用,發(fā)生器的準確構造隨其實現而各不相同。圖2和圖3是兩種真隨機數的改進方法示意圖。
基本改進過程:將產生的真隨機數填充環(huán)形緩沖器,再將環(huán)形緩沖器部件之值用DES加密,用一個對卡是唯一的密鑰,產生密文長度為8 B的隨機數,也可以采用其他加密算法進行加密。加密后的數據與緩沖器里下一個真隨機數的XOR值提供了EEPROM環(huán)形緩沖器的新輸入。循環(huán)結束后產生的隨機數即為改進的真隨機數。
對產生的真隨機數通過加密算法進行進一步改進處理。主要步驟為:
?。?)先通過硬件隨機數發(fā)生器,產生8/16 B的隨機數,將產生的真隨機數作為明文,再重新產生一次真隨機數作為密鑰,經過3DES加密得到密文;
(2)將經3DES加密后的密文,作為SM1國密算法的基礎密鑰EK;
?。?)重復步驟(1),將得到的密文作為SM1國密算法的系統密鑰SK;
(4)重復步驟(1),將得到的密文作為SM1國密算法的輔助密鑰AK;
(5)重復步驟(1),將得到的密文作為新的明文;
?。?)利用步驟(2)~步驟(5)產生的密鑰和明文,通過SM1國密算法進行加密,得到的隨機數稱為改進隨機數。
3.2 改進隨機數的測試
實現了隨機數發(fā)生器之后,對它所產生的隨機數必須嚴格地測試,基本情況是在所產生的隨機數中,1和0的數量應接近于相等。采用標準統計方法從數學上測試隨機數。對大量8位隨機數進行測試,應當有10 000~100 000的數字產生,分析以達到合理的可信結果。測試方法是使用計算機測試程序。
本實驗使用的測試工具是由美國國家標準技術研究所(NIST)推出的SP 800-22[3]隨機性測試工具,并根據國家商用密碼管理局的隨機性檢測規(guī)范的要求[4],對測試工具補充了所增測試項。
測試設定的顯著性水平為α=0.01,樣本數量為1 000,樣本長度選取106 bit。測試結果如表1所示。
根據國密局隨機性檢測規(guī)范,當樣本數量為1 000個,每個樣本容量為106 bit時,如果通過的樣本個數不小于981,則隨機數發(fā)生器通過此項檢測;否則,未通過此項檢測。從表1可知,改進的真隨機數產生器通過了國家商用密碼管理局的隨機性檢測規(guī)范的所有隨機性測試項。
4 結論
本文描述了一個基于振蕩器的真隨機數的實現方法,并對產生的隨機數進行了偽隨機改進。測試結果顯示,改進后的真隨機數的輸出是隨機的,滿足了國家商用密碼管理局對智能卡COS產品的隨機性要求。
參考文獻
[1] 霍嘉.隨機數發(fā)生器的設計與研究[D].西安:西安科技大學,2010:28-30.
[2] RANKL W, EFFING W. Smart card handbook(4th edition)[M]. New York: JohnWiley&Sons, 2010:159-166.
[3] NIST. FIPS PUBS 800-22. A Statistical Test Suite for Random and Pseudorandom Number Generators for Cryptographic Applications[Z]. 2010.
[4] 國家密碼管理局商用密碼檢測中心.隨機性檢測規(guī)范[Z]. 2014.