亂數
1. 密碼學範疇的亂數
根據密碼學原理,亂數的隨機性檢驗可以分爲三個標準:
- 統計學偽隨機性。統計學偽隨機性指的是在給定的隨機位元流樣本中,1的數量大致等於0的數量,同理,「10」「01」「00」「11」四者數量大致相等。類似的標準被稱爲統計學隨機性。滿足這類要求的數字在人類「一眼看上去」是隨機的。
- 密碼學安全僞隨機性。其定義爲,給定隨機樣本的一部分和隨機演算法,不能有效的演算出隨機樣本的剩餘部分。
- 真隨機性。其定義爲隨機樣本不可重現。實際上衹要給定邊界條件,真亂數並不存在,可是如果產生一個真亂數樣本的邊界條件十分複雜且難以捕捉(比如電腦當地的本底輻射波動值),可以認爲用這個方法演算出來了真亂數。但實際上,這也只是非常接近真亂數的偽亂數,一般認為,無論是本地輻射、物理噪音、拋硬幣……等都是可被觀察了解的,任何基於經典力學產生的亂數,都只是偽亂數。
相應的,亂數也分爲三類:
- 僞亂數:滿足第一個條件的亂數。
- 密碼學安全的僞亂數:同時滿足前兩個條件的亂數。可以通過密碼學安全偽亂數生成器計算得出。
- 真亂數:同時滿足三個條件的亂數。
亂數在密碼學中非常重要,保密通訊中大量運用的會話密鑰的生成即需要真亂數的參與。如果一個亂數生成演算法是有缺陷的,那麽會話密鑰可以直接被推算出來。若果真發生這種事故,那麽任何加密演算法都失去了意義。
密碼學中大量利用僞亂數生成器的應用還有流密碼。流密碼的著名例子是RC4。流密碼的原理是利用一個密碼學安全的僞亂數生成器根據密鑰產生一串密碼學安全的偽隨機位元列,再將訊息與上述隨機位元列按位異或運算。
目前沒有數學證明表示密碼學安全的僞亂數生成器是確實存在的。其存在性證明涉及到P和NP的數學難題。[1]