Hash

類似於 One-Time Pad 的流密碼是否安全?

  • July 16, 2016

我在這個網站上閱讀了一些關於將 OTP 與雜湊結合的問答,但我仍然想知道為什麼有些答案說使用雜湊作為 OTP 密鑰不足以抵抗暴力攻擊?

假設密鑰永遠不會被重複使用,並且攻擊者擁有無限的計算資源,因此攻擊者可以輕鬆嘗試所有密鑰。攻擊者在獲得所有可能的明文後,是否能夠從所有明文中找出哪個是正確的?

例如,如果對手得到“給我 100 美元”,那麼他可能會得到“給我 200 美元”。也。如果他不能過濾出錯誤的明文,他怎麼知道正確的密鑰並破解它?

我知道可能的明文數量取決於可能的雜湊值的數量,但是如果對手得到至少兩個可能的明文並且沒有任何方法可以區分正確的明文,那麼這個由雜湊密鑰加密的密碼是否有機會被蠻力攻擊破解?如果不是,那麼這種加密技術是否存在任何缺陷?(忽略消息認證問題)

如果您想像 256+ 位密鑰 -> SHA-256 -> 一個塊密鑰流,您與明文進行異或,這實際上與一次性填充幾乎相同。但是,這樣做沒有任何好處,考慮到您不妨直接將原始密鑰用作一次性鍵盤。

相反,如果您使用基於密碼的散列,字典攻擊或類似的攻擊可能會成功,並且除非密碼的熵大於散列的輸出大小,否則攻擊者至少可以排除一些可能的消息,這意味著它缺乏完美保密。

即使在第一種情況下,您的密鑰是高熵的,您通過雜湊函式執行它的事實也會影響可能的輸出及其頻率,因此計算無界的對手將獲得有關消息內容的一些資訊——一些選項可能是不可能的,有些可能更有可能。

在實踐中,使用(密碼)散列生成密鑰流相當於流密碼,並且假設您的密鑰/密碼具有足夠的熵並且您不會為其他消息重用相同的密鑰/密碼,它很可能是安全的。從機密性的角度來看,即:流密碼(和 OTP)具有延展性,因此如果消息的完整性很重要,您需要進行身份驗證。

(插入在實踐中使用標準密碼的強制性建議。)

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