Zero-Knowledge-Proofs

如何在不暴露身份的情況下證明多方的“一次性授權”?

  • June 13, 2021

我一直在嘗試創建一個不透露身份的分佈式授權協議。讓我用一個例子來解釋。

假設我們有 4 個演員,Alice、Bob、Charlie 和 Dan。Alice 在 Bob 和 Charlie 的伺服器上進行身份驗證並從他們那裡獲得授權。此授權僅對一次性使用有效。之後,Alice 將向 Bob、Charlie 和 Dan 發送請求,她必須在不向他們透露身份的情況下證明她擁有授權。並且在 1 次請求後,此授權無法再次使用。

**到目前為止我的進展:**我一直在做一些關於身份的零知識證明的研究。我一直在閱讀的最新主題是匿名憑據。使用匿名憑據,我們幾乎可以解決所有問題,但只有一個問題。據我所知,在使用匿名憑據進行身份驗證後,您可以根據需要多次使用其證明。這完全消除了授權的準時使用方面。

有人可以幫助我在我的系統中實現所需的屬性嗎?

參考 Vadym Fedyukovych 的回答:

ZCash 的 Nullifier 想法也可以提供幫助。

在這種情況下,證明由 Alice 生成和保存的 nullifier 構造,其雜湊提供給 Bob 和 Charlie,作為授權的 Bob/Charlie 方。如果 Alice 想要使用這個授權,Alice 必須向 Bob 和 Charlie 提供無效符,這樣授權就會失效。進一步嘗試使用此無效符將給出一個錯誤,指出它已被使用。在這種情況下,授權與nullifier相關聯,但與 Alice 本人無關。

因為授權只能使用一次,所以我們必須添加另一個號碼,由 Bob 或 Charlie 提供,稱為 status-checker。這個號碼,可以提供給 Dan 或任何其他方檢查授權狀態,但不能使用。僅當 Alice 披露了無效符時,才考慮使用授權。

總之,Alice 可以通過向 Bob 或 Charlie 提供 nullifier 來使用授權,授權將失效。其他方可以通過狀態檢查器驗證此授權的有效性。

為了去中心化,可以分發nullifier和Bob/Charlie簽名的hash,通過分髮帶有Bob/Charlie簽名的nullifier,授權失效。在這種情況下,任何第三方(例如 Dan)都可以在不知道 Alice 身份的情況下驗證授權狀態,並且只有 Bob/Charlie 可以將其無效。使用環簽名也可能隱藏 Bob 和 Charlie 的身份。


擴展以使該套裝滿足大多數需求:

用和你一樣的例子,談論愛麗絲、鮑勃、查理和丹。我們將這個系統中的任何元素與 Alice、Bob、Charlie 和 Dan 的身份分離,並將它們與他們的私鑰/公鑰對相關聯。對於每個授權,Alice 都會生成一個密碼安全的隨機數 n,既是它的授權 ID,又是 nullifier。這個 n,被散列和廣播,稱為 k。Bob/Charlie 在收到 k 後對其進行簽名並通過網路廣播該簽名。簽名的消息與 Bob/Charlie 生成的另一個號碼一起廣播,用於檢查狀態。這樣,網路上有一條匿名消息表明 Bob/Charlie 已經授權了一個匿名人物。當 Dan 想要查看狀態時,他只需要找到原始的授權消息,以及是否存在 nullifier。當 Alice 想要使用授權時,她會廣播 Bob/Charlie 簽名的無效符,標記為狀態檢查號,稱為 I。這個消息,如果被 Dan 發現,他肯定知道授權已被使用。

S. Brands 的《重新思考公鑰基礎設施》一書的第 5.4 節“有限展示證書”可能是相關的,ISBN978-0262526302,可以從Credentica下載。

ZCash 引入的 nullifiers 的想法也可能有所幫助。

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