從密碼學上講,什麼是“長消息”?
我已經閱讀了有關對某些加密雜湊函式的長消息攻擊。但是,我不太明白什麼是“長消息”。
此外,長消息攻擊是否僅適用於此類“長”消息,或者它們也可以與“正常”消息一起使用(任何例外?)?(我的意思是“正常”而不是“長”)
謝謝你。
編輯:實際上,我想我想要一個一般性的解釋,但我想我最好指定我誤解的來源。閱讀 Gauravaram 和 Kelsey對一類密碼散列函式的密碼分析以試圖理解第二原像攻擊,我在附錄 E.1 部分(第 26 頁)中遇到了對 GOST 的通用長消息第二原像攻擊,這讓我想知道所謂“長消息”攻擊的含義(和針對性)。
希望這能更好地澄清我的問題。
如果沒有具體的參考,我無法確定這就是您所說的,但通常“長消息”攻擊是一種以低於預期復雜性的方式擊敗第二原像抵抗的方法。它使用時空權衡來找到具有復雜性的第二個原像 $ 2^{n/2} $ 為一個 $ n $ -bit 雜湊函式(通常你會期望 $ 2^n $ ).
在最簡單的形式中,您所做的是生成一條消息,即 $ 2^{n/2} $ 塊長,因此將有大約 $ 2^{n/2} $ “中間”雜湊值(在處理每個塊時從雜湊函式輸出)。您將這些雜湊值儲存在記憶體中,然後嘗試反復對隨機消息進行雜湊處理,直到找到一條消息 $ m $ 這樣 $ h(m) $ 等於中間雜湊值之一。這將需要大約 $ 2^{n/2} $ 嘗試,因為你有 $ 2^{n/2} $ 射擊的目標。
此時,您可以在該目標中間值上拆分長消息並“拼接”消息 $ m $ 到那個地方,它仍然會產生相同的最終輸出。這有效地做了,是在消息內部的某個地方找到一個衝突,並將該子字元串替換為新的衝突子字元串。由於碰撞通常比第二個原像更容易找到(因為生日悖論),這導致了有效的第二個原像攻擊。特別是,它只需要大約 $ 2^{n/2} $ 時間和 $ 2^{n/2} $ 記憶體,而不是 $ 2^{n} $ 時間。
然而,這純粹是一種學術攻擊,因為大多數雜湊函式使用 Merkle-Damgard 構造來處理大消息,並且它在末尾包含一個指定消息長度的塊。在上述攻擊中,兩條消息的長度不同。
長消息是在填充後比散列函式的塊大小長的消息。這意味著雜湊函式必須部分處理消息並以某種方式跟踪狀態,這可能會導致攻擊。此類攻擊不適用於短於塊大小的消息,並且可能還需要大量塊才能提供真正的優勢。
例如,SHA-2 等使用的 Merkle-Damgård 結構允許進行複雜的第二次原像攻擊 $ 2^{n/2+1}+2^{n-k+1} $ ,這對於大量的塊(表示為 $ 2^{k} $ ) 比蠻力更有效率 $ 2^{n} $ 複雜。它根本不適用於單個塊消息,並且需要足夠大 $ k $ 比蠻力有真正的優勢。