密碼學/隨機質量
外觀
< 密碼學
"隨機源的熵越高,它生成的隨機資料的質量就越好。"
許多密碼學演算法都需要隨機源,無論是金鑰生成還是其他原語。實現者在選擇隨機源時必須極其謹慎,否則他們會讓自己暴露在攻擊之下。例如,唯一被正式證明的加密技術,一次性密碼本,需要一個完全隨機且無偏差的金鑰流,其長度至少與訊息本身一樣長,並且絕不重複使用。這一要求帶來了許多隱含的複雜性,因為“真隨機性”的唯一來源是在物理世界中(例如矽衰變),並且不可能在軟體中實現。因此,通常只有獲得偽隨機性才是可行的。偽隨機數生成器(PRNG)使用多個被認為難以預測的源(滑鼠移動、計算機時鐘的最低有效位、網路統計資料等)來生成一個熵池,然後將其透過各種演算法來嘗試消除任何偏差,然後用作預先確定的一組靜態數字的種子。即使有了所有這些熵源,一個有決心的攻擊者通常可以透過剔除一些因素來降低實現的有效強度 - 例如,對時間進行有根據的猜測。被認為適合密碼學用途的 PRNG 稱為密碼學安全的偽隨機數生成器 (CSPRNG)。
在資訊理論中,熵被定義為表示一段位元串中資訊量的度量。例如,傳統的性別分類包含 1 位熵,因為它可以使用 1 代表男性,0 代表女性來表示。隨機源的質量取決於它生成的熵有多少,如果熵小於實際的位元數,則存在一些資訊重複。重複的資訊越多,或某個 PRNG 的週期越短,熵就越低,隨機性來源就越弱、越容易預測。因此,在密碼學中,人們希望在可用的資源範圍內儘可能地接近完美的隨機性 - 其中一個完美的隨機數生成器會建立一個位元序列,無論獲取多少先前生成的位元樣本,它們都是不可預測的。