lancer1268's blog

只知其一

考慮以下問題:

Alice 手中有兩個資訊:資訊一跟資訊二。

Alice 想讓 Bob 獲得其中一個資訊,並且

他們該怎麼做呢?


思考一下


反推的思路(不知道有沒有漏洞):

照時間順序的話:

  1. Alice 為資訊一跟二各別生成一對加密的公私鑰 (Pub_1, Priv_1), (Pub2, Priv_2),跟 Bob 說 :「資訊一的公鑰是 Pub_1,資訊二的公鑰是 Pub_2」。
  2. Bob 生成一個對稱加密的金鑰 K,接著 Bob 用想要獲得的那個資訊對應的公鑰 Pub_i 加密自己的金鑰 K :
    • 如果 Bob 想要獲得資訊一,則用 Pub_1 加密 K。
    • 如果 Bob 想要獲得資訊二,則用 Pub_2 加密 K。
  3. Bob 把加密的結果 m 傳給 Alice:「我把我選的金鑰用某個公鑰加密成 m 了」。
  4. Alice 用兩個私鑰 Priv_1, Priv_2 嘗試解密 m,得到兩個結果 K1, K2:
    • 用 Priv_1 嘗試解密 m 得到 K1。
    • 用 Priv_2 嘗試解密 m 得到 K2。
  5. Alice 用對稱加密把資訊一跟二用前一步的結果分別加密:
    • 用 K1 對稱加密資訊一得到 M1。
    • 用 K2 對稱加密資訊二得到 M2。
  6. Alice 把 M1, M2 傳給 Bob:「資訊一加密後是 M1, 資訊二加密後是 M2」。
  7. Bob 用自己的私鑰 K 解密當初選擇的資訊。