Secret-Sharing

證明股票可以洩露秘密鑰匙。在秘密共享計劃中

  • January 7, 2018

我正在嘗試建構一個具有多個組件的加密系統,但遇到了秘密共享方案的問題。

讓 $ v $ 成為我們有興趣承諾的價值。我產生了一個承諾 $ P = aG + vH $ 在哪裡 $ a\in \mathbb{Z}_q $ , $ G $ 和 $ H $ 是該組的生成器(Pedersen 承諾方案,如果給定 $ a $ 有人可以得出價值 $ v $ ).

現在讓我們假設我想打破 $ a $ (讓我們稱之為致盲鑰匙) $ n $ 使用 shamir 秘密共享方案共享,其中 $ k $ 股票可以生產 $ a $ ( $ k,n $ 共享方案)。因此,如果 $ P $ 眾所周知,有沒有一種方法可以讓獲得份額的玩家驗證他們獲得的份額是否實際產生 $ a $ 不揭開 $ a $ ? 這意味著他們知道合併後的共享可以生成致盲密鑰。

我知道有一種方案可以驗證所有股份是否來自同一個多項式(Paul Feldman 的方案),但是什麼可以防止對手計算和分配來自一些隨機生成且不相關的多項式的股份的可能性(其中秘密是 $ c\neq a $ )?

顯而易見的方法是對承諾值進行秘密推導,並讓經銷商證明衍生的承諾值與他最初承諾的值相同。

為此,我假設秘密共享方案在素數域之上 $ GF(q) $ .

經銷商發布承諾 $ P $ ,並記住承諾值 $ v $ .

並且,當經銷商產生份額時 $ i $ (對於參與者 $ i $ ),它生成共享ID(我們假設它是 $ i $ ), 實際股份價值 $ a_i $ (這是在共享 ID 處評估的秘密多項式的值 $ i $ ) 和承諾值 $ v_i $ . 然後它給出值 $ a_i, v_i $ 股東 $ i $ 秘密,並公佈承諾 $ P_i = a_iG + v_iH $ , 以及共享 id $ i $ . 經銷商還記得所有 $ v_i $ 價值觀。當股東獲得他的份額時,他可以驗證他的公開承諾與他獲得的秘密價值一致。

然後,我們選擇 $ k $ 參與者(您已經證明股東持有一致的秘密,因此我們選擇哪一組並不重要)。

那麼,實際的秘密值是 $ a = f_1a_1 + f_2a_2 + … + f_ka_k \bmod q $ , 對於一些可公開計算的值 $ f_1, f_2, …, f_k $ (這取決於實際的股份集)。因此有人,可能是經銷商,計算價值:

$$ Q = f_1P_1 + f_2P_2 + … + f_kP_k - P $$ 每個人都可以驗證,因為所有參數都是公開的。

經銷商可以這樣表達:

$$ Q = \sum f_i(a_iG + v_iH) \ - (aG + vH) = (\sum f_ia_i - a)G + (\sum f_iv_i - v)H $$ 經銷商知道價值的地方 $ f_i, v_i, v $ . 因此,如果 $ a = f_1a_1 + f_2a_2 + … + f_ka_k $ ,那麼經銷商可以生成一個他知道其離散對數的 ZKP $ Q $ 到基地 $ H $ ; 如果不是,那麼他不能生成這樣的證明(因為,如果它知道離散對數,它可以(假設它也記得 $ a, a_i $ ) 計算離散對數 $ G $ 到基地 $ H $ ,我們認為這是一個難題。

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