Encryption

公鑰/非對稱加密,您只能通過洩露密碼來洩露解密的消息

  • May 3, 2022

一群朋友正在使用公鑰加密通過一個開放的公共論壇相互發送加密消息。即每個朋友都有一個公鑰(你可以用來為他們加密消息)和一個私鑰(他們用來為他們解密消息)。

Bob 向 Alice 發送加密消息 $ y $ , 解密後產生文本 $ x= $ “除非你寄給我 1000 美元,否則我會殺了你”。愛麗絲顯然很生氣,向所有人發送未加密的消息“鮑勃是個壞人。他說 $ x $ 對我來說,你們都可以通過用我的公鑰加密來驗證 $ y $ ,他之前在我們的公共論壇上發布過。” 這是 Mary 向所有人公開 Bob 的消息的一種完全證明的方法。

我的問題是,是否有任何公鑰/非對稱加密方案可以阻止 Mary 將 Bob 的加密消息暴露給所有人?例如,Mary 可以證明 Bob 的解密消息是什麼的唯一方法是透露她的密鑰(她用來解密的密碼)。

編輯:我的一個想法是加密方案允許某種隨機數,或安全隨機化消息被加密的內容。例如,如果 $ x $ 是 Bob 想要加密的文本,他可以選擇一個隨機的“nonce” $ s $ , 並產生 $ y_s $ . 然後瑪麗可以解密 $ y_s $ 要得到 $ x $ ,但她不會知道 $ s $ ,所以她不能這麼說 $ x $ 生產 $ y_s $ 除非她透露她的密鑰。我知道這個 nonce 概念存在於密碼學中,但如果有人能給我一個如何實現它的明確範例(也許使用像 RSA 這樣簡單的東西),那將不勝感激。

我想我找到了使這成為可能的解決方案!關鍵概念稱為Deniable Authentication,目的是知道誰在發送消息,但無法向其他人證明。在Wei-Bin Lee、Chia-Chun Wu、Woei-Jiunn Tsaur(2006 年 4 月 17 日)中可以找到一個實用且簡單的實現(參見第 3 節“我們提出的協議”)。我將在這裡概述其中的要點。

如果發送者 Sally 想向接收者 Ryan 發送消息,則可以這樣完成。

  1. Sally 和 Ryan 都有公鑰和私鑰。
  2. 莎莉發資訊 $ M $ ,以及隨機生成的 $ (r , MAC) $ ,它使用了 $ M $ ,以及 Sally 的密鑰和 Ryan 的公鑰。
  3. 給定 $ M $ 並且和 $ r $ , 蘭迪驗證他可以生產 $ MAC $ 使用他的密鑰和 Sally 的公鑰。如果他確實產生了匹配 $ MAC $ ,這意味著 Sally 確實發送了消息。否則,它是假的。

為什麼這樣的解決方案有效?因為 Sally 和 Ryan 都可以製作 $ (r , MAC) $ 隨著 $ M $ . 所以如果瑞恩去警察局說“莎莉說 $ M $ =‘我要殺了你’,這就是 $ (r, MAC) $ 證明這一點!!!”。警察只會說“我們怎麼知道是莎莉製作的,而不是你製作的?”,莎莉可以吹噓同樣的事情。

因此,因為發送者和接收者都有能力或產生相同的東西,所以他們都不能向其他方證明他們中的哪一個說的。

如果除此之外,您還希望對消息進行加密,那麼 Sally 和 Ryan 可以輕鬆地創建一個共享秘密(來自 diffie-hellman),用於加密他們的消息。

無論如何,我認為案件已結案!同樣,如果您想要實現此協議的實際數學,它非常簡短。只需檢查紙張。

您對包含 nonce 的加密方法的想法以及 Alice 無法恢復 nonce 的方式是實用的;但是它並不能解決您的問題。

一種可能性是El Gamal的變體;在這個系統中,Alice 的公鑰是一個值 $ A= G^a \bmod p $ , 和 $ a $ 作為 Alice 的私鑰,並且 $ G, p $ 是公共參數(與 $ p $ 是一個安全的素數,並且 $ G $ 二次殘差)。

加密消息 $ M < p/2 $ , Bob 會選擇一個隨機值 $ r $ ,並生成密文 $ G^r \bmod p, M^2 \cdot A^r \bmod p $ .

解密該對 $ X, Y $ ,愛麗絲會計算 $ M^2 = Y \cdot X^{-a} \bmod p $ (然後取模平方根 $ M^2 $ 恢復 $ M $ ).

如果愛麗絲得到這對 $ X, Y $ , 她不知道值 $ r $ ,因此,乍一看,表明 $ G, A = G^a, X = G^r, Y \cdot M^{-2} = G^{ar} $ DH 集是決策 Diffie-Hellman 問題,一般來說很難;她可以通過暴露輕鬆做到這一點 $ a $ ,但對她來說,這會破壞目的。

然而,她能做的是生成一個零知識證明 $ G^x = A $ 和 $ X^x = Y \cdot M^{-2} $ 有一個共同的解決方案 $ x $ (她可以這樣做,因為她知道常見的解決方案是什麼);這個零知識證明將表明 $ M $ 是解密,沒有暴露她的私鑰。

這導致了更一般的觀察;如果解密算法 $ D $ 和公鑰生成 $ Gen $ 兩者都在 polytime 中執行,然後聲明 $ D(a, C) = M \land (a, A) = Gen(seed) $ (對於公眾 $ C $ 和 $ M $ Alice 聲稱的解密是 NP 中的一個語句(與 $ a $ 和 $ seed $ 作為“證人”),並且對於 NP 中的這樣一個陳述,人們可以建構一個零知識證明,表明 $ M $ 是正確的解密。

所以,除非 Bob 可以聲稱他實際上並沒有發送密文 $ C $ (我假設以某種方式假設每個人都知道他做到了),這聽起來不像是一個可以解決的問題。

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