如何生成自己的去中心化身份DID
自從日前微軟宣布推出去中心化身份識別系統(tǒng),“去中心化身份”(DID)成為區(qū)塊鏈領(lǐng)域最火熱的概念之一。繼 “去中心化交易所”、“去中心化應(yīng)用”之后,“去中心化”的戰(zhàn)火終于蔓延到了身份識別系統(tǒng)上,但絕大多數(shù)人對于這個(gè)全新的概念依然是一頭霧水。
· DID 本質(zhì)是什么?
· DID 是由什么算出來的?
· 計(jì)算 DID 的過程是什么?
雖然 DID 有各種各樣的應(yīng)用場景,但 DID 本質(zhì)上其實(shí)是一個(gè)地址。DID 和傳統(tǒng)的比特幣、以太坊地址的相似之處在于:它們都是根據(jù)一個(gè)私鑰算出來的地址。不同私鑰能生成同一個(gè)地址的幾率在現(xiàn)實(shí)世界中接近于零。
而 DID 和傳統(tǒng)地址的區(qū)別在于,DID 的計(jì)算過程中加入了某些特定信息,包括這個(gè) DID 使用的加密算法類型、哈希算法類型等。這些算法類型作用于 DID 生成的不同步驟,如加密算法是規(guī)定用戶私鑰和公鑰是如何計(jì)算的,哈希算法是規(guī)定用戶信息被計(jì)算成哈希的時(shí)候使用什么算法(之后會(huì)有詳細(xì)解釋)。DID 的所有者可以使用此 DID 執(zhí)行各種操作,包括驗(yàn)證身份、授權(quán)交易等。可以說,DID 將在未來成為互聯(lián)網(wǎng)基礎(chǔ)設(shè)施,任何需要授權(quán)或驗(yàn)證的行為都可以通過 DID 完成?,F(xiàn)在一般的授權(quán)驗(yàn)證行為都是通過輸入密碼、提供有效證件,或通過第三方公證完成,而 DID 的普及將使得一切都可以在移動(dòng)端用私鑰簽名完成,這將讓人們的數(shù)字生活,甚至線下的衣食住行都將得到極大便利。
功能如此強(qiáng)大的 DID,技術(shù)工程實(shí)現(xiàn)卻并不復(fù)雜。
其實(shí),生成 DID 的過程,和下廚房烹飪一道菜的過程非常相似。需要準(zhǔn)備如下:
· 廚具:生成 DID 需要的外部工具
· 食材:DID 計(jì)算的基礎(chǔ)原材料
· 烹飪方法:如何搭配這些廚具和食材,具體需要執(zhí)行的步驟
接下來詳細(xì)解析如何通過六個(gè)步驟生成一個(gè) DID,讓 DID 不再神秘。
一套廚具:簽名算法、哈希算法、DID 類型
生成 DID 的第一步是選擇一套合適的廚具。這些信息會(huì)嵌入在生成的 DID 中,這樣第三方驗(yàn)證的時(shí)候,就知道應(yīng)該選用對應(yīng)的工具來驗(yàn)證。
簽名算法: 用于生成用戶的私鑰和公鑰的算法。目前 Forge SDK默認(rèn)支持兩個(gè)簽名系統(tǒng)選項(xiàng):secp256k1 和 ed25519。
哈希算法: 用于計(jì)算數(shù)據(jù)哈希的算法。哈希函數(shù)有點(diǎn)像黑盒子,它能將任意長度的數(shù)據(jù)轉(zhuǎn)換為固定長度的數(shù)據(jù)。對于相同的輸入,不同類型的 harsher 將具有不同的輸出。Forge SDK 的默認(rèn)哈希算法是 SHA3 256。
DID 類型: 選擇完簽名算法和哈希算法后,最后一個(gè)要選擇的是 DID 角色類型。這指定了 DID 的角色類型,告訴驗(yàn)證方這個(gè) DID 代表的是應(yīng)用程序、個(gè)人還是設(shè)備等。下面是我們當(dāng)前支持的角色類型。
這三樣?xùn)|西是我們生成 DID 時(shí)需要的廚具。優(yōu)秀的壽司師傅總是離不開一把好刀,因?yàn)閺N具會(huì)在對食材的每一次處理中留下痕跡;同理,我們選擇的廚具,也會(huì)在之后生成的 DID 中留下自己的影子。
食材:私鑰、公鑰
現(xiàn)在大家已經(jīng)準(zhǔn)備好必要的鍋碗瓢盆了,接下來讓我們看看如果要做一道 DID 大餐需要些什么原材料。
最核心的食材是私鑰。私鑰是一組需要仔細(xì)保管的數(shù)據(jù)。任何持有你密鑰的人都可以重新生成你的錢包,并用錢包做包括轉(zhuǎn)賬、批準(zhǔn)交易等各種事情,所以大家一定要小心保管好自己的密鑰信息。
公鑰是根據(jù)加密算法從私鑰計(jì)算出來的,通常由于第三方或公眾以驗(yàn)證簽名。公鑰是公開的,所以如果別人知道了你的公鑰,但不知道你的私鑰,不會(huì)對你的信息安全造成任何威脅。
一般來說,DID 的生成只需要公鑰。但是由于公鑰是從密鑰計(jì)算出來的,所以即使只給出密鑰,DID 也可以生成。也就是說,私鑰或公鑰任意提供一個(gè),就可以生成 DID 了。但出于安全考慮,我們一般建議大家提供公鑰,而保管好自己的私鑰信息。
作為 DID 的原材料,私鑰/公鑰直接決定了 DID 的內(nèi)容,就像壽司使用的魚,決定了這道壽司是鰻魚壽司,三文魚壽司還是八爪魚壽司。
烹飪方法
介紹完廚具和原材料之后,我們來看看應(yīng)該如何烹制這道 DID。
在我們介紹 DID 的烹飪方法前,請確定你已經(jīng)準(zhǔn)備好哈希算法、簽名算法、DID 類型,并擁有了一組密鑰和公鑰。接下來按照烹飪方法的步驟,就可以得到一個(gè) DID 了。
步驟 1
使用哈希算法為公鑰算一個(gè)哈希值 hash1。
步驟 2
取 hash1 的前 20 個(gè)字節(jié)作為 hash2,放置一旁待用。
步驟 3
在 hash2 前面添加 DID 角色類型字節(jié),得到 hash3。
步驟 4
使用哈希算法把 hash3 算出一個(gè)哈希值,得到 hash4
步驟 5
將 hash4 的前 4 個(gè)字節(jié)和 hash3 合并起來,生成 hash5。
步驟 6
使用比特幣 base58 方法對 hash5 進(jìn)行編碼,得到 DID。
恭喜你順利生成了一個(gè)自己的 DID!
總結(jié)
現(xiàn)在你已經(jīng)體驗(yàn)了 DID 生成的全過程,一共只需要六步,比曹植的七步詩還少一步。
雖然后端的技術(shù)支持比較復(fù)雜,但是用戶和開發(fā)者使用過程中完全感受不到。例如,在 ABT 錢包中,創(chuàng)建一個(gè)以 DID 為基礎(chǔ)的個(gè)人錢包僅需要四步;而對于開發(fā)者來說,整個(gè) DID 的生成過程就是自動(dòng)集成在 Forge SDK 里的。
DID 讓用戶可以無需額外的注冊流程,而直接使用 DID 中的信息,整個(gè)過程不需要第三方參與。Forge SDK 將所有用戶地址、資產(chǎn)地址的計(jì)算全部自動(dòng)優(yōu)化成了 DID,因此 Forge SDK 開發(fā)出來的應(yīng)用天然享有 DID 的優(yōu)勢,彼此交流將更將暢順。Forge SDK 把 DID 融入到去中心化應(yīng)用的核心邏輯中,推動(dòng) DID 成為互聯(lián)網(wǎng)基礎(chǔ)設(shè)施之一,各種應(yīng)用互聯(lián)互通。在 Forge SDK 和 DID 的共同作用下,區(qū)塊鏈未來已來。