您的当前位置:首页正文

公民网络电子身份标识格式规范

2024-11-09 来源:个人技术集锦

声明

本文是学习而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们

范围

本标准规定了公民网络电子身份标识的组成及密钥对产生要求、格式要求和编码规则。

本标准适用于公民网络电子身份标识相关系统的设计、开发、测试、生产和应用。

规范性引用文件

下列文件对于本文件的应用是必不可少的。凡是注日期的引用文件,仅注日期的版本适用于本文件。凡是不注日期的引用文件,其最新版本(包括所有的修改单)适用于本文件。

GB 18030 信息技术 中文编码字符集

GB/T 20518 信息安全技术 公钥基础设施 数字证书格式

GB/T 25069 信息安全技术 术语

GB/T 32905-2016 信息安全技术 SM3密码杂凑算法

GB/T 32918.2-2016 信息安全技术 SM2椭圆曲线公钥密码算法
第2部分:数字签名算法

GB/T 32918.4-2016 信息安全技术 SM2椭圆曲线公钥密码算法
第4部分:公钥加密算法

术语和定义

GB/T 25069中界定的以及下列术语和定义适用于本文件。

缩略语

下列缩略语适用于本文件。

ASN.1:抽象语法记法I(abstract syntax notation one)

eID:公民网络电子身份标识(citizen cyber electronic identity)

HID:杂凑值编码(hash ID)

OID:对象标识符(object identifier)

组成及密钥对产生要求

公民网络电子身份标识组成

公民网络电子身份标识采用数字证书形式,由一对非对称密钥和含有其公钥及相关信息的数字证书组成。

公民网络电子身份标识非对称密钥对产生

公民网络电子身份标识的非对称密钥对由智能卡、智能密码钥匙等载体的安全芯片产生,包括公钥和私钥,其中私钥不可导出。

公民网络电子身份标识非对称密钥对产生算法

公民网络电子身份标识密钥对产生算法应符合GB/T 32918.4-2016的要求。

格式要求

概述

公民网络电子身份标识格式应符合表1的格式要求。

表1的各数据项按GB/T 20518的规定进行定义。数据项的中文编码应符合GB
18030的要求,用2个到4个字节表示,其余字符用1个字节表示。数据交换时,各数据项按序号顺序排列。

  1. 公民网络电子身份标识格式

表1公民网络电子身份标识格式(续)

版本号

版本号(version)是公民网络电子身份标识的数字证书版本。该数据项类型应为整型,长度为1个字节,其ASN.1的结构如下:

Version ::= INTEGER {v3(2)}

序列号

序列号(serialNumber)是公民网络电子身份标识的数字证书对应的唯一编号。该数据项应为长整型,长度不大于20个字节。其ASN.1的结构如下:

CertificateSerialNumber ::= INTEGER

签名算法

签名算法(signatureAlgorithm)是公民网络电子身份标识数字证书所使用的数字签名算法,应符合GB/T
32918.2-2016的要求。该数据项应为字符型,长度为8个字节。其ASN.1的结构如下:

Id-AlgorithmIdentifier OBJECT IDENTIFIER ::= {1.2.156.10197.1.501}

AlgorithmIdentifier ::= SEQUENCE {

algorithm OBJECT IDENTIFIER,

parameters ANY DEFINED BY algorithm OPTIONAL}

颁发机构

颁发机构组成

颁发机构(issuer)由颁发机构的名称、组织、国家的标识及颁发机构序号组成。

名称

该数据项应为字符型,长度不大于16个字节。其ASN.1的结构如下:

RelativeDistinguishedName ::= SET OF AttributeTypeAndValue

AttributeTypeAndValue ::= SEQUENCE {

type AttributeType,

value AttributeValue }

AttributeType ::= OBJECT IDENTIFIER

AttributeValue ::= ANY DEFINED BY AttributeType

DirectoryString ::= CHOICE {

printableString PrintableString(SIZE(1…MAX)),

utf8String UTF8String(SIZE(1…MAX)) }

组织

该数据项应为字符型,长度为18个字节。值为颁发机构对应的统一社会信用代码或组织机构代码。

国家

该数据项应为字符型,长度为2个字节。值为中国的英文简称CN。

序号

该数据项应为字符型,长度为6个字节。值为000001-999999之间的顺序编码。

有效期

有效期(validity)是一个时间段,由公民网络电子身份标识的生效日期和失效日期组成。该数据项长度为30个字节。生效日期和失效日期数据项均为时间型,长度均为15个字节。该时间段的值应为5年。其ASN.1的结构如下:

validity Validity

Validity ::= SEQUENCE {

notBefore CertificateValidityDate,

notAfter CertificateValidityDate }

CertificateValidityDate ::= CHOICE {

utcTime UTCTime,

generalTime GeneralizedTime }

公民网络电子身份标识持有者信息

持有者信息组成

持有者信息(subject)由持有者的名称、组织、国家的标识组成。其中持有者的名称由公民网络电子身份标识码表示。

名称

该数据项应为字符型,长度为48个字节。值为公民网络电子身份标识码,其ASN.1的结构如下:

RelativeDistinguishedName ::= SET OF AttributeTypeAndValue

AttributeTypeAndValue ::= SEQUENCE {

type AttributeType,

value AttributeValue }

AttributeType ::= OBJECT IDENTIFIER

AttributeValue ::= ANY DEFINED BY AttributeType

DirectoryString ::= CHOICE {

printableString PrintableString(SIZE(1…MAX)),

utf8String UTF8String(SIZE(1…MAX)) }

组织

该数据项应为字符型,长度为18个字节。值为公民网络电子身份标识持有者对应的统一社会信用码或组织机构代码,可以为空。

国家

该数据项应为字符型,长度为2个字节。值为中国的英文简称CN。

公民网络电子身份标识持有者公钥信息

持有者公钥信息(subjectPublicKeyInfo)包括公民网络电子身份标识的公钥及公钥算法的标识符,应符合GB/T
32918.2-2016的要求。该数据项应为字符型,长度不少于130个字节。其ASN.1的结构如下:

Id-subjectPublicKeyInfo OBJECT IDENTIFIER ::= {1.2.156.10197.1.301}

SubjectPublicKeyInfo ::= SEQUENCE {

algorithm AlgorithmIdentifier,

subjectPublicKey BIT STRING }

扩展项

扩展项组成

扩展项(extensions)定义的颁发机构密钥标识符、标识持有者密钥标识符、密钥用法、扩展密钥用途、证书策略、基本限制、撤销列表分发点、浏览器证书类型、颁发机构信息访问等扩展项的OID应符合GB/T
20518中5.2.3.2的要求。其ASN.1的结构如下:

id-ce OBJECT IDENTIFIER ::= { joint-iso-ccitt(2) ds(5) 29 }

颁发机构的密钥标识符

密钥标识符(authorityKeyIdentifier)用于验证在公民网络电子身份标识或撤销列表上签名的颁发机构公钥。该数据项为字符型,长度为64个字节。其ASN.1的结构如下:

id-ce-authorityKeyIdentifier OBJECTIDENTIFIER ::= {id-ce 35}

AuthorityKeyIdentifier ::= SEQUENCE {

keyIdentifier [0] KeyIdentifier OPTIONAL,

authorityCertIssuer [1] GeneralNames OPTIONAL,

authorityCertSerialNumber [2] CertificateSerialNumber OPTIONAL }

(WITH COMPONENTS {…,authorityCertIssuer PRESENT,

authorityCertSerialNumber PRESENT} │

WITH COMPONENTS {…,authorityCertIssuer ABSENT,

authorityCertSerialNumber ABSENT})

KeyIdentifier ::= OCTET STRING

标识持有者密钥标识符

持有者密钥标识符(subjectKeyIdentifier)用于标识公民网络电子身份标识持有者的公钥。该数据项为字符型,长度为64个字节。其ASN.1的结构如下:

id-ce-subjectKeyIdentifier OBJECT IDENTIFIER ::= {id-ce 14}

SubjectKeyIdentifier ::= KeyIdentifier

密钥用法

密钥用法(keyUsage)用于标识公民网络电子身份标识中公钥的用法,包括但不限于数字签名和抗抵赖。该数据项为字符型,长度为2个字节。其ASN.1的结构如下:

id-ce-keyUsage OBJECT IDENTIFIER ::= {id-ce 15}

KeyUsage ::= BIT STRING {

digitalSignature (0),

nonRepudiation (1) }

密钥用法扩展

密钥用法扩展(extKeyUsage)用于标识公民网络电子身份标识中公钥的具体用途,包括但不限于客户端鉴别和电子邮件保护。该数据项为字符型,长度为29个字节。其ASN.1的结构如下:

id-ce-extKeyUsage OBJECT IDENTIFIER :: {id-ce 37}

ExtKeyUsageSyntax ::=SEQUENCE SIZE (1‥MAX) OF KeyPurposeId\
KeyPurposeId::=OBJECT IDENTIFIER

证书策略

证书策略(certificatePolicies)用于标识公民网络电子身份标识发放所依据的策略及其应用目的。该数据项为字符型,长度为54个字节。其ASN.1的结构如下:

id-ce-certificatePolicies OBJECT IDENTIFIER ::= { id-ce 32 }

CertificatePolicies ::= SEQUENCE {

critical BOOLEAN DEFAULT FALSE,

extnValue OCTET STRING }

撤销列表分发点

id-ce-CRLDistributionPoints OBJECT IDENTIFIER ::= { id-ce 31 }

CRLDistributionPoints ::= SEQUENCE {

critical BOOLEAN DEFAULT FALSE,

extnValue OCTET STRING }

浏览器证书类型

浏览器证书类型(browserCertType)用于标识公民网络电子身份标识所支持的浏览器证书类型。该数据项为字符型,长度为17个字节。其ASN.1的结构如下:

Id-ce-browserCertTypeIdentifier OBJECT IDENTIFIER ::=
{2.16.840.1.113730.1.1}

BrowserCertTypeIdentifier ::= SEQUENCE {

critical BOOLEAN DEFAULT FALSE,

extnValue OCTET STRING }

颁发机构信息访问

颁发机构信息访问(authorityInfoAccess)用于标识公民网络电子身份标识颁发机构信息。该数据项为字符型,长度为62个字节。其ASN.1的结构如下:

id-pe-authorityInfoAccess OBJECT IDENTIFIER ::= { id-pe 1 }

AuthorityInfoAccess ::= SEQUENCE {

critical BOOLEAN DEFAULT FALSE,

extnValue OCTET STRING }

签名值

签名值(signatureValue)用于标识公民网络电子身份标识颁发机构对公民网络电子身份标识的签名内容。该数据项为字符型,长度至少为64个字节。其ASN.1的结构如下:

Id-AlgorithmIdentifier OBJECT IDENTIFIER ::= {1.2.156.10197.1.501}

AlgorithmIdentifier ::= SEQUENCE {

algorithm OBJECT IDENTIFIER,

parameters ANY DEFINED BY algorithm OPTIONAL }

编码规则

编码格式

公民网络电子身份标识码共48个字节,由版本号、杂凑值和预留位三部分组成:

a) 第1个字节表示版本号,记为eID_version;

b) 第2个至第45个字节表示杂凑值,记为HID;

c) 第46个至第48个字节表示预留位,记为eID_code_rvb。

HID计算方法

HID为字符串,计算方法如下:

HID=Base64[(SM3)[IDnumber|name|type|random_hash]]

其中"|"含义表示字符串连接。

IDnumber、 name、
type和random_hash分别是有效证件的证件号码、公民姓名、证件类型代码和128个字节随机数的字串。证件类型代码见表1。将IDnumber、name、type、random_hash依次顺序连接,采用符合GB/T
32905-2016要求的算法进行杂凑运算得出的二进制信息的Base64编码,共44个字节。

表1 证件类型代码

[]{#BKCKWX .anchor}参 考 文 献

  1. GB/T 2260-2007 中华人民共和国行政区划代码

  2. GB/T 2659-2000 各国和地区名称代码

  3. GB/T 16262.1-2006 抽象语法记法—(ASN.1)
    第1部分:基本记法规范(ISO/IEC 8824-1:2002, IDT)

  4. GB/T 16262.2-2006 抽象语法记法—(ASN.1)
    第21部分:客体信息规范(ISO/IEC 8824-2:2002, IDT)

  5. GB/T 16262.3-2006 抽象语法记法—(ASN.1) 第3部分:约束规范(ISO/IEC
    8824-3:2002, IDT)

  6. GB/T 16262.4-2006 抽象语法记法—(ASN.1)
    第4部分:ASN.1规范的参数化(ISO/IEC 8824-4:2002, IDT)

  7. GB/T 32918.1-2016 信息安全技术 SM2椭圆曲线公钥密码算法 第1部分:总则

  8. GB/T 32918.3-2016 信息安全技术 SM2椭圆曲线公钥密码算法
    第3部分:密钥交换协议

  9. RFC 2045 Multipurpose Internet Mail Extensions(MIME) Part One:
    Format of Internet Message Bodies

________________________________

延伸阅读

更多内容 可以进一步学习

联系我们

显示全文