區塊鏈分布式身份技術解密——重新定義你的“身份”管理
隨著歐洲通用數據保護條例(GDPR)的實施,基于區塊鏈的分布式身份(Decentralized Identifiers, DID)越來越受到學術界和產業界的關注。究竟什么是分布式身份?其設計原理和實現方式是怎樣的?我們可以用它來做什么呢?
相比于上面幾個問題,我相信你一定對“為什么需要分布式身份”這個問題更加好奇。
身份模式的演進及特點
在上世紀90年代,互聯網被定義為Web1.0。用戶與網絡的交互非常簡單,網站提供的幾乎都是“只讀”服務,不論文字、圖片還是音頻內容,用戶能做的僅僅是閱讀或者簡單的搜索,不涉及內容發布和評論對身份沒有要求??梢姶藭r的互聯網,不具備有實際用途的身份體系。
互聯網Web2.0定義了一個可“讀寫”的網絡,在短短十幾年時間里,應用類型、服務形式、內容生態均得到飛速發展。與此同時,數字身份體系也被重新定義并不斷完善。先后產生了中心化身份、聯盟身份和以用戶為中心的身份三種身份模式。
不難發現,身份體系變化發展背后的主要推動力就是用戶對身份自主控制和自我隱私保護意識的不斷增強。
中心化身份的數據由單一的主體負責生成、控制、管理和維護。例如我們熟悉的支付寶、微信等賬號。顯然,中心化身份的使用權由中心主體和用戶共同享有,但身份的生成權、解釋權、存儲權都集中在身體提供商,由此帶來了身份不自主可控、隱私泄漏、可移植性差、互操作性差以及單點風險等一系列問題。
聯盟身份的提出一定程度上緩解了上述問題,但沒有根本解決。例如,當用戶通過微信或支付寶授權,作為第三方賬戶登錄某平臺時會面臨兩類問題。一方面平臺還會額外收集用戶信息,形成新的獨立的身份系統。另一方面由于互聯網寡頭的壟斷,多家身份提供商仍可合謀控制用戶的數字身份。
以用戶為中心的身份在實踐當中由于安全性等種種原因未能廣泛推廣使用。
分布式身份從根本上解決了上述問題,不依賴于中心身份提供商,真正具備身份的自主可控性、安全性、自解釋性、可移植性、互操作性。在分布式場景下賦予每個用戶自主控制和使用數字身份的能力,并針對身份數據等敏感信息進行隱私保護。
Web3.0向我們描繪了一個萬物互聯的可信網絡世界,實現了數據的確權與授權、強隱私保護、開放的抗審查的自由數據交換。以DID為基礎構建去中心化運行的統一身份認證系統正是Web3.0發展的重要實踐之一。
解讀分布式身份
接下來我們討論,什么是分布式身份以及其設計原理和實現方式。
分布式身份的技術架構包括分布式賬本、標準的DID協議、標準的可驗證憑證協議和以此構建的應用生態。在實現上會基于區塊鏈完成身份的注冊、發現,可驗證憑證的申請、簽發、授予和驗證,以及相關數據的隱私存儲和可信計算。
圖1. DID系統基本運轉流程和使用方式圖
為了方便理解DID系統基本的運轉流程和使用方式,我繪制了一張圖(圖1)。從圖中可以看出系統主要有三類實體,包括簽發者、持有者和驗證者,其中每個實體都可以是設備、應用、個人或者組織。
首先,各實體通過簡單的密碼學工具或者DID SDK生成完全由自己控制的身份文檔(具體的數據結構我們后面再展開),并發布到區塊鏈上完成身份的注冊。DID文檔中還可以包含其所能提供的服務信息,以支持企業用戶多樣的應用場景。例如簽發者是學校A,在其身份文檔中可以發布電子學歷認證服務;簽發者也可以是公司B,在身份文檔中聲明職位招聘的相關要求。
具備基礎的身份標識之后,通過可驗證憑證架設起身份與身份之間的認證體系。憑證的模板會由相關主體注冊發布到區塊鏈上,并持續維護。接著,持有者便可以向簽發者發起認證申請,獲得憑證后組合加工出示給驗證者完成校驗。例如如下場景,小為(持有者)需要向公司B(驗證者)發布的職位招聘發起申請,職位要求申請者需要具備本科學歷。小為可以將從學校A處申請到的憑證出示給公司B完成職位申請。
最后,業務系統就可以基于DID體系完成上層應用的構建。用戶之間無需有信任關系,面向憑證開展業務,細粒度的保護隱私信息。
就這么簡單!
有趣的特性和應用場景
知道了為什么和是什么之后,讓我們稍微深入一些關鍵技術的細節,以便更好的運用。
身份文檔是DID的基礎數據結構,其設計簡潔、功能豐富、可擴展性強。為了直觀理解,我將關鍵字段組成的JSON(圖2)繪圖如下。
圖2. 身份文檔示意圖
列舉幾個有趣的特性:
“publicKey”列表可以支持不同秘鑰體制和類型的公鑰。不同的公鑰可用于支持不同的業務。(公鑰和私鑰是成對出現的兩個秘鑰。公鑰可以公開,私鑰必須秘密保存。因為加密和解密使用的是兩個不同的秘鑰,所以這種算法稱之為非對稱加密算法。)
“controller”和”authentication”字段可以是本文檔的公鑰或者其他DID文檔的標識、公鑰。這樣可以輕松擴展出強大的身份層級控制體系。
“recovery”恢復標識可以在主控私鑰丟失的情況下完成文檔恢復和更新。
可驗證憑證由元數據(Metadata)、屬性聲明集合(Claims)和證明材料(Proofs)三部分組成。關鍵組件及字段見圖3. 可驗證憑證同樣具有豐富的功能和極強的擴展性,其中涉及的能力項有很多,例如生命周期管理、可信模型、零知識證明、隱私頻譜、憑證安全等。此處通過介紹“憑證細粒度組合出示”幫助大家感受可驗證憑證的功能特性。
圖3. 可驗證憑證關鍵組件及字段
憑證常見的使用模式是簽發者對整個憑證的摘要進行簽名,并加密將憑證發送給持有者。持有者解密或者重加密憑證,出示給驗證者完成校驗。顯而易見這樣的設計會帶來兩方面問題,一方面是隱私保護能力較差,在出示驗證過程中會導致用戶無關屬性的暴露。另一方面,憑證的使用場景和簽發憑證類型耦合在一起,不利于擴展使用場景。
舉個例子,前面提到學校A和公司B都發布了各自的“服務”。當小為想申請某個職位時,招聘要求聲明應聘者需要是年齡小于30歲的本科畢業生。此時如果小為直接出示身份證(以證明年齡小于30歲)和學歷憑證,會暴露例如姓名、籍貫、性別、院校信息等無關屬性。如果你向學校申請額外開具一個僅包括學歷和年齡的證明,這種方式顯然非常低效,并且憑證沒有得到復用。
憑證細粒度組合出示的一種實現方式是,簽發者計算憑證屬性集合中每個屬性的“Pedersen 承諾”(用于隱私保護屬性信息)。再針對所有承諾進行“C-L簽名”(起到多屬性簽名的聚合效果,壓縮簽名所占空間)。在憑證出示前,小為可以從已有身份憑證和新獲得的學歷憑證中挑選服務需要的幾個屬性公開明文,其余屬性均出示密文承諾,完成職位申請。下圖是小為申請工作例子的詳細流程,大家可以跟著序號和描述梳理梳理。
圖4. 基于分布式身份的可驗證憑證使用示例流程圖
至此,我們簡答做個總結吧,細節記沒記住不重要,領會其精神就好。
本文列舉了從Web1.0到Web3.0互聯網身份體系的發展變化,隨著用戶對主權和隱私保護訴求的不斷提高,分布式身份和可驗證憑證是構建未來統一身份認證體系必不可少的技術。國際上,W3C標準組織與2019年底發布了Decentralized Identifiers(DIDs)v1.0 和 Verifiable Credentials(VC)v1.0 標準規范草案,并持續擴展完善。在國內,2020年6月低分布式數字身份產業聯盟(DIDA)成立。
本文介紹了分布式身份基礎的數據結構、技術體系架構、主要的功能特性和應用場景。但分布式身份體系所涵蓋的內容遠比這些要多,他是上層應用生態的身份和認證底座,可以廣泛應用到數字政務、民生生活、醫療健康、交通運輸、數字金融等領域中。如果你想了解更多細節或者馬上動手實際體驗一下話,可以打開華為云官網搜索TDIS。
華為云分布式身份服務(Decentralized Identity Service)是一種基于區塊鏈的 分布式數字身份及可驗證憑證的注冊、簽發、管理平臺。符合W3C標準規范。為個人和企業用戶提供統一的、可自解釋的、移植性強的分布式身份標識,同時支持多場景的可驗證憑證管理,細粒度的憑證簽發和驗證,有效解決跨部門、跨企業、跨地域的身份認證難和隱私泄露等問題。
參考
https://www.w3.org/2019/did-wg/
https://w3c.github.io/vc-data-model/
https://www.huaweicloud.com/product/bcs/tdis.html
區塊鏈 區塊鏈產品及解決方案服務
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。