第3部分 原理篇2去中心化數字身份標識符(DID)(4)

3.2.3.?DID解析

3.2.3.1.?DID解析參與方

第3部分 原理篇2去中心化數字身份標識符(DID)(4)


圖3-5 DID 解析過程

本聰老師:我們之前提到過,DID 解析過程是將 DID 轉換為對應的 DID 文檔。這樣做的目的是驗證 DID 所代表的主體的身份。那么解析過程會涉及哪些概念呢?我們看圖3-,DID標識符代表DID主體行使其數字身份的職責,DID標識符有時候被包含在DID URL中,它們可以被解析(DID URL成為解引用)為DID文檔。DID標識符和DID文檔都被記錄在可驗證數據注冊表中,供查詢檢索。DID文檔的更新等操作受DID控制器管理控制。

3.2.3.2.?DID解析過程

小天:解析發生在哪些場景呢?

本聰老師:我們設想這樣的場景,小天帶著自己的數字畢業證去某公司面試,畢業證上有小天的DID標識符、學校的DID標識符和學校的數字簽名。那么公司的人力部門首先要做的是確認學校和小天的身份,如何確認呢?從DID標識符解析為DID文檔,文檔中會包括各自的公鑰和授權等信息,后續可以使用公鑰對畢業證上面的數字簽名進行驗證。

小天:明白了。DID 解析過程有哪些呢?

本聰老師:這里還要提到的是DID URL的解析,術語稱為解引用(dereference),與DID標識符的解析過程基本相同,我們在說明過程中會提到不同之處。從原理看,DID解析經歷了4個階段:首先是從DID標識符解析出?DID 方法,這個不難吧?

小明:是截取DID標識符的前兩部分就可以,就像”did:example” 是一個 DID 方法。

本聰老師:對。對于DID URL第一步是分離DID標識符和URL路徑,獲得DID方法。解析的第二階段是獲取 DID 文檔,獲取的過程其實就是從可驗證數據注冊表這樣的可信基礎設施檢索的過程。具體來講就是DID 解析函數通過使用適用的 DID 方法的“讀取”操作將 DID 解析為 DID 文檔,這里有兩個函數resolve 函數和resolveRepresentation 函數。resolve 函數以map形式返回 DID 文檔。 resolveRepresentation 函數返回的是符合表示法格式的 DID 文檔的字節流。對于DID URL解引用,同樣存在dereference函數,以DID URL等參數為輸入,除了返回DID文檔之外,還會返回URL資源,這些資源同樣用于后續的驗證過程。

本聰老師:第三階段是驗證 DID 文檔,在獲取 DID 文檔之后,需要對 DID 文檔進行驗證,以確保其是有效的、未被篡改的并且是與 DID 相關聯的實體的正確信息。這可以通過使用 DID 文檔中的驗證方法來完成。

本聰老師:最后第四階段就是訪問 DID 文檔中的信息,一旦驗證了 DID 文檔,就可以使用其中的信息來驗證 DID 所代表的實體的身份或其他目的。

小天:嗯,大致能理解了。說下我的理解,看對不對?DID 解析過程是將 DID 轉換為與之相關聯的 DID 文檔,并驗證該文檔的有效性和正確性,以便訪問其中包含的相關信息。

本聰老師:總的來說是這樣的。

3.2.4.?DID Auth協議

本聰老師:我們在介紹DID文檔結構的時候,了解文檔中存在“認證”屬性。DIF通過DID Auth協議豐富了DID文檔中“authentication”屬性的能力,我們本節詳細在討論下這個協議。

小明:是,感覺“authentication”屬性理解不是很透徹。

3.2.4.1.?構建“authentication”屬性

本聰老師:好的,我們補充下這部分內容。DID Auth協議能做什么呢?簡單說,就是身份所有者在各種組件(如網絡瀏覽器、移動設備和其他代理)的幫助下向有驗證需求的各方(成為依賴方)證明他們控制著一個DID。

小明:對,這是DID最基本的使用場景。實際場景中是不是存在多種認證模式呢?

本聰老師:對,存在單向認證和雙向認證的需求。我們假設小天持有DIDa,小明持有DIDb,單向認證就是小天向小明證明對DIDa的控制,雙向認證就是,小天向小明證明對DIDa的控制,小明向小天證明對DIDb的控制。

小云:那么可認證的DID標識符與DID標識符一樣嗎?

本聰老師:一樣的,其實真實生成環境中,每個新生成的DID標識符應該都附帶有“authentication”屬性。下面我們梳理一下創建DID 的流程。

本聰老師:第一步,用戶(DID subject)使用符合DID方法規范的客戶端創建一個DID標識符,例如:did:ytm:653ca82******45d85a47。第二步,用戶生成對應的DID文檔,將文檔中的“id”屬性設置為剛生成的did:ytm:653ca82******45d85a47。為文檔添加“authentication”屬性,增加“type”參數值(根據DID方法規定選擇),補充其他參數,比如”publicKey”等等認證材料。DID方法平臺補充其他屬性及參數。下面例子中的代碼,包含“authentication”屬性,其中有兩個type和publicKey,屬于同一個owner,但具有不同的編碼方式。

  • 包含“authentication”屬性的例子

{

“@context”: “https://w3id.org/did/v1”,

“id”: “did:example:123456789abcdefghi”,

“authentication”: [{

“type”: “RsaSignatureAuthentication2018”,

“publicKey”: “did:example:123456789abcdefghi#keys-1”

}, {

“type”: “Ed25519SignatureAuthentication2018”,

“publicKey”: “did:example:123456789abcdefghi#keys-2”

}],

“publicKey”: [{

“id”: “did:example:123456789abcdefghi#keys-1”,

“type”: “RsaVerificationKey2018”,

“owner”: “did:example:123456789abcdefghi”,

“publicKeyPem”: “—–BEGIN PUBLIC KEY…END PUBLIC KEY—–\r\n”

}, {

“id”: “did:example:123456789abcdefghi#keys-2”,

“type”: “Ed25519VerificationKey2018”,

“owner”: “did:example:123456789abcdefghi”,

“publicKeyBase58”: “H3C2AVvLMv6gmMNam3uVAjZpfkcJCwDwnZn6z3wXmqPV”

}]

}

小明:嗯,接下來呢?

本聰老師:好。第三步就是把DID標識符和DID文檔存儲到可驗證數據注冊表,這里的可驗證數據注冊表可以是區塊鏈分布式賬本,也可以是其他中心化存儲系統。DID文檔的創建過程就完成了。

3.2.4.2.?認證的過程

小明:使用的過程是怎樣的?

本聰老師:使用的過程就是認證的過程。DID Auth協議認為這個過程是挑戰-響應的循環。通過這個循環,依賴方對身份所有者的DID進行認證。

小云:挑戰應該依賴方發起的吧?

本聰老師:對。身份所有者面臨挑戰的情形很多,比如點擊網站上的 “用DID Auth登錄 “按鈕、掃描二維碼或者是后臺調用API。依賴方發起挑戰時,一般不知道誰來響應,所以挑戰中不會包含DID,但會包含隨機數,用來區別后續的挑戰,并且防止重放攻擊。

小天:那么響應呢?

本聰老師:身份所有者會根據挑戰構建一個響應,響應中通常會包括一個加密數字簽名,證明自己對DID標識符的控制。接下來,響應發給依賴方。依賴方在收到響應后,會解析身份所有者的DID標識符為DID文檔,使用其中的公鑰驗證響應中包含的數字簽名。大家看下下面的圖3-6就應該明白了。我說一下基本環境,看大家能否說清楚流程。身份所有者是個人用戶,他使用web瀏覽器登陸一個網站,移動app中安裝有DID方法的客戶端(其中包含認證材料)。依賴方是網站,需要驗證用戶的登陸行為。

第3部分 原理篇2去中心化數字身份標識符(DID)(4)

圖3-6 挑戰過程

小明:我說說。用戶打開login頁面,其中內嵌一個登陸二維碼(這里包含挑戰的內容給你),他用手機app掃描二維碼,將自己的DID標識符和數字簽名構建成響應發給WEB服務器,web服務器將DID標識符提交給DID解析器,得到DID文檔,獲得其中的公鑰,驗證數字簽名。網站頁面會周期性輪WEB服務器,驗證無誤,表示認證過程通過,用戶瀏覽器可以登陸進入網站。

本聰老師:基本是這樣。圖3-只是一種情形,還有上面提到的用戶登陸移動app接受認證,甚至用戶本身就是一家機構,認證方式和流程略有不同,但原理基本是這樣。


本文內容摘自《對話去中心化數字身份》。作者:喬布施。首發平臺:https://ytm.app

歡迎轉載,請注明出處及作者。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/716579.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/716579.shtml
英文地址,請注明出處:http://en.pswp.cn/news/716579.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

端智能:面向手機計算環境的端云協同AI技術創新

近年來,隨著移動端設備軟硬件能力的進步,移動端的算力有了很大提升,同時面向移動端的機器學習框架和模型輕量化技術越來越成熟,端上的AI能力逐漸進入大眾視野,端智能在電商領域也開始逐步走向規模化應用。通過持續探索…

leetcode日記(35)跳躍游戲Ⅱ

想了一個晚上,第一個思路是用動態規劃,記錄走到每一個節點需要跳動的最小步數,大致方法是每走到一個節點就遍歷一下前面的全部節點,看看哪個節點可以一部跳到該節點,然后從中選取跳躍步數最小的節點,最后輸…

完美解決多個Echarts圖表自適應窗口、父容器寬高,并進行性能優化

場景 很多時候我們會在繪制echarts圖表時,使用以下方法監聽瀏覽器尺寸變化,讓圖表resize()完成自適應 window.addEventListener(resize, ()>{wordCloudChart.resize() })然后,這種自適應真的足夠周全嘛?有些時候,…

多元正態分布(Multivariate Normal Distribution)

多元正態分布(Multivariate Normal Distribution),也稱為多變量高斯分布,是單變量正態分布(高斯分布)在多維空間中的推廣。它是描述位于多維空間中的隨機向量的分布情況的一種概率分布。多元正態分布在統計…

基于springboot+vue的城鎮保障性住房管理系統(前后端分離)

博主主頁:貓頭鷹源碼 博主簡介:Java領域優質創作者、CSDN博客專家、阿里云專家博主、公司架構師、全網粉絲5萬、專注Java技術領域和畢業設計項目實戰,歡迎高校老師\講師\同行交流合作 ?主要內容:畢業設計(Javaweb項目|小程序|Pyt…

練習 3 Web [ACTF2020 新生賽]Upload

[ACTF2020 新生賽]Upload1 中間有上傳文件的地方,試一下一句話木馬 txt 不讓傳txt 另存為tlyjpg,木馬文件上傳成功 給出了存放目錄: Upload Success! Look here~ ./uplo4d/06a9d80f64fded1e542a95e6d530c70a.jpg 下一步嘗試改木馬文件后綴…

云片 3.1(日常實習)面經

1、什么時候開始學習的前端 2、平常通過哪些方式學習 3、遇到bug怎么解決的 4、元素水平居中 5、display有哪些屬性 6、align-items除了center還有哪些屬性 7、display:none和visibility:hidden區別 8、常用的計量單位有哪些 9、rem和em是相對什么的 10、vw和vh有了解…

從頭構建gpt2 基于Transformer

從頭構建gpt2 基于Transformer VX關注{曉理紫|小李子},獲取技術推送信息,如感興趣,請轉發給有需要的同學,謝謝支持!! 如果你感覺對你有所幫助,請關注我。 源碼獲取 VX關注曉理紫并回復“chatgpt…

CSS 自測題

盒模型的寬度計算 默認為標準盒模型 box-sizing:content-box; offsetWidth (內容寬度內邊距 邊框),無外邊距 答案 122px通過 box-sizing: border-box; 可切換為 IE盒模型 offsetWidth width 即 100px margin 縱向重疊 相鄰元素的 margin-top 和 margin-bottom 會發…

leetcode-簡單

448. 找到所有數組中消失的數字 硬解 時間O(n)&#xff0c;空間O(n) class Solution { public:vector<int> findDisappearedNumbers(vector<int>& nums) {vector<int> result;vector<int> tem(nums.size()1, 0);for(int i: nums){tem[i] 1;}for…

Benchmark學習筆記

小記一篇Benchmark的學習筆記 1.什么是benchmark 在維基百科中&#xff0c;是這樣子講的 “As computer architecture advanced, it became more difficult to compare the performance of various computer systems simply by looking at their specifications.Therefore, te…

python標識符、變量和常量

一、保留字與標識符 1.1保留字 保留字是指python中被賦予特定意義的單詞&#xff0c;在開發程序時&#xff0c;不可以把這些保留字作為變量、函數、類、模塊和其它對象的名稱來使用。 比如&#xff1a;and、as、def、if、import、class、finally、with等 查詢這些關鍵字的方…

【LeetCode】升級打怪之路 Day 11 加餐:單調隊列

今日題目&#xff1a; 239. 滑動窗口最大值 | LeetCode 今天學習了單調隊列這種特殊的數據結構&#xff0c;思路很新穎&#xff0c;值得學習。 Problem&#xff1a;單調隊列 【必會】 與單調棧類似&#xff0c;單調隊列也是一種特殊的數據結構&#xff0c;它相比與普通的 que…

【NR 定位】3GPP NR Positioning 5G定位標準解讀(一)

目錄 前言 1. 3GPP規劃下的5G技術演進 2. 5G NR定位技術的發展 2.1 Rel-16首次對基于5G的定位技術進行標準化 2.2 Rel-17進一步提升5G定位技術的性能 3. Rel-18 關于5G定位技術的新方向、新進展 3.1 Sidelink高精度定位功能 3.2 針對上述不同用例&#xff0c;3GPP考慮按…

自動駕駛---Motion Planning之Speed Boundary(上)

1 背景 在上篇博客《自動駕駛---Motion Planning之Path Boundary》中,筆者主要介紹了path boundary的一些內容,通過將道路中感興趣區域的動靜態障礙物投影到車道坐標系中,用于確定L或者S的邊界,并利用道路信息再確定Speed的邊界,最后結合粗糙的速度曲線和路徑曲線,即可使…

Go-知識簡短變量聲明

Go-知識簡短變量聲明 1. 簡短變量聲明符2. 簡短變量賦值可能會重新聲明3. 簡短變量賦值不能用于函數外部4. 簡短變量賦值作用域問題5. 總結 githuio地址&#xff1a;https://a18792721831.github.io/ 1. 簡短變量聲明符 在Go語言中&#xff0c;可以使用關鍵字var或直接使用簡短…

【STK】手把手教你利用STK進行仿真-STK軟件基礎02 STK系統的軟件界面01 STK的界面窗口組成

STK系統是Windows窗口類型的桌面應用軟件,功能非常強大。在一個桌面應用軟件中集成了仿真對象管理、仿真對象屬性參數、設置、空間場景二三維可視化、場景顯示控制欲操作、仿真結果報表定制與分析、對象數據管理、仿真過程控制、外部接口連接和系統集成編程等復雜的功能。 STK…

SpringBoot之Actuator的兩種監控模式

SpringBoot之Actuator的兩種監控模式 springboot提供了很多的檢測端點(Endpoint),但是默認值開啟了shutdown的Endpoint&#xff0c;其他默認都是關閉的,可根據需要自行開啟 文章目錄 SpringBoot之Actuator的兩種監控模式1. pom.xml2. 監控模式1. HTTP2. JMX 1. pom.xml <de…

力扣 第 125 場雙周賽 解題報告 | 珂學家 | 樹形DP + 組合數學

前言 整體評價 T4感覺有簡單的方法&#xff0c;無奈樹形DP一條路上走到黑了&#xff0c;這場還是有難度的。 T1. 超過閾值的最少操作數 I 思路: 模擬 class Solution {public int minOperations(int[] nums, int k) {return (int)Arrays.stream(nums).filter(x -> x <…

VM虛擬機無法傳輸文件(更新時間24/3/3)

出現這個問題一般是未安裝VMware Tools 以下為手動安裝教程及可能出現的問題的解決方法&#xff1a; 1. 準備安裝 2.用cmd手動啟動安裝 3. 安裝過程默認即可&#xff0c;直接一直下一步 4.安裝完成后會自動重啟虛擬機&#xff08;沒有的話手動重啟即可&#xff09; 5.重啟以后…