SM2无证书及隐式证书公钥机制签名和加密过程详解(二)

ops/2024/10/10 23:34:24/

前面对非显式证书公钥机制(无证书和隐式证书)的密钥生成过程进行了描述(SM2无证书及隐式证书公钥机制签名和加密过程详解(一)_sm2加密解密过程-CSDN博客),这里接着对隐式证书ASN.1模板和生成过程进行说明。

(1)隐式证书ASN.1模板

SequeceOfCertificate ::= SEQUENCE OF Certificate

Certificate ::= CertificateBase(ExplicitCertificate | Reserved)

CertificateBase ::= SEQUENCE {
    version            Uint8(3),
    type            CertificateType,
    issuer            IssuerIdentifier,
    toBeSigned        ToBeSignedCertificate,
    signatre        Signature OPTIONAL
}

CertificateType ::= ENUMERATED {
    explicit,
    reserved,
    ...
}

--显式证书,需具备CA签名,使用CA公钥验证
ExlipcitCertificate ::= CertificateBase (WITH COMPONENTS { ...,
    type(explicit),
    toBeSigned (WITH COMPONENTS { ...,
        verifyKeyIndicator (WITH COMPONENTS {verificationKey})
    }),
    signatre PRESENT
})

--隐式证书,无需CA签名,使用声明公钥验证(即公钥还原数据)
Reserved ::= CertificateBase (WITH COMPONENTS { ...,
    type(reserved),
    toBeSigned(WITH COMPONENTS { ...,
        verifyKeyIndicator(WITH COMPONENTS {reconstructionValue})
    }),
    signatre ABSENT
})

IssuerIdentifier ::= CHOICE {
    sha256AndDigest    HashedId8,
    self SignedData ::= SEQUENCE {
        hashId            OBJECT IDENTIFIER,
        tbsData            ToBeSignedData,
        signer            SignerIdentifier,
        signature        Signature
    } HashAlgorithm,
    ...,
    sha384AndDigest    HashedId8,
    sm3AndDigest    HashedId8
}

ToBeSignedCertificate ::= SEQUENCE {
    id                CertificateId,
    cracaId            HashedId3,
    crlSeries        CrlSeries,
    validityPeriod    ValidityPeriod,
    region            GeographicRegion OPTIONAL,
    assuranceLevel    SubjectAssurance OPTIONAL,
    appPermissions    SequenceOfAidSsp OPTIONAL,
    cerIssuePermissions    SequenceOfAidGroupPermissions OPTIONAL,
    cerRequestPermissions    SequenceOfAidGroupPermissions OPTIONAL,
    canRequestRollover    NULL OPTIONAL,
    encryptionKey    publicEncryptionKey OPTIONAL,
    verifyKeyIndicator    VerificationKeyIndicator,
    ...
}
(WITH COMPONENTS {..., appPermissions PRESENT} |
 WITH COMPONENTS {..., cerIssuePermissions PRESENT} |
 WITH COMPONENTS {..., cerRequestPermissions PRESENT})

CertificateId ::= CHOICE {
    linkageData        LinkageData,
    name            HostName,
    binaryId        OCTET STRING(SIZE(1..64)),
    none            NULL,
    ...
}

LinkageData ::= SEQUENCE {
    iCert            IValue,
    linkage-value    LinkageValue,
    group-linkage-value    GroupLinkageValue OPTIONAL
}

SequenceOfAidGroupPermissions ::= SEQUENCE OF AidGroupPermissions

AidGroupPermissions ::= SEQUENCE {
    subjectPermissions    SubjectPermissions,
    minChainLength        INTEGER DEFAULT 1,
    chainLengthRange    INTEGER DEFAULT 0,
    eeType                EndEntityType DEFAULT {app}
}

SubjectPermissions ::= CHOICE {
    explicit        SequenceOfAidSspRange,
    all                NULL,
    ...
}

EndEntityType ::= BIT STRING {app(0), enroll(1)}(size(8))(ALL EXCEPT{})

VerificationKeyIndicator ::= CHOICE {
    verificationKey        PublicVerificationKey,
    reconstructionValue    EccP256CurvePoint,
    ...
}

(2)隐式证书生成过程(简要)

1)KGC生成系统私钥ms和对应系统公钥Ppub。
2)KGC使用系统公钥Ppub向CA申请一张证书(标准证书申请流程)。
3)实体A将公钥数据UA等信息提交到KGC。
4)KGC验证隐式证书申请合法性,生成 ToBeSignedCertificate 中从id开始 encryptionKey 的部分。
5)KGC生成IDA(至少包括 ToBeSignedCertificate 中从 id 开始到 encryptionKey 之前的数据域)。
6)KGC将WA作为隐式证书中 verifyKeyIndicator 的数据,生成完整的隐式证书。

后续,将进一步介绍隐式证书COER编码机制、隐式证书实例及其使用。


http://www.ppmy.cn/ops/123704.html

相关文章

await的作用(举例)

问: 当方法a中又三个方法a1、a2、a3、a4都是异步函数,现在在a2、a4追加await,方法执行顺序是什么?主进程顺序是什么? 答: 通过一个具体的例子来说明当方法 a 中有四个异步方法 a1、a2、a3 和 a4&#xff…

【内存池】——Nginx 内存池结构设计

目录 实现思路——分而治之 Nginx 的内存池结构图 结构体设计 内存池设计: 数据区属性设计: 大块内存区设计: 伪代码解释: 数据结构实现 实现思路——分而治之 算法结构:链表顺序表 1、对于每个请求或者连接都会建…

设计模式(3)builder

需求: 对于复杂的对象,我们只需要 通过 设置一些参数,就可以得到相对应的 实例。 简单来说, 需求就是用一个类 通过方法返回一个 新建的对象,而且可以通过方法去设置这个对象 public interface CarBuilder {void se…

爬虫prc技术----小红书爬取解决xs

知识星球:知识星球 | 深度连接铁杆粉丝,运营高品质社群,知识变现的工具知识星球是创作者连接铁杆粉丝,实现知识变现的工具。任何从事创作或艺术的人,例如艺术家、工匠、教师、学术研究、科普等,只要能获得一…

OpenAI .NET 库稳定版发布,支持 GPT-4o 并改进 API 功能

penAI 在6月推出其官方 .NET 库的 beta 版之后,如今终于发布了稳定版。该库已在 NuGet 上作为包发布,支持最新的模型,如 GPT-4o 和 GPT-4o mini,并且提供完整的 OpenAI REST API。这次发布包括同步和异步 API,以及流式…

我对软件工程的理解

1 引言 从事软件行业这么年,写了10年代码,又从事了多年的项目产品方面的工作,一些每天用到的软件工程的方法,虽然天天都在用但一些概念总感觉似是而非,正好借假期的时间,好好整理下,以供自己或…

秋招内推2025-招联金融

【投递方式】 直接扫下方二维码,或点击内推官网https://wecruit.hotjob.cn/SU61025e262f9d247b98e0a2c2/mc/position/campus,使用内推码 igcefb 投递) 【招聘岗位】 后台开发 前端开发 数据开发 数据运营 算法开发 技术运维 软件测试 产品策…

论文阅读——联邦忘却学习研究综述

文章基本信息 作者: 王鹏飞魏宗正周东生宋威肖蕴明孙庚于硕张强 机构: 大连理工大学计算机科学与技术学院大连理工大学社会计算与认知智能教育部重点实验室大连大学先进设计与智能计算教育部重点实验室美国西北大学计算机科学系吉林大学计算机科学与…