Hash

SHACAL-2 密碼是如何計算的?

  • January 18, 2021

我正在嘗試了解不同散列函式(目前為 SHA)的底層功能,即使在觀看了關於它的斯坦福影片後,我也很困惑。

一種散列方法是使用 Merkel-Damgård 構造和 David Meyers 函式和 SHACAL-2 分組密碼。

據我了解,MD 是將消息劃分為包含前一個塊值或 IV(由散列函式或自定義鹽鍵定義的初始向量)的 64 位塊鏈。塊值或 IV 以及目前塊值和一些 x 位密鑰在通過 SHACAL-2 函式之後是新密碼。

這理解正確嗎?如果是:SHACAL 函式內部會發生什麼?什麼是數學?

我發現了這個,但它並沒有真正回答我的問題: SHA-256 中的 SHACAL

MD 構造使用壓縮函式 $ C $ ( $ F $ 在圖中),使其具有兩個輸入。

$$ h_i = C(h_{i-1},m_i) $$

在此處輸入圖像描述

和第一個 $ h_{-1} = IV $ 和最後一個 $ H = h_{2^k-1} $ 是雜湊值。

在此處輸入圖像描述

壓縮函式可以使用分組密碼,其中分組密碼的消息是先前的雜湊值,密鑰是消息。 $ h_i = E_{m}(h_{i-1}) $

使用分組密碼進行壓縮功能的第一個描述存在於默克爾的論文第 11 頁。這種結構是完全不安全的,因為現有的分組密碼直接連結,並且可以證明它具有 $ \mathcal{O}(2^{n/2}) $ 第二原像電阻而不是 $ \mathcal{O}(2^{n}) $ .

我們不希望像 AES 和 DES 這樣的分組密碼中存在相關的密鑰攻擊。這不會給加密帶來問題,因為密鑰是隨機選擇的,但是相關的密鑰可以用來攻擊散列函式。Mannik 和 Preenel 對此進行了廣泛的討論

由於對壓縮函式的碰撞攻擊,我們想要大輸入$$ 1 $$因此需要處理更多輪次。因此,設計人員為 MD 結構創建了一個新的分組密碼,而不是使用現有的分組密碼。對於 SHA-1,它被稱為 SHACAL,對於 SHA-2,它被稱為 SHACAL-2。

分割值取決於壓縮函式,MD5、SHA-1、SHA256使用512位消息塊,SHA512使用1024位消息塊。消息被填充為塊大小的倍數,消息大小在最後進行編碼。

例如NIST FIPS 180-4上的 SHA-512 填充

假設消息的長度, $ M $ , 是 $ \ell $ 位。將該位附加1到消息的末尾,然後是 $ k $ 零位,其中 $ k $ 是方程的最小非負解 $$ \ell + 1 + k \equiv 896 \bmod 1024 $$然後追加等於數字的 128 位塊 $ \ell $ 使用二進製表示

形式化任意塊大小 $ b $ 和 $ d $ -bit 編碼消息大小(SHA-1 和 SHA256 為 64,SHA512 為 128。

$$ \ell + 1 + k \equiv b-d \bmod b $$

因此設計標準是具有多輪分組密碼,SHACAL 有 80 輪,SHA-256 有 64 輪,SHA512 有 80 輪,同時保持輪函式簡單。

並且分組密碼被用作戴維斯-邁耶來創建單向壓縮函式。

例如,SHA256 的數學運算是

  • $ \operatorname{Ch}(E,F,G) = (E \land F) \oplus (\neg E \land G) $
  • $ \operatorname{Ma}(A,B,C) = (A \land B) \oplus (A \land C) \oplus (B \land C) $
  • $ \Sigma_0(A) = (A!\ggg!2) \oplus (A!\ggg!13) \oplus (A!\ggg!22) $
  • $ \Sigma_1(E) = (E!\ggg!6) \oplus (E!\ggg!11) \oplus (E!\ggg!25) $

在此處輸入圖像描述

按位旋轉對 SHA-512 使用不同的常數。給定的數字適用於 SHA-256。

這紅色 $ \boxplus $ 意思是 $ c = a + b \mod 2^{32} $ ,即模加法。

正如我們所看到的,CPU 可以處理的簡單操作、輕量級的圓形功能,以及一些退化的不平衡 Feistel 結構。

我們從Tiny Encryption 算法中了解到,即使是簡單的輪次,在 32 輪之後也可以是安全的。

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