Pseudo-Random-Generator

Fortuna:為什麼將源 ID 和數據長度與熵數據一起添加到池中

  • June 15, 2015

Cryptography Engineering 的第 9.5.6 節指出

串聯

$$ of source number, length of data, and data itself $$然後附加到池中。

為什麼要包括源編號和數據長度?每個源的源編號是固定的,許多源的數據長度是恆定的,那麼我們不是用低熵數據污染池嗎?

您不能用低熵數據污染池。散列函式“提取”到輸出大小或散列 - 稍微少一點,因為衝突。

即使輸入相同,源編號也會使不同源的輸出不同。

需要長度,因為否則我們無法將兩個小輸入與一個具有特殊模式的大輸入區分開來。這取決於散列函式的使用。

添加源和長度實際上收集了更多的熵。考慮使用系統計數器作為熵源的情況。如果在某個時間戳CounterX=123,並且,我們實際上通過在源標識符(“ ”)中加入而不是簡單地“ ”來CounterY=123保留至少多一點的熵。值的來源是附加熵,當與值結合時,它會將熵位添加到池中。長度相似;它添加了更多關於添加到池中的值的熵資訊(我們加入“ ”與“ ”)CounterX=123CounterY=123``123123``log2(total number of sources)``len=4val=1231len=2val=23``123123

理想情況下,我們可以收集表單的值流:timestamp,source,length,data並定期將它們散列到池中。理論上使用良好的加密雜湊可以確保我們從源數據中提取所有可用的熵(直到雜湊長度)。

引用自:https://crypto.stackexchange.com/questions/25018