Homomorphic-Encryption
為什麼這個操作沒有透露選民的資訊?
我正在研究這篇論文。我試圖找出圖 2 中的 OR 零知識證明。證明者正在驗證她的投票是否正確,並且她的輸入滿足
$$ \log_gx=\log_h{(y/m_0)} \wedge \log_gx=\log_h{(y/m_1)} $$ 作者對此的協議是有意義的,除了一件事。證明者收到挑戰後 $ c $ , 她設 $ d_2 \leftarrow c - d_1 $ 如果她的投票是 1,或者 $ d_1 \leftarrow c - d_1 $ 如果她的投票是-1。因為 $ c \in_R \mathbb{Z} $ 和之前設定的 $ d $ 也是 $ \in_R \mathbb{Z} $ , 新的 $ d $ 可能是負面的。 然而,在最後一步,驗證者需要計算兩個值的冪 $ d $ . 這意味著證明者不能簡單地發送 $ d \mod p $ ,並且必鬚髮送 $ d $ 即使它是否定的。但另一個 $ d $ value 永遠不會是負數。
這不是意味著驗證者可以學習證明者的投票嗎?如果 $ d_2 $ 是否定的,那麼她投了 1 票,或者如果 $ d_1 $ 是否定的,然後她投了-1票。
我錯過了什麼?
我想通了,其實很簡單。
這 $ d $ 值(和 $ r $ 值)都是指數,並從 $ \mathbb{Z}_q $ . 因此,對它們的所有計算都直接發生在 $ \mathbb{Z}_q $ . 應用模組 $ q $ (不是模組 $ p $ ) 我所有的計算 $ d $ 和 $ r $ 修復了計算的任何問題。