下面的證明方案是零知識嗎?
考慮到我希望證明一些與公鑰相對應的 RSA 私鑰的知識 $ (e,N) $ . 一個簡單的互動式證明方案將按如下方式進行:
- $ V $ 生成一些隨機消息 $ m $ 並對其進行加密,發送加密數據 $ c $ 至 $ P $
- $ V $ 然後請求 $ m $ 從…回來 $ P $ . 假設 $ P $ 可能不知道 $ m $ 在外面 $ c $ , 然後 $ P $ 可以證明知識 $ d $ 通過以正確的方式回應 $ m $
假設 RSA 問題的難度,這似乎是合理和完整的。顯然,這必須是一個私人硬幣系統,因為如果隨機數據是公開的,那麼就是不誠實的 $ P $ 將能夠推斷出任何 $ m $ . 我認為我們還需要假設這是一個誠實驗證者方案,其基礎是解密預言機將允許破解教科書 RSA(我認為)。但是,我們也可以抽像出所使用的非對稱密碼系統的細節,並假設它是一些理論上的非對稱密碼系統,無法使用解密預言機破解,然後我認為我們可以放棄這個規定。
直覺地說,這個方案不是零知識,因為我們放棄了一些有意義的東西(即任意解密 $ c $ )。然而,我們可以很容易地為這個方案建構一個模擬器,它將選擇一些隨機的 $ m $ ,加密它,然後只發回原件 $ m $ - 這意味著它實際上是零知識。我在這裡錯過了模擬器可以/不能做什麼的細微差別嗎?
這個方案是 RSA 的零知識(為什麼/為什麼不)?如果不是,它是否是零知識與一些理想化的非對稱方案,不易受到任何基於解密預言的攻擊(為什麼/為什麼不)?
自從發布此問題以來,我已經閱讀了一些內容,現在我對此有了更好的了解,因此我將自行回答。
混淆源於零知識和誠實驗證者零知識之間的差異。考慮驗證者 $ V^0 $ 這將產生一個隨機 $ m $ , 加密生成密文 $ c $ 並通過頻道發送到 $ P $ . $ P $ (假設也是誠實的)然後會回應 $ m $ . 這種互動是微不足道的零知識。直覺上, $ V^0 $ 什麼都沒學到,因為他們已經知道了 $ m $ - 形式上,我們可以建構一個模擬器,通過生成隨機 $ m $ 並對其進行加密。然而, $ V^0 $ 是誠實的驗證者- 它是根據協議行事的驗證者。
考慮以下惡意驗證者 $ V^* $ :它不執行任何加密,只會發送一組密文, $ c^* $ . 現在學到了一些東西 - 解密 $ c^* $ ,這是以前不知道的,因為 $ c^* $ 不是已知加密的結果,而是特定選擇的結果。零知識的定義規定,所有的驗證者都必須有一個模擬器。 $ V^* $ 在不知道秘密的情況下無法模擬,因為通過重新加密很容易檢查解密是否正確,因此正確解密 $ c^* $ 必須為模擬器所知,在這種情況下,模擬器必須能夠解密任意密文,而這在不訪問密鑰的情況下是不可能的;因此,無論使用何種密碼系統,該方案實際上都不是零知識(除非密碼系統被破壞,因此模擬器可以在多項式時間內解密任意消息,在這種情況下,證明沒有實際意義)。注意這裡是必不可少的 $ V^* $ 每次發送一個固定的密文 - 如果 $ c^* $ 每次互動都是隨機挑選的,轉錄本很容易被偽造。
這不是原始問題的一部分,但我認為提出這一點很重要 - 這不是我想要的有效知識證明。事實上(表示為 $ S_\mathcal{M} $ 這個方案用一些密碼系統實現 $ \mathcal{M} $ ), " $ S_\mathcal{M} $ 是知識的證明” $ \implies $ “解密oracle訪問 $ \mathcal{M} $ 允許私鑰外洩”。這是缺乏承諾階段的直接後果,如在 $ \Sigma $ -協議。知識證明要求我們可以編寫一個提取器 $ E $ 可以從中檢索秘密 $ P $ 如果允許倒回其狀態。然而, $ P $ 如此處所述是無狀態的——無論在哪個互動或互動中何時發送輸入,輸出都是相同的——因此存在一個有效的提取器 $ P $ 立即暗示 $ \mathcal{M} $ 被解密oracle訪問完全破壞。這只是一個互動式證明,證明(與 $ \epsilon $ ,誤差範圍,模糊定義) $ P $ 可以解密任意消息 - 它不滿足證明私鑰知識的要求。