是否可以使用不同的密鑰從單個密文中獲取不同的明文?
假設有一個您無法解密的晶片文本,但您知道明文可以是 A、B 或 C。然後將用於加密晶片文本的密鑰交給您。您可以解密 Chipertext 並得到等於 A 的明文。原始明文是否可能是 B 或 C 並且您收到了一個密鑰,這樣解密過程會給出不同的明文 (A) 作為輸出?
當然,每個 A、B 和 C 對您來說都有意義,所以如果您解密其他內容(如 D、E、F ……),您就會明白它是沒有意義的。另外,我想補充一點,您接收密鑰的來源是不可信的,但這並不意味著密鑰總是不正確的。
為了澄清:
- 我收到無法解密的密文
- 我收到了解密密文的密鑰
- 我使用步驟 2 中的密鑰解密密文並獲取明文
如果我不能信任獲取密鑰和密文的來源,我如何確定獲得的明文實際上是先前加密的?
如果我不能信任獲取密鑰和密文的來源,我如何確定獲得的明文實際上是先前加密的?
一般來說,你不能。的標準安全概念並不意味著任何約束。即,定義不排除,給定一個鍵 $ k $ 和一個密文 $ c \gets \operatorname{Enc}(k,m) $ 攻擊者可能能夠找到密鑰 $ k’ $ , 這樣 $ m’ = \operatorname{Dec}(k’,c) $ 對於一些 $ m’ \neq m $ . 事實上,對於許多加密方案,例如在某些非身份驗證操作模式下的分組密碼或流密碼,這總是可能的,因為使用任何密鑰解密總是會成功。不同方案之間的區別在於攻擊者可以控制多少 $ m’ $ . 但是對於許多方案,一些控制,例如確保幾個位具有特定值當然是可能的。
將加密方案打開到與最初加密不同的值稱為模棱兩可。AleksanderRas 描述的一次性密碼是一種模棱兩可的加密方案的極端,完全模棱兩可。即,對於任何密文 $ c $ 和任何明文 $ m’ $ 有可能找到一把鑰匙 $ k’ $ , 這樣 $ \operatorname{Dec}(k’,c)=m’ $ . 模棱兩可實際上是加密方案在安全多方計算等應用中的一個有用屬性。然而,完全模棱兩可實際上意味著該方案必須具有與消息大小一樣大的密鑰大小。有一些模棱兩可和非承諾加密的寬鬆概念。
最後一個概念的名稱使我們認識到,您實際上確實希望您的加密方案不模棱兩可。與模棱兩可的加密方案相反的是送出加密方案,其中密文作為對明文的承諾。
在這一點上,您的問題,特別是“密鑰交換”標籤讓我相信您實際上可能不是在尋找加密方案,而是在尋找承諾方案。承諾方案允許一方承諾消息 $ m $ 在承諾中 $ c \gets \operatorname{Com}(m;r) $ . 這樣的承諾以後通常可以通過揭示隨機性來開啟 $ r $ 在承諾中使用。
承諾方案有兩個重要屬性:
- 它是隱藏的,意思是 $ c $ 什麼也沒透露 $ m $ .
- 它是有約束力的,這意味著它是不可能模棱兩可的,即打開承諾 $ c $ 給一條消息 $ m’\neq m $ .