驗證 AES 密鑰是否為公鑰接收者正確加密的方案
在我們的文件共享場景中,有三個參與者: $ A $ , $ B $ 和 $ C $ . 每個參與者都有一個公私密鑰對(我們現在假設 RSA)。 $ A $ 想要共享一個對稱的 AES 密鑰 $ k $ 與其他參與者。 $ B $ 可以免費訪問該文件,而 $ C $ 必須為此付費。因此, $ A $ 可能會作弊 $ C $ 通過提供錯誤的密鑰 $ k’ $ , 和 $ B $ 如有爭議,應能擔任仲裁員。
順序如下:
- $ A $ 首先共享 AES 密鑰 $ k $ 和 $ B $ 通過加密它 $ B $ 的公鑰並使其可用於 $ B $ . 現在 $ A $ 和 $ B $ 可以訪問對稱 AES 密鑰。
- 然後, $ A $ 共享相同的密鑰 $ k $ 和 $ C $ 通過加密它 $ C $ 的公鑰,使所有參與者都可以使用密文。
- $ B $ 現在應該能夠證明提供給 $ C $ 確實是關鍵 $ k $ 加密 $ C $ 的公鑰。
這可以通過使用教科書 RSA 來實現,其中密文是確定性的。由於教科書 RSA 是不安全的,因此這不是一個選擇。我認為這類似於密鑰託管方案/可驗證加密,但我一直無法為提議的場景找出方案/加密實現。
這可以通過使用教科書 RSA 來實現,其中密文是確定性的
你有正確的想法,確定性方案是要走的路。但是請注意,如果您明確修復使用的隨機性,每個方案都是確定性的。
所以假設你加密 $ k $ 為了 $ C $ 作為 $ c=\operatorname{Enc}_{\text{pk}C}(k;r) $ 使用 $ C $ 的公鑰和隨機性 $ r $ . 現在你給的仲裁 $ k $ 至 $ B $ 誰檢查 $ k $ 實際上是正確的。然後你有 $ C $ 發送收到的 $ c $ (叫它 $ c_C $ ) 至 $ B $ 並且有 $ A $ 發送 發送 $ c $ (叫它 $ c_A $ ) 以及隨機性 $ r $ 用於加密 $ B $ . 您可以使用這裡加密隨機性 $ B $ 的公鑰。然後 $ B $ 重新計算 $ c’=\operatorname{Enc}{\text{pk}_C}(k;r) $ 使用接收到的隨機性和自己已知的 $ k $ 並檢查是否 $ c’ $ 火柴 $ c_A $ 和 $ c_B $ . 如果至少匹配 $ c_B $ 然後 $ A $ 很誠實(因為那時 $ B $ 得到正確的鑰匙)。如果只匹配 $ c_A $ 然後 $ A $ 或者 $ B $ 是在撒謊,但我們不知道是哪個,因為 $ B $ 可以產生自己的密文並將其發送到 $ B $ 或者 $ A $ 可以產生正確的密文 $ B $ 但發送了一個壞的 $ C $ . 我認為沒有辦法解決這個問題並找出最後誰撒了謊。