密碼學安全偽隨機數生成器(亦作密碼學偽隨機數生成器,英文:Cryptographically secure pseudo-random number generator,通稱CSPRNG),是一種能夠通過運算得出密碼學安全偽隨機數偽隨機數生成器。相較於統計學偽隨機數生成器和更弱的偽隨機數生成器,CSPRNG所生成的密碼學安全偽隨機數具有額外的偽隨機屬性。[1]

Thumb
各種隨機數和各類隨機數生成器之間的關係

CSPRNG常被作為密碼學原件,用以搭建更複雜的密碼學應用。如,可變長CSPRNG和XOR函數搭配即構成流密碼的編解碼方法。

隨機性

密碼學領域的隨機性一般分為如下三類:

統計學偽隨機性

隨機比特序列符合在統計學的隨機的定義。符合該定義的比特序列的特點是,序列中「1」的數量約等於「0」的數量;同理,「01」、「00」、「10」、「11」的數量大致相同,以此類推。符合該類別的隨機數生成方法的例子有線性同餘偽隨機數生成器。

密碼學安全偽隨機性

除了滿足統計學偽隨機性外,還需滿足「不能通過給定的隨機序列的一部分而以顯著大於的概率[注 1]在多項式時間內演算出比特序列的任何其他部分」。符合該類別的密碼學安全偽隨機數生成器的例子如Trivium (算法)中的CSPRNG部分、SHA-2家族函數和計數器亦可被綁定以構建類似強度的CSPRNG。

可忽略函數

由可忽略速度增長的函數是可忽略函數。可忽略函數的更準確的定義如下:當輸入趨近於無窮大時,一個函數的增長速度小於任何多項式函數的反函數,則該函數是可忽略函數。換言之,。比如說,我們知道,在輸入趨近於無窮大時,任何指數函數的增長速度大於任何多項式函數,因此,任何指數函數的反函數的增長速度一定小於任何多項式函數的反函數。指數函數的反函數是對數函數,因此,所有的對數函數都是可忽略函數。

真隨機性

除滿足以上兩點,還需要具備「不可重現性」。換言之,不能通過給定同樣的數據而多次演算出同一串比特序列。由於計算機算法均具備確定的特性,所以真隨機數無法由算法來生成。[1]真隨機數的例子有放射性物質在某一時間點的衰變速度、某一地區的本底輻射[注 2]、正確使用設計良好的骰子所獲得的輸出等。

開放問題

CSPRNG本質上屬於一種單向函數。一個可用的CSPRNG必須要滿足給定種子易於計算輸出,而給定輸出無法容易地計算種子。但是,由於從種子到輸出的變換是容易的,因此檢查一個種子的正確性是非常容易的。換言之,一個設計良好的CSPRNG從輸出求種子的問題必須是NP問題,但必須不是P問題

由於在數學上面,P = NP與否是尚未有定論的難題,因此設計良好的CSPRNG是否存在是一個開放性問題。如果有一天P = NP得到證明,那麼,「輸出求種子的問題必須是NP問題,但必須不是P問題」這一條件就無法滿足,這直接導致CSPRNG不再存在,也導致依賴強壯CSPRNG的所有密碼學應用的強壯性不復存在。

相關條目

註解

參考

Wikiwand in your browser!

Seamless Wikipedia browsing. On steroids.

Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.

Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.