6月30日, Tim Berners-Lee爵士否決了Google,Mozilla 等對 DID Core成為W3C建議的否決意見,為 DID Core 最終成為 W3C建議鋪平了道路。 這是W3C CCG(Credentials Community Group )所有成員和貢獻者的勝利,更是用戶的勝利。考慮到DID 是第一個成為W3C標準的自主身份(SSI,Self-Soverign Identity) 協議,這甚至可以說這是人民的勝利。
這過後的幾天7月4日恰好是美國的獨立日, 這是為紀念美利堅合眾國於1776年7月4日宣佈《獨立宣言》所成立的節日。 我覺得 DID Core 成為W3C 標準這件事,也許可以看成是一種網絡自主身份技術標準的「獨立宣言」, 從長遠來看其意義也許會和獨立日一樣深遠。
什麽是DID ? 快速入門
讓我們先用簡單的幾句話來最簡明地介紹一下什麽是DID。 W3C 的DID Core規範基礎其實僅僅是定義了「去中心化標識符(Decentralized Identifier)」的標準格式。
這個格式看起來很像我們現在已經熟悉而常見的以 https:// 開頭的web網址,它分為三個部分:
- 第1部分總是為「DID」 ,這表明這是一個「去中心化標識符」
- 第2部分稱為「方法(Method)」, 例圖裏的 ABT 就是我們ArcBlock定義的DID 方法
- 第3部分可以是任何字符串,其定義、產生和解釋等完全由第2部分的方法Method來自主定義和實現
不要小看這樣一個簡單的各格式性規範,沒有這個規範的各種服務的就會各自為政, 比如Facebook上一個用戶的最基礎的標識符就是個順序數字,同樣的數字可能也會出現其他的系統裏往往代表的是一個完全不同的東西。比如我的Facebook 的用戶ID 是 1314596489,但這個ID在亞馬遜可能代表一本書,在Instagram可能代表一張照片。 有了 DID 規範,就可以清晰定義全球唯一的標識符,無論這個對象是在那個系統裏,誰來開發實現都可以不混淆。
DID Core 一個獨特(但被大公司批評的)的設計,就是允許大量註冊的方法(Methods),而後面的標識由這些不同的方法來定義與解釋。 這樣的設計本身就體現了去中心化的精神,而且賦予了DID 靈活無限擴展的可能性,並且能和現有的傳統ID系統兼容。從我們在2019年初參與的時候這個Methods列表只有短短的清單,如今這已經是一個有好幾頁之長的名單,而且隨著DID Core成為標準,這個清單會中的成員和支持的方法可預見會變得更多。
在這次DID協議草案遭受到來自Google 和 Mozilla反對的意見中,對DID支持眾多的methods而沒有嚴格定義標準方法的做法是被批評的地方之一,由於methods很多那就需要有互通的問題,這是又一個被批判的地方; 由於methods 可以有多種實現也就意味著其實DID的一些method可以不是去中心化的,這是Google提出否決的又一個理由。 但是我認為這並不是設計的缺陷,而恰恰是去中心化的體現,站在中心化商業利益公司的角度並非看不到這樣做的價值,而是害怕這樣的設計會讓他們失去了既得利益的高地和對用戶身份和數據的壟斷獨占。
W3C 的 DID 還定義了 DID Document 的概念,這是一個極具擴展性的設計,這種設計不但讓DID 和 URI (Universal Resource Identifier)統一了起來,而且吸取了不少過去互聯網協議裏的經驗和教訓,但很容易被誤解和混淆,本文就不在這裏展開這些細節了。
什麽是可驗證憑證( Verifiable Credentials)? 快速入門
DID 僅僅是最基礎的一層,而基於DID之上的可驗證憑證(Verifiable Credentials)則是讓DID 能解鎖各自應用場景的關鍵。
可驗證憑證是一種包含了數字簽名來實現可驗證的數據格式規範。其實這個概念也非常簡單,就是說這些數據的格式裏包含了一些驗證信息使其可以高效率的驗證,並不能被篡改和破壞。這裏使用的簽名和驗證技術已經在眾多的互聯網應用中普遍使用,是很成熟的技術和實踐,這裏設計規範的目的就是為了能讓這些數據格式標準化,這樣不同的系統、不同的實現都能有效地互操作。
W3C CCG在基於DID的可驗證憑證設計上提出了這樣一個抽象的通用概念模型:
在這個模型裏,把證書的各個環節的角色主要劃分為頒發者(Issuer),持有者(Holder)和驗證者(Verifier), 每個角色均采用DID 來作為標識,可驗證憑證就是可以用簽名算法來驗證的數據。
從DID 到可驗證憑證,都和今天的區塊鏈、加密貨幣沒有必然聯系。 可驗證憑證的設計裏常常用到哈希、簽名等算法和今天區塊鏈廣泛使用的算法是類似的。 在上面的模型裏還有一個可驗證的數據登記(VDR,Verifiable Data Registry)的角色,這個角色可以采用區塊鏈來實現,但也並非是必需采用區塊鏈的,完全可以根據實際的應用場景采用傳統數據庫,甚至一個普通的文件來實現。我在《ArcBlock 如何利用 AWS QLDB 構建去中心化身份解決方案》這篇文章裏介紹了一種使用AWS QLDB來作為VDR的 DID實現。
W3C CCG的「 Verifiable Claims Working Groups' Use Cases」這篇文檔裏列舉了大量可以使用可驗證憑證來解決的實際應用的場景和例子。 市場上所看到的很多「企業區塊鏈應用場景」其實都是可驗證憑證的典型應用場景。
可驗證憑證有非常多具體的應用場景,這裏隨便給出一些應用的例子:
- 是否超過一定年齡?比如購買煙酒或進入有年齡限製的場所
- 是否有能力駕駛機動車輛?如數字化的駕照
- 是否通過某種培訓並獲得某種學歷?如數字化的學歷和培訓證書
- 是否有專業的執照,如行醫的許可? 如數字化的執照
- 是否是通過KYC驗證? 是否是符合某些法律法規下合格投資者?
- 是否可以進行國際旅行? 如簽證、護照、疫苗卡等
- …
有可能有人會說上面這些例子今天都已經能實現了,甚至已經日常使用了。 沒錯,上面很多的例子都是現在使用中的場景,但是存在著幾個問題,首先基本上這些基於中心化設計的驗證系統都需要有完美的網絡連接,在某些網絡環境或突發事件下就可能失效; 其次這些中心化設計可能成為黑客工具的重要目標,往往造成嚴重的數據泄露和隱私災難;然後這些今天的方案往往是特定的廠商或政府部分各種實現的,不能很好互聯互通,用戶往往手機裏需要無數個App適應各種不同的應用場合。 DID 的可驗證證書設計目標是不但完成上面的應用,而且保證去中心化的特性,保護用戶的隱私。
DID 解鎖了新的應用開發範式
我們看到的是 DID 帶來的一系列的未來應用的機會以及其對應用開發範式的遷移。 這種軟件開發範式的改變,讓「去中心應用」變得更為現實。DID、去中心化應用,和最近的Web3 運動可謂不謀而合。 可以想象,DID技術會成為Web3運動中的關鍵技術革命。
DID 對標識(Identifier)的標準化使得不同的軟件模塊、系統之間的互操作性變得更為容易,更重要的是 DID 的核心思想是讓用戶,而不是服務商,來完整擁有和控製自己的數據, 這是對過去互聯網時代,尤其Web2思路的一個巨大轉變。 過去的互聯網服務的「核心競爭力」是擁有多少用戶的數據,因此廠商和廠商之間的競爭關鍵是看誰控製更多的用戶數據,而DID的思路下,只有用戶才擁有自己的數據,廠商只是專心提供服務或者軟件,這使得軟件和服務之間的更緊密合作變得不再存在那麽嚴重的利益沖突。
早在 2017年 ArcBlock 創立之初我們就意識到了一種去中心化身份的必要性,但是那時候我們還沒有找到最適合的解決方案。 2018年我們研究了當前市場上各種方案後被 W3C CCG 提出的DID 所吸引並認為這是市場上多種去中心身份中的最佳選擇。 從2019年上半年開始,我們把 DID 技術納入了我們的核心技術棧並在這個領域深耕至今。 2022年,我們更是將DID相關的技術分拆成立了DID Labs 作為生態系統的一部分,這樣可以更為獨立且專註地發展DID技術。
我們在參與DID的過程之中,標準並沒有形成,而且行業標準往往意味著需要漫長的時間和大量的討論和妥協,往往作為創業公司很難有資源和時間去跟隨標準的形成過程。我們采用了比較靈活輕便的方法來參與:
積極加入標準組織的社區,認真研習社區產生的文檔、會議記錄和討論。 在社區裏我們更多扮演的傾聽和學習的角色而不是積極輸出觀點的角色;
我們並不等待標準和社區共識(這一般需要相當長的時間),而是迅速按照自己的理解來實現和嘗試自己的版本,在自己的原型甚至產品實現了,我們再對照社區其他人的做法或討論的結構來改進。 這種做法使得我們不會花大量的時間在還沒有形成的標準之上,又不會固步自封;
和其他DID methods的互通性上,我們先采取暫時觀望的態度,沒有在早期花費精力,但我們會隨時觀察社區的動態,會在標準正式形成的時候在互操作性上下功夫;
在這樣的策略下,圍繞 W3C DID Core的建議加上我們自己的創新,我們實現了一系列和DID 相關的模塊,形成了一套現對完整並立刻開箱即用的產品體系。
- 基於 DID 的原生區塊鏈地址:采用DID 的區塊鏈地址
- 基於 DID/VC 的NFT格式: 采用DID 和 VC 的 NFT 數據格式
- 基於 DID/VC 的訪問控製Passport:采用DID 和 VC 的訪問控製格式
- DID Wallet : 用戶用來管理自己的去中心身份和數字資產的錢包
- DID Connect : 用DID來連接用戶和應用的協議
- DID Motif: 一種對DID的可視化渲染庫,讓用戶一眼就能從圖案色彩的區別來區分不同的DID
- DID Storage:用DID來管理的用戶數據訪問協議和去中心化數據存儲格式
我們將把這些產品體系裏我們自創的部分開源並貢獻給DID 社區,也會在DID 的正式標準形成的過程中全面擁抱標準和互操作性。
DID 未來的挑戰
W3C DID 將為了正式的W3C建議標準。 這是所有DID推動者的巨大勝利裏程碑,但也只是漫漫去中心化之路上的起點。目前成為W3C建議的還只是DID Core這個最基礎的協議,而基於DID 構建應用需要的遠遠不只是這些。 未來DID技術還將面臨很多挑戰,更多標準和規範的形成還有漫漫長路要走。
W3C CCG的DID 也並非去中心化身份的唯一標準,還有其他一些競爭或者類似的協議,可以認為是不同流派在相同的方向上的競爭。 其他的協議如 OpenID、 WebID、Web Authn、 IndieAuth 等等,這些有些和DID 並不是解決相同問題,但有一定程度的重合。
在DID 形成標準的路上,Google,Mozilla等互聯網時代的大公司提出了反對意見,試圖阻止DID規範的形成,無論他們是出於什麽樣的動機,我相信這都恰恰說明了DID的價值和潛力。 這讓我想起了上次我在VoIP領域創業的時候,大的電話公司,通信技術公司和國營的電信企業企圖對IP 電話技術的扼殺,對創新發起了一波又一波的狙擊… 如今VoIP技術已經是今天電信業務的基礎服務甚至說新的支柱都不為過。 所有曾經試圖阻止技術創新的那些「巨頭」不是自己成為了歷史,就是最終自己也被迫擁抱了創新加入了新的陣營 … 歷史從來都是如此的押韻。
Hacker News上關於DID Core 成為W3C 建議的一則討論裏,我驚訝地看到很多其中的評論都集中在對有很多區塊鏈技術公司參與在DID之中而導致的批判和嘲諷。我把這裏幾十條評論和一個都認真看了一遍,沒有看到一條「有理有據」的反面觀點,相反充滿了對DID的誤解、對區塊鏈和加密貨幣的誤讀和惡意。 正如前面所述 DID 和區塊鏈其實是獨立的技術,兩者可以沒有必然聯系。但是由於區塊鏈、數字貨幣以及現在時興的Web3概念的流行,有相當數量的區塊鏈技術公司(包括我們在內)看到了DID的價值並且投身於其中。 在極客圈的Hacker News的討論裏竟是很多人對此持嘲諷和反感的態度,這頗為令人意外和遺憾,但也說明了DID 要普及還任重道遠。
正如如果我們回到歷史上的7月,當《獨立宣言》被第一次撰寫、簽署和宣布的時刻,美國還只是風雨飄搖中的一個弱小政體,這離美國成長為一個強大的國家,還有著漫長的歷程,沒有人知道這份短短的宣言在未來會書寫一份不可磨滅的歷史。