Verifiable Credential

You might also like

Download as txt, pdf, or txt
Download as txt, pdf, or txt
You are on page 1of 3

# Verifiable credential

A claim is a **statement** about a subject. Claims are expressed using **subject-


property-value** relationships.

![](C:\Users\82621\Desktop\笔记\DID\VC1.png)

单个声明可以进行 merge 组成一个图结构信息

![VC2](C:\Users\82621\Desktop\笔记\DID\VC2.png)

VC 通常是一系列防篡改的声明(**claims**)和证明签发者的元数据(**metadata**、**proofs**)组成
的。

<img src="C:\Users\82621\Desktop\笔记\DID\VC3.png" style="zoom:80%;" />

<img src="C:\Users\82621\Desktop\笔记\DID\VC4.png" style="zoom:80%;" />

为了保护用户的隐私用户可以使用**verifiable presentation**,它是 verifiable credential 的子


集。**VP 通常是对 credential 的进一步封装,在 credential 或者部分 credential 聚合的基础上再加上
presentation 的元数据(metadata)和证明(proofs)**。

<img src="C:\Users\82621\Desktop\笔记\DID\VC6.png" style="zoom:80%;" />

<img src="C:\Users\82621\Desktop\笔记\DID\VC5.png" style="zoom:80%;" />

# Selective disclosure

## 默克尔证明

<img src="C:\Users\82621\Desktop\笔记\DID\无序默克尔树.png" style="zoom:80%;" />

**无序默克尔树**通过将初始数据加 salt 再进行哈希的方法构建一个默克尔树。

选择性披露步骤:

1. 将所有属性作为叶子节点的初始数据,生成一个无序默克尔树;
2. 在**VC**中给出随机种子**seed**、默克尔根**merkleRoot**、对默克尔根的签名**rootSign**;
3. 生成**VP**时给出需要验证数据在默克尔树中的索引**index**、该数据的**salt**、默克尔根
**merkleRoot**、对默克尔根的签名**rootSign**、默克尔验证路径**merkleSibling**。

验证者可以使用 VP 中给出的数据首先对默克尔根的有效性进行验证,然后根据默克尔验证路径验证所需属性确实
处于该默克尔根中,从而实现在不暴露具体属性值的情况下验证属性的正确性。

用户属性的零知识证明方法之一:**基于范围数据构建 + 默克尔树验证**

对于可以划分范围的数据,例如年龄,设定采样粒度(年、月、天)后对年龄构建一个范围数组。于是对于用户
的年龄可以用一组断言来表示:

[<1900 未出生, 1900 未出生,1901 未出生,1902 未出生,…1984 未出生,1985 已出生,1986 已出生,…,2019


已出生,2020 已出生,>2020 已出生]

将该断言组中每个断言看作一个初始数据构建一个无序默克尔树:
<img src="C:\Users\82621\Desktop\笔记\DID\断言默克尔树.png" style="zoom:80%;" />

这样**Issuer**在生成**VC**就可以对该默克尔树根进行签名认证,验证者在验证用户的年龄满足某一条件,
例如已经年满 18 周岁,通过验证某一个断言存在于默克尔根哈希中的方式代替了验证用户具体的年龄或出生日期,
从而达到零知识证明的目的。

### *《Blockchain-based Verifiable Credential Sharing with Selective Disclosure》


(2020TrustCom)*

设计了一种适用于一般凭证共享情况下的灵活选择披露方法,使用**redactable signature(可修订签名)*
*。

选择性披露方法分类:**atomic credentials**、**hashed values**、**selective disclosure


signature**(

[]: https://www.w3.org/TR/vc-imp-guide/#selective-disclosure)

**atomic credentials**:创建多个凭证,每个凭证只包含用户的一个属性,是最简单的方法。缺点就是需
要创建管理验证大量的签名,增加了通信代价。

**hashed values**:一个凭证中包含多个属性,但每个属性的原始数据与不同的值进行哈希后存储在凭证中。

**selective disclosure signature**:某些签名方案本身支持有选择地披露。、

本质上就是一种默克尔证明,将需要暴露的属性暴露,不需要暴露的属性进行哈希后提供给验证者,验证者通过
生成默克尔根的哈希进行比对判断凭证的有效性。

<img src="C:\Users\82621\Desktop\笔记\DID\图片\签名过程.png" style="zoom:80%;" />

以上都是站在凭证**holder**的角度进行考虑,论文还提出**issuer**可以在凭证的 header 中给出


**rdt**(**redactable attributes**)来限制用户可以进行控制的属性,从而保证一些必要属性必然暴
露出来。

## 基于 BLS 签名方案的可选择披露方案

### 《A Verifiable Credentials System with Privacy-Preserving Based on Blockchain》


(Journal of Information Security2022,Zhiji Li)

## Blind Signature——>保护凭证与用户身份之间没有关联

### 盲签名的性质:

1. 签名者对其签名的消息是不可见的(这就是“盲”的含义),即**签名者不知道他所签名消息的具体内容**。
2. 签名消息不可追踪,即当签名消息被公布后,**签名者无法知道这是他何时/哪次的签署的**。
3. 包含一般签名的性质:**不可伪造性**、**不可抵赖性**。

![](C:\Users\82621\Desktop\笔记\DID\图片\盲签名.png)

### *《Nym Credentials: Privacy-Preserving Decentralized Identity with


Blockchains》(2020 Crypto Valley Conference on Blockchain Technology)*

You might also like