Hash

生成一次性填充的雜湊函式

  • July 13, 2019

也許這是一個新手問題:

流密碼,將異或消息位與一次性填充位。假設我有一個偽隨機數生成器,比如Mersenne Twister或類似的東西。我可以使用偽隨機字元串對消息進行異或。使用密碼作為生成器的種子。相同的密碼 = 相同的偽隨機序列。偽隨機序列的散列塊能否創建更強的一次性填充流?

首先要做的事情:PRNG(偽隨機數生成器)不能提供一次性填充。

提醒一下:一次性墊……

  1. 必須是真正隨機的,
  2. 必須至少與明文一樣長,
  3. 從未全部或部分重複使用,並且
  4. 完全保密。

只有當所有四點都滿足時,我們才談論 OTP。

您的 PRNG 想法無法滿足這些參數,因為它既不是真正隨機的,也不是明文那麼長。此外,當不使用 CSRNG(加密安全隨機數生成器)時,由於正常 PRNG 算法的重複內部狀態,您一定會部分重用它。

範例:您作為範例提到的“Mersenne Twister”PRNG 不是加密安全的。給定少量輸出,計算所有未來輸出相對容易。換句話說:它是相當可預測的,在密碼學方面你不想使用任何東西。這樣的算法並不是為了加密安全而建構的!它們是為蒙地卡羅模擬之類的東西而設計的。

保持簡短(並積極忽略其他潛在問題,例如缺少身份驗證等):您的“密碼”的安全性將隨著您的 PRNG 的安全性而變化——這意味著您使用正常 PRNG 創建的任何內容都不能被考慮是加密安全的。

老實說,當我查看經過充分審查的可用選項(各種加密安全的流密碼、許多可以在 CTR 模式下執行的安全分組密碼等)時,我只能想知道為什麼你甚至會考慮創建自己的家-brew 解決方案基於一些 PRNG。您可以相信,嘗試基於簡單的 PRNG 創建流密碼是一個非常糟糕的主意。

您的相關密鑰生成想法也是如此…… pbkdf解決方案存在是有原因的!

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