当前位置: 首页 > news >正文

DID、DID文档、VC、VP分别是什么 有什么关系

DID(去中心化身份)

  • 定义:DID 是一种去中心化的唯一标识符,用于表示个体、组织或设备的身份。DID 不依赖于中央管理机构,而是由去中心化网络(如区块链)生成和管理。

  • 用途:DID 允许用户自主控制自己的身份,进行安全的身份验证和信息交换。

DID 文档

  • 定义:DID 文档是与某个特定 DID 关联的结构化数据,包含与该身份相关的所有信息。DID 文档通常以 JSON-LD 格式表示,并存储在区块链或去中心化存储系统中。

  • 内容:DID 文档通常包括以下内容:

    • 公钥:用于加密和身份验证的公钥,允许其他人验证身份持有者的签名。
    • 服务端点:提供与身份持有者进行通信的方式的服务信息(如 DID 的连接信息)。
    • 声明:关于身份的其他信息,例如身份属性或角色。
    • 创建和更新时间戳:文档的创建和最后更新时间。
  • 用途:DID 文档提供了与 DID 关联的元数据和证明信息。它允许其他方验证某个 DID 所表示的身份的真实性和相关信息。例如,当用户尝试使用其 DID 进行身份验证时,其他方可以查询其 DID 文档以获取公钥并验证签名。

关系

  • DID 与 DID 文档的关系
    • DID 是标识符:DID 本身是一个唯一的身份标识符。
    • DID 文档是元数据:DID 文档是与该 DID 相关的所有信息和数据的集合。它是对 DID 的补充,提供了详细的信息,使得去中心化身份管理得以实现。

总结

  • DID 提供了去中心化身份的唯一标识。
  • DID 文档 是与该 DID 相关的结构化信息,包含公钥、服务端点等元数据,用于支持身份验证和信息交换。

VC(验证凭证)

  • 定义:VC 是由可信颁发机构签发的数字证书,包含有关持有者的声明和信息。它通常用于证明某个声明的真实性,例如个人的学历、职业资格等。

  • 特征

    • 由可信颁发机构签发并带有数字签名。
    • 包含持有者的身份信息和相关声明。
    • 可以被存储在用户的数字钱包中。

VP(验证声明)

  • 定义:VP 是一个动态的、基于 VC 的声明,用于证明某个具体事实而不透露整个凭证的信息。VP 允许持有者在需要时以简化的形式验证其凭证中的某些信息。

  • 特征

    • 通常不包含所有 VC 的详细信息,而是强调某些特定的声明。
    • 使用户能够在不暴露完整凭证的情况下进行验证。

关系

  • VC 是 VP 的基础:VP 是根据 VC 创建的,VP 的内容和真实性依赖于所关联的 VC。换句话说,VP 是从 VC 中提取和简化的验证信息。

举例

假设一个大学颁发了一份验证凭证给某个学生,表明他已经完成了计算机科学学位。

  • VC 示例

    • 内容:包含学生的姓名、学位、颁发日期、学校名称和数字签名。
    • 用途:如果学生想要证明他已经获得了学位,他可以分享这份 VC。
  • VP 示例

    • 内容:声明“学生 A 已获得计算机科学学位”,而不披露学生的出生日期、学号或其他个人信息。
    • 用途:学生 A 想申请一份工作,雇主只需要知道他是否拥有计算机科学学位,而不需要其他详细信息。学生 A 可以使用 VP 来证明这一点。

总结

  • VC 提供完整的、可信的身份或属性声明,包含详细信息。
  • VP 则是从 VC 提取的、针对特定需求的简化声明,用于验证而不暴露过多信息。

VC(验证凭证)和 VP(验证声明)的生成通常是依赖于 DID(去中心化身份)的。以下是它们之间的关系和依赖性:

VC(验证凭证)

  • 生成依赖:VC 的生成通常需要一个有效的 DID。颁发机构(例如学校或政府)在签发 VC 时,通常会将持有者的 DID 作为凭证的一部分。DID 提供了持有者的唯一身份标识,确保 VC 与特定个体或实体相关联。

  • 示例:当一所大学颁发一份学位证书时,它会使用学生的 DID 来生成 VC,这样可以确保凭证的持有者身份是唯一且可信的。

VP(验证声明)

  • 生成依赖:VP 的生成也依赖于 VC。VP 是对一个或多个 VC 的动态验证,它引用了 VC 中的特定信息。因此,在生成 VP 时,必须首先存在与其相关的 VC。

  • 示例:假设学生想要证明自己拥有计算机科学学位。他可以基于大学颁发的 VC 创建 VP,表明“学生 A 已获得计算机科学学位”。VP 引用了 VC 中的声明和持有者的 DID。

总结

  • DID 是基础:VC 和 VP 的生成过程都依赖于 DID。DID 提供了去中心化身份体系的基础,使得 VC 和 VP 的颁发和验证变得可靠且安全。

  • 工作流

    1. 生成 DID:个体或实体创建一个 DID。
    2. 颁发 VC:可信颁发机构使用 DID 创建并签发 VC。
    3. 创建 VP:持有者基于 VC 创建 VP,以便在需要时验证特定声明。

相关文章:

DID、DID文档、VC、VP分别是什么 有什么关系

DID(去中心化身份) 定义:DID 是一种去中心化的唯一标识符,用于表示个体、组织或设备的身份。DID 不依赖于中央管理机构,而是由去中心化网络(如区块链)生成和管理。 用途:DID 允许用…...

网络安全应急响应

前言\n在网络安全领域,有一句广为人知的话:“没有绝对的安全”。这意味着任何系统都有可能被攻破。安全攻击的发生并不可怕,可怕的是从头到尾都毫无察觉。当系统遭遇攻击时,企业的安全人员需要立即进行应急响应,以将影…...

Qt数据和视图分离——中MCV和MVVM

智能指针 一、背景知识二、命令式编程 vs 声明式编程2.1 命令式编程(Imperative Programming)2.2 声明式编程(Declarative Programming) 三、 MVC(Model-View-Controller)3.1 模型(Model)3.2 视图&#xff…...

重定义变量类型:如#define FLOAT float和typedef float FLOAT的区别

在 C 或 C 中, #define 和 typedef 都可以用来为类型或值创建别名,但它们之间存在一些关键的区别: 预处理指令 ( #define ): #define 是预处理器指令,用于定义宏。 当编译器处理源代码时,预处理器会先运行&#…...

Qt 使用阿里矢量图标库

前言 阿里矢量图标库非常好用,里面有各种丰富的图标,完全免费,还支持自定义图标,还可以将图标打包到一个项目中,使用起来非常方便。 第一步: 打开阿里矢量图标库 第二步: 搜索图标&#x…...

仓颉语言运行时轻量化实践

杨勇勇 华为语言虚拟机实验室架构师,目前负责仓颉语言静态后端的开发工作 仓颉语言运行时轻量化实践 仓颉Native后端(CJNative)是仓颉语言的高性能、轻量化实现。这里的“轻量化”意指仓颉程序运行过程中占用系统资源(内存、CPU等…...

深入理解Python中的subprocess模块

目录 subprocess模块简介常用函数执行外部命令管道通信子进程管理错误处理实际应用示例最佳实践 subprocess模块简介 subprocess模块是Python标准库的一部分,提供了一个跨平台的方法来生成新进程、连接其输入/输出/错误管道,并获取其返回码。该模块旨…...

从零开始搭建 EMQX 集群压测框架

从零开始搭建 EMQX 集群压测框架 架构 在设计以EMQX为中心的MQTT消息队列集群压力测试框架时,我们采用微服务架构模式。EMQX作为消息队列的核心,负责处理MQTT协议的消息发布和订阅。Nginx作为EMQX的反向代理,负责负载均衡和SSL/TLS终端。MQT…...

ArkUI基本介绍

ArkUI:提供HarmonyOS应用UI开发框架,几件开发、精致体验、跨设备/跨平台。 ArkUI(方舟UI框架)为应用的UI开发提供了完整的基础设施,包括简洁的UI语法、丰富的UI功能(组件、布局、动画以及交互事件&#xff…...

vue2+OpenLayers 天地图上打点并且显示相关的信息(2)

上次是在地图上打点 这次鼠标移动在图标上面显示相关的信息 首先有两个事件 鼠标移入 和 鼠标移出事件 pointermove pointerout 鼠标放上去之前 放上去后 代码如下 <template><div class"container"><div id"vue-openlayers" class&quo…...

c++继承(二)

一、友元函数的继承 友元函数不能被继承&#xff0c;就像爸爸的朋友不是你的朋友&#xff0c;如果要有友元函数&#xff0c;在子类重新定义一个。 二、静态成员的继承 静态成员的继承仍然是那个成员&#xff0c;普通成员的继承是不同的。 父类的静态成员属于当前类&#xf…...

低代码开发的崛起:机遇与挑战

近年来&#xff0c;“低代码”开发平台的迅速崛起&#xff0c;已经成为IT行业中不可忽视的趋势。这些平台承诺让非专业人士也能快速构建应用程序&#xff0c;通过减少代码编写的需求&#xff0c;大幅提高开发效率。对于许多企业而言&#xff0c;低代码开发工具成为了一个加速数…...

Json-JacksonUtils工具类

为了创建一个通用的 Jackson 工具类,我们可以定义一个名为 JacksonUtils 的工具类,该类将提 供多种方法来支持不同类型的 JSON 转换需求。下面是一个示例实现,包括基本的 JSON 到 Java 对象的转换、Java 对象到 JSON 的转换、以及更复杂的类型如 CommonResult 的转换。 C…...

svn客户端装完后没有svn.exe

如果SVN客户端&#xff08;如TortoiseSVN&#xff09;安装完成后&#xff0c;在预期的安装目录&#xff08;通常是bin目录&#xff09;中没有找到svn.exe文件&#xff0c;这通常是因为在安装过程中没有选择安装命令行客户端工具&#xff08;Command Line Client Tools&#xff…...

TinyWebserver的复现与改进(4):主线程的具体实现

GitHub - yzfzzz/MyWebServer: Linux高并发服务器项目&#xff0c;参考了TinyWebServer&#xff0c;将在此基础上进行性能改进与功能增加。为方便读者学习&#xff0c;附带详细注释和博客&#xff01; TinyWebserver的复现与改进&#xff08;1&#xff09;&#xff1a;服务器环…...

DaemonSet 不能帮助我们做什么事情?

DaemonSet 不能帮助我们做什么事情&#xff1f; A. 保证集群内每一个(或者一些)节点都运行一组相同的Pod B. 跟踪集群节点状态&#xff0c;保证新加入的节点自动创建对应的Pod C. 跟踪集群节点状态&#xff0c;保证移除的节点删除对应的Pod D. 能够设置Pod重试次数&#xff0c;…...

开源模型应用落地-LangChain高阶-记忆组件-RedisChatMessageHistory正确使用(八)

一、前言 LangChain 的记忆组件发挥着至关重要的作用,其旨在协助大语言模型(LLM)有效地留存历史对话信息。通过这一功能,使得大语言模型在对话过程中能够更出色地维持上下文的连贯性和一致性,进而能够像人类的记忆运作方式那样,进行更为自然、流畅且智能化的交互。 它仿佛…...

解决Openwrt 串口默认是没有密码的方法

将串口登录加入密码方法如下&#xff1a; 步骤一&#xff1a;配置busybox的登录&#xff0c;可以在.config文件中添加如下 CONFIG_BUSYBOX_CONFIG_LOGINy 添加后&#xff0c;需要重新编译busybox。 步骤二&#xff1a;修改target/linux/ramips/base-files/etc/inittab文件 将…...

【vue讲解:v-model 之 lazy、number、trim、与后端交互、小电影案例】

2 v-model 之 lazy、number、trim lazy&#xff1a;等待input框的数据绑定时区焦点之后再变化 number&#xff1a;数字开头&#xff0c;只保留数字&#xff0c;后面的字母不保留&#xff1b;字母开头&#xff0c;都保留 trim&#xff1a;去除首位的空格<!DOCTYPE html> …...

ECCV 2024 | 南洋理工三维数字人生成新范式:结构扩散模型

该论文作者均来自于新加坡南洋理工大学 S-Lab 团队&#xff0c;包括博士后胡涛&#xff0c;博士生洪方舟&#xff0c;以及计算与数据学院刘子纬教授&#xff08;《麻省理工科技评论》亚太地区 35 岁以下创新者&#xff09;。S-Lab 近年来在顶级会议如 CVPR, ICCV, ECCV, NeurIP…...

后进先出(LIFO)详解

LIFO 是 Last In, First Out 的缩写&#xff0c;中文译为后进先出。这是一种数据结构的工作原则&#xff0c;类似于一摞盘子或一叠书本&#xff1a; 最后放进去的元素最先出来 -想象往筒状容器里放盘子&#xff1a; &#xff08;1&#xff09;你放进的最后一个盘子&#xff08…...

Appium+python自动化(十六)- ADB命令

简介 Android 调试桥(adb)是多种用途的工具&#xff0c;该工具可以帮助你你管理设备或模拟器 的状态。 adb ( Android Debug Bridge)是一个通用命令行工具&#xff0c;其允许您与模拟器实例或连接的 Android 设备进行通信。它可为各种设备操作提供便利&#xff0c;如安装和调试…...

.Net框架,除了EF还有很多很多......

文章目录 1. 引言2. Dapper2.1 概述与设计原理2.2 核心功能与代码示例基本查询多映射查询存储过程调用 2.3 性能优化原理2.4 适用场景 3. NHibernate3.1 概述与架构设计3.2 映射配置示例Fluent映射XML映射 3.3 查询示例HQL查询Criteria APILINQ提供程序 3.4 高级特性3.5 适用场…...

Redis相关知识总结(缓存雪崩,缓存穿透,缓存击穿,Redis实现分布式锁,如何保持数据库和缓存一致)

文章目录 1.什么是Redis&#xff1f;2.为什么要使用redis作为mysql的缓存&#xff1f;3.什么是缓存雪崩、缓存穿透、缓存击穿&#xff1f;3.1缓存雪崩3.1.1 大量缓存同时过期3.1.2 Redis宕机 3.2 缓存击穿3.3 缓存穿透3.4 总结 4. 数据库和缓存如何保持一致性5. Redis实现分布式…...

STM32+rt-thread判断是否联网

一、根据NETDEV_FLAG_INTERNET_UP位判断 static bool is_conncected(void) {struct netdev *dev RT_NULL;dev netdev_get_first_by_flags(NETDEV_FLAG_INTERNET_UP);if (dev RT_NULL){printf("wait netdev internet up...");return false;}else{printf("loc…...

可靠性+灵活性:电力载波技术在楼宇自控中的核心价值

可靠性灵活性&#xff1a;电力载波技术在楼宇自控中的核心价值 在智能楼宇的自动化控制中&#xff0c;电力载波技术&#xff08;PLC&#xff09;凭借其独特的优势&#xff0c;正成为构建高效、稳定、灵活系统的核心解决方案。它利用现有电力线路传输数据&#xff0c;无需额外布…...

【JVM】- 内存结构

引言 JVM&#xff1a;Java Virtual Machine 定义&#xff1a;Java虚拟机&#xff0c;Java二进制字节码的运行环境好处&#xff1a; 一次编写&#xff0c;到处运行自动内存管理&#xff0c;垃圾回收的功能数组下标越界检查&#xff08;会抛异常&#xff0c;不会覆盖到其他代码…...

【Redis技术进阶之路】「原理分析系列开篇」分析客户端和服务端网络诵信交互实现(服务端执行命令请求的过程 - 初始化服务器)

服务端执行命令请求的过程 【专栏简介】【技术大纲】【专栏目标】【目标人群】1. Redis爱好者与社区成员2. 后端开发和系统架构师3. 计算机专业的本科生及研究生 初始化服务器1. 初始化服务器状态结构初始化RedisServer变量 2. 加载相关系统配置和用户配置参数定制化配置参数案…...

【SQL学习笔记1】增删改查+多表连接全解析(内附SQL免费在线练习工具)

可以使用Sqliteviz这个网站免费编写sql语句&#xff0c;它能够让用户直接在浏览器内练习SQL的语法&#xff0c;不需要安装任何软件。 链接如下&#xff1a; sqliteviz 注意&#xff1a; 在转写SQL语法时&#xff0c;关键字之间有一个特定的顺序&#xff0c;这个顺序会影响到…...

工业自动化时代的精准装配革新:迁移科技3D视觉系统如何重塑机器人定位装配

AI3D视觉的工业赋能者 迁移科技成立于2017年&#xff0c;作为行业领先的3D工业相机及视觉系统供应商&#xff0c;累计完成数亿元融资。其核心技术覆盖硬件设计、算法优化及软件集成&#xff0c;通过稳定、易用、高回报的AI3D视觉系统&#xff0c;为汽车、新能源、金属制造等行…...