Hash

是什麼讓 SHA-256 具有抗原像性?

  • August 9, 2016

我正在閱讀一些人SHA-256算法的描述,我注意到它使用的基本操作似乎微不足道:加法、旋轉位等。當我說“反向”時,我並不是指檢索用於生成雜湊,我的意思是找到一些生成相同雜湊的輸入(發現衝突)。我想了解為什麼這實際上很困難。

原像抗性:對於散列函式的輸出空間中的給定h,很難找到任何H(x)=h的消息x資源

是一個一般解釋,為什麼一個函式可以很容易以一種方式計算,但很難反轉(以另一種方式計算)。是什麼特別賦予了 SHA-256 這個屬性?如果有人試圖產生雜湊衝突,他們會面臨哪些障礙?

來自 Wikimedia Commons 的 SHA-256 圖

AH 的初始值在算法中是預先確定的。實際輸入來自W. 在這個意義上,“初始狀態”可以被認為是使用者輸入和預定值的組合。這是否會導致難以找到碰撞?如果 AH 的初始值可以是任意值,那麼找到雜湊衝突會很簡單嗎?

您似乎在想“輪函式的輸出似乎是前一輪的簡單函式,以及消息中的一個詞;為什麼我們不能選擇消息詞來引導輸出到我們想要的任何內容”。

好吧,您給出的簡單描述中缺少一些東西;消息擴展。輸入W不只是直接取自輸入消息;前 16 個是,但其他 48 個是輸入消息的線性函式。如果修改一個輸入詞,則必然會修改多個W輸入;這有效地停止了這種簡單的轉向策略,因為調整一個W輸入(以獲得所需的狀態)必然會修改其他輸入(這將修改您嘗試設置的狀態)。

這並不能證明 SHA-256 是安全的(SHA-1 執行相同類型的消息擴展,我們知道這很弱);然而,它確實表明這種方法似乎並不富有成效。

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