跳到主要內容

輕鬆理解去中心化身分

Riley Chu, Data Engineer of ArcBlock
DeveloperDIDTutorials

去中心化身分簡介

作者:ArcBlock 資料工程師 Riley Chu

「去中心化身分」是與區塊鏈相關、最令人感到神祕的概念之一,但它其實不應該如此難懂。DID 讓使用者能夠掌控自己的資料,並輕鬆管理線上與數位互動,因此能為使用者帶來顯著影響。即使 Microsoft 最近發表了備受矚目、建構於區塊鏈上的 DID 解決方案,大多數人對這個新名詞及其背後的意義仍然感到困惑。

簡而言之,DID 是根據一組憑證計算出的唯一身分位址。DID 的擁有者可以使用此 DID 執行各種操作,包括身分驗證、交易等。

產生 DID 的過程與準備一道料理非常相似。我們需要一組廚具、一些食材,以及祕密食譜。這些都已預先建置於 Forge SDK 中。

必要的「廚具」:簽章器、雜湊器與角色類型

就像烹飪時會使用鍋具一樣,產生 DID 的第一步,是選擇正確的一套廚具。對 DID 而言,你需要以下類型:Signer、Hasher 與 Role。

Signer 是簽章系統,指用來計算私鑰與公鑰的演算法。目前 Forge SDK 支援兩種簽章系統:Secp256k1,以及作為預設選項的 Ed25519。

Hasher 是雜湊函數,指用來計算資料雜湊值的演算法。雜湊函數就像黑盒子,能將任意長度的資料轉換為固定大小。對於相同的輸入,不同類型的 Hasher 會產生不同的輸出。除非另有指定,Forge SDK 使用 SHA3 256 作為雜湊函數。

選好密碼學演算法之後,最後要挑選的廚具是 DID 角色類型。它會指定 DID 的角色,例如應用程式、個人或裝置等。以下是我們目前支援的角色類型。

食材:私鑰與公鑰

現在你應該已經了解我們使用的廚具。接著來看看產生 DID 需要哪些食材。一般而言,DID 是根據公鑰計算而成;但由於公鑰是從私鑰計算出來的,因此即使只提供私鑰,也能計算出 DID。這代表什麼呢?

私鑰是一組只應由你本人保管的資料。任何取得你私鑰的人,都能重新產生你的錢包並取得完整存取權,包括轉帳與核准交易。因此,你必須非常謹慎地保管私鑰。

公鑰是一組根據私鑰計算出的資料,通常供外部單位或一般大眾用來驗證你的簽章。然而,在沒有私鑰的情況下,單憑公鑰並不能存取你的任何私人資訊。

食譜

現在你已熟悉建立 DID 所需的基本廚具與食材。接著讓我們看看食譜,了解如何將上述所有元素組合在一起。

此時,你應該已選好 Hasher 類型、Signer 類型與角色類型,並準備好一組私鑰和公鑰。現在,就依照幾個關鍵步驟把它們組合起來吧。

步驟 1

使用 Hasher 取得公鑰的雜湊值,並將其命名為 hash1。

步驟 2

取出 hash1 的前 20 個位元組,先放在一旁,並將其命名為 hash2。

步驟 3

在 hash1 前方加入 DID 類型的位元組,並將其命名為 hash3。

步驟 4

對步驟 3 中擴充後的雜湊值再次進行雜湊計算,並將結果命名為 hash4。

步驟 5 將 hash4 的前 4 個位元組附加到 hash3 後方,並將其命名為 hash5。

步驟 6

使用 Bitcoin Base58 方法編碼 hash5。請注意,我們使用 IPFS 的 multibase,將其編碼為 base58_btc 類型。完成!

結論

現在你已經走過產生 DID 的完整流程。雖然後端機制本身具有技術性,但使用者只需透過簡單易用的引導流程,就能建立並取得自己獨一無二的 DID。例如,看看 ArcBlock 最近推出的 ABT Wallet:它的引導流程只需 4 個簡單步驟,就能建立一個完全去中心化的錢包。這個錢包運用本文所述的 DID 流程,以安全、可靠且完全去中心化的方式保護使用者資料。

本頁涉及

術語

  • Decentralized Identity

    一種做法:識別碼和關於它的聲明由主體自己持有、由驗證方自己核對,而不是存放在某一家服務商的帳號體系裡。DID 和可驗證憑證是讓它可行的兩塊。

  • DID

    DID 是一種數位身分標識。它幫助持有者和驗證方確認某個身分由誰控制,也讓一項聲明有明確的關聯對象。帳戶、登入和授權各自仍有自己的角色。

  • DID Document

    DID Document 描述與 DID 關聯的驗證方法和服務。W3C 定義共同的資料模型;解析一個 DID 仍需要支援對應的方法。應用自行判斷接受哪些金鑰、用途與簽發方。

  • did:abt

    ArcBlock 的 DID 方法,使用 did:abt: 命名空間識別帳戶、資產及其他物件。解析器需要支援這一方法。