原文:DID Primer
這是由 Drummond Reed 和 Manu Sporny 編輯以及Decentralized Identifier 1.0 規範的其他貢獻者和實施者維護的社群文件。
粗淺上看來,decentralized identifier (DID) 只是一種新型的全球唯一 identifier,具有為區塊鏈設計的特殊功能。但是從更深層次上講,DID 實際上是網際網路中,去中心化的數位身份和公鑰基礎結構(PKI)全新層的冰山一角(或矛尖)。這種去中心化的公共密鑰基礎結構(DPKI)對全球網絡安全和網絡隱私的影響,可能與開發用於加密網站傳輸的 SSL/TLS 協議(現在是世界上最大的PKI)一樣大。這份入門手冊是設計給對於 DID 的架構與背景的新手。不僅需要理解 DID 規範,而且需要了解正在開發中的 DID 相關規範,他們包含:
在 Internet 的歷史中,每一個 identifier 在全球範圍內都是唯一,且可全球解析的(意味著您可以查找它,並獲取相關資源的 metadata )而這些 identifier 需要某種類型的集中管理。例如,IP(Internet 協議)位址和 DNS(域名系統)名稱(Internet 和 Web 的基礎)都需要集中的註冊管理機構和註冊商。
儘管這些集中式系統非常地有效率,但長久以來,這種體系結構一直被認為,既是單點的控制(從而進行潛在的審查),同時也是故障的單點。因此,在最近幾年中,幾個小組開始獨立研究分散式替代方案。按年代順序:
The W3C Web Payments Working Group and W3C Verifiable Claims Task Force, led by Manu Sporny and David Longley of Digital Bazaar, recognized that truly portable digital credentials for individuals would require a new type of identifier that was not dependent on a third-party for registration or resolution.
The XDI.org Registry Working Group, led by OASIS XDI Technical Committee co-chairs Drummond Reed and Markus Sabadello and Internet Identity Workshop (IIW) co-founder Phil Windley, began looking for a decentralized solution for identifying participants in a global peer-to-peer XDI semantic data interchange network.
The Rebooting the Web of Trust (RWOT) community, led by Christopher Allen, began exploring how blockchain technology could be used to enable the decentralized digital identity and trust network originally envisioned by Phil Zimmermann for PGP.
The U.S. Department of Homeland Security (DHS) Science & Technology Directorate (S&T), led by Identity and Data Privacy Program Manager Anil John, began researching how blockchain technology could be used for privacy-respecting decentralized identity management.
到了 2016 年春季,所有四個小組都集中在 DID 的概念上,該術語最初由 W3C Verifiable Claims Task Force 提出。 部分歸功於DHS S&T 提供的研發資金,第一個 Decentralized Identifier 1.0 規範的制定工作於 2016 年 5 月在 RWOT#2 正式開始。規範草案於 2016 年 10 月在 RWOT#3 和 IIW#23 進行了審查,並已發布 於 2016 年 11 月 21 日作為實施者的 1 號草稿。
在 W3C Verifiable Claims 工作組於 2017 年 3 月獲得批准後,2017 年 7 月,DID 規範被提交給 W3C Credentials Community Group。 每六個月舉行的 RWOT 和 IIW 活動以及其他行業活動和會議將繼續進行一些相關規範(見下文)的工作。 有關參與 DID 規範系列的資源和方法的列表,請參見附錄 A。
不需要集中式註冊機構的全局唯一 identifier 的需求並不新鮮。UUIDs(通用唯一 identifier,也稱為GUID,全球唯一 identifier),為此被開發於 1980 年代,並先由開放軟體基金會然後由 IETF RFC 4122 對其進行了標準化。
對持久性的 identifier(可以一次分配給實體並且永遠不需要更改的 identifier)的需求也不是新鮮的。 此類 identifier 首先由IETF RFC 2141 標準化,後來又由 RFC 8141 標準化為 URNs(統一資源名稱)。
但是,通常,UUID 不能全域解析,而 URN(如果可以解析)需要集中的註冊機構。 此外,UUID 和 URN 本質上都無法解決第三個特徵,即以密碼學的方式驗證 identifier 所有權的能力。
對於區塊鏈身份-更具體地說是自我主權身份,可以定義為,-不依賴任何集中授權,且永遠不會被剝奪的終身攜帶式數位身份- 我們需要一種新型的 identifier 來滿足這三個條件與要求。
在 2016 年,DID 規範的開發者同意 Christopher Allen 的建議,即可以遵循與 URN 規範相同的基本模式,使 DID 可以與多個區塊鏈一起使用:
關鍵區別在於,使用 DID 時,以 namespace 部件識別一個 DID methods,而 DID methods specification 指定方法特定 identifier 的格式。
DID methods 定義 DID 如何與特定區塊鏈一起使用。它們將在下面被進一步的解釋,但是所有 DID method specification 都必須定義方法特定 identifier 的格式和生成。 請注意,方法特定的 identifier 字串在該 DID method 的 namespace 中必須是唯一的。例如,上面的 DID 使用 Sovrin DID methods,其中方法特定的 identifier 是通過對 Ed25519 驗證密鑰的前半部分進行 base-56 編碼生成的。
DID 基礎設施可以被認為是全域的 key-value database,其中該資料庫為所有 DID 相容的區塊鏈,分散式分類帳本或分散式網絡。在此虛擬資料庫中,密鑰 (key) 是 DID,值 (value) 是 DID documents。 DID documents 的目的是描述引導與標識的實體進行,密碼可驗證的交互所必需的公鑰和服務端點。
DID documents 是有效的 JSON-LD 物件,它使用 DID 規範中定義的 DID context(屬性名稱的 RDF 詞彙表)。這包括六個核心部份:
有關 DID documents 的幾個示例,請參見 DID specification。
DID 架構的特定目標是使 DID 和 DID document 適用於任何能夠將唯一密鑰解析為唯一值的現代區塊鏈,分散式分類帳本或其他分散式網絡。 區塊鍊是公共的,私有的,未經許可的還是被許可的都沒有關係。
重要的是如何在特定的區塊鏈上創建,解析和管理 DID 和 DID documents。 定義這就是 DID method specification 的作用。 DID method specification 適用於通用 DID specification,就像 URN namespace 規範(UUID,ISBN,OID,LSID等)適用於通用 IETF URN 規範(RFC 8141)。
DID method specification 必須定義以下內容:
這些 CRUD 操作在不同的 DID method 中可能有很大的不同。 例如:
DID 是去中心化身份基礎結構新階層的 “原子單元”。以下是 DID 系列中,其他正在開發中的其他規範的列表。
DID 僅可通過公鑰/私鑰加密進行; 在沒有任何中介的情況下產生,寫入 DID 和 DID documents 並將其更新到區塊鏈的能力要求控制關聯的私鑰。 這種密鑰管理本身不能依靠集中的權威,否則會破壞整體目標。 簡而言之,分散的身份要求分散的密鑰管理。
如何可在不同區塊鏈,應用程序和供應商之間,以互相操作的方式管理與 DID 相關聯的私鑰和其他私有數據的生命週期是 DKMS(分散密鑰管理系統)規範的重點。 該規範是在美國國土安全部科學技術局的資助下開發的。 DKMS 規範將基於 NIST Special Publication 800-130 “設計密鑰管理系統的框架” 中提出的要求和最佳實踐。
當今的 TLS 基礎架構是使用基於傳統分層 PKI 的 X.509 certs,其中證書頒發機構(CA)遵循標準化的最佳實踐,以便符合將被瀏覽器供應商認可的信任根。 DID TLS 通過使建立 TLS 會話所需的標準 X.509 certs 元素能夠從符合 DID 規範的任何 DID 和 DID documents 中動態生成,從而分散了此過程。
DID 規範有意地限制於機器生成的分散式 identifier,這些 identifier 完全缺乏人類的記憶力或可用性。 但是,在許多用例中,希望能夠使用人類友好的語義名稱來探索 DID。 這樣的命名服務看起來像是 DNS 的平面,可加密驗證的版本。
當然,最大的區別是 DID 命名服務需要完全分散,即沒有集中的註冊管理機構和註冊服務商。 DID 名稱的註冊將由身份所有者,直接使用與 DID 交易相同的密碼驗證方式向區塊鏈本身進行。
DID 名稱規範的目標是,標準化可互操作的分散式命名層如何直接在DID 層之上運行。 DID 名稱映射到 DID 的方式與 DID 映射到 DID documents 的方式相同。 DID 名稱將是 DID method 的可選功能,因此 DID 名稱空間的管理和經濟性可以由定義關聯 DID method 的同一社群指定。
所有區塊鏈身份系統的共同目標是以身份所有者的密碼認證。 各種協議都使用某種類型的密碼質詢/響應,類似於 Steve Gibson 最初提出的 SQRL 協議和 W3C 當前正在標準化的 Web 身份驗證協議。 在這些協議中,由依賴方發出一次挑戰,由身份所有者的私鑰簽名,然後由依賴方使用身份所有者的公鑰進行驗證。 SQRL 和 Web 身份驗證使用無法從外部驗證的成對公共密鑰,而 DID 將啟用針對 DID method 標識的區塊鏈的公共密鑰的驗證。
DID Auth 規範將使該密碼質詢/響應身份驗證協議標準化,因此它可以與支持它的任何 DID 一起使用。 然後,DID Auth 端點將成為標準 DID 身份服務之一,而不是可以通過 DID documents 發現的服務。
隱私是任何身份管理解決方案的重要組成部分; 對於使用不可變公共區塊鏈的全球身份系統而言,這一點尤其重要。 值得慶幸的是,DID 體系結構可以在最低級別的基礎結構級別上納入“按計劃設計的隱私”功能,因此,如果採用以下最佳做法進行部署,則它會成為功能強大的新的隱私保護技術:
DID 只是分散式身份基礎結構的基礎層。 下一層 -可以釋放大部分價值- 是 Verifiable Claims。 這是數位簽名的電子證書的技術術語,其符合 W3C Verifiable Claims Working Group正在開發的互操作性標準。 有關完整的介紹,請參見 Verifiable Claims Primer。
下圖(來自Manu Sporny)說明了 Verifiable Claims 生態系統中的三個主要角色:發行人對 claims 進行簽名並將其交給持有人(身份所有者),持有人(身份所有者)將其提交給驗證者以驗證簽名以授予對資源的訪問權限。
請注意,在所有這三種情況下,各方都與 DID 層進行交互,以將 DID註冊為發行者或持有者的永久 identifier,並解析這些 DID 以獲取驗證發行者或持有者的簽名所需的公鑰。 由於任何發行人都可以向可能向任何驗證者提出 claims 的任何持有人提供債權,因此,這導致形成了一組豐富且互鎖的信任關係,這些關係不需要符合任何預先建立的層次結構 - 信任網絡。
DID