Hash
通過組合 4 個不同雜湊的位來增強安全性
假設性能無關緊要,以這種方式組合散列在安全性(通常)方面是否有任何真正的好處:
雜湊函式:
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 位安全的,那麼您將回到“防止衝突攻擊”。(原像攻擊是另一回事。這取決於您考慮哪種原像抗性概念,但如果其中一個雜湊以某種方式洩露了輸入的某些位,您可能會失去原像抗性。)