Verifiability

驗證集合中某個項目的成員資格,同時隱藏集合中的元素數量?

  • May 29, 2017

我想知道是否有可能實現以下場景:

假設你有一組名字 {Alice, Bob, Jake}。要驗證集合中是否存在名稱“Bob”,您可以簡單地將“Bob”與集合中的每個元素進行比較,並發現集合中的一個條目確實與名稱“Bob”匹配。

我需要一種方法來驗證集合中“Bob”的成員資格,但不暴露集合中元素的數量。

是否可以對集合 {Alice, Bob, Jake} 進行一些轉換,以便生成的實體可用於驗證“Alice”、“Bob”和“Jake”在集,但同時生成的實體不允許查看該集包含的元素總數?

非常感謝

你根本沒有提到多方,所以問題是:誰知道呢?誰一定不知道集合中元素的數量?

然後,最簡單的解決方案實際上不需要密碼學:

  • 讓我們假設 Bob 有一組元素,而 Alice 想知道某個元素是否 $ x $ 在集合中。
  • 愛麗絲發送 $ x $ 給鮑勃。
  • Bob 用yesno回答。

顯然,這並沒有隱藏 $ x $ 從鮑勃。如果我們使用一些雜湊值 $ h(x) $ 相反(Bob 也對所有元素進行雜湊處理,其餘元素相同),然後給出足夠的熵 $ x $ Bob 可能找不到 $ x $ - 如果它不在集合中(如果是,他也知道原像,因為你可以假設 Bob 沒有刪除原始元素)。

根據您想要的屬性,有各種結構。例如set members proofs,其中 Bob 實際上必須證明元素在集合中,而簡單的是不夠的。如果您想實現 Bob 甚至不知道答案是yes還是no,這也可能是可能的——基於某種不經意的轉移。

另一個可能滿足您需求的有趣結構可能是 累加器- 這是我現在最好的猜測:Bob 將累加器交給 Alice,它不會自行暴露元素或它們的數量。但是他能夠證明某個元素實際上包含在累加器表示的集合中。

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