#去中心化身份 #did #prople #去中心化标识符 #w3c #用户 #vc

prople-did-core

一套基于Prople系统需求的DID数据和管理对象的核心库

25个版本 (4个重大更改)

0.5.4 2024年8月19日
0.5.3 2024年6月26日
0.4.14 2024年6月13日
0.4.11 2024年5月30日
0.1.1 2024年3月11日

#267 in 加密学


用于 prople-vessel-core

GPL-3.0-only

92KB
2K SLoC

prople/did/core

DID (去中心化身份)是一种新的标识符,专注于去中心化数字身份。一个DID可以指代

  • 事物
  • 组织
  • 数据
  • 模型
  • 等等...

根据W3C标准

本规范中定义的去中心化标识符(DIDs)是一种新的全局唯一标识符类型。它们旨在使个人和组织能够使用他们信任的系统生成自己的标识符。这些新标识符通过使用诸如数字签名之类的加密证明进行身份验证,使实体能够证明对其的控制。

来源: https://www.w3.org/TR/did-core/


去中心化身份是Prople的主要目标之一。在Prople中,不使用用户名、电子邮件或密码来识别用户。任何凭证都将由用户拥有控制

每个用户都将拥有自己的DID,格式如下

did:prople:<base58btc_encoded_data>

示例

did:prople:z2xrsP3ExuJQMydq7hPg2d9ti3BKNoRSXE2b634vcdh9LKKujaBWLsPHoRgKcRCJ1ck7N5YcoU8ZmPwVqp5Hfnayj

这个DID将由用户拥有,没有任何集中式实体可以访问。这个DID将引用其DID 文档

{
  "@context": [
    "https://www.w3.org/ns/did/v1",
    "https://w3id.org/security/suites/ed25519-2020/v1",
    "https://w3id.org/security/suites/x25519-2020/v1"
  ],
  "id": "did:prople:z27EjbBVuun5D3vL1JYWaGa2q5E6twLdVG7xqvJBKhsCyJmbuGgA822La1pDUiHbi8qz4CpBUss3R7Tpg2i4rXvdx",
  "authentication": [
    {
      "id": "did:prople:z27EjbBVuun5D3vL1JYWaGa2q5E6twLdVG7xqvJBKhsCyJmbuGgA822La1pDUiHbi8qz4CpBUss3R7Tpg2i4rXvdx#key-auth-verification",
      "controller": "did:prople:z27EjbBVuun5D3vL1JYWaGa2q5E6twLdVG7xqvJBKhsCyJmbuGgA822La1pDUiHbi8qz4CpBUss3R7Tpg2i4rXvdx",
      "type": "Ed25519VerificationKey2020",
      "publicKeyMultibase": "z24i8PX1tyYgmQbtfhxjxd5pz1HXu71zPexgZ8B69fBeX9foF286HUBZeZsYStZB9ze4chmaRk9GAWQQLkKKgMvqD"
    },
    {
      "id": "did:prople:z27EjbBVuun5D3vL1JYWaGa2q5E6twLdVG7xqvJBKhsCyJmbuGgA822La1pDUiHbi8qz4CpBUss3R7Tpg2i4rXvdx#key-auth-aggrement",
      "controller": "did:prople:z27EjbBVuun5D3vL1JYWaGa2q5E6twLdVG7xqvJBKhsCyJmbuGgA822La1pDUiHbi8qz4CpBUss3R7Tpg2i4rXvdx",
      "type": "X25519KeyAgreementKey2020",
      "publicKeyMultibase": "5378a8ae40b6d651fbb584870d9e1c0bc9de644cc416d827b31d93d701d2cd1b"
    }
  ],
  "assertionMethod": [
    {
      "id": "did:prople:z27EjbBVuun5D3vL1JYWaGa2q5E6twLdVG7xqvJBKhsCyJmbuGgA822La1pDUiHbi8qz4CpBUss3R7Tpg2i4rXvdx#key-assertion-verification",
      "controller": "did:prople:z27EjbBVuun5D3vL1JYWaGa2q5E6twLdVG7xqvJBKhsCyJmbuGgA822La1pDUiHbi8qz4CpBUss3R7Tpg2i4rXvdx",
      "type": "Ed25519VerificationKey2020",
      "publicKeyMultibase": "z25sf5SoAavJnpeNucvj4mxKBzYpXpM2SHd9SM14T49omXn8sh72Jyv5yq8MVxHWPY4uz1VQFBAMK445RGL6NvkrP"
    },
    {
      "id": "did:prople:z27EjbBVuun5D3vL1JYWaGa2q5E6twLdVG7xqvJBKhsCyJmbuGgA822La1pDUiHbi8qz4CpBUss3R7Tpg2i4rXvdx#key-assertion-aggrement",
      "controller": "did:prople:z27EjbBVuun5D3vL1JYWaGa2q5E6twLdVG7xqvJBKhsCyJmbuGgA822La1pDUiHbi8qz4CpBUss3R7Tpg2i4rXvdx",
      "type": "X25519KeyAgreementKey2020",
      "publicKeyMultibase": "513de55519a46dff69c76dd60a009975c999e02c0531ecca853f2e1a6724c848"
    }
  ]
}

DID中,用户将拥有自己的VC (可验证凭证)VP (可验证声明)。凭证将由发行者生成并发送给持证人

holder 本身将根据提供的 VC 生成 VP。一个 VP 可能包含多个 VC。用户可以将一个 VP 作为每个提供的 VC(或 VC 组)的 个人用户

verifier 将使用来自 holderVP,并应能够通过它的 证明 验证其数据结构/格式。该 证明 本身,生成并应能够使用加密技术(在 Prople 中的 EdDSA)进行验证。

Prople 用户将在其代理的存储中有自己的 DID,包括他们的 VCVP

安全VC 示例

{
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2"
  ],
  "id": "http://example.gov/credentials/3732",
  "type": ["VerifiableCredential", "ExampleDegreeCredential"],
  "issuer": "https://university.example",
  "validFrom": "2010-01-01T19:23:24Z",
  "credentialSubject": {
    "id": "did:example:ebfeb1f712ebc6f1c276e12ec21",
    "degree": {
      "type": "ExampleBachelorDegree",
      "name": "Bachelor of Science and Arts"
    }
  },
  "proof": {
    "type": "DataIntegrityProof",
    "cryptosuite": "eddsa-rdfc-2022",
    "created": "2021-11-13T18:19:39Z",
    "verificationMethod": "https://university.example/issuers/14#key-1",
    "proofPurpose": "assertionMethod",
    "proofValue": "z58DAdFfa9SkqZMVPxAQp...jQCrfFPP2oumHKtz"
  }
}

不安全(无证明)VP 示例

{
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2"
  ],
  "type": "VerifiablePresentation", 
  "verifiableCredential": [{
    "@context": [
      "https://www.w3.org/ns/credentials/v2",
      "https://www.w3.org/ns/credentials/examples/v2"
    ],
    "id": "http://university.example/credentials/1872",
    "type": ["VerifiableCredential", "ExampleAlumniCredential"],
    "issuer": "https://university.example/issuers/565049",
    "validFrom": "2010-01-01T19:23:24Z",
    "credentialSubject": {
      "id": "did:example:ebfeb1f712ebc6f1c276e12ec21",
      "alumniOf": {
        "id": "did:example:c276e12ec21ebfeb1f712ebc6f1",
        "name": "Example University"
      }
    }
  }]
}

安装

[dependencies]
prople-did-core = {version = "0.5.4"}

依赖项

~20–33MB
~627K SLoC