caict-4iot-dev / bif-rfcs

11 stars 5 forks source link

星火链网可信数字证书验证规范 #20

Open Caict-GuoShiJie opened 1 year ago

Caict-GuoShiJie commented 1 year ago

星火链网可信数字证书验证规范

1. 序言

编号: 类型:标准 标题:星火链网可信数字证书验证规范 作者:金键,jin.jian@caict.ac.cn;谢家贵,xiejiagui@caict.ac.cn;李志平,lizhiping@caict.ac.cn;聂凡杰,niefanjie@caict.ac.cn 发布时间: 状态: 更新时间:2023-03-22 讨论地址: 依赖RFC:

2. 摘要

星火链网可信数字证书在向验证方进行出示时, 此时就需要验证方自行对证书进行验证, 以确认证书的可靠性. 本文旨在提供一个星火链网可信数字证书的验证规范, 用户可根据本规范自行实现对星火链网可信数字证书的验证。

3. 原理

星火链网可信数字证书是 jws 规范(参照JWS RFC文档)的一种实现. 因此只需对证书 jws 进行反解析, 获取证书的模板id, 有效期, 证书id, 颁发方信息, 到星火数字证书可信数据集BID解析查询相关数据进行校验, 并对 jws 进行验签即可。 校验项主要如下:

交互图如下: image

4. 规范

4.1证书校验

证书校验数据结构如下:

{
    "jwsHeader":"",
    "jwsSignature":"",
    "vcContent":"",
}

返回数据结构如下:

{
    "result": true
}

接口定义:

http请求方式:POST
https://{url}/vc/verify
{
  "jwsHeader":"eyJhbGciOiJTTTIifQ",
 "jwsSignature":"MDFjNzk3N2M5ZmRiNDE5M2Q1NmZhNzBkNGZlZDBhYWI0NWE0ODAzZWVlYTk0NzU4MGJmZjExOWQ0ZWNiNDIzYjg2YTAzYzZmOWQ3NDlhMmY3ZmNiOWEzMzgwOWE3M2MwZmQ3MTdjOWM5N2M5ZGU2MWZmY2FkNzM0ZmRiMDA3MDA",
  "vcContent":"{\"@context\":[\"https://www.w3.org/2018/credentials/v1\"],\"credentialSubject\":{\"businessScope\":{\"hash\":\"ac164515abebd3498b8e924d5e53b40b8c88f309c83c3fc5876c5c60926dd625\"},\"certBid\":{\"hash\":\"3ee74b4cc779f051e6db88d41a9a809158b8e0e40de149f1bb7b729f4bb40bf0\",\"salt\":\"5872438693681184\",\"value\":\"did:bid:ef28fCsZTFXfLtefHQwPkAxsPnXtVaq9F\"},\"companyName\":{\"hash\":\"fc9ccc0ad83c77c83e588e3a22f8058b2eda55d50bfae58c73fb2f7570daa618\",\"salt\":\"5297098312790891\",\"value\":\"营业执照\"},\"establishDate\":{\"hash\":\"7f5ea29c0b3107535e0df5241a36522ed5910720bb863b9e8ca5e131901d0791\"},\"id\":\"did:bid:efEXzqnM255FwNZSmDrZM5KfhhW2iZky\",\"legalPersonName\":{\"hash\":\"e350f9a48a98c27f981b583cd6dc8536102507b59a903f1669cf5ae625b99d01\"},\"qualifieNumber\":{\"hash\":\"b396ad3212c9cc719120034f1b1a534c8c5d2d7f101ef3b111c600a0ffd5503c\"},\"qualifieValidateEnd\":{\"hash\":\"ccd1e18a855b54e5ba743ff853b62414b9cc0f7c2a1fe5646b9f65e265a72981\"},\"qualifieValidateStart\":{\"hash\":\"bc2fca5a34fc588e199cab70a4b3b0d62ed1a844196165b525d79813a0f50551\"},\"registeredAddressDetail\":{\"hash\":\"64095f7fad3c76802fcd97debb38dccee377f4a5375339277b7254031ff0cd19\"}},\"id\":\"did:bid:ef28fCsZTFXfLtefHQwPkAxsPnXtVaq9F\",\"issuanceDate\":\"2023-01-31T02:34:09Z\",\"issuer\":\"did:bid:ef14uPsX7XYLzsU4t2rnRrsK2zfUbFEj\",\"parseType\":\"sel-disclose-SM2\",\"revocationId\":\"did:bid:efKK5cc2iArX3cmxDVmxcUx8QgecM4oD\",\"templateId\":\"did:bid:efvBPiZWCuB89LpynLUpmXCozjGEouhU\",\"type\":[\"VerifiableCredential\",\"identityCertification\"],\"validBefore\":\"2099-01-01T00:00:00Z\"}",
}

实现步骤: 1.解析 jws 证书(参照 JWS RFC文档 ), 拿到证书原文; 2.验证发证方( issuer 字段)是否在数字证书可信数据集进行注册 3.验证凭证模板( templateId 字段)是否在数字证书可信数据集里; 4.校验证书是否在有效期( validBefore 字段)内; 5.通过数字证书可信数据集查询证书( id 字段)状态, 确认证书是否已被吊销; 6.通过BID解析查询发证方( issuer 字段)公钥; 7.剔除证书原文的 value 和 salt 字段,按照 jws 规范(参照JWS RFC文档)生成新的payload字符串; 8.用颁发方公钥对 jws 证书进行验签; 9.验证选择性披露值是否与证书对应 value 值匹配, 选择性披露 value 值与 salt 生成的 hash 与证书里的对应字段的 hash 进行比对。 验证返回结果:

{
  "errorCode": 0,
  "message": "SUCCESS",
  "data": {
    "result": true
  }
}

响应参数说明:

字段名 类型 描述
result boolean 验证结果
CAICT-DEV commented 1 year ago

接受关于“星火链网可信数字证书验证规范”的标准建议,现分配编号RFC-014。RFC-014进入采纳阶段。

生命周期

提出日期:2023-03-22 演示日期:2023-03-22 接受日期:2023-03-22 采纳日期:2023-05-09

编号:RFC-014 类型:标准 标题:星火链网可信数字证书验证规范 作者:金键,jin.jian@caict.ac.cn;谢家贵,xiejiagui@caict.ac.cn;李志平,lizhiping@caict.ac.cn;聂凡杰,niefanjie@caict.ac.cn 发布时间:2023-03-22 状态:采纳 更新时间:2023-05-09 讨论地址:https://github.com/caict-4iot-dev/bif-rfcs/issues/20 依赖RFC: