Commitments

Pedersen 承諾中使用的素數長度

  • April 19, 2015

我正在使用 Pedersen 承諾方案編寫程序,而我所缺少的只是適合我的素數的長度 $ p $ . 我聽說有一段 $ 2^{80} $ 好的,對嗎?

如果你的意思是附近的素數 $ 2^{80} $ ,嗯,這是不正確的。如此小的質數將允許某人承諾一個價值,然後揭示另一個價值。

佩德森承諾是一種價值 $ g^x h^r \bmod p $ , 在哪裡 $ g $ , $ h $ 和 $ p $ 是公共價值觀, $ x $ 是承諾的價值,並且 $ r $ 是一個隨機值。為了揭示承諾,您發布 $ x $ 和 $ r $ .

揭示第二個值 $ x’ $ , 一種方法是計算一個值 $ r’ $ 和 $ g^x h^r \equiv g^{x’} h^{r’} $ , 這相當於 $ h^{r’} \equiv c $ , 攻擊者可以計算 $ c \equiv g^{x - x’}h^{r} $ . 如果攻擊者可以將他的離散對數求解到底 $ h $ , 我們可以恢復 $ r’ $ 並揭示他的第二個價值 $ x’ $ .

現在,對於長度為 80 位的素數,這個離散對數很容易求解。為了使它不切實際,您需要一個長度至少為 1024 位的素數,最好至少為 2048 位。

另一方面,如果你的意思是一個素數 $ 2^{80} $ 位長度,即大約 $ 2^{2^{80}} $ ,好吧,你會發現這是一個不切實際的大質數;計算 $ g^xh^r $ 將是不可行的。

引用自:https://crypto.stackexchange.com/questions/25084