ICS 03.220.20;35.240.60
CCS R 07
中华人民共和国国家标准
GB/T 37376—2024
交通运输 数字证书格式
Transportation—Digital certificate format
代替 GB/T 37376—2019
2024-08-23 发布2025-03-01 实施
国家市场监督管理总局
国家标准化管理委员会发 布
前 言
本文件按照GB/T 1.1—2020《标准化工作导则 第1 部分:标准化文件的结构和起草规则》的规
定起草。
本文件代替GB/T 37376—2019《交通运输 数字证书格式》,与GB/T 37376—2019 相比,除结
构调整和编辑性改动外,主要技术变化如下:
a) 删除了智能运输系统、合作式智能运输系统的术语和定义(见2019年版的3.1、3.2);
b) 更改了ITS设备证书、SM2密码算法的术语和定义(见3.2、3.3,2019年版的3.4、3.5);
增加了COER、CRACA、LA、SPDU、SSP等缩略语,删除了缩略语UTC(见第4章,
2019年版的第4章);
c)
d) 更改了数字证书分类(见第5章,2019年版的第5章);
e) 更改了数字证书通用格式要求(见6.1,2019年版的6.1);
f) 更改了ITS数字证书基本元素的编码规则(见6.2.1.1,2019年版的6.2.1.1);
更改了基本数据类型、32位时间、地理有效区域、矩形区域、三维位置信息、纬度、经度、对
称加密算法、签名的结构定义(见6 . 2 . 1 . 2 、6 . 2 . 1 . 8 、6 . 2 . 1 . 1 0 、6 . 2 . 1 . 1 2 、6 . 2 . 1 . 1 6 、
6.2.1.17、6.2.1.18、6.2.1.24、6.2.1.27,2019年版的6.2.1.2、6.2.1.9、6.2.1.10、6.2.1.12、
6.2.1.15、6.2.1.16、6.2.1.17、6.2.1.6、6.2.2.7);
g)
更改了“8字节哈希值”“摘要算法”“加密公钥”为“8字节杂凑值”“杂凑算法”“公钥
加密密钥”,并更改了其结构定义(见6.2.1.5、6.2.1.7、6.2.1.23,2019年版的6.2.1.3、
6.2.1.4、6.2.1.8);
h)
增加了应用标识、3字节杂凑值、10字节杂凑值、64位时间、已识别区域、高程、CRL所属系
列、加密密钥、对称加密密钥、特定算法的公钥加密密钥、256位椭圆曲线和256位SM2签名的
结构定义(见6.2.1.3、6.2.1.4、6.2.1.6、6.2.1.9、6.2.1.14、6.2.1.19~6.2.1.22、6.2.1.25、
6.2.1.26、6.2.1.28);
i)
j) 删除了椭圆曲线算法、签名公钥的结构定义(见2019年版的6.2.1.5、6.2.1.7);
更改了证书结构、签名者信息的结构定义( 见6 . 2 . 2 . 1 、6 . 2 . 2 . 7 , 2019年版的6 . 2 . 2 . 1 、
6.2.2.3);将“版本”改为“证书版本”,并更改了其结构定义(见6.2.2.3,2019年版的
6.2.2.2);
k)
增加了证书基本结构、证书类型、显式证书、隐式证书、证书信息、证书持有者信息、链接数
据、链接值、群组链接值、主机名称、有效期、持续时间、国家标识、国家和区域标识、国家
和子区域标识、区域和子区域标识、证书持有者置信度、应用标识服务特定权限、服务特定权
限、比特位图、应用标识集合权限、证书持有者权限、终端类型、应用标识服务特定权限区
域、服务特定权限区域、比特位图服务特定权限区域、验证密钥指示、验证公钥的结构定义
(见6.2.2.2、6.2.2.4~6.2.2.6、6.2.2.8~6.2.2.31);
l)
删除了主题信息、主题属性、有效性限定的结构定义(见2019年版的6 . 2 . 2 . 4 、6 . 2 . 2 . 5 、
6.2.2.6);
m)
更改“证书撤销列表格式”为“ITS证书撤销列表”,并删除了证书撤销列表格式的结构定义
(见6.3,2019年版的6.3);
n)
增加了ITS CRL封装格式、ITS CRL内容、优先级信息、撤销证书信息、基于杂凑的撤销信
息、撤销证书链接值信息、撤销批次信息、链接机构信息、撤销总数信息、个体链接数据、双
链接机构CRL信息、单链接机构CRL信息、链接机构标识、链接种子的结构定义( 见
6.3.1~6.3.14);
o)
GB/T 37376—2024
Ⅰ
p) 增加了签名运算过程说明(见附录A);
q) 更改了ITS证书示例(见附录B,2019年版的附录A);
r) 增加了ITS CRL安全封装相关数据结构(见附录C);
s) 更改了ITS CRL示例(见附录D,2019年版的附录B)。
请注意本文件的某些内容可能涉及专利。本文件的发布机构不承担识别专利的责任。
本文件由全国智能运输系统标准化技术委员会(SAC/TC 268)提出并归口。
本文件起草单位:交通运输部公路科学研究所、北京中交国通智能交通系统技术有限公司、北京航
空航天大学、华为技术有限公司、郑州信大捷安信息技术股份有限公司、中路高科交通科技集团有限
公司。
本文件主要起草人:李斌、王立岩、王云鹏、刘鸿伟、汪林、梅新明、刘为华、潘凯、周吉祥、
齐志峰、王佳宁、康亮、周洲、王小军、宋向辉、余贵珍、范晨歌、张玥、赵童、马岁、宫福军。
本文件于2019 年首次发布,本次为第一次修订。
GB/T 37376—2024
Ⅱ
交通运输 数字证书格式
1 范围
本文件规定了交通运输信息系统中数字证书分类和数字证书格式的要求。
本文件适用于交通运输信息系统中与数字证书相关的软硬件系统设计、研发、测试及应用。
2 规范性引用文件
下列文件中的内容通过文中的规范性引用而构成本文件必不可少的条款。其中,注日期的引用文
件,仅该日期对应的版本适用于本文件;不注日期的引用文件,其最新版本(包括所有的修改单)适用
于本文件。
GB/T 2659.1 世界各国和地区及其行政区划名称代码 第1 部分:国家和地区代码
GB/T 13000 信息技术 通用多八位编码字符集(UCS)
GB/T 16262 (所有部分) 信息技术 抽象语法记法一(ASN.1)
GB/T 20518 信息安全技术 公钥基础设施 数字证书格式
GB/T 25069 信息安全技术 术语
GB/T 32905 信息安全技术 SM3 密码杂凑算法
GB/T 32907 信息安全技术 SM4 分组密码算法
GB/T 32918.1 信息安全技术 SM2 椭圆曲线公钥密码算法 第1 部分:总则
GB/T 32918.2 信息安全技术 SM2 椭圆曲线公钥密码算法 第2 部分:数字签名算法
YD/T 3957—2021 基于LTE 的车联网无线通信技术 安全证书管理系统技术要求
ISO/IEC 8825﹘7 信息技术 抽象语法记法编码规则 第7 部分:八位位组编码规则(Informa﹘
tion technology—ASN.1 encoding rules—Part 7: Specification of Octet Encoding Rules)
3 术语和定义
GB/T 25069、GB/T 32905、GB/T 32907、GB/T 32918.2 界定的以及下列术语和定义适用于本
文件。
3.1
数字证书 digital certificate
由国家认可的,具有权威性、可信性和公正性的第三方证书认证机构(CA)进行数字签名的一个
可信的数字化文件。
[ 来源:GB/T 20518—2018,3.7]
3.2
ITS 证书 ITS certificate
面向智能运输系统中的车载单元、路侧单元、移动终端和运营服务提供商等发放的具有特定格式的
数字证书。
3.3
SM2 算法 SM2 algorithm
由GB/T 32918 定义的一种椭圆曲线公钥密码算法。
GB/T 37376—2024
1
[ 来源:GB/T 25069—2022,3.583]
4 缩略语
下列缩略语适用于本文件。
COER:正则八位位组编码规则(Canonical Octet Encoding Rules)
CRACA:证书撤销授权认证机构(Certificate Revocation Authorizing Certificate Authority)
CRL:证书撤销列表(Certificate Revocation List)
ITS:智能运输系统(Intelligent Transport System)
LA:链接机构(Linkage Authority)
SPDU:安全协议数据单元(Secured Protocol Data Unit)
SSP:服务特定权限(Service Specific Permissions)
5 数字证书分类
交通运输信息系统中签发和管理的数字证书包括以下5 类:
a) 机构证书─面向交通运输信息系统机构发放的通用格式证书;
b) 公务人员证书─面向交通运输信息系统工作人员的终端用户发放的通用格式证书;
c) 社会公众证书─面向交通运输信息系统外部公众的终端用户发放的通用格式证书;
d) 设备证书─面向交通运输信息系统的服务器及配套终端设备等发放的通用格式证书;
ITS证书─面向智能运输系统中的车载单元、路侧单元、移动终端和运营服务提供商等发放
的专用格式证书。
e)
6 数字证书格式
6.1 通用格式
机构证书、公务人员证书、社会公众证书、设备证书格式和证书撤销列表应符合GB/T 20518 的要求。
6.2 ITS 证书格式
6.2.1 基本元素
6.2.1.1 编码规则
本文件定义的数据结构应符合GB/T 16262(所有部分)的要求。数字证书格式的各项信息应采用
ISO/IEC 8825﹘7 规定的COER 编码规则进行编码。
6.2.1.2 基本数据类型
基本数据类型定义如下:
Uint3 ::= INTEGER (0..7) ﹘﹘ (hex) 0x07
Uint8 ::= INTEGER (0..255) ﹘﹘ (hex) 0xff
Uint16 ::= INTEGER (0..65535) ﹘﹘ (hex) 0xff ff
Uint32 ::= INTEGER (0..4294967295) ﹘﹘ (hex) 0xff ff ff ff
Uint64 ::= INTEGER (0..18446744073709551615) ﹘﹘ (hex) 0xff ff ff ff ff ff ff ff
IValue ::= Uint16
GB/T 37376—2024
2
下面的八位位组字符串在数据结构定义中使用:
Opaque ::= OCTET STRING
下列结构用来阐明定义:
SequenceOfOctetString ::= SEQUENCE (SIZE (0..MAX)) OF OCTET STRING (SIZE(0..MAX))
SequenceOfUint8 ::= SEQUENCE OF Uint8
SequenceOfUint16 ::= SEQUENCE OF Uint16
6.2.1.3 应用标识
定义类型:Aid
结构:Aid ::= INTEGER (0..MAX)
说明:该数据结构表示所应用的领域。
6.2.1.4 3 字节(OCTET)杂凑值
定义类型:HashedId3
结构:HashedId3 ::= OCTET STRING (SIZE(3))
SequenceOfHashedId3 ::= SEQUENCE OF HashedId3
说明:该数据结构包含另一个数据结构的3 字节截断杂凑值。给定数据结构的HashedId3 通过计算
编码数据结构的杂凑值,并获取杂凑输出的低位3 个八位位组来获得。当以网络字节顺序表示时,低位
3 字节是杂凑值的最后3 个八位位组。
6.2.1.5 8 字节(OCTET)杂凑值
定义类型:HashedId8
结构:HashedId8 ::= OCTET STRING (SIZE(8))
SequenceOfHashedId8 ::= SEQUENCE OF HashedId8
说明:该数据结构包含另一个数据结构的8 字节截断杂凑值。给定数据结构的HashedId8 通过计算
编码数据结构的杂凑值,并获取杂凑输出的低位8 个八位位组来获得。当以网络字节顺序表示时,低位
8 字节是杂凑值的最后8 个八位位组。
6.2.1.6 10 字节(OCTET)杂凑值
定义类型:HashedId10
结构:HashedId10 ::= OCTET STRING (SIZE(10))
SequenceOfHashedId10 ::= SEQUENCE OF HashedId10
说明:该数据结构包含另一个数据结构的10 字节截断杂凑值。给定数据结构的HashedId10 通过计
算编码数据结构的杂凑值,并获取杂凑输出的低位10 个八位位组来获得。当以网络字节顺序表示时,
低位10 个字节是杂凑值的最后10 个八位位组。
6.2.1.7 杂凑算法
定义类型:HashAlgorithm
结构:
HashAlgorithm ::= ENUMERATED {
sm3,
…
}
说明:该数据结构表示杂凑算法。
GB/T 37376—2024
3
6.2.1.8 32 位时间
定义类型:Time32
结构:Time32 ::= Uint32
说明: T i m e 3 2 是一个32 位无符号整数, 高位优先编码格式,自2004 年1 月1 日北京时间
08:00:00 开始,给出国际原子时间的秒数。
6.2.1.9 64 位时间
定义类型:Time64
结构:Time64 ::= Uint64
说明: T i m e 6 4 是一个64 位无符号整数, 高位优先编码格式,自2004 年1 月1 日北京时间
08:00:00 开始,给出国际原子时间的微秒数。
6.2.1.10 地理有效区域
定义类型:GeographicRegion
结构:
GeographicRegion ::= CHOICE {
circularRegion CircularRegion,
rectangularRegion SequenceOfRectangularRegion,
polygonalRegion PolygonalRegion,
identifiedRegion SequenceOfIdentifiedRegion,
…
}
说明:该数据结构表示特定形式的地理区域,这些区域可用来限制证书的有效性。包括如下信息。
rectangularRegion是包含至少一个RectangularRegion数据结构条目的数组。该字段表示一系列矩
形,它们可重叠或不相交。被允许的区域是任意这些矩形内的任何点。
—
—circularRegion或polygonalRegion包含其各自类型的单个实例。
identifiedRegion是包含至少一个IdentifiedRegion数据结构条目的数组。被允许区域是任何已识别
区域内的任何点。
—
如果证书范围字段中表示的区域的任何部分位于其颁发者范围内表示的区域之外,则证书无效。
6.2.1.11 圆形区域
定义类型:CircularRegion
结构:
CircularRegion ::=SEQUENCE {
center TwoDLocation,
radius Uint16
}
说明:圆形有效区域由中心点和以米为单位的半径确定,有效区域范围距离中心点小于或等于半
径;包含高程参数的某地理点是否在指定的圆形区域内,判断该点在参考椭球体表面的水平投影是否在
此圆形区域内即可。
6.2.1.12 矩形区域
定义类型:RectangularRegion
GB/T 37376—2024
4
结构:
RectangularRegion ::=SEQUENCE {
northwest TwoDLocation,
southEast TwoDLocation
}
SequenceOfRectangularRegion ::= SEQUENCE OF RectangularRegion
说明:矩形有效区域由以下4 个点位依次连接形成(northWest.latitude, northWest.longitude),(south﹘
East.latitude, northWest.longitude),(southEast.latitude, southEast.longitude) 和(northWest.latitude, south﹘
East.longitude);包含高程参数的某地理点是否在指定的矩形区域内,判断该点在参考椭球体表面的水
平投影是否在此矩形区域内即可。
6.2.1.13 多边形区域
定义类型:PolygonalRegion
结构:PolygonalRegion ::= SEQUENCE SIZE(3..MAX) OF TwoDLocation
说明:多边形区域表示一个地区使用一系列不同的地理点,通过连接指定的地理点,完成多边形连
接并最终指向第一点;包含高程参数的某地理点是否在指定的多边形区域内,判断该点在参考椭球体表
面的水平投影是否在此多边形区域内即可。
6.2.1.14 已识别区域
定义类型:IdentifiedRegion
结构:
IdentifiedRegion ::= CHOICE {
countryOnly CountryOnly,
countryAndRegions CountryAndRegions,
countryAndSubregions CountryAndSubregions,
…
}
SequenceOfIdentifiedRegion ::= SEQUENCE OF IdentifiedRegion
说明:此数据类型使用区域标识符来表示证书的有效区域。
6.2.1.15 二维位置信息
定义类型:TwoDLocation
结构:
TwoDLocation ::=SEQUENCE {
latitude Latitude,
longitude Longitude
}
说明:该数据结构表示一个包含纬度和经度的二维位置信息,以判断证书的有效使用区域。
6.2.1.16 三维位置信息
定义类型:ThreeDLocation
结构:
ThreeDLocation ::= SEQUENCE {
latitude Latitude,
GB/T 37376—2024
5
longitude Longitude,
elevation Elevation
}
说明:该数据结构表示一个包含纬度、经度和高程的三维位置信息,以判断证书的有效使用区域。
6.2.1.17 纬度
定义类型:Latitude
结构:
Latitude ::= NinetyDegreeInt
NinetyDegreeInt ::= INTEGER {
min (﹘900000000),
max (900000000),
unknown (900000001)
} (-900000000..900000001)
KnownLatitude ::= NinetyDegreeInt (min..max)
UnknownLatitude ::= NinetyDegreeInt (unknown)
说明:纬度字段包含一个整数编码,精度为0.000 000 1°;取值范围 -900 000 000~+900 000 000,值为
900 000 001 时表明纬度不可用。本字段对应的参考坐标系根据实际应用需求确定。
6.2.1.18 经度
定义类型:Longitude
结构:
Longitude ::= OneEightyDegreeInt
OneEightyDegreeInt ::= INTEGER {
min (﹘1799999999),
max (1800000000),
unknown (1800000001)
} (-1799999999..1800000001)
KnownLongitude ::= OneEightyDegreeInt (min..max)
UnknownLongitude ::= OneEightyDegreeInt (unknown)
说明:经度字段包含一个整数编码,精度为0.000 000 1°;取值范围-1 799 999 999~+1 800 000 000,值
为1 800 000 001 时表示经度不可用。本字段对应的参考坐标系根据实际应用需求确定。
6.2.1.19 高程
定义类型:Elevation
结构:Elevation ::= Uint16
说明:Elevation 表示高程,单位为分米(dm),16 位比特值,取值0~65 534 对应的高度范围
-4 095 dm~+61 439 dm,值为65 535 时表示高程不可用。本字段对应的参考坐标系根据实际应用需求确定。
6.2.1.20 CRL 所属系列
定义类型:CrlSeries
结构:CrlSeries ::= Uint16
说明:该数据结构表示在特定CRACA 授权下发布的一系列CRL。
GB/T 37376—2024
6
6.2.1.21 加密密钥
定义类型:EncryptionKey
结构:
EncryptionKey ::= CHOICE {
public PublicEncryptionKey,
symmetric SymmetricEncryptionKey
}
说明:该数据结构表示一个加密密钥,可能是公钥或对称密钥。
6.2.1.22 对称加密密钥
定义类型:SymmetricEncryptionKey
结构:
SymmetricEncryptionKey ::= CHOICE {
sm4Ccm OCTET STRING(SIZE(16)),
sm4Gcm OCTET STRING(SIZE(16)),
…
}
说明:该数据结构表示与加密算法相对应长度的对称密钥。本文件默认使用sm4Ccm 工作模式。
6.2.1.23 公钥加密密钥
定义类型:PublicEncryptionKey
结构:
PublicEncryptionKey ::= SEQUENCE {
supported SymmAlg SymmAlgorithm,
publicKey BasePublicEncryptionKey
}
说明:该数据结构表示加密公钥和关联的对称加密算法。
6.2.1.24 对称加密算法
定义类型:SymmAlgorithm
结构:
SymmAlgorithm ::= ENUMERATED {
sm4Ccm,
sm4Gcm,
…
}
说明:该枚举值表示所支持的对称加密算法及工作模式。
6.2.1.25 特定算法的公钥加密密钥
定义类型: BasePublicEncryptionKey
结构:
BasePublicEncryptionKey ::= CHOICE {
ecencSM2 EccP256CurvePoint,
GB/T 37376—2024
7
…
}
说明:该数据结构表示特定算法的加密公钥。
6.2.1.26 256 位椭圆曲线
定义类型:EccP256CurvePoin
结构:
EccP256CurvePoint::= CHOICE {
x﹘only OCTET STRING (SIZE (32)),
fill NULL, ﹘﹘consistency w 1363 / X9.62
compressed﹘y﹘0 OCTET STRING (SIZE (32)),
compressed﹘y﹘1 OCTET STRING (SIZE (32)),
uncompressedP256 SEQUENCE {
x OCTET STRING (SIZE (32)),
y OCTET STRING (SIZE (32))
}
}
说明:该数据结构表示在256 位素数上定义的Weierstrass 形式的椭圆曲线上的点,包括SM2 算法中
定义的椭圆曲线点。该结构中的字段应按 GB/T 32918.1 中定义的椭圆曲线点编码和解码方法产生的八
位位组串。对于CHOICE 的所有值,x 坐标以网络字节顺序编码成长度为32 个八位位组的无符号整数;
y 坐标的编码取决于该点是x﹘only,压缩还是未压缩。如果该点是x﹘only,则省略y;如果该点被压缩,
则类型的值取决于y 的最低有效位。如果y 的最低有效位为0,则类型取值为compressed﹘y﹘0,如果y 的
最低有效位为1,则类型取值compressed﹘y﹘1;如果该点未压缩,则y 被明确编码为按网络字节顺序的
长度为32 个八位位组的无符号整数。
6.2.1.27 签名
定义类型:Signature
结构:
Signature ::= CHOICE {
sm2Signature EcsigP256Signature,
…
}
说明:该数据结构表示基于某个公钥算法的签名。
6.2.1.28 256 位SM2 签名
定义类型:EcsigP256Signature
结构:
EcsigP256Signature ::= SEQUENCE {
rSig OCTET STRING (SIZE (32)),
sSig OCTET STRING (SIZE (32))
}
说明:该数据结构表示基于256 位椭圆曲线SM2 算法的签名,验证签名时rSig、sSig 视为正整数。
GB/T 37376—2024
8
6.2.2 证书
6.2.2.1 证书结构
定义类型:Certificate
结构:
Certificate ::= CertificateBase (ExplicitCertificate | ImplicitCertificate)
SequenceOfCertificate ::= SEQUENCE OF Certificate
说明:该结构表示传输显式证书或其他证书的有效字段组合。
6.2.2.2 证书基本结构
定义类型:CertificateBase
结构:CertificateBase ::= SEQUENCE {
version Uint8(2),
type CertificateType,
issuer IssuerIdentifier,
toBeSigned ToBeSignedCertificate,
signature Signature OPTIONAL
}
说明:该结构表示证书基本结构。包括如下信息。
— version是证书格式的版本号,此字段设置为“2”;
type表示证书是显式证书或隐式证书。对于显式证书,此字段设置为explicit,对于隐式证书,
此字段设置为implicit;
—
—issuer证书的颁发方;
toBeSigned证书的内容。对于显式证书,在生成或校验证书签名时,该字段是杂凑函数的输
入,其编码应符合ToBeSignedCertificate;
—
signature包含在ExplicitCertificate中,由Issuer字段中标识的签名者在toBeSigned的杂凑上按附录
A中规定的签名运算过程计算得到。
—
ITS 证书示例见附录B。
6.2.2.3 证书版本
定义类型:version
结构:version ::= Uint8(2)
说明:证书版本号,当前编码值为2。
6.2.2.4 证书类型
定义类型:CertificateType
结构:
CertificateType ::= ENUMERATED {
explicit,
implicit,
…
}
说明:该数据结构表示显式证书、隐式证书或其他类型证书。
GB/T 37376—2024
9
6.2.2.5 显式证书
定义类型:ExplicitCertificate
结构:
ExplicitCertificate ::= CertificateBase (WITH COMPONENTS {…,
type(explicit),
toBeSigned(WITH COMPONENTS {…,
verifyKeyIndicator(WITH COMPONENTS {verificationKey})
}),
signature PRESENT
})
说明:该数据结构包含显式证书所需的所有字段。
6.2.2.6 隐式证书
定义类型:ImplicitCertificate
结构:
ImplicitCertificate ::= CertificateBase (WITH COMPONENTS {…,
type(implicit),
toBeSigned(WITH COMPONENTS {…,
verifyKeyIndicator(WITH COMPONENTS {reconstructionValue})
}),
signature ABSENT
})
说明:该数据结构包含隐式证书所需的所有字段。
6.2.2.7 签名者信息
定义类型:IssuerIdentifier
结构:
IssuerIdentifier::= CHOICE {
sm3AndDigest HashedId8,
self HashAlgorithm,
…
}
说明:证书的接收方通过指定的杂凑算法和密钥来验证证书。
如果选项是sm3AndDigest,则:
• 该数据结构包含颁发证书的HashedId8,它使用证书的所有字段经杂凑算法计算得到;
• 用于生成证书杂凑值以进行验证的杂凑算法为SM3;
• 证书使用颁发证书的公钥进行验证。
—
如果选项是self,则:
• 该数据结构表示使用HashAlgorithm对应的杂凑算法生成证书的杂凑值以进行验证;
• 证书使用ToBeSignedCertificate中包含的verifyKeyIndicator字段所表示的公钥进行验证。
—
6.2.2.8 证书信息
定义类型:ToBeSignedCertificate
GB/T 37376—2024
10
结构:
ToBeSignedCertificate ::= SEQUENCE {
id CertificateId,
cracaId HashedId3,
crlSeries CrlSeries,
validityPeriod ValidityPeriod,
region GeographicRegion OPTIONAL,
assuranceLevel SubjectAssurance OPTIONAL,
appPermissions SequenceOfAidSsp OPTIONAL,
certIssuePermissions SequenceOfAidGroupPermissions OPTIONAL,
certRequestPermissions SequenceOfAidGroupPermissions OPTIONAL,
canRequestRollover NULL OPTIONAL,
encryptionKey PublicEncryptionKey OPTIONAL,
verifyKeyIndicator VerificationKeyIndicator,
…
}
(WITH COMPONENTS { …, appPermissions PRESENT} |
WITH COMPONENTS { …, certIssuePermissions PRESENT} |
WITH COMPONENTS { …, certRequestPermissions PRESENT})
说明:该结构表示证书待签名信息包含的字段,包括以下内容。
— id包含在必要时识别证书持有者的信息。
cracaId用于识别负责发布CRL的CRACA,它的证书显示在CRL上。HashedId3使用证书的所有
字段经杂凑算法计算得到。
—
—crlSeries表示与证书可能出现的特定CRACA相关的CRL系列。
—validityPeriod包含证书的有效期。
—region(如果存在)表示证书的有效区域。如果省略,则有效区域表示如下:
如果证书是自签名的,即证书结构中的颁发者字段指示的选项是self,则证 书在全球范围内
有效;
l
l 否则,证书与颁发证书的证书具有相同的有效区域。
—assuranceLevel表示证书持有者的保证级别。
appPermissions表示证书持有者使用此证书签署应用程序数据的权限。appPermissions的有效实
例最多包含一个条目的任何特定Aid值。
—
certIssuePermissions表示证书持有者使用此证书签署其他证书的权限。此数组通常不包含AidSs﹘
pRange字段指示“all”的多个条目。如果数组有多个条目,并且一个条目的AidSspRange字段
显示为“all”,则表示的“all”条目将指定除在其他条目中明确指定以外的所有aid的权限。
具体见AidGroupPermissions中的说明。
—
certRequestPermissions表示证书持有者使用此证书签署证书请求的权限。此数组通常不包含
AidSspRange字段指示“all”的多个条目。如果数组有多个条目且一个条目的AidSspRange字段
指示“all”,则表示“all”的那个条目指定除了在其他条目中明确指定的AID之外的所有
AID的权限,具体见AidGroupPermissions中的说明。
—
—canRequestRollover表示该证书可用于签署请求具有相同权限的另一个证书的请求消息。
—encryptionKey包含用于加密的公钥,证书持有者持有相应的私钥。
verifyKeyIndicator包含可用于恢复公钥的材料,所恢复的公钥被用于验证被证书签名的
数据。
—
GB/T 37376—2024
11
对于encryptionKey和verifyKeyIndicator应采用压缩公钥,即这些点选择compressed﹘y﹘0或 com﹘
pressed﹘y﹘1。
—
ITS 证书数据编码示例见附录B。
6.2.2.9 证书持有者信息
定义类型:CertificateId
结构:
CertificateId ::= CHOICE {
linkageData LinkageData,
name Hostname,
binaryId OCTET STRING(SIZE(1..64)),
none NULL,
…
}
说明:该数据结构包含在必要时用于识别证书持有者的信息。其中:
— linkageData用于识别证书之注销目的,如果该证书出现在链接证书CRL中;
—name用于在非匿名证书的情况下标识证书持有者,人工可识读;
—binaryId支持机器识读的标识符;
—none表示证书不包含标识符。
6.2.2.10 链接数据
定义类型:LinkageData
结构:
LinkageData ::= SEQUENCE {
iCert IValue,
linkage﹘value LinkageValue,
group﹘linkage﹘value GroupLinkageValue OPTIONAL
}
说明:该数据结构包含与从基于链接ID 的CRL 获得的信息相匹配的信息,以确定所包含的证书是
否已被撤销。
6.2.2.11 链接值
定义类型:LinkageValue
结构:LinkageValue ::= OCTET STRING (SIZE(9))
说明:该结构表示个体链接值。
6.2.2.12 群组链接值
定义类型:GroupLinkageValue
结构:
GroupLinkageValue ::= SEQUENCE {
jValue OCTET STRING (SIZE(4)),
value OCTET STRING (SIZE(9))
}
说明:该结构表示群组链接值。
GB/T 37376—2024
12
6.2.2.13 主机名称
定义类型:Hostname
结构:Hostname ::= UTF8String (SIZE(0..255))
说明:该数据类型表示主机名称,字符串应按GB/T 13000 中定义的UTF﹘8 进行编码。
6.2.2.14 有效期
定义类型:ValidityPeriod
结构:
ValidityPeriod ::= SEQUENCE {
start Time32,
duration Duration
}
说明:该数据类型给出证书的有效期。有效期的开始时间为start,结束时间为start + duration。
6.2.2.15 持续时间
定义类型:Duration
结构:
Duration ::= CHOICE {
microseconds Uint16,
milliseconds Uint16,
seconds Uint16,
minutes Uint16,
hours Uint16,
sixtyHours Uint16,
years Uint16
}
说明:该数据类型表示证书的有效期。Uint16 值是持续时间,单位由CHOICE 选项确定,其中单位
“一年”等于31 556 952 s。
6.2.2.16 国家标识
定义类型:CountryOnly
结构:CountryOnly ::= Uint16
说明:该数据类型表示国家标识,应符合GB/T 2659.1 规定的国家和地区3 位数字代码。
6.2.2.17 国家和区域标识
定义类型:CountryAndRegions
结构:
CountryAndRegions ::= SEQUENCE {
countryOnly CountryOnly,
regions SequenceOfUint8
}
说明:该数据类型表示国家和区域标识。其中:
— countryOnly应符合6.2.2.16的定义;
—regions 标识国家内的一个或多个区域。
GB/T 37376—2024
13
6.2.2.18 国家和子区域标识
定义类型:CountryAndSubregions
结构:
CountryAndSubregions ::= SEQUENCE {
country CountryOnly,
regionAndSubregions SequenceOfRegionAndSubregions
}
说明:该数据类型表示国家和子区域。其中:
— country应符合6.2.2.16的定义;
—regionAndSubregions标识国家内的一个或多个子区域。
6.2.2.19 区域和子区域标识
定义类型:RegionAndSubregions
结构:
RegionAndSubregions::= SEQUENCE {
region Uint8,
subregions SequenceOfUint16
}
SequenceOfRegionAndSubregions ::= SEQUENCE OF RegionAndSubregions
说明:该数据类型表示区域和子区域。其中:
— region标识CountryAndRegions中指定的国家/地区内的区域;
—subregions标识CountryAndRegions下指定的一个或多个子区域。
6.2.2.20 证书持有者置信度
定义类型:SubjectAssurance
结构:SubjectAssurance ::= OCTET STRING (SIZE(1))
说明:该字段表示证书持有者的保证级别。证书持有者置信度按位编码应符合表1 的要求,其中比
特位7~位5 为设备的保证级别,用“A”表示;比特位4~位2 为保留位,用“R”表示,比特位1 和
位0 为置信度,用“C”表示。
表1 证书持有者置信度按位编码
序号比特位号含义
1 7 A
2 6 A
3 5 A
4 4 R
5 3 R
6 2 R
7 1 C
8 0 C
GB/T 37376—2024
14
6.2.2.21 应用标识服务特定权限
定义类型:AidSsp
结构:
AidSsp ::= SEQUENCE {
aid Aid,
ssp ServiceSpecificPermissions OPTIONAL
}
SequenceOfAidSsp ::= SEQUENCE OF AidSsp
说明:该数据结构表示证书持有者对于用Aid 标识的单个应用程序领域的数据所具有的权限。如果
省略ServiceSpecificPermissions 字段,则表示证书持有者具有与该Aid 关联的默认权限。如果证书具有省
略ssp 字段的appPermissions 条目A,颁发证书包含AidSspRange P,其中P 中的aid 字段等于A 中的
aid 字段且P 中的sspRange 字段指示all,或者P 中的aid 字段等于A 中的aid 字段,而P 中的sspRange 字
段指示opaque,而opaque 中的一个条目是长度为0 的八进制字符串,则A 与发布证书一致。其他形式
的ssp 字段的一致性规则,应符合6.2.2.22。
6.2.2.22 服务特定权限
定义类型:ServiceSpecificPermissions
结构:
ServiceSpecificPermissions ::= CHOICE {
opaque OCTET STRING (SIZE(0..MAX)),
…,
bitmapSsp BitmapSsp
}
说明:该数据结构表示与AidSsp 中的给定条目相关的服务特定权限(SSP)。 SSP 的含义取决于
相关联的Aid,可以是AID 特定的八位位组串或比特位图。 如果证书具有appPermissions 条目A、且其
中的ssp 字段是opaque,则如果颁发证书包含一个SubjectPermissions 字段,它表示选择all,且无AidSs﹘
pRange 字段包含A 中的aid 值,或包含一个AidSspRange P,P 中的aid 字段等于A 中的aid 字段,P 中
的sspRange 字段表示all 或P 中的sspRange 字段表示opaque,P 中opaque 字段中的一个条目是与A 中
opaque 字段相同的八位位组串,则A 与颁发证书一致。
6.2.2.23 比特位图
定义类型:BitmapSsp
结构:BitmapSsp ::= OCTET STRING (SIZE(0..31))
说明:该数据结构表示SSP 的比特位图。比特位图映射到签名的SPDU 上的约束取决于AID。如果
证书具有appPermissions 条目A,其ssp 字段为bitmapSsp,颁发证书包含一个SubjectPermissions 字段,
它表示选择all,且无AidSspRange 字段包含A 中的aid 值,则A 与颁发证书一致;如果颁发证书包含一
个AidSspRange P,其中P 中的aid 字段等于A 中的aid 字段,且P 中的sspRange 字段表示all,或R 中的
sspRange 字段表示bitmapSspRange,且R 的sspBitmask 中每一个被置为1 的比特,P 中sspValue 和R 中
sspValue 在该比特位上的取值相同,则A 与颁发证书一致。对于R 中sspBitmask 被设置为1 的每一个位
元,如果B 和R 的sspValue 在该比特位置的值都相同,则称B 的BitmapSsp 和BitmapSspRange R 相一
致。对于R 中sspBitmask 被设置为0 的位元,B 可以自由设置为0 或1,B 和R 是否一致与这些比特位的
取值无关。
6.2.2.24 应用标识集合权限
定义类型:AidGroupPermissions
GB/T 37376—2024
15
结构:
AidGroupPermissions ::= SEQUENCE {
subjectPermissions SubjectPermissions,
minChainLength INTEGER DEFAULT 1,
chainLengthRange INTEGER DEFAULT 0,
eeType EndEntityType DEFAULT {app}
}
SequenceOfAidGroupPermissions ::= SEQUENCE OF AidGroupPermissions
说明:该数据结构表示证书持有者在发布和请求对应特定AID 集合的证书时所拥有的权限,包含如
下内容。
— subjectPermissions表示此字段涵盖的AID和SSP范围。
minChainLength和chainLengthRange表示允许从此证书到最终实体证书的证书链的长度。证书链
的长度是指链中低于此证书的、直至并包括最终实体证书的证书数量。证书链长度大于或等于
minChainLength,同时小于或等于minChainLength + chainLengthRange。当此类型出现在To﹘
BeSignedCertificate的certIssuePermissions字段中时,minChainLength字段值为0的证书无效。
—
chainLengthRange的值﹘1是一种特殊情况,表示证书链可以是大于或等于minChainLength的任何
长度;对于下级证书和签发其的上一级证书中,certIssuePermissions字段AID相同的minChain﹘
Length和chainLengthRange,其值满足下列关系(设下级证书的minChainLength为mcls,下级证
书的chainLengthRange为clrs,上级签发证书的minChainLength为mcli,上级签发证书的chain﹘
LengthRange为clri):mcli ≤ mcls + 1,且(mcli + clri) ≥ (mcls + clrs +1)。
—
eeType取一个或多个“app”和“enroll”值,表示证书的类型或请求证书中的AidGroupPermis﹘
sions实例有权用于授权检查。如果此字段表示app,则允许证书链以授权证书结束,如果该字
段不表示app,但证书链用授权证书结束,则证书链无效。如果此字段表示enroll,则允许证书
链以注册证书结束;ToBeSignedCertificate中的不同AidGroupPermissions实例可能具有不同的
eeType值。
—
6.2.2.25 证书持有者权限
定义类型:SubjectPermissions
结构:
SubjectPermissions ::= CHOICE {
explicit SequenceOfAidSspRange,
all NULL,
…
}
说明:该数据结构表示AidGroupPermissions 数据结构向AID 和关联的SSP 授予证书颁发或请求权
限。如果它的取值为explicit(显式),则AidGroupPermissions 数据结构表示为特定AID 和SSP
Ranges 授予证书颁发或请求权限;如果此值为all,则AidGroupPermissions 数据结构为同一certIssuePer﹘
missions 或certRequestPermissions 字段中未由其他AidGroupPermissions 表示的所有AID 授予证书颁发或
请求权限。
6.2.2.26 终端类型
定义类型:EndEntityType
结构:EndEntityType ::= BIT STRING {app (0), enroll (1) } (SIZE (8)) (ALL EXCEPT {})
说明:该数据结构表示可能出现在最终实体证书中的权限类型,其证书链通过包含此值的Aid﹘
GB/T 37376—2024
16
GroupPermissions 字段传递权限。如果它表示的是app,则最终实体证书可能包含appPermissions 字段;
如果它表示的是enroll,则最终实体证书可能包含certRequestPermissions 字段。
6.2.2.27 应用标识服务特定权限区域
定义类型:AidSspRange
结构:
AidSspRange ::= SEQUENCE {
aid Aid,
sspRange SspRange OPTIONAL
}
SequenceOfAidSspRange ::= SEQUENCE OF AidSspRange
说明:该数据结构表示证书持有者针对一组特定应用程序权限发出证书或请求证书的权限。这个数
据结构包含:
— aid标识应用区域;
sspRange标识特定的SSP,它们与证书持有者可以签发或请求证书的AID相关联。如果ss﹘
pRange被省略,则持有者可为该AID的任何SSP颁发或请求证书。
—
6.2.2.28 服务特定权限区域
定义类型:SspRange
结构:
SspRange ::= CHOICE {
opaque SequenceOfOctetString,
all NULL,
…,
bitmapSspRange BitmapSspRange
}
说明:该数据结构表示与持有者可发布或请求证书的AID 相关联的SSP。
当一个证书具有ssp字段是Opaque形的AidSspRange A时,如果颁发证书包含以下之一,则A与
颁发证书一致:
—
(选项1)一个SubjectPermissions字段,它表示选择“all”,且无AidSspRange包含A中的
aid字段;
l
(选项2)一个AidSspRange P,其中P中的aid字段等于A中的aid字段,并且以下之一为真:
P中的sspRange字段表示all;P中的sspRange字段表示Opaque,A中的sspRange字段表示
Opaque,A中Opaque内的每个八位位组串都是P中Opaque内的八位位组串的副本。
l
当一个证书具有ssp字段为all的AidSspRange A时,如果颁发证书包含满足以下条件的AidSs﹘
pRange P,则A与颁发证书一致:
—
(选项1)一个SubjectPermissions字段,它表示选择“all”,且无AidSspRange包含A中的
aid字段;
l
(选项2)一个AidSspRange P,P中的aid字段等于A中的aid字段,且P中的sspRange字段为
“all”。
l
GB/T 37376—2024
17
6.2.2.29 比特位图服务特定权限区域
定义类型:BitmapSspRange
结构:
BitmapSspRange ::= SEQUENCE {
sspValue OCTET STRING (SIZE(1..32)),
sspBitmask OCTET STRING (SIZE(1..32))
}
说明:该数据结构表示为SSP 的位图:
—sspValue表示权限;
—sspBitmask包含一个八位位组字符串,用于允许或约束被颁发证书中的sspValue字段;
sspValue和sspBitmask字段的长度相同。
如果证书的AidSspRange值为P,且SspRange字段为bitmapSspRange,则当证书包含以下内容之
一时,P与颁发证书一致:
—
(选项1)SubjectPermissions字段表示选择为“all”,且P中的aid字段不包含AidSspRange
字段;
—
—(选项2)AidSspRange(R),其中R中的aid字段等于P中的aid字段,并且以下之一为真:
l R中的sspRange字段表示为all;
R中的sspRange字段表示为bitmapSspRange,且对于R中的sspBitmask中每个被设置为1的比特
位,P中sspBitmask的相同比特位也被设置为1,且P的sspValue中相同位置的值与R的ssp﹘
Value中对应位置的信息相同。
l
6.2.2.30 验证密钥指示
定义类型:VerificationKeyIndicator
结构:
VerificationKeyIndicator ::= CHOICE {
verificationKey PublicVerificationKey,
reconstructionValue EccP256CurvePoint,
…
}
说明:该数据结构的内容取决于证书是隐式证书还是显式证书:
verificationKey 出现在显式证书中,它包含用于验证Certificate(证书)持有者所生成数字签名
的公钥;
—
reconstructionValue 出现在隐式证书中,它包含重构值,用于恢复隐式证书中指定的公钥。此处
使用国家密码主管部门批准使用的密钥重构算法。
—
6.2.2.31 验证公钥
定义类型:PublicVerificationKey
结构:
PublicVerificationKey ::= CHOICE {
ecsigSM2 EccP256CurvePoint,
…,
}
GB/T 37376—2024
18
说明:该数据结构表示公钥,并指定使用该公钥的算法。如果PublicVerificationKey 结构中含
EccP256CurvePoint,且选择x﹘only,则为无效。
6.3 ITS 证书撤销列表
6.3.1 ITS CRL 封装格式
定义类型:SecuredCrl
结构:
SecuredCrl ::= ITSSecData (WITH COMPONENTS {…,
content (WITH COMPONENTS {
signedData (WITH COMPONENTS {…,
tbsData (WITH COMPONENTS {
payload (WITH COMPONENTS {…,
data (WITH COMPONENTS {…,
content (WITH COMPONENTS {
unsecuredData (CONTAINING CrlContents)
})
})
}),
headerInfo (WITH COMPONENTS {…,
aid (CrlAid),
generationTime ABSENT,
expiryTime ABSENT,
generationLocation ABSENT,
p2pcdLearningRequest ABSENT,
missingCrlIdentifier ABSENT,
encryptionKey ABSENT
})
})
})
})
})
PduFunctionalType ::= INTEGER (0..255)
CrlAid ::= Aid(3628)
说明:ITS CRL 被定义为一个安全的封装消息,其内容字段的类型为已签名数据。签名CRL 中的签名数
据负载结构无范围数据extDataHash 字段,数据字段包含ITSSecData,其内容字段类型为UnsecuredData 数
据并包含签名内容。ITSSecData 及其他ITS CRL 安全封装相关数据结构应符合附录C 的要求。
6.3.2 ITS CRL 内容
定义类型:CrlContents
结构:
CrlContents ::= SEQUENCE {
version Uint8(2),
crlSeries CrlSeries,
GB/T 37376—2024
19
crlCraca HashedId8,
issueDate Time32,
nextCrl Time32,
priorityInfo CrlPriorityInfo,
typeSpecific CHOICE {
fullHashCrl ToBeSignedHashIdCrl,
deltaHashCrl ToBeSignedHashIdCrl,
fullLinkedCrl ToBeSignedLinkageValueCrl,
deltaLinkedCrl ToBeSignedLinkageValueCrl,
…
}
}
说明:该数据结构表示ITS CRL 的数据内容。
—version表示CRL的版本,在文件中此字段设置为2。
—crlSeries代表CRL所属的CRL系列。用于确定CRL中的撤销信息是否与特定证书相关。
crlCraca包含最终授权发布此CRL的CRACA证书的杂凑低八位位组,它用于确定CRL中的撤销
信息是否与特定证书相关;带有效签名的CRL,其crlCraca与服务特定权限中的associated﹘
Craca字段一致。HashedId8使用证书的所有字段经杂凑算法计算得到。
—
—issueDate表示CRL的发布时间。
nextCrl包含预期发出具有相同crlSeries和crlCraca的下一个CRL的时间;除非nextCrl严格位于is﹘
sueDate之后,否则CRL无效。此字段用于设置与(crlCraca,crlSeries)相关联的撤销信息的
预期更新时间。
—
priorityInfo所包含的信息可协助存储空间有限的设备确定保留撤销信息的优先顺序。typeSpecif﹘
ic包含CRL正文:
—
fullHashCrl包含一个完整的基于散列值的CRL,即所有包含指定的cracaId和crlSeries值的证
书、被撤销证书的杂凑、已被撤销的证书和尚未过期的证书的散列列表;
l
deltaHashCrl包含基于增量散列的CRL,即所有包含指定的cracaId和crlSeries值的证书、被撤
销证书的杂凑、自上一个包含指定cracaId和crlSeries值的CRL以来已被撤销的证书的散列列
表;
l
fullLinkedCrl包含一个完整的基于链接ID的CRL,即所有包含指定的cracaId和crlSeries值的证
书、被链接ID数据撤销的证书、已被撤销的证书、尚未过期的证书的个体和/或群组链接
数据的列表;
l
deltaLinkedCrl包含基于增量链接ID的CRL,即所有包含指定的cracaId和crlSeries值的证书、被
链接ID数据撤销的证书、自上一个包含指定cracaId和crlSeries值的CRL以来已被撤销的证书
的个体和/或群组链接数据的列表。
l
ITS CRL 示例见附录D。
6.3.3 优先级信息
定义类型:CrlPriorityInfo
结构:
CrlPriorityInfo ::= SEQUENCE {
priority Uint8 OPTIONAL,
…
}
GB/T 37376—2024
20
说明:该数据结构表示优先级信息,协助具有有限存储空间的设备确定要保留及丢弃的撤销信息。
priority 表示相对于为具有相同cracaId 和crlSeries 值的证书发布的其他CRL,本撤销信息的优先级。此
字段的值越高,表示该撤销信息的重要性越高。
6.3.4 撤销证书信息
定义类型:ToBeSignedHashIdCrl
结构:
ToBeSignedHashIdCrl ::= SEQUENCE {
crlSerial Uint32,
entries SequenceOfHashBasedRevocationInfo,
…
}
说明:该数据结构表示撤销证书的信息:
crlSerial是一个计数器,初始值为0,每次为指定的crlCraca和crlSeries值发出新的完整或增量
CRL时,该计数器递增1;
—
—entries(条目)包含各个撤销信息项。
6.3.5 基于杂凑的撤销信息
定义类型:HashBasedRevocationInfo
结构:
HashBasedRevocationInfo ::= SEQUENCE {
id H ashedId10,
expiry Time32,
…
}
SequenceOfHashBasedRevocationInfo ::= SEQUENCE OF HashBasedRevocationInfo
说明:该数据结构包含如下信息。
— id用于标识已撤销的证书。HashedId10使用证书的所有字段经杂凑算法计算得到。
—expiry为到期时间,根据该证书中有效期的开始和持续时间值计算得到。
6.3.6 撤销证书链接值信息
定义类型:ToBeSignedLinkageValueCrl
结构:
ToBeSignedLinkageValueCrl ::= SEQUENCE {
iRev I Value,
indexWithinI Uint8,
individual SequenceOfJMaxGroup OPTIONAL,
groups SequenceOfGroupCrlEntry OPTIONAL,
…,
groupsSingleSeed SequenceOfGroupSingleSeedCrlEntry OPTIONAL
} (WITH COMPONENTS {…, individual PRESENT} | WITH COMPONENTS {…, groups PRESENT})
说明:该数据结构包含如下信息。
iRev是基于链接值的撤销算法的一个输入,适用于indvidual、groups或groupsSingleSeed的链接
值撤销。
—
GB/T 37376—2024
21
indexWithinI是一个计数器。为特定的crlCraca、crlSeries和iRev值组合发出第一个CRL时,该
计数器被置为0,以后每次为同一crlCraca和crlSeries组合值发出新的完整或增量CRL且不更改
iRev时,计数器都增加1。
—
—individual包含个体关联数据。
—groups包含双种子群组链接数据,也即这些链接值都使用双种子算法推导得到。
—groupsSingleSeed包含单种子群组链接数据,也即这些链接值都使用单种子算法推导得到。
当使用群组链接值方式对证书进行批量撤销时,如果所有被撤销证书的链接值都是通过双种子
算法计算得到的,则出现groups字段,而groupsSingleSeed字段不呈现;如果所有被撤销证书的
链接值都是通过单种子算法计算得到的,则groups字段依然呈现,但其SEQUENCE的长度为
“0”。
—
6.3.7 撤销批次信息
定义类型:JMaxGroup
结构:
JMaxGroup ::= SEQUENCE {
jMax Uint8,
contents SequenceOfLAGroup,
…
}
SequenceOfJMaxGroup ::= SEQUENCE OF JMaxGroup
说明:该数据结构包含如下信息:
— jMax用于基于链接值的撤销算法,此值适用于contents中包含的所有撤销信息;
—contents包含个体链接数据。
6.3.8 链接机构信息
定义类型:LAGroup
结构:
LAGroup ::= SEQUENCE {
la1Id LaId,
la2Id LaId,
contents SequenceOfIMaxGroup,
…
}
SequenceOfLAGroup ::= SEQUENCE OF LAGroup
说明:该数据结构包含如下信息。
对于双种子链接值计算算法,la1Id作为LinkageAuthorityIdentifier1参数用于基于链接值的撤销算
法;对于单种子链接值计算算法,la1Id作为LinkageAuthorityIdentifier参数用于基于链接值的撤
销算法。la1Id适用于contents中包含的所有撤销信息。
—
对于双种子链接值计算算法,la2Id作为LinkageAuthorityIdentifier2参数用于基于链接值的撤销算
法,此值适用于contents中包含的所有撤销信息;对于单种子链接值计算算法,la2Id无意义。
—
—contents包含个体链接数据。
6.3.9 撤销总数信息
定义类型:IMaxGroup
GB/T 37376—2024
22
结构:
IMaxGroup ::= SEQUENCE {
iMax Uint16,
contents SequenceOfIndividualRevocation,
…,
singleSeeds SequenceOfLinkageSeed
}
SequenceOfIMaxGroup ::= SEQUENCE OF IMaxGroup
说明:该数据结构包含如下信息。
iMax表示对于Contents或singleSeeds中的条目。当iCert大于 iMax时不再计算撤销信息;iMax不
直接用于计算链接值,但用于确定何时可以安全删除撤销信息。
—
—contents包含双种子个体链接数据,个体链接值通过双种子算法推导得到。
—singleSeeds包含单种子个体链接数据,个体链接值通过单种子算法推导得到。
6.3.10 个体链接数据
定义类型:IndividualRevocation
结构:
IndividualRevocation ::= SEQUENCE {
linkageSeed1 LinkageSeed,
linkageSeed2 LinkageSeed,
…
}
SequenceOfIndividualRevocation ::= SEQUENCE OF IndividualRevocation
说明:该数据结构包含如下信息:
— linkageSeed1作为LinkageSeed 1参数用于基于双种子链接值的撤销算法;
—linkageSeed2作为LinkageSeed 2参数用于基于双种子链接值的撤销算法。
6.3.11 双链接机构CRL 信息
定义类型:为GroupCrlEntry
结构:
GroupCrlEntry ::= SEQUENCE {
iMax Uint16,
la1Id LaId,
linkageSeed1 LinkageSeed,
la2Id LaId,
linkageSeed2 LinkageSeed,
…
}
SequenceOfGroupCrlEntry ::= SEQUENCE OF GroupCrlEntry
说明:该数据结构包含如下信息:
— iMax表示对于这些证书当iCert 大于 iMax时不再计算撤销信息;
—la1Id作为LinkageAuthorityIdentifier1参数用于基于双种子链接值的撤销算法;
—linkageSeed1作为LinkageSeed 1参数用于基于双种子链接值的撤销算法;
—la2Id作为LinkageAuthorityIdentifier2参数用于基于双种子链接值的撤销算法;
GB/T 37376—2024
23
—linkageSeed2作为LinkageSeed 2参数用于基于双种子链接值的撤销算法。
6.3.12 单链接机构CRL 信息
定义类型:GroupSingleSeedCrlEntry
结构:
GroupSingleSeedCrlEntry ::= SEQUENCE {
iMax Uint16,
laId LaId,
linkageSeed LinkageSeed
}
SequenceOfGroupSingleSeedCrlEntry ::= SEQUENCE OF GroupSingleSeedCrlEntry
说明:该数据结构包含如下信息:
— iMax表示对于这些证书当iCert 大于 iMax时不再计算撤销信息;
—laId作为LinkageAuthorityIdentifier参数用于基于单种子链接值的撤销算法;
—linkageSeed作为LinkageSeed参数用于基于单种子链接值的撤销算法。
基于单种子链接值生成算法、证书撤销验证算法应按YD/T 3957—2021 中附录I 的规定进行计算。
6.3.13 链接机构标识
定义类型:LaId
结构:LaId ::= OCTET STRING (SIZE(2))
说明:该数据结构包含LinkageAuthorityIdentifier 参数,用于基于链接值的撤销算法。
6.3.14 链接种子
定义类型:LinkageSeed
结构:
LinkageSeed ::= OCTET STRING (SIZE(16))
SequenceOfLinkageSeed ::= SEQUENCE OF LinkageSeed
说明:该数据结构包含链接种子值,用于基于链接值的撤销算法。
GB/T 37376—2024
24
附 录 A
(规范性)
签名运算过程
A.1 基本要求
SM2 数字签名算法应符合GB/T 32918.2 的规定。
SM2 是一种椭圆曲线密码学算法,只与单个特定的256 位椭圆曲线相关联;与SM2 相关联的标识符
不用额外的曲线表示。
SM2 的签名格式用整数表示。SM2 通过将身份字符串添加到要散列的消息前来命名散列函数,该
身份字符串是:
ZA= HASH(ENTLA||IDA||a||b||xG||yG||xA||yA)
其中:
a) ENTLA 是由IDA长度转换而成的2个八位位组字符,值为IDA的有效比特数;
b) IDA 是发送方的ID;
c) a 和b是SM2椭圆曲线的方程参数;
d) xG和yG 是SM2基点的 x和y坐标;
e) xA和yA是验签公钥的x和y坐标。
IDA 为签发者正在使用证书的32 字节杂凑值,即IDA=HashedId32(Certificate) 并按GB/T 32918.1 进
行比特串到八位位组串的转换,ENTLA 是2 个八位位组(0x01,0x00)。当签发的证书为自签名证书
时,IDA 为16 个八位位组(0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x31,0x32,0x33,
0x34,0x35,0x36,0x37,0 x 3 8 ),并按GB/T 32918.1 的要求进行整数到八位位组串的转换,
ENTLA 是2 个八位位组(0x00,0x80)。
A.2 签名和验签操作的预处理
对数据进行签名或验签时的杂凑处理规则为:
签名或验签过程使用身份字符串ZA和待签名数据作为输入、并在内部创建级联和计算散列值,
杂凑算法为SM3;
a)
b) 签名或验签过程中输入的消息值为:
HASH(ZA||Data input)
其中:
1) Data input为待签名的数据;
2) ZA为按照A.1中方法计算的结果。
GB/T 37376—2024
25
附 录 B
(资料性)
ITS 证书示例
B.1 显式证书
B.1.1 证书数据编码
以下数据是ITS 显式证书的一个COER 编码示例:
80020083 08E85160 E2D179D5 7B508000 00ABC603 2FBE12BD CCD3B679 D57B0014
246BAE1C 83092B83 01018000 9C010800 020E2000 016F0001 70000171 00017200
020E2100 020E2800 020E2D80 80825B86 DB0E758D C19D4609 B0ED737B AA25C0FB
4129BD04 E052D2AC B3BC6ADF 654C8025 A52568E2 C101E97D 47E14144 D125C6C9
0725465A 8CAC008A 50E2500F 46FAE835 44894B63 4FEF0F5B 81985956 1A9E1E5E
77FB3BBA 936239FD 2B0D197A A1FEDC
B.1.2 证书数据解析
对应于B.1.1 数据的ITS 显式证书解析见表B.1 所示。
表B.1 ITS 显式证书数据解析
域值描述
version 2 版本号
type explicit 证书类型
issuer — 签发者标识
SM3AndDigest E85160E2D179D57B
SM3算法签发者
标识
toBeSigned — 待签名内容
id — 证书标识
linkageData — 链接信息
iCert 171 i周期
linkage﹘value C6032FBE12BDCCD3B6 链接值
cracaId 79D57B CRACA证书Id
crlSeries 20 CRL系列号
validityPeriod — 证书有效期
start 611036700 开始时间
duration — 持续时间
minutes 2347 分钟
region — 证书的有效区域
identifiedRegion — 已识别区域
GB/T 37376—2024
26
表B.1 ITS 显式证书数据解析(续)
域值描述
countryOnly 156 国家标识
assuranceLevel —
证书持有者保证
级别
appPermissions — 证书的应用权限
aid 3616 应用标识
aid 111 应用标识
aid 112 应用标识
aid 113 应用标识
aid 114 应用标识
aid 3617 应用标识
aid 3624 应用标识
aid 3629 应用标识
certIssuePermissions — 证书的签发权限
certRequestPermissions — 证书的请求权限
canRequestRollover —
请求同权限证书
的标识
encryptionKey — 加密用公钥
verifyKeyIndicator — 验证密钥指示
verificationKey — 验证公钥
ecsigSM2 —
SM2算法的签名
公钥
compressed﹘y﹘0
5B86DB0E758DC19D4609B0ED737BAA25C0FB4129BD04E052D2ACB3BC6
ADF654C
压缩公钥
signature — 签名值
SM2Signature — SM2算法签名值
rSig
25A52568E2C101E97D47E14144D125C6C90725465A8CAC008A50E2500F46F
AE8
—
sSig
3544894B634FEF0F5B819859561A9E1E5E77FB3BBA936239FD2B0D197AA1
FEDC
—
B.2 隐式证书
B.2.1 证书数据编码
以下数据是ITS 隐式证书的一个COER 编码示例:
00020183 089B6816 B9FDA2D6 DA508000 007B9B68 16B9FDA2 D6DAAAC7 FC740001
246BE066 8400A983 01018000 9C010400 016F0001 70000171 00017281 83010203
04050607 08010203 04050607 08010203 04050607 08010203 04050607 08
GB/T 37376—2024
27
B.2.2 证书数据解析
对应于B.2.1 数据的ITS 隐式证书解析见表B.2 所示。
表B.2 ITS 隐式证书数据解析
域值描述
version 2 版本号
type implicit 证书类型
issuer — 签发者标识
SM3AndDigest 9B6816B9FDA2D6DA
SM3算法签发者
标识
toBeSigned — 待签名内容
id — 证书标识
linkageData — 链接信息
iCert 123 i周期
linkage﹘value 9B6816B9FDA2D6DAAA 链接值
cracaId C7FC74 CRACA证书Id
crlSeries 1 CRL系列号
validityPeriod — 证书有效期
start 611049574 开始时间
duration — 持续时间
hours 169 小时
region — 证书的有效区域
identifiedRegion — 已识别区域
countryOnly 156 国家标识
assuranceLevel —
证书持有者保证
级别
appPermissions — 证书的应用权限
aid 111 应用标识
aid 112 应用标识
aid 113 应用标识
aid 114 应用标识
certIssuePermissions — 证书的签发权限
certRequestPermissions — 证书的请求权限
canRequestRollover —
请求同权限证书
的标识
encryptionKey — 加密用公钥
verifyKeyIndicator — 验证密钥指示
GB/T 37376—2024
28
表B.2 ITS 隐式证书数据解析(续)
域值描述
reconstructionValue — 重构值
compressed﹘y﹘1 0102030405060708010203040506070801020304050607080102030405060708
压缩公钥最低有
效位为1
GB/T 37376—2024
29
附 录 C
(规范性)
ITS CRL 安全封装相关数据结构
C.1 基本数据结构
C.1.1 安全消息
定义类型: ITSSecData
结构:
ITSSecData ::= SEQUENCE {
protocolVersion Uint8(2),
content ITSSecContent
}
说明:该数据类型用于包含本条中定义的其他数据类型。ITSSecData 中的字段具有以下含义。
— protocolVersion表示协议的当前版本。本文件定义的是版本2,用整数表示。
—content中包含ITSSecContent形式的内容。
C.1.2 安全消息内容
定义类型:ITSSecContent
结构:
ITSSecContent::= CHOICE {
unsecuredData Opaque,
signedData SignedData,
encryptedData EncryptedData,
signedCertificateRequest Opaque,
…
}
该数据结构中包含:
— unsecuredData表示用八位位组串表示的无安全处理数据;
—signedData表示按本文件进行了签名处理的数据;
—encryptedData表示按本文件进行了加密处理的数据;
—signedCertificateRequest表示证书请求。
C.1.3 签名数据
定义类型:SignedData
结构:
SignedData::= SEQUENCE {
hashId HashAlgorithm,
tbsData ToBeSignedData,
signer SignerIdentifier,
signature Signature
}
GB/T 37376—2024
30
说明:该数据结构中包含。
— hashId 表示签名和验签时、对消息进行散列处理所使用的杂凑算法。
—tbsData 包含散列后作为签名输入的数据。
—signer确定对数据进行签名时所使用的密钥材料和杂凑算法。
—signature 为数字签名。
如果signer选择self,则签名计算参数化如下:
• Data(数据)输入为tbsData字段的COER规范化编码;
• Verification type(验签类型)为self;
• Signer identifier(签名者标识符)为空字符串。
—
如果signer表示certificate或digest, 则签名计算参数化如下:
• Data(数据)输入为tbsData字段的COER规范化编码;
• Verification type(验签类型)为certificate;
• Signer identifier(签名者标识符)为用于验证SPDU的证书的COER编码。
—
C.1.4 待签名数据
定义类型:ToBeSignedData
结构:
ToBeSignedData::= SEQUENCE {
payload SignedDataPayload,
headerInfo HeaderInfo
}
说明:该数据结构包含生成或验证签名时要进行杂凑处理的数据:
— payload 包含调用实体所提供的数据;
—headerInfo包含插入的附加数据。
C.1.5 签名数据载荷
定义类型:SignedDataPayload
结构:
SignedDataPayload ::= SEQUENCE {
data ITSSecData OPTIONAL,
extDataHash HashedData OPTIONAL,
…
} (WITH COMPONENTS {…, data PRESENT} |
WITH COMPONENTS {…, extDataHash PRESENT})
说明:该数据结构包含ToBeSignedData 的数据载荷。此结构至少包含data 和extDataHash 中的一
个,有可能两者都包含。
— data(数据)表示在数据结构中明确传输的数据。
extDataHash (扩展数据杂凑)包含未在数据结构中显式传输的数据的杂凑值,并且数据结构
的创建者希望以安全方式将它绑定到签名。如果创建者想要表示某个大消息仍然有效,则使用
extDataHash字段发送包含该大消息散列值的SignedData,不重新发送消息 本身。
—
C.1.6 杂凑数据
定义类型:HashedData
结构:
GB/T 37376—2024
31
HashedData::= CHOICE {
sm3HashedData OCTET STRING (SIZE(32)),
…
}
说明:该数据结构中包含使用指定杂凑算法的某些数据的杂凑值。
C.1.7 头数据
定义类型:HeaderInfo
结构:
HeaderInfo::= SEQUENCE {
aid Aid,
generationTime Time64 OPTIONAL,
expiryTime Time64 OPTIONAL,
generationLocation ThreeDLocation OPTIONAL,
p2pcdLearningRequest HashedId3 OPTIONAL,
missingCrlIdentifier MissingCrlIdentifier OPTIONAL,
encryptionKey EncryptionKey OPTIONAL,
…,
inlineP2pcdRequest SequenceOfHashedId3 OPTIONAL,
requestedCertificate Certificate OPTIONAL,
pduFunctionalType PduFunctionalType OPTIONAL
}
该数据结构中包含如下信息。
— aid表示发送方宣称的与有效负载相关联的应用领域。
—generationTime表示生成数据结构的时间。
expiryTime(过期时间)如果存在,包含数据不再被视为有效的时间。如果generationTime和
expiryTime都存在,且generationTime不早于expiryTime,则签名的SPDU无效;
—
—generationLocation如果存在,包含生成签名的位置信息。
p2pcdLearningRequest如果存在,用于请求已获知标识符但不知道整个证书内容的证书,该信息
字段仅在inlineP2pcdRequest不存在时才出现。
—
—missingCrlIdentifier如果存在,被用于请求已知存在但尚未收到的CRL。
encryptionKey如果存在,表示用于加密后续通信的加密密钥,仅当包含此字段的SignedData已通
过某种方式安全加密时,才使用对称类型的encryptionKey字段。
—
inlineP2pcdRequest如果存在,用于请求未知的证书,该信息字段仅在p2pcdLearningRequest不存
在时才出现。
—
—requestedCertificate如果存在,用于按P2PCD(点对点证书分发)机制提供证书。
—pduFunctionalType如果存在,用于表示SPDU将由应用程序进程以外的进程使用。
C.2 其他数据结构
其他未定义数据结构应符合YD/T 3957—2021 的相关规定。
GB/T 37376—2024
32
附 录 D
(资料性)
ITS CRL 示例
D.1 基于杂凑的ITS CRL
D.1.1 CRL 数据编码
以下数据是基于杂凑的ITS CRL 内容的一个COER 编码示例:
020001EA 606A005C F0483724 02111424 021F2440 00800000 00000001 01009CE7
5B28A238 8E0BCDCC 312AD6CC
D.1.2 CRL 数据解析
对应于D.1.1 数据的ITSCRL 数据解析见表D.1 所示。
表D.1 基于杂凑的ITS CRL 数据解析
域值描述
version 2 版本号
crlSeries 1 CRL系列
crlCraca EA606A005CF04837 CRACA证书的HashId
issueDate 604115220 CRL发布时间
nextCrl 604118820 CRL下次发布时间
priorityInfo — 优先级信息
priority 0 优先级
typeSpecific — CRL正文
fullHashCrl — 全量散列值CRL
crlSerial 0 CRL序列,递增
entries — 撤销信息项
id 9CE75B28A2388E0BCDCC 已撤销证书HashedId10
expiry 824891084 到期时间
D.2 基于链接值的ITS CRL
D.2.1 CRL 数据编码
以下数据是基于链接值的ITS CRL 内容的一个COER 编码示例:
020014CB ACCA9FF5 07BBC024 0227F324 02360340 01824000 A3000101 00140101
00112211 22010180 00B10100 02078012 0101CD5B A1C62E70 EB2E8144 723595EF
D61E
D.2.2 CRL 数据解析
对应于D.2.1 数据的ITS CRL 内容解析见表D.2 所示。
GB/T 37376—2024
33
表D.2 基于链接值的ITS CRL 数据解析
域值描述
version 2 版本号
crlSeries 20 CRL系列
crlCraca CBACCA9FF507BBC0 CRACA证书的HashId
issueDate 604121075 CRL发布时间
nextCrl 604124675 CRL下次发布时间
priorityInfo — 优先级信息
priority 1 优先级
typeSpecific — CRL正文
fullLinkedCrl — 全量链接值CRL
iRev 163 周期i
indexWithinI 0 计数器
individual — 个体关联数据
jmax 20 此值适用于contents中包含的所有撤销信息
contents — 链接机构信息
la1Id 1122 LA1标识
la2Id 1122 LA2标识
contents — 个体链接数据
iMax 177 Contents或singleSeeds中的条目数目
contents — 双种子个体链接数据
singleSeeds CD5BA1C62E70EB2E8144723595EFD61E 单种子个体链接数据
GB/T 37376—2024
34
参 考 文 献
[1] GB/T 20839 智能运输系统 通用术语
[2] GB/T 35276 信息安全技术 SM2 密码算法使用规范
—
GB/T 37376—2024
35