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