Hash

通過組合 4 個不同雜湊的位來增強安全性

  • June 20, 2016

假設性能無關緊要,以這種方式組合散列在安全性(通常)方面是否有任何真正的好處:

雜湊函式:

Blake512 (b)
Groestl512 (g)
Kekkack512 (k)
Skein512 (s)

輸出:

## imagine the outputs of each function as 512 single bit:
b1b2b3b4......b512
g1g2g3g4......g512
k1k2k3k4......k512
s1s2s3s4......s512

混合:

## combine the top 128bits of each output into a 512-bit hash
b1g1k1s1 + b2g2k2s2 + ....... + b128g128k128s128

這有意義嗎?如果是,我是否會通過將每個散列截斷為 128 位來降低安全性(通常)?

附言。它不是用來儲存密碼的

關於這個主題的主要問題是:防範密碼分析突破:組合多個雜湊函式。在那裡,您會發現一些用於多個雜湊函式的更好的組合器。我通常會建議不要增加額外的複雜性——一個好的雜湊應該就足夠了。

現在,關於您組合它們的方式:

這有意義嗎?如果是,我是否會通過將每個散列截斷為 128 位來降低安全性(通常)?

通過將散列截斷為 128 位,您可以更輕鬆地對散列進行暴力攻擊,也可以使其他攻擊更容易。單獨的 128 位散列是不安全的,因為 $ 2^{64} $ 碰撞攻擊在強攻擊者(例如國家安全機構)能力的合理估計範圍內。

一些散列函式,例如 SHA-2,明確聲明您可以截斷它們並假設較短的輸出大小所暗示的較低阻力。其他人沒有。

通過連接四個 128 位雜湊,如果其中至少有兩個是 64 位安全的,那麼您將回到“防止衝突攻擊”。(原像攻擊是另一回事。這取決於您考慮哪種原像抗性概念,但如果其中一個雜湊以某種方式洩露了輸入的某些位,您可能會失去原像抗性。)

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