為什麼 Bellare-Micali Oblivious Transfer Construction 需要帶有散列密鑰的 ElGamal?
Bellare-Micali Oblivious Transfer Constructions 的思想如下:
非正式地,接收者需要生成兩個公鑰 $ y_b $ , $ y_{b-1} $ 這樣它只知道配對的密鑰 $ y_b $ (在哪裡 $ b $ 是它的選擇位),用 $ k $ . 為了防止接收方作弊,發送方要求生成的兩個公鑰必須滿足一定的約束條件,即 $ y_b \cdot y_{b-1} = c $ . 以這種方式,接收方不能知道兩個私鑰,或者它可以計算 DLOG。此時,接收方將兩個公鑰發送給發送方。然後,發件人加密 $ m_0 $ 和 $ y_0 $ 和 $ m_1 $ 和 $ y_1 $ 並發送兩個加密 $ c_0 $ , $ c_1 $ 到接收器。最後,接收方得到 $ m_b $ 通過解密chipertext $ c_b $ (對應於它的選擇位)使用私鑰 $ k $ (注意 $ c_b $ 是它可以解密的唯一晶片文本)。
雖然總體構想對我來說很清楚,但我不明白為什麼不將 ElGamal 計算為 $ y_{0}^{r_{0}} \cdot m_{0} $ (和 $ y_{1}^{r_{1}} \cdot m_{1} $ ) 但 $ H(y_{0}^{r_{0}}) \oplus m_{0} $ 改為使用。
需要使用雜湊才能進行模擬。特別是,考慮接收器損壞的情況。模擬器不知道選擇 $ b $ 所以不知道接收者是否可以解密第一條消息或第二條消息。因此,為了模擬,模擬器只能選擇隨機值來表示 $ H(y_0^{r_0}) $ 和 $ H(y_1^{r_1}) $ ; 將這些隨機值表示為 $ \rho_0 $ 和 $ \rho_1 $ . 然後,模擬器可以看到這兩個查詢中的哪一個 $ y_0^{r_0} $ 或者 $ y_1^{r_1} $ 接收者向隨機預言機發送消息。(可以通過 CDH 假設表明接收方不能同時進行這兩個查詢。)現在,一旦模擬器接收到查詢 $ y_b^{r_b} $ 到隨機預言機,它可以發送 $ b $ 到受信任方並返回 $ m_b $ . 然後,它將隨機預言機的響應設置為 $ \rho_b \oplus m_b $ (IE, $ H(y_b^{r_b})=\rho_b \oplus m_b $ )。您應該能夠驗證這確實給出了正確的分佈。
接下來,為了模擬損壞的發件人,模擬器必須能夠提取值 $ m_0,m_1 $ . 既然不知道 $ r_0,r_1 $ (因為沒有使用 ZKPOK),如果沒有雜湊,這是有問題的。但是,….我實際上被困在這一點上;如果不添加離散日誌的知識證明,我不確定您將如何做到這一點 $ c $ 一開始(也許我的大腦現在已經炸了)。然後,一旦你有了這個 ZKPOK,你就不需要這部分證明的雜湊值了。請注意,對於使用相同的多個 OT,您只需執行一次 ZKPOK $ c $ .
請注意,講座是指半誠實的設置。在這種情況下,我不認為雜湊實際上是必要的,它就足夠了 $ m_0,m_1 $ 在小組中。