Hash

雜湊摘要的矩陣乘法是否允許對結果進行操作?

  • July 10, 2021

獲取一系列字節緩衝區,對它們中的每一個進行雜湊處理,將雜湊摘要解釋為具有 8 位無符號 int 元素的方陣,然後(矩陣)按順序將它們相乘。將最終矩陣定義為元素列表的“散列”。

這個定義有一些有用的特性。特別是,矩陣乘法的關聯屬性可以通過獨立計算每個列表的雜湊值,然後通過乘法減少它們以獲得最終的列表雜湊值,從而計算兩個列表連接的列表雜湊值。這適用於任何任意分區。不可交換性提供了不同的元素順序為列表創建不同的散列,正如人們對列表所期望的那樣。

(我更詳細地探討了這個定義,包括我發布的名為Merklist的 python jupyter 筆記本中的工作程式碼範例。您也可以自己在Google Colab上玩它,並在文章上添加 hypothes.is 註釋以獲得一般回饋。我可以提升如果需要,請從那裡詳細了解這個問題。)

問題

  1. 這個定義能抵抗原像攻擊嗎?換句話說,是否可以選擇導致任意目標列表雜湊的元素序列?

請注意,元素必須存在,因此進入列表雜湊的元素摘要具有基於底層雜湊函式的原像抗性(我們可以假設它在這個問題的範圍內)。所以問題真的變成了:這些雜湊摘要的順序或存在是否可以用來任意改變最終矩陣的內容?例如,您能否生成一個元素序列,以產生一個作為零矩陣的列表散列?(擊中零矩陣意味著遊戲結束,afaict。)

我進行了一些搜尋,但沒有找到任何這些問題的答案,儘管我懷疑這可能是由於我對正確術語的無知以及不存在答案。

例如,您能否生成一個元素序列,以產生一個作為零矩陣的列表散列?

是的; 最明顯的方法是找到一個散列到所有矩陣的緩衝區 $ n^2 $ 偶數矩陣元素;將該緩衝區複製 8 次,您將得到一個全為零的產品。

這需要一個預期的 $ 2^{n^2} $ 努力尋找這樣的緩衝區;為了 $ n=8 $ ,這是有道理的。

它可能會得到改進;通過查看成對的不可逆矩陣,看起來似乎合理的是,工作量大大少於 $ 2^{64} $ ,您可以找到兩個其產品甚至包含所有元素(在這種情況下,上述觀察將適用)。

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