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

前面对非显式证书公钥机制(无证书和隐式证书)的密钥生成过程进行了描述(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编码机制、隐式证书实例及其使用。

相关推荐
Hello.Reader38 分钟前
Elasticsearch安全审计日志设置与最佳实践
安全·elasticsearch·jenkins
Lyndon11072 小时前
K8S 九 安全认证 TLS
安全·容器·kubernetes
hqxstudying6 小时前
Java异常处理
java·开发语言·安全·异常
终焉暴龙王14 小时前
CTFHub web进阶 php Bypass disable_function通关攻略
开发语言·安全·web安全·php
qq_430908571 天前
网络安全-机遇与挑战
安全
安 当 加 密1 天前
守护汽车“空中升级“:基于HSM/KMS的安全OTA固件签名与验证方案
安全·汽车
大咖分享课1 天前
多租户系统中的安全隔离机制设计
人工智能·安全·安全隔离
荔枝吻1 天前
软件异常读写威胁硬盘安全:从过往案例到防护之道
安全·硬盘
小马爱打代码1 天前
Spring Boot 接口安全设计:接口限流、防重放攻击、签名验证
网络·spring boot·安全
北极光SD-WAN组网2 天前
工业互联网时代,如何通过混合SD-WAN提升煤炭行业智能化网络安全
网络·安全·web安全