文档签名验证
接下来,我们将介绍证明文档的验证过程。当您从QingTianHypervisor请求证明文档时,您将会收到一个包含已签名证明文档的二进制blob。已签名的证明文档是一个由CBOR编码,COSE签名的对象。整个验证过程包括以下几个步骤:
1. 解码CBOR对象并将其映射到COSE_Sign1结构中
2. 从COSE_Sign1结构中提取证明文档
3. 验证证书文档中CA证书链的有效性
4. 验证证明文档的数字签名的有效性
证明文档由华为云QingTianAttestation PKI签署。华为云QingTian根证书可以从https://qingtian-enclave.obs.myhuaweicloud.com/huawei_qingtian-enclaves_root-G1.zip 下载获取,该压缩文件的SHA256的摘要值为:
99e9203a64cfb0c6495afd815051e97bea8a37895dc083d715674af64adeadfe
QingTianAttestation PKI根证书的有效期为30年,根证书主体(Subject)的格式如下:
CN=huaweicloud.qingtian-enclaves, C=CN, O=Huawei Technologies, OU=Huawei Cloud
COSE与CBOR
COSE_Sign1签名结构通常被使用在为消息进行单一签名的场景,其内容和签名的相关参数都放在受保护的header中。COSE_Sign1数据结构是一个CBOR数组,该数组包括如下字段:
[ protected header; // 被保护的header信息 unprotected header; // 不被保护的header信息 payload; // 被签名的数据,attestation doc的CBOR封装数据 signature; // 签名 ]
在证明文档的上下文中,该数组示例为:
18( // COSE_Sign1 CBOR标签 {1: -35}, // 算法: ECDS 384 {}, // 空 attestation doc, // 证明文档 signature, // 签名 )
验证证书
验证证书链是证书有效性验证过程中不可或缺的一部分。证明文档中的CA Bundle包含了根证书和中间证书的证书列表,并按以下顺序提供:
[ ROOT_CERT - INTERM_1 - INTERM_2 ... -INTERM_N ] 0 1 2 N
为了验证目标证书TARGET_CERT(即证明文档中的Certificate)的有效性,对于某些证书验证工具而言,您可能需要按如下顺序构造证书验证列表:
[ TARGET_CERT - INTERM_N - INTERM_N-1 ... - ROOT_CERT]