ISO 9797 MAC 算法 3 為 7 個字節
我應該使用初始轉換 1 實現ISO 9797 MAC 算法 3,不進行截斷,並使用 DES 作為分組密碼。
0x80
如果長度不是 8 的倍數,我應該添加,然後添加足夠的零字節。
- 我想知道如果數據只有 8 個字節會發生什麼?
- 我應該將數據直接提供給 3DES 算法,還是應該先將數據提供給 des,然後再提供給 3DES?
我想知道如果數據只有 8 個字節會發生什麼?
如果數據已經是 8 個字節,那麼您需要一個包含
8000000000000000
(150
s) 的附加塊,因為填充方法 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 $ 是填充的零點。
- 1996 年,Preneel 和 Oorschot 實現了 $ [2^{k+1},2^{n/2},0,0] $ 關於 ANSI X9.19 零售 MAC 的密鑰恢復攻擊
- 1998 年,Knudsen 和 Preneel 實現了 $ [2^k,1,0,2^k] $ on MacDES:基於DES的MAC算法
- 上,2002 年米切爾實現了 $ [2^{k+1},0,0,(\lceil n/m \rceil +1) 2^{(n+m)/2-1}] $ 對ANSI 零售 MAC 的新密鑰恢復攻擊
因此,如果沒有具體的用法,請不要使用它。