2016-03-03 57 views
0

我想要實現使用http://www.springer.com/us/book/9783540887010https://www.imperialviolet.org/2013/07/18/hashsig.htmlPRNG用於基於散列的認證

描述的「樹鏈」結構,對於這個我需要一個(確定性)PRNG能生產基於散列的認證種子/密鑰中的大量私鑰以及私鑰列表中的索引。我正在考慮簡單地使用Hash(secretkey + index)來生成密鑰,但在閱讀了NIST針對PRNG的一些建議之後,我想知道是否有更好/更安全的方法?假設sha-3作爲散列函數,這個Hash(secretkey + index)方法有什麼嚴重的問題嗎?

感謝

+0

CTR模式下的任何分組密碼都可以完成這項工作。 – Phylogenesis

回答

0

一個潛在的問題是,hash("100" + "10") == hash("1001" + "0")。可能更好的辦法是分別散列其中一個參數:

hash(key + hash(index)) 
+0

我可能應該在問題中提到這一點,但secretkey被認爲總是一個具有完整熵的n位數字和'+'符號整數加法而不是字符串連接... – Kris

+0

...與2^n> = max(index) – Kris

+0

@Kris使用連接數據時,一些哈希算法很弱(請參閱http://security.stackexchange.com/questions/79577/whats-the-difference-between-hmac-sha256key-data-and- sha256key數據)。我不知道它是如何與整數加法 - 它也不安全或不安全。 – pkalinow