Secret-Sharing

如何證明秘密共享方案中共享秘密的正確性?

  • July 9, 2019

假設我們處於集中式秘密共享環境中,其中一方生成共享,並將它們分發給其他方。創建股份的分銷商如何向各方證明他們收到了正確的股份?

想像一下,各方後來在他們之間分享他們的股份或其他一些資訊,以檢查這些股份是否確實結合到了正確的價值。但如果失敗,則意味著一個或多個股票是錯誤的。可以確定哪些股票確實是錯誤的嗎?如果是,如何知道分銷商是否向一方提供了錯誤的份額,或者該方是否偏離了協議並自己對隨機份額進行了抽樣?

為簡單起見,我們可以假設份額是相加的,並且它們生成為 $ s_1,\ldots,s_{n-1} \gets \mathbb{Z}p $ , 和 $ s_n = s - \sum^{n-1}{i=1} s_i $ , 對於一個秘密值 $ s $ 我們想要分享的。我們處於 n-out-of-n 設置中。

我們也可以想像分銷商是抽樣的那個 $ s $ 然後發送 $ g^s $ 給其他方,所以他們可以結合他們在指數中的份額來檢查它是否等於 $ g^s $ . 這又為分銷商作弊打開了一扇門,如果它發送錯誤的值怎麼辦,例如 $ g^{s’} $ ?

這是一種可能的方法:

  • 經銷商生成一個適合 Pedersen 承諾方案的組(即,具有素數順序的橢圓曲線 $ p $ , 和兩個元素 $ G, H $ 沒有人知道的離散對數 $ H $ 關於 $ G $ ) - 我們可以在乘法組中執行此操作;在這種情況下,我只是發現加法符號更容易一些,因為承諾的數學符號與未送出值的符號相匹配。
  • 經銷商選擇一個 Shamir 秘密共享多項式(共享秘密的常數項,其餘係數隨機) $ GF(p) $ ; 他還為每個係數創建了一個 Pedersen 承諾 $ c_i $ (使用隨機值 $ r_i $ ),並發布它(因此他發布了值 $ c_iG + r_iH $ ),以及一系列他知道價值觀的 NIZKP $ c_i $ 他承諾
  • 經銷商為每一個產生股票;與使用者 $ x $ ,他產生份額 $ z = c_nx^n + c_{n-1}x^{n-1} + … + c_0x^0 $ 並生成一個 NIZPF $ x^n(c_nG + r_nH) + x^{n-1}(c_{n-1}G + r_{n-1}H) + … + x^0(c_0G + r_0H) $ 是承諾 $ z $ ; 他寄出 $ z $ 和 NIZKP 給使用者。

每個使用者都可以驗證(基於公共 NIZKP)經銷商已承諾使用單個組範圍的多項式。此外,根據經銷商給每個使用者的 NIZKP,他們可以驗證他們的份額與該組範圍的多項式是否一致。

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