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

server/2024/10/21 11:48:01/

前面对非显式证书公钥机制(无证书和隐式证书)的密钥生成过程进行了描述(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/server/127936.html

相关文章

go+redis基于tcp实现聊天室

goredis实现聊天室 基于tcp连接通过redis实现了消息的广播,命令改名,查询在线人数,查询用户活跃度 serverclinet server 聊天室服务端的流程可以分为几个主要部分:初始化、监听连接、处理每个连接以及消息的处理和转发 1. 初…

【WRF数据准备】MODIS静态地理数据下载及制备

【WRF数据准备】MODIS静态地理数据下载及制备 MODIS数据介绍数据下载数据拼接MRT工具介绍基于MRT软件完成数据拼接 格式转换:tif文件转二进制格式编写INDEX修改GEOGRID.TBL以及namelist.wps修改GEOGRID.TBL修改namelist.wps 参考 MODIS数据介绍 MODIS-MCD12Q1 v061…

数字通信中不同信道类型对通信系统性能影响matlab仿真分析,对比AWGN,BEC,BSC以及多径信道

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 (完整程序运行后无水印) 2.算法运行软件版本 matlab2022a 3.部分核心程序 (完整版代码包含详细中文注释和操作步骤视频&#xff09…

VSCode python代码颜色调整与pycharm对齐

今天开始用VSCode写代码了,因为用服务器比较方便,可是进去一看,代码花花绿绿地完全看不进去,以前用Pycharm的时候就完全没有这种问题,看看人家的颜色格式!(当然也可能是先入为主) 因…

828华为云征文|华为云弹性云服务器FlexusX实例下的Nginx性能测试

本文写的是华为云弹性云服务器FlexusX实例下的Nginx性能测试 目录 一、华为云弹性云服务器FlexusX实例简介二、测试环境三、测试工具四、测试方法五、测试结果 下面是华为云弹性云服务器FlexusX实例下的Nginx性能测试。 一、华为云弹性云服务器FlexusX实例简介 华为云弹性云服…

http 缓存

HTTP缓存是一种重要的性能优化技术,它通过存储和重用之前获取的资源来减少网络流量和加快页面加载速度。以下是HTTP缓存的详细解释: 1. 缓存的类型 浏览器缓存:存储在用户本地设备上。代理缓存:位于客户端和服务器之间的中间服务…

毕业论文设计javaweb+VUE高校教师信息管理系统

目录 一、系统概述 二、功能详解 1. 教师管理 2. 部门管理 3. 奖惩管理 4. 业绩管理 5. 培训管理 6. 报表查询 三、总结 四、示例代码 1 前端VUE 2 后端SpringBootjava 3 数据库表 随着教育信息化的发展,传统的手工管理方式已经不能满足现代学校对教师…

人工智能时代中,产品经理的生存指南

前言 从AI技术到商业变现的过程中,一招不慎,很可能满盘皆输。在AI时代,一个优秀的产品经理,应该具备哪些能力呢?通过对人工智能产品生命周期的解读,明确在各个环节中,人工智能所需要承担的工作…