CPA + 一次性強簽名 –> CCA?
將 CPA PKE(公鑰加密)方案與一次性強簽名相結合是否構成 CCA PKE 方案?更具體地說,讓 $ (Enc,Dec) $ 是一個 CPA PKE 方案,並且 $ (V,S) $ 是一次性簽名,即即使對於一次查詢的消息,也不能偽造一個有效的簽名。 $ S $ .
然後,構造一個新的PKE方案:
$ Enc’ $ 算法上 $ (pk,m,s) $ : $$ c1 = Enc(pk,m), $$ $$ c2=Sign(s,c1), $$ $$ return (c1,c2). $$ 和 $ Dec’ $ 算法上 $ (sk,c,v) $ : $$ if \ Very(v,c2)=0,\ return \ False; $$ $$ else \ return \ Dec(sk,c1).\ \ \ \ $$
這是CCA計劃嗎?
不能使建築成為 CCA 安全的
你寫的算法沒有說解密算法是如何獲得簽名驗證密鑰的。
- 如果驗證密鑰是公鑰的一部分,那麼沒有人可以加密,因為沒有人可以訪問簽名密鑰(正如 Mark 在上面的評論中所觀察到的)。此外,這似乎不符合您使用一次性簽名的建議。
- 如果驗證密鑰包含在密文中(明文),那麼這也不起作用。現在密文的形式是$$ (c=\textsf{Enc}(pk,m), vk, \sigma=\textsf{Sign}(sk,c|vk)) $$在哪裡 $ (sk,vk) $ 是一次性簽名密鑰對。我可以採取這種形式的密文,修改 $ c $ 以任何方式,並替換 $ vk,\sigma $ 用我自己的 $ vk’,\sigma’ $ 我生成的。這使我可以直接執行任何選擇的密文攻擊 $ \textsf{Enc} $ 在這個新方案上。
- 如果驗證密鑰在加密內部,這會更好,但仍然不安全。現在密文的形式是$$ (c=\textsf{Enc}(pk,m|vk), \sigma=\textsf{Sign}(sk,c)) $$目標是新方案對於任何CPA 安全選擇都是 CCA 安全的 $ \textsf{Enc} $ . 然而,可以建構一個病態的 CPA-secure 方案,其中可以改變 $ \textsf{Enc}(pk,m|vk) $ 進入 $ \textsf{Enc}(pk,m|vk’) $ 對於任何 $ vk’ $ 攻擊者的選擇,並且不知道 $ m $ 或者 $ vk $ . 因此,對新方案的 CCA 攻擊涉及更改 $ c $ 進入 $ c’ $ 這樣,與 $ vk’ $ 攻擊者選擇的。然後攻擊者可以在新的簽名上生成正確的簽名 $ c’ $ 並要求將其解密以顯示 $ m $ .
沒有將 CPA 編譯為 CCA 安全性的“簡單”構造
密碼學中有一個著名的開放問題:
在普通模型中,是否存在從任意 CPA 安全公鑰加密方案建構 CCA 安全公鑰加密方案的黑盒結構?
如果我們改變這個開放問題的參數,就有可能從一個 CPA 安全方案建構一個 CCA 安全方案:
- 如果我們離開普通模型並允許隨機預言機,那麼 Fujisaki-Okamoto 轉換實現了 CCA 安全性。
- 如果我們允許非黑盒構造,那麼我們可以使用 Naor-Yung 變換實現 CCA 安全性。非黑盒意味著 CCA 安全方案以某種方式使用 CPA 安全方案的原始碼。對於 Naor-Yung,您需要 CPA 安全方案的原始碼來證明關於密文的零知識聲明。
有一些部分進展證明了這個開放的問題——特別是,如果 CCA 解密算法不使用 CPA 加密算法,就不可能有這樣的構造。
您在這個問題中使用的技術都是黑盒技術,因此在建構 CCA 安全方案時不太可能有用。
如果 CPA 方案是基於身份的,則類似的技術會起作用
你的結構讓我想起了Canetti-Halevi-Katz從 CPA-secure基於身份的方案到 CCA-secure(非基於身份)方案的轉換。
讓 $ \textsf{Enc}(pk,id,m) $ 表示基於身份的加密 (IBE) $ m $ 認同 $ id $ ,使用公共全域參數 $ pk $ . 那麼CHK的構造是: $$ \textsf{Enc}^*(pk,m) = (vk, c = \textsf{Enc}(pk, vk, m), \sigma = \textsf{Sign}(sk,c)) $$ 換句話說,要加密:
- 生成一次性簽名密鑰對 $ (sk,vk) $ .
- 使用 IBE 加密明文,使用 $ vk $ 作為身份
- 簽署 IBE 密文 $ sk $
- 給 $ vk $ 、IBE 密文和簽名
結果是 CCA 安全的,粗略的直覺是 CPA 安全的 IBE 可能對明文具有延展性,但就身份而言它必須是不可延展的。