Mac

ISO 9797 MAC 算法 3 為 7 個字節

  • August 1, 2020

我應該使用初始轉換 1 實現ISO 9797 MAC 算法 3,不進行截斷,並使用 DES 作為分組密碼。

0x80如果長度不是 8 的倍數,我應該添加,然後添加足夠的零字節。

  • 我想知道如果數據只有 8 個字節會發生什麼?
  • 我應該將數據直接提供給 3DES 算法,還是應該先將數據提供給 des,然後再提供給 3DES?

我想知道如果數據只有 8 個字節會發生什麼?

如果數據已經是 8 個字節,那麼您需要一個包含8000000000000000(15 0s) 的附加塊,因為填充方法 2要求添加1和必要0的 ‘s。

請注意,填充機制 2 不是面向字節的,而是面向位的。每當數據完成時,您都會添加1並添加必要的零,以便數據大小是所選分組密碼的倍數。

7個字節

在這種情況下,您只需添加0x80. 在 1 之後添加 7 個零以適合 64。

我應該直接將數據提供給 3DES 算法,還是應該先將其提供給 DES,然後再將其提供給 3DES?

這個 MAC 被稱為

  • ANSI 零售-MAC
  • CBC-MAC-Y 或
  • ISO/IEC 9797-1 算法 3。

對於 DES,它也稱為 DES 零售 MAC,並使用兩個密鑰 $ K $ 和 $ K’ $ .

首先,它作為 DES-CBC 工作,然後在 Encrypt-Decrypt-Encrypt 中使用 3DES 執行輸出,最後一個塊上的兩個密鑰 x-ored $ H_{q-1} $ . 不需要 3DES 實現來實現這一點。

$$ \begin{align} H_1 & = e_K(D_1) \ H_i & = e_K(D_i \oplus H_{i-1}), \quad (2 \leq i \leq q)\ MAC & = e_K(d_{K’}(H_q)). \end{align} $$

如果我們重寫方程

$$ \begin{align} H_1 & = e_K(D_1) \ H_i & = e_K(D_i \oplus H_{i-1}), \quad (2 \leq i \leq q-1)\ MAC & = e_K(d_{K’}(e_K((D_q \oplus H_{q-1}))). \end{align} $$

三重DES(EDE)將出現在最後。

對 DES 零售 MAC 的攻擊

對 DES 零售 MAC 的攻擊形式化為四元組 $ [a,b,c,d] $ 在哪裡

  • $ a $ 是離線分組密碼加密的數量
  • $ b $ 表示已知數據串/MAC 對的數量
  • $ c $ 表示選擇的數據串/MAC 對的數量
  • $ d $ 表示線上 MAC 驗證的數量,並且
  • $ k $ 是密鑰大小
  • $ n $ 是塊大小
  • $ m $ 是填充的零點。
  1. 1996 年,Preneel 和 Oorschot 實現了 $ [2^{k+1},2^{n/2},0,0] $ 關於 ANSI X9.19 零售 MAC 的密鑰恢復攻擊
  2. 1998 年,Knudsen 和 Preneel 實現了 $ [2^k,1,0,2^k] $ on MacDES:基於DES的MAC算法
  3. 上,2002 年米切爾實現了 $ [2^{k+1},0,0,(\lceil n/m \rceil +1) 2^{(n+m)/2-1}] $ 對ANSI 零售 MAC 的新密鑰恢復攻擊

因此,如果沒有具體的用法,請不要使用它。

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