來源| 0xPARC.org

今年1 月,我們啟動了0xPARC 零知識身份(ZK-Identity) 工作小組:一個嘗試使用zkSNARKs 來構建數字身份工具的工作小組。在解釋為什麼密碼學的進展對實現新的身份原語很重要的系列文章中,本文系第一篇。第一篇文章解釋了“為什麼” ;而在之後的文章中會解釋“怎麼做” 。

近幾年裡,線上身份系統設計的話題一直得到激烈的討論。現代數字身份系統令新型、複雜的線上交互和社區得以實現。但不幸的的是,這些系統有許多都存在明顯的弱點。

在這些弱點裡,有許多可以歸因於中心化身份系統設計的固有限制。首先,這些系統通常會圍繞中央控制點來構建——也就是中心點故障。現代電子商務、社交媒體、消息傳遞平台在受到強大行動者(例如威權主義政府)的施壓與乾涉、或來自惡意黑客的技術攻擊;當中央運營商受到脅迫或黑客攻擊時,中央運營商以外的各方會也會處於危險之中。其次,這些系統依賴掌握在運營商手中的集中權力,它不可能與所有用戶完全站在同一陣線上(無論是經濟上、社會上、還是道德上)——比如,一個擁有多元全球受眾的私營社交媒體公司必須經常決定什麼構成不正當的審查行為,什麼是符合公共安全利益的行為,雖然在這一點上,他們經常心有餘而力不足。

去中心化與加密機制雖然不是神奇的萬能藥,但它們確實提供了一些有用的工具,以及拓寬了數字身份系統的設計空間。隨著我們越來越多的社會與經濟生活轉移到線上,設計安全的、保護隱私的、以及由用戶控制的身份系統將變得越來越重要。在本文,我們將論證像zkSNARKs 這樣的新型密碼原語對於構建含有以上屬性的身份系統來說是至關重要的。

就其核心而言,zkSNARKs 之所以有用是因為zkSNARKs 可以讓數字系統的用戶毋須依靠受信任方就能生成任意複雜度的可信聲明(credible claims)。所有身份系統都是圍繞某種機制來構建的,這些機制可以生成身份與聲譽的可信聲明——通常來說,相當複雜的證明附屬於像政府或公司這樣受信任機構出具的證明之中。通過把zkSNARK 構造應用到關於身份與聲譽的聲明,我們可以重新構建數字身份系統,將控制權與數據託管權交還到用戶手中。

可信聲明

由於zkSNARKs 需要在精準、數學定義的“ 聲明” 上運行,因此我們必須首先需要準確地分解身份系統所涉及的聲明本質。

與完全不認識且不信任的人做交易是很難的。常識告訴我們:雙方的信任度越低,合作的可能性也越低;博弈論告訴我們:在一次性的囚徒困境中,最佳策略永遠是背叛對方。你會更願意在誰那裡購買一輛二手車,是與你社交圈緊密聯繫的密友?還是一位甚至不會告訴你姓名、從外地來的Craigslist (譯者註:一個美國分類廣告網站) 賣家呢?

為了互相建立信任,我們需要能夠做出可信聲明:讓與我們交互的人認為我們關於身份與聲譽的聲明是可信的。即便上述的Craigslist 賣家對你保證他“ 之前賣過很多車,且所有客戶都很滿意——我向你保證。” 這也不算是可信聲明。但如果此聲明與你了解的熱門網站,以及其上經過驗證的買家給出的五星評級相關聯,那麼該聲明絕對給人感覺可信得多。

可信聲明的想法聽起來很好理解,但要構建一個用於產生可信證明機制且使之為大眾所接受的機制(在這個例子中,是受歡迎的排行網站) 不是一件容易的事。在傳統模式中,我們常用的解決方案是將記錄管理授權給受信任的權威機構,那麼他們就可以對我們的身份與聲譽聲明做證明,並為聲明賦予可信度。此權威機構必須隨著時間的推移(通常在對抗的環境下)證明它們自身的認受性與可信賴性,同時維護大規模的證明生成與分發基礎設施。

最為關鍵的是,在大部分模型中,是中央權威機構的證明才使得聲明具有可信度。因為這是有效政府的身份證,所以我是公民;這是我的關注者的準確名單,所以證明我是有社會影響力的;這些是經審核的評論與評級,因此我是一個值得信賴的網上零售商。

可信聲明的另一種應用在堆棧的更底層。首先,你怎麼知道跟你交互的人或公司出示的聲明是他們自己的,而不是其他人的?在依靠受信任權威機構的系統中,這些機構承擔了更為基礎的功能——身份本身的證實。當你訪問網站時,API 訪問令牌、政府頒發的護照、或由證書頒發機構生成的一條簽名鏈都是對身份聲明的證明。

實用的身份系統可以讓參與者做出各種類型的複雜可信聲明:

  • (數字世界)當你通過Doordash 訂外賣時,Doordash 的網站服務器會製造一個可信聲明給你(通過一條DNS 簽名鍊錶明“我是Doordash 的網站服務器”);通過一個第三方身份提供商,你向Doordash 對自己的身份做出可信聲明(通過“ 使用谷歌賬號登錄” 來表明“ 我是Doordash 的用戶,應被允許訪問此賬號所保存的信用卡”);你通過各種金融機構對Doordash 做出關於未來會支付款項的可信聲明(通過不拒絕該交易的信用卡提供商表明“ 我有足夠的錢來支付訂單,且這筆錢會很快到賬”)。
  • (物理世界) 當你抵押貸款來購買房屋時,你已經以不明顯的方式對銀行、房地產中介、賣家、政府做出大量關於身份與聲譽的可信聲明。
  • (兩個世界混合) 當你申請工作時,通過利用許多不同證明系統,向潛在雇主做出可信聲明。通過引用來自教育機構或專業證書權威組織、曾與你共事過的其他同事、前公司的證明(學位證書、證書),你聲稱自己具有足夠的培訓與素質來勝任這份工作。社交媒體與其他線上賬戶提供商其實對關於你是一個什麼樣的人的聲明做進一步的證明。

隱私

幾乎所有的身份系統本質上都需要隱私信息才能實現預期功能,這一事實使得情況更加複雜。

出於道德和意識形態的原因,隱私是重要的,它有時會引發爭議;但更為根本的是,隱私是系統設計的一個簡單問題,但往往是必要的。例如,幾乎所有的身份系統都依賴於秘密數據的概念,以生成關於身份的可信聲明——密碼、社保號碼、私鑰、信用卡的PIN 碼、賬號恢復問題等。顯然,這些數據需要保密。另外,使用完全透明的數據生成可信聲明的過程中可能會有負面的外部效應,或至少是難以推理的外部效應;隱私數據可以防止以上情況。舉個例子,如果你只是想在線上市場購買或出售商品,但你需要出示整個財務歷史——銀行對賬單、信用卡交易、還貸情況等,那麼對手方有可能使用這個信息來發起與原交易無關的超出原定範圍交互(負面例子包括廣告、騷擾、甚至敲詐)。隱私對一次性交互”進行沙盒測試“,明確定義與限制了交互範圍,這樣我們就可以從簡單又易於理解的構件開始構建更加複雜的系統。

在需要隱私信息的傳統系統中,我們必須將更多權力委託給中央權威機構——在這樣的系統中,中央機構存儲私人數據,以及對這些數據的可信證明做證明,這些私人數據幾乎不可能被驗證。

密碼學的作用

到目前為止,我們對可信聲明的生成和身份系統所討論過的所有模型,都涉及到一個中心化角色。就如同我們探討過的一樣,有很多理由讓我們想要探索一個不依賴於強大的記錄保存者或管理者的系統。

這時我們立刻就面臨一個顯而易見的問題:當我沒有你的數據時,我怎樣相信你的聲明?如果你向我發送屬於你的數據,我怎麼知道這些數據是有效的?如果你想要生成隱私數據的聲明,那我們應該怎麼做?這正是密碼學發揮作用的地方。

從我們的角度來看,在各種的資源限制和隱私條件下,大部分應用密碼學(和共識) 在過去五十年裡都在不斷地擴展這個範圍:即在沒有可信的權威的情況下,可以做出何種可信聲明。

  • 數字簽名方案允許用戶使用同一個私鑰來簽署一系列消息,經過一系列的不同操作,用戶可以對自己線上身份的一致性做出可信聲明。 “我被授權向Alice 的信用卡收費。”
  • 小組簽名方案可以讓用戶生成關於身份的更複雜的隱私保護聲明。 “我是該校友會的成員,但我不會告訴你我的確切身份。”
  • 簽名聚合、多簽、門限簽名(threshold signature) 方案在多種不同資源限制下讓用戶對小組行為生成聲明。 “這個龐大的集體—— 不只是單個離群的僱員,已經授權從我們的金融賬戶中轉移貨幣。”
  • 共識機制與可編程的智能合約允許用戶對未來的行為做出可信且不可逆轉的承諾。 ”如果你對我發送了數字資產A,那麼我會立即向你發送數字資產B 作為交換。”

在過去,這些進程發展緩慢—— 這些加密原語中的每一個都定義了一個全新且範圍嚴格的聲明類型,其結構都是高度明確的。然而,在過去幾年裡,這種情況已經發生了改變。

時至今日,令人感到興奮的是,我們目前已經有一種機制可以讓我們有效地生成任意可信證明,這要歸功於SNARKs。通過借助zkSNARKs 的零知識特性,我們能夠根據自己的意願來調整聲明的隱私保證。

以下是你可以利用zkSNARK 生成的一些聲明類型例子,這在過去是不可能做到的:

  • “我是一個值得信賴的債務人:我已經準時地還清了在三個銀行處借貸的大額貸款,雖然我沒有透露具體是哪幾間銀行以及借款用途。”
  • “我是一名備受尊敬的社區成員:雖然我以匿名的方式寫的這篇帖子,但在我的命名賬戶下,我在這個論壇上已經累積收到超過1 萬記選票。”
  • “我是一個長期持有加密貨幣的收藏者:我控制的以太坊地址共持有至少兩個Dark Forest Valhalla 系列的NFT,與至少100 枚ETH。”

這些聲明可以以任意複雜的方式來連接、組合、甚至是編程。

當這在理論上是可行的時候,我們依然還有很長的路要走。為下一代應用製作一套強健的ZK 身份工具,需要在性能、可靠性、開發者體驗、應用設計模式上進行實質性提高。在下篇文章中,我們將討論到對未來路線的理解。

附錄:在身份中有什麼?

要理解密碼學可以在構建身份系統中的哪處發揮作用,那麼就要將身份系統的概念分解到其關鍵組成部分,這將有助於我們的理解。

在分析一個特定的身份系統時,我們可能會問出以下幾個問題:

➤ 什麼是身份的原子單位(atomic unit)?

  • 物理世界:身份經常與法律人格(legal personhood) 相聯繫。換句話說,身份的原子單位就是一個獨立的個人,或法人。
  • 網絡空間:身份可以是一個谷歌/臉書/推特賬號;與某認證中心相關聯的公/私鑰對;一些基於以太坊的代幣持有者(可能與特定地址無關);或其他。

➤ 身份的有效證明是由什麼組成的?誰可以分發身份的證明?誰可以撤銷與身份證明有關的特權?

  • 物理世界:一個有效的證明也許是國家頒發的ID 或EIN 信(雇主識別號Employer Identification Number,由美國國稅局分配給在美國經營的商業實體的唯一的九位數字,用於識別身份)。對於一個有效的身份證明,政府擁有最終權限:例如,政府可以吊銷你的護照。
  • 網絡空間:一個有效證明可以是臉書提供的OAuth 令牌,或者是一個有效的數字簽名(或一串簽名鏈)。各種不同的服務提供商對各種證明擁有控制權:比如,推特可以封禁用戶賬號。

➤ 是誰在保管用戶身份相關的輔助數據?誰能訪問這些數據,誰又能控制訪問這些數據的權限?

  • 物理世界:輔助數據由政府機構與官僚組織、私營服務提供商(銀行、信用評分機構)、個人共同持有。
  • 網絡世界:在中心化模型中,輔助數據由大型科技公司掌管。在去中心化模型中,輔助數據由用戶自己控制的客戶端軟件(瀏覽器、個人網絡服務器)、去中心化存儲網絡(例如,區塊鏈上的歷史交易數據或智能合約狀態) 共同保存。

➤ 哪些記錄、數字工件(artifacts)、或證明能夠表示身份的聲譽或可信度呢?是誰來決定這些信號,以及這些信號要怎樣被解譯?誰有權訪問這些決定聲譽的底層輸入數據呢?誰能訪問這些信號?

  • 物理世界:信用評分報告、背景調查、社會推薦信、聘用信、證書及榮譽稱號。
  • 網絡空間:NFT 所有權、賬齡(account age)、歷史活動、證明網絡、karma (Reddit 的信用評分機制)/論壇點贊。

在以上概念裡,有一些互相融合:身份、聲譽、身份證明緊密相連,彼此之間不易分割。例如,在某些系統裡,身份的原子單位甚至可以定義成"中心機構可以為其提供有效證明的對象" —— 從來沒有不儲存在臉書數據庫的臉書賬號這樣的說法。

然而,一般來說,我們在這個系列的文章裡使用身份一詞來表示一個實體的長期標籤(個人、組織、機器人程序),這個標籤隨著時間的推移而保持穩定狀態、並代表這個實體— — 法律人格、公鑰、賬號ID 等。我們採用聲譽一詞來表示關於該主體過去所做行為的聲明(“Alice 永遠都會說到做到”、“Bob 一直在按時償還信用卡”、“ Comfort Homes 一直使用準確的照片作為其愛彼迎的房源”)。

鏈接與致謝

感謝Yi Sun 與David Schwartz 對本文的反饋及校對。

iden3:

https://iden3.io/

Semaphore:

https://semaphore.appliedzkp.org/