前言
每個人都有過回答「你是誰」這個問題的經(jīng)驗。最近一次被問到「你是誰」時,你是怎么介紹自己的?是回答姓名與職稱?或是身分證字號?還是某活動的報名序號?當我們在嘗試回答「你是誰」的時候,也正在定義我們的身份。身份會因情境不同而不同,有時是姓名,有時是身分證字號,也有時是某個臨時編號。
什么是數(shù)字身份(Digital Identity)?
數(shù)字身份就是以數(shù)字形式表現(xiàn)與儲存的身份。自全球資訊網(wǎng)被發(fā)明以來,數(shù)字身份便跟著開始發(fā)展直到今日。網(wǎng)站域名、電子信箱、社群帳號等等都是數(shù)字身份的一種。我們的日常生活離不開數(shù)字身份的使用:上社群網(wǎng)站發(fā)文、訂演唱會門票、上PTT看廢文、用GMail聯(lián)絡(luò)公事、用線上課程進修、用云端硬碟備份資料等等。幾乎可以說沒有數(shù)字身份,就沒有現(xiàn)代便利的生活。
根據(jù)2016年的文章,自我主權(quán)身份出現(xiàn)之前,數(shù)字身份的發(fā)展大致可以分為三個階段:
第一階段:中心化身份(Centralized Identity)
數(shù)字身份第一次隨著全球資訊網(wǎng)的流行而有了大量的需求。如雨后春筍般冒出來的各種網(wǎng)站顯露了一個迫切的問題:要怎么證明你正在瀏覽的網(wǎng)站是可信任的?一個直覺的思路是:我們可以對可信任的網(wǎng)站域名頒發(fā)憑證(Certificate)。那么由誰來頒發(fā)?由于頒發(fā)憑證的機構(gòu)必須是具有公信力的機構(gòu),因此憑證機構(gòu)(Certificate Authority, CA)被設(shè)立,負責域名的審核與憑證的頒發(fā)。自1995年發(fā)展至今,憑證機構(gòu)現(xiàn)在仍是Https的骨干。
然而,CA是中心化且階層化的(Hierarchical):根CA(Root CA)頒發(fā)憑證給次級CA,次級CA再頒發(fā)憑證給更次級的CA,更次級的CA可以頒發(fā)憑證給注冊某域名的網(wǎng)站,擁有憑證的域名則可以讓用戶信任,使用戶愿意于此域名注冊身份。在這樣階層化的架構(gòu)下,一個用戶的身份可以一直往上追朔到根CA,也就是說,根CA是身份的根基。
由此可知,這樣的數(shù)字身份非常依賴可信的根憑證機構(gòu),且用戶的身份完全掌控于注冊身份的域名擁有者,隨著使用服務(wù)的增長,一個用戶可能必須同時在數(shù)十個服務(wù)注冊身份,身份變得破碎而脆弱。
第二階段:聯(lián)合身份(Federated Identity)
為了解決身份的破碎,一個直覺的思路是:讓身份由數(shù)個組織組成的聯(lián)盟共同管理,于聯(lián)盟中任一個域名注冊的身份都可以在聯(lián)盟中通用,其中一個例子就是由升陽(Sun)主導的自由聯(lián)盟 (Liberty Alliance, 2001)。聯(lián)合身份雖然稍微解決在聯(lián)盟之間身份破碎的問題,但是于聯(lián)盟之外的身份仍然是破碎的,且身份仍由服務(wù)提供者掌控。
第三階段:以用戶為中心的身份(User-Centric Identity)
這就是我們目前所在的階段:讓不同服務(wù)、不同聯(lián)盟的身份互通以及給予用戶更多對身份的掌控,是此階段的目標。若要使某一服務(wù)的身份可以在多個服務(wù)之間通用,則各家服務(wù)需要共同制定同一套規(guī)格以跨服務(wù)驗證身份。重視用戶允許 (User Consent)與互通性 (Interoperability)的結(jié)果使用戶成為了身份的中心。用戶可以自行決定是否要從一個服務(wù)分享自己的身份至另一個服務(wù),防止數(shù)字身份的破碎。例如OpenID(2005) / OAuth (2010) / FIDO (2013)這些開發(fā)者熟知的驗證(Authentication)協(xié)定就是遵循此原則的產(chǎn)物。
雖然用戶對身份擁有更多掌控以及有更好的互通性,但用戶對于中心化服務(wù)的依賴程度卻更勝以往,導致服務(wù)商擁有「濫用」用戶隱私的權(quán)力,例如以廣告營收為主要獲利來源的企業(yè),可以在不經(jīng)用戶同意下便使用或販售用戶資訊,用戶隱私有受到侵犯的風險。
身份的價值與厚度來自社交行為與頻繁的互動,在完全理想(例如非數(shù)字)的場景下,身份應(yīng)當是一個整體,并能依據(jù)情境不同而揭露不同資訊,正如同當我被詢問「我是誰」時,我可以依照情境的不同給予不同的身份證明。
然而,我們當今使用的數(shù)字身份既脆弱也無法表達身份的厚度。那么要如何實現(xiàn)一個不受任何中心化服務(wù)掌控的身份呢?這個問題的答案一直到最近才出現(xiàn)— 分散式帳本就是實現(xiàn)自我主權(quán)身份的最后一塊拼圖。
什么是自我主權(quán)身份(Self sovereign Identity)?
自我主權(quán)身份就是用戶可以完全掌控且于任何服務(wù)之間互通使用的數(shù)字身份。自我主權(quán)身份與當今的數(shù)字身份不同—自我主權(quán)身份錨定于分散式帳本,不被任何中心化服務(wù)掌控。分散式帳本使數(shù)字身份具備下列特性,且正是這些特性保證了數(shù)字身份的自主性:
· 存在性(Existence):中心化服務(wù)可以隨時竄改數(shù)字身份的存在;分散式帳本則使身份能以去中心化識別符(DID)的形式錨定在其上且保護其不受篡改。
· 掌控性(Control):中心化服務(wù)可以完全掌控數(shù)字身份;分散式帳本使用數(shù)字簽章,掌控私鑰即掌控身份,且私鑰由用戶自行保管。
· 存取性(Access):中心化服務(wù)可以輕易限制身份存取;分散式帳本是復制狀態(tài)機,用戶可以于任一節(jié)點隨時存取身份。
· 透明性(Transparency):中心化服務(wù)多為閉源專案;分散式帳本大多為開源專案,用戶可以掌控軟體運作的細節(jié)。
· 持續(xù)性(Persistence):中心化服務(wù)有服務(wù)中斷的風險;分散式帳本多由受到經(jīng)濟激勵的節(jié)點共同維護,不易中斷服務(wù)。
自我主權(quán)身份的技術(shù)架構(gòu)
數(shù)字身份由識別(Identifier)、驗證機制(Authentication)、憑證(Credential)這三個要素組成。自我主權(quán)身份除了這三個要素,還具備了第四個要素:私鑰與資料管理機制(DKMS),這是由于自我主權(quán)身份使用數(shù)字簽章而有管理私鑰的需求。
自我主權(quán)身份并不是全新的發(fā)明—許多技術(shù)的思路基本上沿用了現(xiàn)有的規(guī)格,自我主權(quán)身份真正的創(chuàng)舉在于制定一套通用規(guī)格:去中心化識別符(Decentralized Identifier, DID),使身份能夠以同一標準錨定于不同分散式帳本并且互相通用。
自我主權(quán)身份的四個要素之間具有如上圖所示的關(guān)系,這些要素形成一個堆疊(Stack)的架構(gòu):最底層的#1負責身份的錨定;第二層的#2需要和底層的分散式帳本互動及負責用戶資料與私鑰的儲存;第三層的#3則需要使用第二層的資料以進行用戶身份的驗證;成功完成驗證后,最頂層的#4則可以發(fā)送各種憑證以表明用戶的身份。這種上層依賴下層且同層之間互通的架構(gòu)類似TCP/IP的七層網(wǎng)路協(xié)定— 各層具有各自的協(xié)定與規(guī)格,且各層之間的運作細節(jié)是抽象的。
哪些組織在推動自我主權(quán)身份?
由于自我主權(quán)身份需要一系列協(xié)定的緊密配合,因此自我主權(quán)身份的進展有賴于統(tǒng)一的規(guī)格與設(shè)計良好的協(xié)定,這需要由業(yè)界組成的非營利組織共同推動與維護。目前有許多非營利的組織都在自我主權(quán)身份領(lǐng)域持續(xù)貢獻,例如:
重啟信任網(wǎng)路 (Rebooting Web of Trust, RWoT)
全球資訊網(wǎng)協(xié)會的憑證社群組 (W3C Credential Community Group, W3C CCG)
去中心化身份基金會 (Decentralized Identity Foundation, DIF)
網(wǎng)際網(wǎng)路身份工作坊 (Internet Identity Workshop, IIW)
這些組織在近3年來都有非常豐碩的產(chǎn)出。其中最活躍的應(yīng)該就屬RWoT:自2016年開始啟動以來,RWoT發(fā)表超過40篇的論文、技術(shù)規(guī)格與開源程式碼;RWoT孕育的技術(shù)規(guī)格也進一步提案給W3C或者IETF以進行標準化;DID規(guī)格草稿有一大部分是奠基于RWoT的工作成果;甚至連「自我主權(quán)身份」這個詞匯也是在RWoT被創(chuàng)造的。
實現(xiàn)自我主權(quán)身份的技術(shù)規(guī)格
那么自我主權(quán)身份架構(gòu)中的各層是如何運作的?筆者接下來針對各層使用的規(guī)格做概述。
1. 去中心化識別符(Decentralized Identifier, DID)
DID是自我主權(quán)身份技術(shù)架構(gòu)中最底層、也是最關(guān)鍵的一層— 它負責身份于分散式帳本的寫入/讀取,其對于識別符的格式以及解析方法都有明確的定義,下列簡述幾個重要的部分:
· DID(Decentralized Identifier):DID是一個由數(shù)字與英文字母組成的識別符,其是唯一的且映射至一個位于某個帳本的DID文件。DID由三個部分組成:格式(scheme)、DID方法(DID Method)以及DID方法特化字串(DID Method-specific String)。DID方法將于下一點闡述;DID方法特化字串的產(chǎn)生方式則需于DID方法的規(guī)格中明確定義。
· DID方法(DID Methods):為位于DID中的一組字串,功能為區(qū)分每個DID的解析方式—每一種帳本都有專屬該帳本的DID方法,且其對應(yīng)位于該帳本之DID文件的創(chuàng)建/解析規(guī)則。例如注冊于以太坊的DID會是像did:eth:12345這樣的形式。DID方法需要向W3C注冊以被解析器辨識。
· DID文件(DID Document):分散式帳本可以被想像成一個鍵值資料庫(Key-value Database) — DID是鍵值,它所對應(yīng)的內(nèi)容就是寫入分散式帳本的DID文件(DID Document )。DID文件包含:代表身份的公鑰、驗證協(xié)定、能與此身份互動的的服務(wù)終端等等。
· DID解析器(DID Resolver):協(xié)助更上層協(xié)定便于查詢DID文件,解析器能夠針對不同的DID方法進行解析,再將解析結(jié)果返回上層,上層協(xié)定不需要理會關(guān)于文件解析的細節(jié)。DIF針對解析的需求開發(fā)了通用解析器(Universal Resolver),如此該解析器只需要部署一次,日后若有新的DID方法被注冊,只需針對該方法進行擴充即可。
2. 去中心化私鑰管理系統(tǒng)(Decentralized Key Management System, DKMS)
DKMS是用戶使用自我主權(quán)身份的主要介面,除了與底層的DID連接之外,還需提供憑證的儲存、私鑰的備份等等,任務(wù)相當多元。規(guī)格上來說,DKMS可以再細分成三個子層:
· DID層(DID Layer):負責與更底層的分散式帳本連結(jié)以執(zhí)行DID查詢。
· 云端層(Cloud Layer):負責儲存用戶的個人資料供上層協(xié)定使用,例如可驗證憑證。
· 邊緣層(Edge Layer),負責管理私鑰,同時也是讓用戶可以使用自我主權(quán)身份的去中心化應(yīng)用程式(DApp)。
3. DID驗證(DID Authentication)
目前仍尚未有任何準備成為通用標準的DID驗證規(guī)格的提案,只有一份RWoT的文件深入探討了驗證流程。DID驗證的任務(wù)只有一個:就是讓用戶證明自己擁有某身份— 用戶只要證明自己擁有跟某個自我主權(quán)身份公鑰匹配的私鑰即可。進行驗證后便能使不同個體之間建立可信任且更長久的通訊管道,以利更上層協(xié)定交換其他資料,例如可驗證憑證。
現(xiàn)今存在許多行之有年的驗證方式,例如OAuth / OpenID等等。類似這些驗證方法,DID驗證也使用挑戰(zhàn)-回應(yīng)循環(huán) (Challenge-response Cycle)進行驗證:驗證者發(fā)出挑戰(zhàn),身份擁有者根據(jù)挑戰(zhàn)作出回應(yīng),驗證者再檢驗回應(yīng)是否有效。至于挑戰(zhàn)的形式則沒有明確的定義,不過我們一定都有回應(yīng)挑戰(zhàn)的經(jīng)驗—我們在登入某帳號前都必須輸入的帳號密碼就是其中一種挑戰(zhàn)的方式。
4. 可驗證憑證(Verifiable Credential, VC)
VC是自我主權(quán)身份架構(gòu)中發(fā)展最早、也是最成熟的規(guī)格。作為自我主權(quán)身份架構(gòu)最頂層的協(xié)定,它只有一個目的:取代用戶皮夾里的所有證件。VC是基于密碼學的數(shù)位憑證,可在不同應(yīng)用程式間通用,它讓身份回歸到最理想的狀態(tài):身份是完整的且完全受用戶掌控的,用戶可以依照情境的不同而揭露不同的憑證。由于所有自我主權(quán)身份都能發(fā)行與保存憑證,也就沒有身份破碎的問題。
VC包含三個部分:
· 斷言(Claims):為關(guān)于主體的一段陳述,表示[主體— 性質(zhì)— 內(nèi)容]之間的關(guān)系,例如:[小明— 學生— 有間學校]代表小明為有間學校的學生。
· 憑證后設(shè)資料(Credential Metadata):為有關(guān)憑證的其他資訊,例如類型、發(fā)行者、發(fā)行時間等等。
· 證明(Proof):為發(fā)行者對憑證內(nèi)容的數(shù)位簽章。
在使用VC揭露身份時,要如何避免不會暴露過多的隱私?可驗證陳述 (Verifiable Presentation)便是利用零知識證明(Zero-knowledge Proof)保護憑證的進階規(guī)格,細節(jié)容筆者于日后令撰文分析。
結(jié)語
本文用了相當多的篇幅在介紹自我主權(quán)身份的背景與發(fā)展脈絡(luò)。自我主權(quán)身份的發(fā)展雖然距今只有短短4年,卻已經(jīng)有相當豐碩的成果,也能看到新的應(yīng)用程式、協(xié)定、規(guī)格不斷推陳出新,生態(tài)系也趨于完整。但由于是相當新穎的領(lǐng)域,資訊經(jīng)常散落在各處且缺乏脈絡(luò),需要埋首于文件堆中才能偶然理出一些頭緒。期許這篇文章能夠幫助***的開發(fā)者快速掌握自我主權(quán)身份的精要。
評論