利用現有的 PKI 進行去信任和隱私保護的身份驗證方案

本文為機器翻譯
展示原文

感謝AndyJay在這個項目中提供的所有幫助

匿名的 Adhaar

adhaar 計劃是世界上最大的數字身份計劃之一。它擁有 12 億註冊人口,約佔印度人口的 90%。

Adhaar 卡攜帶人口統計和生物識別數據,包括持有人的出生日期和指紋。它們用於各種情況,例如貸款協議或住房申請。

我們介紹如何利用零知識來驗證 adhaar 卡的有效性。這一成果具有多種潛在應用。利用現有的公鑰基礎設施,我們可以廉價地提供可靠的身份證明。此外,我們驗證的零知識屬性提供了一種進行身份驗證的隱私保護方式。使用groth16證明方案可以將有效的 adhaar 卡證明持有人數據移植到鏈上。

我們開發了一個示例 webapp ,它允許任何 adhaar 持卡人生成有效 adhaar 卡的證明。我們今天將其開源,供任何人使用、分叉或在其之上構建。如果您有興趣使用我們構建的內容開發應用程序或為其他身份方案實施類似設置,請隨時與我們聯繫。

零知識設置

為了驗證 adhaar 卡的有效性,電路設置非常簡單。我們希望檢查用戶提供的簽名是否對應於一張有效的 adhaar 卡。我們對有效性的定義將要求提供的消息對應於輸入簽名和公鑰。我們考慮檢查公鑰是否對應於作為“業務邏輯”的特定實體。因此,我們會將此類檢查留給證明驗證實體——例如 KYC 提供商後端或智能合約。

我們的電路將執行兩項檢查:

  1. RSA 簽名正確。我們將簽名提高到公共指數冪,對公鑰取模並獲得提供的文檔哈希。
  2. SHA1 填充是正確的。當提供的消息被提升到公共指數冪,模數公鑰時,我們檢查是否遵循了 RFC 8017 的第 9.2 節。

我們的電路由四個輸入組成:

 signal input sign [nb] ; // Signature; private signal input hashed [hashLen] ; // Adhaar card's hash; private signal public input exp [nb] ; // RSA public exponent signal public input modulus [nb] ; // RSA modulus

首先,我們檢查提供的 RSA 簽名在提升到公共指數時是否與輸入哈希相對應。我們重新使用了在此處找到的實現。然後,我們確保解密的消息填充(即填充的哈希)是正確的。 Adobe 的 pdf 簽名過程遵循EMSA-PKCS1-v1_5規則,詳見本 RFC 。 Adhaar 卡在簽名前使用 SHA1 作為散列函數。因此,我們不得不調整最初為 SHA256 編寫的參考電路,以驗證填充的正確性。我們提供了電路的修改版本。

儘管它可能會引入限制,但我們希望將簽名和文檔的哈希值保密。我們只透露任何公共驗證程序所需的內容:公共指數和公共密鑰。在驗證有效 Adhaar 卡證明的情況下,這將使鏈上合約能夠要求使用印度政府發出的密鑰執行簽名。

應用

可驗證但匿名的身份方案使有趣的結構成為可能。

首先,它可以提供一個有趣的途徑來重新思考需要大量數據的 KYC 程序。儘管我們意識到僅憑有效的 adhaar 卡證明不足以構成敏感應用程序的足夠信息,但它仍然可以作為更完整的 KYC 隱私尊重流程的組成部分。

另一個有趣的含義是關於可驗證的演講。在過去的幾個月裡,不同的協議和應用程序,如SemaphoreHeyAnoun提出了零知識證明方案的能力,以證明屬於具有可驗證屬性的組,同時不會洩露任何用戶敏感信息。在這種情況下,證明 Adhaar 卡的有效性可以作為可驗證但匿名投票系統的一個要素。這方面的一個具體例子可能是印度公共產品項目中對二次投票的女巫抵抗。

最後,使用 groth16 證明方案可以使用去中心化後端(例如以太坊)來實現這些想法。可以想像一個註冊合約,存儲哪些地址發布了有效的 adhaar 卡證明。這將允許啟動可組合性,使 adhaar 卡 pki 可以用於 DeFi 協議或社交應用程序。

未來方向和應用領域

一個重要的限制仍然是將我們的電路擴展到大輸入的能力。 SHA1 仍然是非 zk 友好哈希,會產生重要的性能成本。典型的 Adhaar pdf 卡大小徘徊在 650Kb 左右,超出了當今電路的能力。儘管如此,能夠對此類文檔進行散列處理還是很有趣的,因為它不僅可以證明卡片的有效性,還可以證明其內容。像Nova這樣的折疊方案是探索這種選擇的主要候選方案。

更一般地說,證明時間仍然是無縫用戶體驗的瓶頸。在 8Gb RAM 和 2.3GHz 2017 Macbook Pro(與印度使用的日常設備相比高於平均水平的機器)上,生成證明需要 10 分鐘的等待時間。同樣,在這裡,利用不同的零知識證明後端,例如halo2或方案,如Nova ,可以提供改進的性能指標。

在Dapp層面上,如果我們要求用戶只使用一次他們的 adhaar 證明,這意味著將一張卡片綁定到一個地址。這樣的要求並不少見,去中心化應用程序通常會尋找女巫攻擊抵抗機制,以保護自己免受垃圾郵件的侵害。如果我們要將一張 adhaar 卡鏈接到一個地址,則需要一個 nullifier 構造。然而,這將需要代理能夠訪問完整的 adhaar 數據庫,以檢測哪些人已經在鏈上驗證了他們的 adhaar 卡,從而打破匿名性。在監管不確定的情況下,這可能會給用戶帶來風險。

來源
免責聲明:以上內容僅為作者觀點,不代表Followin的任何立場,不構成與Followin相關的任何投資建議。
喜歡
收藏
評論