边做边学:DID 协议和可验证凭证

DID(分散标识符)是实体的唯一标识符。

“zCloak Membership”事件的技术视图

0. 关键要点

  • DID(分散标识符)是实体的唯一标识符。
  • 每个 DID 都与数据存储(例如区块链)中的 DID 文档相匹配。DID 文档包含多个 DID-Key,每个密钥(AuthenticationKey、AgreementKey、AssertionKey、…)具有不同的功能。
  • Verifiable Credential(VC) 包含用户的详细信息。一个实体的身份是它的 DID 和 VC 的组合。
  • DID/VC 上下文中的三个主要方是:声明者、证明者和验证者。
  • DID-Keys 和 VC 文件应妥善保存和备份。丢失 DID/Credentials 文件将导致一个人的身份数据永久丢失。

一、什么是DID和VC

DID(去中心化标识符):

DID 可能代表一个实体——例如一个人、一个组织,甚至是一台机器。去中心化标识符 (DID) 是唯一标识每个用户的字符串。DID 可以包含多个不同的密钥,用于加密、签名、身份验证等目的。

DID 可以解析为存储在分散数据注册表(例如区块链)中的 DID 文档。本文档包含几个密钥:签名密钥(Authentication Key)、加密密钥(Agreement Key)和可选的 DID 服务端点链接。

DID 是将 DID 主题与 DID 文档相关联的URI,允许与该主题相关联的可信交互。每个 DID 文档都包含有关加密材料、验证方法或服务端点的信息,该文档提供了一组机制,使 DID 主体能够证明对 DID 控制权的所有权。

DID 生态系统基于公钥基础设施,只有私钥的所有者才拥有 DID 的完全授权。这类似于基于区块链的系统,其中用户控制他们的资产。这会导致系统在使用时出现以下问题:

  • 找回丢失的私钥非常困难;
  • 一旦你的私钥被盗,冒充等恶意行为可能会导致“你”行为不端。

总体而言,所有用户都有责任创建和管理其私钥/助记符的安全备份。

VC(可验证凭证):

在物理世界中,凭证包括:

  • 所有者:与识别凭证所有者相关的信息
  • Attester:与发证机构相关的信息(例如,市政府、国家机构或认证公司)
  • 凭据类型:与声明的数据结构相关的信息
  • 凭证内容:凭证中的数据,其中包含所有者的个人信息。

可验证凭证 (VC) 可以表示与物理凭证所表示的信息相同的信息。数字签名等技术的加入使可验证的凭证比物理凭证更防篡改且更值得信赖。

可验证凭证的持有者可以生成可验证的演示文稿,然后与验证者共享这些可验证的演示文稿,以证明他们拥有具有某些特征的可验证凭据。

下面列出了可验证凭证规范的三个关键角色:

  • 声明者:声明者是声明具有某些属性(即声明)并可以请求证明的实体。在常见的场景中,Claimer 的角色由最终用户扮演。
  • 证明者:证明者以肯定的方式响应证明请求,称为证明声明(即颁发可验证的凭证)。通常,证明者的角色由受信任的组织扮演。
  • 验证者:验证者是请求声明者提供具有某些属性的凭证的实体。验证者的角色通常由基于索赔者身份提供服务的第 3 方扮演。

2. 基于区块链的 DID 和 VC

身份验证和验证已成为全球面临的主要挑战之一。随着区块链技术和分布式账本的出现,一种新颖的、完全去中心化的、无需许可的方法已经建立起来,有利于自治和自治。

现在,让我们深入了解有关基于区块链的 DID 的更多细节。

2.1 深入了解 DID

DID 是实体的标识符。一个实体只能有一个 DID,每个 DID 都匹配一个存储在区块链上的 DID 文档。在区块链中,资产的所有者是区块链地址;在身份世界中,可验证凭证的所有者是一个 DID。

DID是一个简单的文本字符串,由三部分组成:1) didURI 方案标识符,2) DID 方法的标识符,以及 3) DID 方法特定的标识符。

图 1:分散标识符 (DID) 的简单示例

每个 DID 都可以解析为一个 DID 文档。DID 文档包含与 DID 相关的信息,例如加密验证 DID 控制器的方法。

目前,zCloak Credential Platform 中使用的 DID 协议(KILT 协议)包含两种DID- Key——Authentication KeyAgreement Key

图 2:每个 DID Profile 中包含的密钥(AuthenticationKey & AgreementKey)

认证密钥:

DID 身份验证是实体可以通过密码证明它们与 DID 相关联的机制。Authentication Key 用于所有 DID 管理操作,在创建声明期间添加数字签名等。

协议密钥:

AgreementKey是一种加密密钥,当实体想要生成加密材料以传输用于 DID 主体的机密信息时使用,例如为了与接收者建立端到端加密通信通道。

2.2 更多关于 VC

可验证凭据必须具有type属性。

凭证类型(简称 CTYPE)定义声明的结构。您可以将其视为您声明的数据模型。

例如,凭证平台中的“ zCloak Membership ”是唯一的Credential Type,它包含两个需要填写的数据字段——discord_user_idzkid_verification_code

图 3:zCloak 成员资格(凭据类型)凭据详细信息

此处显示的证明者 — ‘did:kilt:4obf6LAUCg9NsFmxarhQ2zVMipYJFC1SmvbK1LEWYffEMR6z’ 是接收声明并为声明者执行证明工作的实体。一旦证明者批准了声明,用户将立即获得经过证明的凭证。

3. 开始您的凭证平台之旅

3.1 成为会员并获得验证码

首先,您应该成为zCloak Discord的会员并在zkid-verify频道中获得验证码。单击此处加入 zCloak Discord。

/zkid-verify在命令行中输入,点击弹出的命令,通过 获取自己的验证码zkID_bot

图 4:加入 zCloakzkid-verify频道,并发送命令
图5:成为会员并获取验证码

现在,我们已经获得了验证码VOSzbHJvpd,我们可以开始我们的凭证平台之旅了。

3.2 创建索赔人帐户

在凭证平台中,存在三个角色 – ClaimerAttesterVerifier。在创建账户之前,我们先来了解一下它们分别扮演什么角色。

  • Claimer:想要创建声明并通过凭证平台获得经证明的凭证的实体。在此旅程中,索赔者是想要获得zCloak Membership Credential.
  • Attester:验证声明中的信息并执行证明工作(批准或拒绝)的实体。认证通过后,声明者将收到经过认证的凭证。
  • Verifier:与特定凭证共享的实体。在使用场景方面,当 Claimer 从 Attester 获得凭证时,Claimer 可以与任何他们信任的验证者共享该凭证。

现在,让我们成为 zCloak Credential Platform 上的声明人。单击此处创建索赔人帐户。

首次进入平台的用户需要通过助记词和特定密码生成账号。有必要记住,助记词和密码必须妥善保存。

图6:进入zCloak平台(claimer-end)
图 7:通过密码和助记词创建 Claimer Account
图8:账号创建成功,DID文件自动下载

成功创建帐户后,将自动下载 DID 文件。您应该妥善保存文件、助记词和密码,因为如果它们被泄露,帐户可能会面临风险。

3.3 创建 zCloak 成员资格声明

创建索赔是我们旅程中最重要的步骤之一。单击“创建索赔”按钮,然后填写您的个​​人信息(discord_idverification_code)。

填写完信息后,点击“提交”按钮。证明者将收到您的请求并对其进行证明工作。如果您的信息(discord_idverification_code)正确无误,您将在几分钟内收到“有效凭证”。

图 9:单击按钮创建“zCloak Membership”声明
图 10:填写您的个​​人信息并提交索赔
图 11:获取您经过认证的“zCloak 会员凭证”

3.4 与受信任的验证者共享您的证明凭证

现在,在获得您的证明凭证后,您可以与您信任的任何验证者共享它。然后,验证者可以检查您在他们自己的帐户中共享的信息。

图 12:声明者与所需验证者共享信息
图 13:Verifier 接收到 Claimer 共享的信息

4. 如何存储你的 DID 和 VC

4.1 存储 DID

您的帐户只能通过DID-Key 文件原始助记词恢复。因此,两者都应妥善保管。zCloak Credential Platform 将在帐户创建阶段自动下载您的 DID 文件。

当您想查看您的 DID 信息时,您可以前往DID Profile页面。并随时通过下载您的 DID 文件Export DID-Key

图 14:检查并导出 DID 密钥

注销后,您应该在“恢复帐户”页面中使用 DID-Key 文件或助记词来恢复您的帐户。

图 15:恢复帐户
图 16:通过 DID-Key 文件或助记词恢复账户

4.2 存储你的 VC

一旦您的凭证被证明,您可以随时下载它。可验证凭证是一个JSON文件,其中包含您的纯文本个人详细信息。因此,我们必须安全地存储它以避免信息泄露。

图 17:下载并存储您的可验证凭证(VC)

4.3 将您的 VC 导入 zCloak ID 钱包

下载zCloak ID 钱包。使用安全且您可以记住的密码对其进行初始化。此密码用于加密您的数据并授予 zCloak ID 钱包中所有操作(例如生成零知识证明)的权限。

然后我们可以导入我们获得的 Verifiable Credential 并检查凭证详细信息。

图 18:将可验证凭证导入 zCloak ID 钱包
图 19:使用 zCloak ID 钱包检查可验证凭证的详细信息

5.如何使用VC

5.1 以纯文本形式分享/呈现

zCloak Credential Platform 中 Claimer 和 Verifier 之间的“共享”功能是纯文本形式的。如果声明者选择共享所有凭证信息,则验证者可以访问它们。

5.2 选择性披露

与第一种情况不同,Claimer 可以选择一条或多条信息与受信任的验证者共享。数字化凭证的这一特性通过为个人提供对与各种机构和实体共享的信息的精细控制,使该平台更有针对性地保护隐私。

5.3 匿名表示(零知识证明)

ZKP 是一种加密数学,它使某人能够在不实际透露信息的情况下证明事情是真实的。zCloak 基于自我主权数据和自我证明计算的概念,使用 ZK-STARKs 虚拟机生成和验证用于通用计算的零知识证明。它可以帮助用户对其数据进行计算和分析,而无需将数据发送给第三方。

使用zCloak ID Wallet,用户可以通过零知识证明自己的身份信息满足一些限制。这样,验证者将无法访问声明者的个人信息,但也可以检查凭证中的内容是否符合他/她的要求。

英文原文链接:https://zcloaknetwork.medium.com/learn-by-doing-did-protocol-and-verifiable-credential-32b4640cabdc

所有文章项目介绍

Sei 筹集了 500 万美元,由 Multicoin Capital 牵头,用于构建针对 DeFi 优化的第一层区块链

2022-8-31 14:29:00

所有文章项目介绍

Juno 的加密银行业务

2022-9-1 17:17:00

搜索