Mac

如何解決我在證明中偶然發現的這個基本 MAC 悖論?

  • June 30, 2016

認為 $ S: K \times M \to T $ 是一個安全的 MAC。( $ K $ = 鍵空間, $ M $ =消息空間, $ T = {0,1}^n $ =標籤空間。)

$ S $ 安全意味著無論什麼消息 $ m_1,…,m_q $ 我們扔在 $ S $ 取回標籤 $ t_1,…,t_q $ :

$ { (m_1,t_1),…,(m_q,t_q) } $

我們隨後無法找到另一個消息標籤對 $ (m,t) $ 那不在上面的集合中。換句話說,我們找不到偽造品 $ (m,t) $ .


讓我們創建一個新的 MAC $ S’ $ 基於 $ S $ :

$ S’(k,m) = (S(k,m), S(k,0^n)) $

舉個例子就很清楚了 $ S’ $ 不安全。攻擊很簡單:投擲 $ S’ $ 一些 $ m \neq 0^n $ , 並提取值 $ s = S(k,0^n) $ 出標籤。然後,消息 $ 0^n $ 並標記 $ (s,s) $ 是我們的贗品。


這是悖論。我相信我可以證明如果 $ S’ $ 可以鍛造,比可以 $ S $ . 這將證明如果 $ S $ 是安全的(正如我們假設的那樣), $ S’ $ 是安全的!我的證明一定有問題,所以我的問題是,下面的證明有什麼問題?

認為 $ S’ $ 可以偽造。換句話說,我們拋出了 $ S’ $ 消息 $ m_1,…,m_q $ 並取回標籤 $ t_1 = S’(k,m_1), …, t_q = S’(k,m_q) $ 並隨後獲得了偽造的消息標籤對 $ (m, t = S’(k,m)) $ 這樣

$ (m, S’(k,m)) \notin $ $ { (m_1,S’(k,m_1)),…,(m_q,S’(k,m_q)) } $

換句話說,

$ (m, (S(k,m),S(k,0^n))) \notin $ $ { (m_1,(S(k,m_1),S(k,0^n))),…,(m_q,(S(k,m_q),S(k,0^n)))} $ (*)

那麼似乎很明顯,以下是我們偽造的 $ S $ :

$ (m, S(k,m)) \notin $ $ { (m_1,S(k,m_1)),…,(m_q,S(k,m_q)) } $

因為 $ (m, S(k,m)) $ 作為該集合中的一個元素將與 (*) 相矛盾。

我的證明到此結束。它一定有什麼問題。問題是,什麼?

你的攻擊 $ S $ 涉及計算 $ S’(k,m_i) $ 對於任意消息 $ m_1,\dots,m_q $ . 為此,您必須計算 $ S(k,m_i) $ 和 $ S(k,0^n) $ ,因此你得到了 $ S(k,0^n) $ . 這意味著 $ 0^n $ 必須被添加到無效偽造列表中,因此為了提供有效的偽造 $ S $ , 你必須有

$$ (m,S(k,m)) \notin {(0^n,S(k,0^n),(m_1,S(k,m_1)),\dots,(m_q,S(k,m_q))}. $$ 但是你不知道怎麼做:唯一已知的攻擊 $ S’ $ 精確地涉及計算 $ S(k,0^n) $ . 更準確地說,攻擊是這樣的:

  1. 計算 $ S’(k,m) $ 對於一些 $ m \ne 0^n $ .
  2. 輸出 $ (0^n, (s,s)) $ 作為偽造品 $ S’ $ (在哪裡 $ s = S(k,0^n) $ ).

然後,你呈現 $ (0^n, s) $ 作為偽造品 $ S $ ,但這不是一個有效的。

這個錯誤在你的證明中表現出來的確切點是你寫的時候

因為 $ (m,S(k,m)) $ 作為該集合中的一個元素將與 (*) 相矛盾。

這假設如果 $ (m,S(k,m)) $ 在第二組中,這必然意味著 $ (m,S’(k,m)) $ 在第一個。換句話說,如果一個“請求” $ S(k,m) $ 提出,這必然意味著要求 $ S’(k,m) $ 也被製作了。這又是不正確的:可以請求 $ S(k,0^n) $ 不為 $ S’(k,0^n) $ .

第一點:

扔在 $ S′ $ 一些 $ m\neq0^n $ , 並提取值 $ s=S(k,0^n) $ 出標籤。然後,消息 $ 0^n $ 並標記 $ (s,s) $ 是我們的贗品。

造假就是暴露 $ m $ 和 $ m’ $ 如 $ S’(m,k) = S(m’,k’) $ .

你在這裡計算: $ S’(k,m) = (S(k,m),s) = (\sigma,s) $

和 $ S’(k,0^n) = (s,s) $

但你之間沒有碰撞 $ (\sigma,s) $ 和 $ (s,s) $ 或者我錯過了一些東西。如果你拿 $ m = 0^n $ 顯然,結果將與您具有相同的輸入相同。

第二條評論:

如果 $ S: K \times M \rightarrow T $ 是完全安全的,那麼這假設對於任何一對 $ (k,m) $ , 有一個 $ t $ 如 $ S(k,m) = t $ . 換句話說, $ card(K) \times card(M) \le card(T) $ .

在這個假設下, $ S’ $ 可以被視為安全的任何 $ (k,m) $ , $ S’(k,m) = (S(k,m), \chi) $ 將是唯一的(由於第一個座標)。

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