分布式身份標(biāo)識(Decentralized Identifiers, DID)、百度DID
分布式身份標(biāo)識(Decentralized Identifiers, DID)


1.背景
中心化身份 => 聯(lián)盟身份 => 中心化身份(DID)
中心身份的缺陷:身份不是由用戶自己控制的。不同網(wǎng)站自己用的身份系統(tǒng)(及賬戶對應(yīng)的數(shù)據(jù))之間是不互通的。
后聯(lián)合推出了聯(lián)盟身份,用戶的在線身份有了一定的可移植性,如“支持第三方登錄”。
聯(lián)盟身份的缺陷:①個(gè)人并不是真正意義上擁有自己的身份,②身份無法互通。
去中心化身份(DID):利用區(qū)塊鏈技術(shù)實(shí)現(xiàn)讓數(shù)字身份真正為用戶所擁有并支配。
2.1分布式數(shù)字身份
①分布式數(shù)字身份標(biāo)識符(一種去中心化的可驗(yàn)證的數(shù)字標(biāo)識符,具有分布式、自主可控、跨鏈復(fù)用等特點(diǎn))
②數(shù)字身份憑證(聲明集合);
2.2 聲明、可驗(yàn)證聲明(Verifiable Credential,VC)
聲明:與身份關(guān)聯(lián)的屬性信息。可由身份所有者發(fā)出、也可由發(fā)行人發(fā)出(可驗(yàn)證聲明)。
?
VC提供了一種規(guī)范來描述實(shí)體所具有的某些屬性,實(shí)現(xiàn)基于證據(jù)的信任。
VC可以快速地傳輸,使它們在嘗試建立距離上的信任時(shí)比物理對等物更方便。
?
DID持有者通過VC向其他實(shí)體證明自己某些屬性是可信的。第三方根據(jù)記錄驗(yàn)證聲明。
數(shù)字簽名等技術(shù)的加入,使可驗(yàn)證的憑證比其物理對等物更不易被篡改,也更值得信任。
?
發(fā)行者(Issuer):擁有用戶數(shù)據(jù)并能開具VC的實(shí)體。
驗(yàn)證者(Inspector-Verifier, IV):接受VC并進(jìn)行驗(yàn)證,后提供某種類型的服務(wù)。
持有者(Holder):向Issuer請求、收到、持有VC,向IV出示VC。VC可放在VC錢包里,方便以后再次使用。
標(biāo)識符注冊機(jī)構(gòu)(Identifier Registry):維護(hù)DIDs的數(shù)據(jù)庫,如某條區(qū)塊鏈、分布式賬本。

2.4 DID文檔(Document)
與DID標(biāo)識符形成鍵值對。DID文檔描述的是與被識別對象進(jìn)行密碼驗(yàn)證交互所必須的DID主體標(biāo)識、公鑰、驗(yàn)證協(xié)議、服務(wù)端點(diǎn)等,JSON-LD格式,LD(Linked Data),VC的格式也是JSON-LD,該格式可以將文檔轉(zhuǎn)換為結(jié)構(gòu)化的數(shù)據(jù)。
3.基本實(shí)現(xiàn)原理
3.1DID標(biāo)識符規(guī)范格式
?

Scheme: DID的統(tǒng)一資源定位符(URI),默認(rèn)為did
DID Method: DID方法,一般用于指定DID平臺
DID Method-Specific Identifier: DID平臺上關(guān)于DID Document的資源定位字符串,在整個(gè)DID方法命名空間是唯一的。
DID本質(zhì)上是一個(gè)全球唯一的地址標(biāo)識符URL,指向?qū)懹信c用戶身份關(guān)聯(lián)的屬性信息的DID文檔。
W3C的DID標(biāo)準(zhǔn)


WeIdentity DID規(guī)范



?DID方法規(guī)范作用:如何在特定的區(qū)塊鏈或者系統(tǒng)創(chuàng)建、解析、管理DID和DID文檔,DID規(guī)范要包含:Create、Read、Update、Delete
3.2DID現(xiàn)有的方法
以bid方法為例——中國信息通信研究院(中國信通院)
經(jīng)過橢圓曲線加密和SM2,輸出公鑰,并對公鑰進(jìn)行hash處理。
BID身份描述對象:
{
//@context是數(shù)據(jù)鏈接的詞匯,這個(gè)特定的實(shí)例引用了URL
//標(biāo)識一個(gè)did主體
//名稱:設(shè)置昵稱以提高出價(jià)標(biāo)識符的可用性。
??"@context": " <a href="https://www.w3.org/2019/did/v1/" ,"="">https://www.w3.org/2019/did/v1",
??"id": "did:bid:3acdafe161ef702033bdf895",
??"name":"shiweijun",
//公鑰用于身份認(rèn)證
??"publicKey": [{
????"id": "did:bid:3acdafe161ef702033bdf895#keys-1",
????"type": "RsaVerificationKey2018",
????"controller": "did:bid:3acdafe161ef702033bdf895",
????"authorizations": ["all"],
????"bid": "did:bid: 3acdafe161ef702033bdf895
??}, {
????"id": "did:bid:3acdafe161ef702033bdf895#keys-3",
????"type": "Ieee2410VerificationKey2018",
????"controller": "did:bid:3acdafe161ef702033bdf895",
????"bid": "did:bid: 3acdafe161ef702033bdf895"
??}],
//身份驗(yàn)證:一個(gè)列表,其中包含用戶的身份驗(yàn)證身份屬性信息
??"authentication": [{ ???
"type": "ED25519SigningAuthentication",
????"publicKey": "did:bid:3acdafe161ef702033bdf895#keys-1",
????"proofId":"c1cb770ac94000d946e583d13ea310"
????????????}],
//服務(wù):每個(gè)服務(wù)都用屬性ID標(biāo)識。
??"service": [{
"id": "did:bid: 3acdafe161ef702033bdf895#home_page ",
"type": "DIDResolve",
"serviceEndpoint": "http://www.caict.ac.cn"
}
],
//證明:用于證明DDO文檔的內(nèi)容完整性和源可靠性。
"proof": {
"type": "RsaSignature2018",
"created": "2017-10-24T05:33:31Z",
"creator": "did:bid: 3acdafe161ef702033bdf895#keys-1",
"signatureValue": "eyiOiJJ0eXAK...EjXkgFWFO"
},
???"Extra":"abc123",
???"isEnable":true,
???"createTime":1561945638,
???"updateTime":1561945638
}
?
Create

管理私鑰的兩種方式:
①生成助記詞
②將私鑰或者密鑰庫反饋給用戶
Update:通過調(diào)用API進(jìn)行
Read:可通過查詢BID或BID的昵稱來獲取BID文檔以及對所有人公開的詳細(xì)信息。以JSON格式反饋以響應(yīng)查詢
Delete:通過調(diào)用API完成
?
身份驗(yàn)證

3.3證明DID與DID文檔之間的綁定關(guān)系
根據(jù)DID方法規(guī)范對一個(gè)DID文檔進(jìn)行解析
驗(yàn)證DID文檔的id屬性和DID解析出來的結(jié)果是否一致
3.4證明公鑰的控制
靜態(tài)和動(dòng)態(tài)兩種方法:靜態(tài)方法是使用私鑰對DID文檔進(jìn)行簽名,這可證明在DID文檔注冊前的私鑰控制權(quán);若DID文檔未被簽名,則可以用文檔中關(guān)于公鑰信息來動(dòng)態(tài)證明。
①將包含DID文檔中的公鑰信息和nonce的質(zhì)詢消息發(fā)送到DID文檔中描述的適當(dāng)服務(wù)端點(diǎn)。
②根據(jù)公鑰信息驗(yàn)證響應(yīng)消息的簽名
4.DID CA:DID驗(yàn)證/VC
認(rèn)證中心(Certification Authority,CA),又稱為數(shù)字證書認(rèn)證中心。
CA中心作為電子交易中受信任的第三方。
CA核心功能:發(fā)放和管理數(shù)字證書,主要有:證書發(fā)放、證書更新、證書撤銷和證書驗(yàn)證。
涉及的流程內(nèi)容:
CA向用戶頒發(fā)數(shù)字證書(證書包含證書主體的身份,公鑰數(shù)據(jù),頒發(fā)機(jī)構(gòu)名稱等)
發(fā)證機(jī)構(gòu)對信息進(jìn)行數(shù)字簽名形成證書
擁有證書的用戶擁有自己的公鑰私鑰
用CA的公鑰解密用戶證書,即可得到用戶認(rèn)證公鑰
VC生命周期:
Issuer向holder簽發(fā)VC。
holder可以將一/多個(gè)VC傳輸給另一個(gè)持有者。
holder向verifiers顯示其一/多個(gè)VC。
verifiers驗(yàn)證VC的真實(shí)性。包括檢查撤銷VC的聲明狀態(tài)。
Issuer可以撤銷revoke?VC
holder可以刪除delete?VC
驗(yàn)證過程:
用戶申請注冊DID,由用戶自己管理
驗(yàn)證用戶DID(用戶與DID是否對應(yīng)),用戶出示VC憑證,
驗(yàn)證者驗(yàn)證VC是由發(fā)行者發(fā)行的,通過VC中URL找到用戶的DID文檔,用過DID文檔中的公鑰再驗(yàn)證用戶DID標(biāo)識
?
可驗(yàn)證聲明的信任模型:
verifiers信任由Issuer發(fā)行的VC
所有實(shí)體都相信可驗(yàn)證數(shù)據(jù)注冊表是防篡改的,且正確記錄是由哪些實(shí)體控制哪些數(shù)據(jù)。
holder和verifiers信任Issuer發(fā)布真實(shí)的關(guān)于主體的聲明,并在適當(dāng)?shù)臅r(shí)候迅速撤銷。
holder信任存儲(chǔ)庫安全地存儲(chǔ)聲明,不會(huì)將其釋放給holder以外的任何人,并且在保管聲明不會(huì)損壞或丟失聲明。
(holder和verifiers信任Issuer,絕對信任數(shù)據(jù)表,holder信任存儲(chǔ)庫)
與其他信任模型的區(qū)別在于:
Issuer和verifiers不需要信任存儲(chǔ)庫。
Issuer不需要知道或信任verifiers。
?
零知識證明
為了使用零知識可驗(yàn)證憑證,Issuer必須以一種使holder能夠以增強(qiáng)隱私的方式將信息提供給驗(yàn)證者的方式來發(fā)行可驗(yàn)證憑證。這意味著holder可以證明Issuer簽名的有效性,而無需透露已簽名的值,或者僅透露某些選定的值。標(biāo)準(zhǔn)做法是通過證明簽名知識而不公開簽名本身來做到這一點(diǎn)。
?
5.答疑
DID與區(qū)塊鏈的解決方案:
分布式數(shù)字身份體系并不局限于區(qū)塊鏈技術(shù),更不綁定到唯一區(qū)塊鏈平臺上,其系統(tǒng)模塊可能基于不同的區(qū)塊鏈平臺實(shí)現(xiàn),甚至是非區(qū)塊鏈的其他分布式賬本實(shí)現(xiàn)
?
解決方案及流程:
①在身份證明機(jī)構(gòu)、數(shù)據(jù)持有機(jī)構(gòu)、數(shù)據(jù)使用機(jī)構(gòu)間搭建區(qū)塊鏈網(wǎng)絡(luò),機(jī)構(gòu)作為節(jié)點(diǎn)接入并注冊DID
②由身份證明機(jī)構(gòu)為用戶生成DID
③用戶授權(quán)數(shù)據(jù)使用機(jī)構(gòu)使用自己的數(shù)據(jù)
④數(shù)據(jù)使用機(jī)構(gòu)生成授權(quán)憑證(Credential),標(biāo)明授權(quán)對象、數(shù)據(jù)屬主、有效期、授權(quán)內(nèi)容等屬性,并使用機(jī)構(gòu)私鑰進(jìn)行簽名;數(shù)據(jù)使用機(jī)構(gòu)可選擇將授權(quán)憑證生成摘要并寫入?yún)^(qū)塊鏈,達(dá)到增信目的
⑤數(shù)據(jù)使用機(jī)構(gòu)出示授權(quán)憑證給數(shù)據(jù)持有機(jī)構(gòu)
⑥數(shù)據(jù)持有機(jī)構(gòu)通過憑證驗(yàn)證(Verify)接口,驗(yàn)證授權(quán)憑證
⑦驗(yàn)證通過,數(shù)據(jù)持有機(jī)構(gòu)將數(shù)據(jù)發(fā)送給數(shù)據(jù)使用機(jī)構(gòu)
?
【All作為節(jié)點(diǎn)接入?yún)^(qū)塊鏈、注冊DID → 身份證明機(jī)構(gòu):生成用戶的DID →用戶:授權(quán)數(shù)據(jù)使用機(jī)構(gòu)?→數(shù)據(jù)使用機(jī)構(gòu):生成授權(quán)憑證、簽名、生成摘要、寫入?yún)^(qū)塊鏈,出示授權(quán)憑證給數(shù)據(jù)持有機(jī)構(gòu)?→ 數(shù)據(jù)持有機(jī)構(gòu)通過憑證驗(yàn)證(Verify)接口,驗(yàn)證授權(quán)憑證,通過驗(yàn)證后,將數(shù)據(jù)發(fā)送給數(shù)據(jù)使用機(jī)構(gòu)】
?
“區(qū)塊+共識算法”解決分布式系統(tǒng)的數(shù)據(jù)一致性問題,將可驗(yàn)證聲明和DID文檔存證于區(qū)塊鏈中
優(yōu)勢:
可公開訪問、可信驗(yàn)證、操作成本低廉;
支持用戶控制自己的標(biāo)識符和憑證托管,轉(zhuǎn)換數(shù)據(jù)治理模型,減少對受信任中介的依賴性;
用戶可以管理自己的身份數(shù)據(jù),并在知情和授權(quán)的基礎(chǔ)上將其公開給依賴方;
企業(yè)依靠可驗(yàn)證的用戶信息來簡化其運(yùn)營,不必充當(dāng)數(shù)據(jù)托管人并處理相關(guān)的成本和風(fēng)險(xiǎn)。
?
關(guān)于保護(hù)隱私
用戶可以擁有多個(gè)DID,且DID之間沒有任何關(guān)聯(lián)。
加密的數(shù)字憑證(VC)、零知識證明
將用戶標(biāo)識符和憑證加密后存儲(chǔ)在區(qū)塊鏈上,不可篡改,人人都可以驗(yàn)證
DID文檔和區(qū)塊鏈上不包含個(gè)人數(shù)據(jù)。所有個(gè)人資料應(yīng)保存在DID當(dāng)事人控制的服務(wù)端點(diǎn)后。(服務(wù)端點(diǎn)在DID文檔中用于表示與DID主題或關(guān)聯(lián)實(shí)體進(jìn)行通信的方式)
?
DID文檔中沒有任何和個(gè)人真實(shí)信息相關(guān)的內(nèi)容。因此光靠DID規(guī)范是無法驗(yàn)證一個(gè)人的身份的,必須要靠DID應(yīng)用層中的可聲明驗(yàn)證(VC)
可驗(yàn)證聲明結(jié)合數(shù)字簽名和零知識證明等密碼學(xué)技術(shù),可以使得聲明更加安全可信,并進(jìn)一步保障用戶隱私不被侵犯
?
用戶對ID身份的控制權(quán)
在DID系統(tǒng)中,用戶對自己的身份擁有絕對的控制權(quán),用戶根據(jù)實(shí)際需要自主選擇使用哪些個(gè)人身份信息來進(jìn)行身份驗(yàn)證,并將身份信息的哈希值存儲(chǔ)在區(qū)塊鏈上,供其他人驗(yàn)證。
?
總結(jié)
DID 技術(shù)實(shí)現(xiàn)的去中心化身份:首先,你將不只有一個(gè) DID,而是依據(jù)身份場合需要的不同擁有無數(shù)不同的 DID,每一個(gè) DID 都給你一個(gè)單獨(dú)的終生加密的私密渠道與其他個(gè)人、組織或事物交互溝通,因此更好的選擇你的身份來交流,更好的保護(hù)你的隱私;DID 將不僅用來證明的身份,而且可用來交換可驗(yàn)證的數(shù)字證書;每個(gè)DID直接登記在區(qū)塊鏈或分布式網(wǎng)絡(luò)上,無需向中心化注冊機(jī)構(gòu)申請。
?
與UUID的區(qū)別,或者說DID的優(yōu)勢:
DID與URN的格式一致
UUID強(qiáng)調(diào)的是信息實(shí)體的唯一性,DID標(biāo)識符也是唯一的,但DID更強(qiáng)調(diào)的是分布式管理和信息的可驗(yàn)證性
?
UUID的作用:應(yīng)用:
它能保證每個(gè)節(jié)點(diǎn)所生成的標(biāo)識都不會(huì)重復(fù),并且隨著WEB服務(wù)等整合技術(shù)的發(fā)展,UUID的優(yōu)勢將更加明顯。根據(jù)使用的特定機(jī)制,UUID不僅需要保證是彼此不相同的。UUID最少在3000+年內(nèi)不會(huì)重復(fù)。
?
URI,URL,URN:
URI是統(tǒng)一資源標(biāo)識符,進(jìn)一步分為定位符(URL)和名稱(URN):類似住址和人名(類比人名和地址是不能重復(fù)的)
?
用戶代理的具體步驟為:
a. Jane首先要求她的用戶代理幫她獲得VC;
b.用戶代理將Jane的物理文件連接到能夠驗(yàn)證其身份的issuer;
c.issuer檢查文件;
d.當(dāng)issuer覺得文件符合要求,就會(huì)為Jane生成一個(gè)VC,VC包含了與Jane之前提供的文件相關(guān)聯(lián)的身份信息;
e.issuer將VC發(fā)給Jane的用戶代理;
f. Jane獲得聲明并進(jìn)行查看,確保其正確反映自己的身份信息;
g.當(dāng)Jane對聲明確認(rèn)并認(rèn)可后,她指示她的用戶代理保存該VC,以便將來可以使用它;
h.用戶代理與Jane的憑證存儲(chǔ)庫進(jìn)行通信,指示它存儲(chǔ)新的聲明;
i.憑證存儲(chǔ)庫將憑證清單返還給用戶代理;
j.用戶代理將憑證清單展示給Jane。
DID開發(fā)者中心
介紹
使用場景:認(rèn)證+授權(quán),如網(wǎng)絡(luò)拍賣。
DID系統(tǒng)架構(gòu):

(1)Layer 1:區(qū)塊鏈層
分布式存儲(chǔ)中保存的是DID文檔(DID Document),文檔內(nèi)最關(guān)鍵的是DID與公鑰的對應(yīng)關(guān)系。
目前我們方案中區(qū)塊鏈支持Ethereum(以太坊)和Quorum(企業(yè)級區(qū)塊鏈平臺、聯(lián)盟鏈),分布式存儲(chǔ)支持IPFS。
?
(2)Layer 2:去中心化二層網(wǎng)絡(luò)
目前區(qū)塊鏈較低的TPS(系統(tǒng)吞吐量)無法滿足上層業(yè)務(wù)的需求,百度自研了L2層節(jié)點(diǎn)–Germ。Germ節(jié)點(diǎn)會(huì)把上層的DID相關(guān)的操作打包,并創(chuàng)建一個(gè) L1 鏈上交易并在交易中嵌入該操作批次的哈希。從而提高系統(tǒng)的整理處理性能。同時(shí),我們對上提供了統(tǒng)一的DID解析服務(wù)(DID Resolver),此服務(wù)同時(shí)也對接DIF社區(qū)的通用解析器。
?
(3)Layer 3:可信交換層
L3是可信交換層,是DID系統(tǒng)中各個(gè)生態(tài)參與方互相建立安全身份認(rèn)證與數(shù)據(jù)交換層。
DID Agent:用戶使用的DID客戶端。
Identity Hub:用戶安全存儲(chǔ)身份數(shù)據(jù)的組件。
百度發(fā)布了DID小程序,作為DID客戶端,能夠方便用戶便捷的管理自己的DID。
?
主要流程:
(0) 用戶使用DID小程序創(chuàng)建自己的DID
(1) 用戶在小程序內(nèi)獲取發(fā)證方列表
(2) 用戶向指定的發(fā)證方提交可驗(yàn)證聲明申請,并提供相關(guān)材料
(3) 發(fā)證方審核完材料后,給用戶頒發(fā)可驗(yàn)證聲明
(4) 用戶使用DID登入第三方應(yīng)用,并獲知應(yīng)用需要用戶提供某可驗(yàn)證聲明
(5) 用戶授權(quán)第三方應(yīng)用去Identity-Hub中去獲取可驗(yàn)證聲明
(6) 第三方應(yīng)用獲取已授權(quán)的可驗(yàn)證聲明
(7) 用戶登入第三方應(yīng)用成功

?
Identity Hub:用戶安全存儲(chǔ)身份數(shù)據(jù)的組件
實(shí)現(xiàn)滿足幾個(gè)要求:
①可以由用戶選擇部署于任何地方。
②用戶數(shù)據(jù)加密保存。
③不保存任何私鑰。
④用戶數(shù)據(jù)的訪問需要認(rèn)證。
⑤第三方經(jīng)用戶授權(quán)后可訪問用戶數(shù)據(jù)。
?
可驗(yàn)證聲明
可驗(yàn)證聲明(Verifiable Claim,簡稱Claim),是發(fā)證方使用自己的DID給用戶的DID的某些屬性做背書而簽發(fā)的描述性聲明,并附加自己的數(shù)字簽名,可以認(rèn)為是一種數(shù)字證書。
發(fā)證方的DID是做背書的,簽發(fā)出來的Claim,稱之為:Proof Claim。
如果發(fā)證方是用戶本身,即一個(gè) DID對自己簽Claim,稱之為:Profile Claim。
Proof Claim
{
????"@context": [
????????"https://www.w3.org/2018/credentials/v1"
????],
????"id": "xxxxx",
????"type": [
????????"ProofClaim"
????],
????"issuer": "did:ccp:7f8ca8982f6cc6e8ea087bd9457ab8024bd2",
????"issuanceDate": "2017-04-01T12:01:20Z",
????"expirationDate": "2017-04-01T12:01:20Z",
????"credentialSubject": {
????????"id": "did:ccp:97c30de767f084ce3080168ee293053ba33b235d71",
????????"shortDescription": "xxx",
????????"longDescription": "xxx",
????????"type": "xxx"
????},
????"revocation": {
????????"id": "https://example.com/v1/claim/revocations",
????????"type": "SimpleRevocationListV1"
????},
????"proof": [
????????{
????????????"creator": "did:ccp:7f8ca8982f6cc6e8ea087bd9457ab8024bd2/1",
????????????"type": "Secp256k1",
????????????"signatureValue": "eyJhbGciOiJSUzI1NiIsImI2NCI6ZmFsc2UsImNyaXQiOlsiYjY0Il19"
????????}
????]
}
id:用于在發(fā)證方內(nèi)唯一標(biāo)識此claim
type:所屬大類的類型:ProofClaim,ProfileClaim
issuer:簽發(fā)Claim 的發(fā)證方的 DID
proof:簽名相關(guān)內(nèi)容
revocation:定義了查詢claim吊銷列表的地址
?
credentialSubject 中的內(nèi)容定義了發(fā)證方聲明的內(nèi)容:
id:被簽發(fā)方的 DID
shortDescription:簡短的描述
longDescription:詳細(xì)的描述
type:claim 的類型
?
設(shè)計(jì) claim 支持如下類型:
RealNameAuthentication:實(shí)名認(rèn)證
FingerprintAuthentication:指紋認(rèn)證
EnterpriseAuthentication:企業(yè)認(rèn)證
BusinessAuthentication:商戶認(rèn)證
VIPAuthentication:大客戶認(rèn)證
?
?
?
?
?
7