是方案(r,米一個Cķ(r)⊕m)(r,米一個Cķ(r)⊕米)(r, Mac_k(r) oplus m)CPA 安全?
老實說,我承認這個問題來自一個硬體作業:
證明或反駁:以下加密方案是 CPA 安全的:讓 $ (\text{Gen}, \text{Mac}, \text{Vrfy}) $ 成為帶有長度標籤的安全 MAC $ n $ . 加密消息 $ m \in (0,1)^n $ 通過隨機選擇 $ r \in (0, 1)^n $ 並輸出 $ (r, \text{Mac}_k(r) \oplus m) $ .
由於我剛剛開始學習本課程,請指出我的方法或我對技術術語的使用是否不正確或不精確。我正在關註名為“現代密碼學簡介”的書。
- 我的第一個方法是駁斥這種說法。我想為一個安全但產生非安全方案的 MAC 舉一個例子。例如,考慮在末尾附加一個零的 MAC。據我所知,PRF $ f $ 可以用作 MAC,所以我可以定義類似 $ \text{Mac}(x) = f(x) ||0 $ 或者,甚至使用其他 MAC 代替 $ f $ . 很容易看出,該方案不會是 CPA 安全的,因為對手的決定只能基於消息的最後一位。
- 與我的第一種方法相比,我實際上想證明它。我的直覺告訴我,給定一個隨機的 $ r $ , $ \text{Mac}_k(r) $ 也應該是隨機的。因此,我得到一個隨機字元串異或 $ m $ (實際上看起來像一個 OTP),這應該是安全的。
問題是我不知道如何通過歸約來完成我的證明。如果我建立一個攻擊者 $ A’ $ 它應該如何與其他攻擊者互動 $ A $ ? 我會首先假設該方案不是 CPA 安全的,並且會通過提供一個 MAC 來產生矛盾,該 MAC 會產生一個不是 CPA 安全的方案——但我對如何做到這一點感到非常困惑。
如果我能得到一些關於如何正式化我的構想的線索或相關例子,那就太好了。
您的第一種方法幾乎是正確的。除了長度之外,您的問題沒有說明安全 MAC 的形狀。安全 MAC 僅表示您不能從以前的標籤中偽造新標籤。
讓 $ MAC_1 $ 是具有輸出長度的安全映射 $ n-1 $ 比
$$ MAC_2(m) = MAC_1(m)|0 $$ 將是具有輸出長度的安全 MAC $ n $ .
現在,放 $ MAC_2 $ 進入您的方案並使用 0 來區分消息。對手發送兩條消息 $ m_1 $ 和 $ m_2 $ 這樣 $ \operatorname{lsb}(m_1) \neq \operatorname{lsb}(m_2) $ . 當消息返回時,他可以通過觀察 lsb 來區分 $ MAC(r_i)\oplus m_i $