引言

ASN.1(Abstract Syntax Notation One,抽象语法记法1)是一种在计算机网络中为传输数据结构信息提供编码规则的标记语言,在商用密码技术、产品和服务中被广泛应用。商用密码应用安全性评估(以下简称“密评”)实施过程中,密评人员经常需要对基于ASN.1编码规则定义的X.509数字证书、密钥、密文、签名、电子签章等数据进行分析。本文简要介绍ASN.1的基本语法、编码规则和应用,给出对基于ASN.1编码的X.509数字证书数据、RSA/SM2公私钥数据、SM2签名/加密数据、安全电子签章数据等进行分析的内容和目的、思路和方法,希望为密评人员开展相关密评工作提供借鉴和参考。

ASN.1简介

ASN.1是ISO和ITU-T的联合标准,最初为1984年的CCITT X.409:1984的一部分。由于其广泛应用,1988年ASN.1移到独立标准X.208,1995年进行全面修订后变成X.680系列标准,最新可用为2021年的版本。

ASN.1作为描述结构化信息的标记语言,为计算机网络传输数据结构信息提供相应的编解码规则,其与平台和编程语言无关,允许用一致的方式从简单数据类型构造任意复杂的数据结构,适合表示现代通信应用中的那些复杂的、变化的及可扩展的数据结构。

ASN.1 语言规范分为两部分:语法规则和编码规则。语法规则从数据类型、内容顺序或结构等方面来描述消息的内容;编码规则说明如何对语法规则中定义的抽象值进行编码。ASN.1编码规则有基本编码规则(BER,Basic Encoding Rules)、正则编码规则(CER,Canonical Encoding Rules)、非典型编码规则(DER,Distinguished Encoding Rules)、紧缩编码规则(PER,Packed Encoding Rules)和XML编码规则(XER,XML Encoding Rules)。

ASN.1基本语法

ASN.1基本语法包括ASN.1词项、类型定义、子类型定义、赋值以及类型分类。ASN.1最基本的概念是类型和值,一种类型是一组值的集合(非空)。一个类型可以是简单类型也可以是构造类型,简单类型是ASN.1的基本组成部分,是“原子级”的类型,通常用来描述事物的单一属性。构造类型是由两种以上成分构成的类型。

关于ASN.1的高级特点(例如宏)以及更多细节,读者可查阅ITU-T相关标准进行深入了解。

ASN.1词项

ASN.1词项:

● 由字母开头;

● 由字母、数字、连字符(减号)组成;

● 不能以连字符结尾;

● 不能有两个连续的连字符在一块。

特别指出:

● 类型名由大写字母开头。

● 标识符由小写字母开头。

● ASN.1保留字全部由大写字母组成,例:SET、SEQUENCE等。

● 标记用方括号表示,通过给出它的类别和类别编号来说明,包括通用、应用、专用和上下文特定四种类别,例如[APPLICATION 0]。方括号中仅有数字为上下文特定类别,例如[0]、[1]等。

类型与赋值

01类型定义

语法:::=

示例:

02子类型定义

语法:::=()

示例:

03赋值

语法:::=

示例:

简单类型

ASN.1定义了包括布尔、整数、位串、字符串、八位位组等在内的多种简单类型,它们是构成复杂数据类型和值的基础。简单类型是“原子级”的类型。表1列举了一些简单类型。

表 1 简单类型

构造类型

除了简单类型,ASN.1还定义了构造类型,构造类型是通过基本类型的组合而形成的较复杂的数据结构。表 2列举了一些构造类型。

表 2 构造类型

ASN.1编码规则(BER、CER、DER)

ASN.1在商用密码中应用时,常见的编码规则有BER(基本编码规则)、CER(正则编码规则)、DER(非典型编码规则)。其中:BER(基本编码规则)是ASN.1中最早定义的编码规则,采用TLV三元组的编码形式。CER(正则编码规则)和DER(非典型编码规则)均是BER的变体,是在BER基础上增加了限制,适用于不同应用场景。

限于篇幅原因,本文不对BER、CER、DER等ASN.1编码规则进行展开介绍,后期将通过系列文章分别对BER、CER、DER等ASN.1编码规则进行详细介绍。

ASN.1编码在密码的应用

ASN.1编码在商用密码中的应用,包括但不限于X.509数字证书、公私钥格式、SM2数据格式、SM2数字信封以及安全电子签章等方面。本文主要对相关标准中定义的X.509数字证书、公私钥格式、SM2数据格式、SM2数字信封、安全电子签章的数据结构进行分析。

X.509数字证书

X.509数字证书的基本数据结构如下:

上述的证书数据结构由tbsCertificate、signatureAlgorithm和signatureValue三个域组成。这些域的含义如下:

● tbsCertificate域包含主体名称和颁发者名称、主体的公钥、证书有效期以及其他的相关信息。

● signatureAlgorithm域包含证书签发机构签发该证书所使用的密码算法的标识符。一个算法标识符的ASN.1结构如下:

算法标识符用来标识一个密码算法,其中OBJECT IDENTIFIER部分标识了具体的算法。其中可选参数的内容完全依赖于所标识的算法。该域的算法标识符必须与tbsCertificate中的signature标识的签名算法项相同。如果签名算法为SM2,无参数。

● signatureValue域包含了对tbsCertificate域进行数字签名的结果。采用ASN.1 DER编码的tbsCertificate作为数字签名的输入,而签名的结果则按照ASN.1编码成BIT STRING类型并保存在证书签名值域内。

tbsCertificate数据结构如下:

● 版本号(version)

其类型Version的ASN.1结构如下:

Version ::= INTEGER {v1(0),v2(1),v3(2)},到目前为止,证书格式的版本只有v1、v2、v3,分别用整数0、1、2表示。

● 证书序列号(serialNumber)

其类型CertificateSerialNumber的ASN.1结构如下:

CertificateSerialNumber::=INTEGER。

● 签名算法(signature)

签名算法(signature)给出了CA签发证书时所使用的数字签名算法,它的类型与signatureAlgorithm的类型相同,都为AlgorithmIdentifier。

● 颁发者(issuer)

本项标识了证书签名和证书颁发的实体,该项被定义为Name类型,Name描述了由一些属性组成的层次结构的名称,ASN.1结构如下:

● 有效期(validity)

证书的有效使用期包含起、止两个时间值,时间值可以使用UTCTime或者GeneralizedTime的形式表示,ASN.1结构如下:

● 主体(subject)

本项描述了与主体公钥项中的公钥相对应的实体。主体名称可以出现在主体项和/或主体替换名称扩展项中(subjectAltName)。其ASN.1结构参见颁发者项(issuer)。证书的签发者和证书主体用X.509 DN表示,DN是由RDN构成的序列,采用多个字段来标识一个实体。RDN用“属性类型=属性值”的形式表示。常用的属性类型名称和简写如下:

● 主体公钥信息(subjectPublicKeyInfo)

本项用来标识公钥和相应的公钥算法,ASN.1结构如下:

● 颁发者唯一标识符(issuerUniqueID)

证书签发者的唯一标识符,ASN.1结构如下:

UniqueIdentifier ::= BIT STRING

● 主体唯一标识符(subjectUniqueID)

证书主体的唯一标识符,ASN.1结构参见颁发者唯一标识符(issuerUniqueID)。

● 扩展项(extensions)

本项是一个或多个证书扩展的序列,ASN.1结构如下:

图1 X.509数字证书ASN.1结构示例

公私钥格式

公私钥格式在不同标准中有不同的定义,本节对RSA、SM2公私钥在不同标准中公私钥封装格式进行了梳理,关于RSA、SM2公私钥封装格式更多细节,读者可查阅PKCS#1、PKCS#8、GB/T 35275-2017、GB/T 35276-2017、SEC 1: Elliptic Curve Cryptography等标准进行深入了解。

01公钥格式

  • RSA公钥格式

(1)RSAPublicKey

PKCS#1: RSA Cryptography Specifications Version 2.1定义了一种RSA公钥格式,ASN.1定义为:

其中:

modulus 为模数n

publicExponent 为公钥指数e

图2 RSA公钥ASN.1结构示例(RSAPublicKey)

(2)SubjectPublicKeyInfo

RSA X.509数字证书中的公钥格式为SubjectPublicKeyInfo,ASN.1定义为:

其中:

algorithm为公钥算法标识

subjectPublicKey为公钥

图 3 RSA公钥ASN.1结构示例(SubjectPublicKeyInfo)

  • SM2公钥格式

(1)SM2PublicKey

GB/T 35276-2017《信息安全技术 SM2密码算法使用规范》定义了一种SM2公钥格式,ASN.1定义为:

SM2PublicKey为BIT STRING 类型,内容为04‖ X‖ Y,其中,X和Y分别标识公钥的x 分量和y分量,其长度各为256 位。

(2)SubjectPublicKeyInfo

GB/T 35275-2017《信息安全技术 SM2密码算法加密签名消息语法规范》定义了一种SM2公钥格式,ASN.1定义为:

其中:

algorithm为公钥算法标识

subjectPublicKey为公钥

图 4 SM2公钥ASN.1结构示例(SubjectPublicKeyInfo)

02私钥格式

  • RSA私钥格式

(1)RSAPrivateKey

PKCS#1: RSA Cryptography Specifications Version 2.1定义了一种RSA私钥格式,ASN.1定义为:

RSAPrivateKey结构中各项含义见表 3。

表3 RSAPrivateKey数据类型

图 5 RSA私钥ASN.1结构示例(RSAPrivateKey)

(2)PrivateKeyInfo

PKCS#8: Private-Key Information Syntax Standard定义了一种私钥信息的语法,可适用于RSA明文私钥格式,ASN.1定义为:

PrivateKeyInfo结构中各项含义见表4。

表4 PrivateKeyInfo数据类型

图 6 RSA私钥ASN.1结构示例(PrivateKeyInfo)

(3)EncryptedPrivateKeyInfo

PKCS#8: Private-Key Information Syntax Standard定义了一种加密私钥信息的语法,可适用于RSA密文私钥格式,ASN.1定义为:

EncryptedPrivateKeyInfo结构中各项含义见表5。

表5 EncryptedPrivateKeyInfo数据类型

图7 RSA私钥ASN.1结构示例(EncryptedPrivateKeyInfo)

  • SM2私钥格式

(1)SM2PrivateKey

GB/T 35276-2017《信息安全技术 SM2密码算法使用规范》定义了一种SM2私钥格式,ASN.1定义为:

SM2PrivateKey ::= INTEGER

(2)ECPrivateKey

GB/T 35275-2017《信息安全技术 SM2密码算法加密签名消息语法规范》定义了一种SM2私钥格式,ASN.1定义为:

ECPrivateKey结构中各项含义见表6。

表6 ECPrivateKey数据类型

图 8 SM2私钥ASN.1结构示例(ECPrivateKey

(3)PrivateKeyInfo

SM2私钥格式也可以为PKCS#8定义的PrivateKeyInfo,此时,PrivateKey 的值为ECPrivateKey。

图9 SM2私钥ASN.1结构示例(PrivateKeyInfo)

SM2数据格式

GB/T 35276-2017《信息安全技术 SM2密码算法使用规范》为SM2密码算法的使用制定了统一的数据格式和使用方法,本节介绍加密数据格式、签名数据格式和密钥对保护数据格式。SM2密钥数据格式已在上节(公私钥格式)中表述,在此不再赘述。

01加密数据格式

SM2算法加密后的数据格式的ASN.1定义为:

SM2Cipher结构中各项含义见表 7。

表7 SM2Cipher数据类型

图10 SM2密文ASN.1结构示例

02签名数据格式

SM2算法签名数据格式的ASN.1定义为:

SM2Signature结构中各项含义见表 8。

表8 SM2Signature数据类型

图11 SM2签名ASN.1结构示例

03密钥对保护数据格式

在SM2密钥对传递时,需要对SM2密钥对进行加密保护。具体保护方法为:

a) 产生一个对称密钥;

b) 按对称密码算法标识指定的算法对SM2 私钥进行加密,得到私钥的密文。若对称算法为分组算法,则其运算模式为ECB;

c) 使用外部SM2公钥加密对称密钥得到对称密钥密文;

d) 将私钥密文、对称密钥密文封装到密钥对保护数据中。

SM2 密钥对的保护数据格式的 ASN.1 定义为:

SM2EnvelopedKey结构中各项含义见表9。

表9 SM2EnvelopedKey数据类型

图12 SM2密钥对保护ASN.1结构示例

SM2消息数据封装-数字信封

GB/T 35275-2017《信息安全技术 SM2密码算法加密签名消息语法规范》中定义了6种消息数据封装类型,包括数据类型(Data)、签名数据类型(signedData)、数字信封数据类型(envelopedData)、签名及数字信封数据类型(signedAndEnvelopedData)、加密数据类型(encryptedData)、密钥协商类型(keyAgreementInfo)。本节选取数字信封数据类型(envelopedData),对其ASN.1结构进行介绍。

ContentInfo类型标明内容交换通用语法结构,内容交换的通用语法结构定义如下:

其中:

ContentType内容类型是一个对象标识符,数字信封数据类型的对象标识符为1.2.156.10197.6.1.4.2.3。

content为内容,可选。

数字信封envelopedData数据类型由加密数据和至少一个接收者的数据加密密钥的密文组成。其中,加密数据用数据加密密钥加密,数据加密密钥用接收者公钥加密。

envelopedData数据类型结构定义如下:

EnvelopedData结构中各项含义见表10。

表10 EnvelopedData数据类型

RecipientInfo结构中各项含义见表11。

表11 RecipientInfo数据类型

EncryptedContentInfo结构中各项含义见表12。

表12 EncryptedContentInfo数据类型

图13 数字信封ASN.1结构示例

安全电子签章

国内电子签章产品种类众多,应用范围广泛。本节参考GB/T38540-2020《信息安全技术 安全电子签章密码技术规范》,主要介绍基于ASN.1的电子印章数据格式、电子签章数据格式。

01电子印章数据格式

电子印章由印章信息、制章者证书、签名算法标识、签名值等部分组成。电子印章数据的ASN.1定义为:

SESeal结构中各项含义见表13。

表13 电子印章数据类型

其中,印章信息eSealInfo由印章头、印章标识、印章属性、印章图像数据、自定义数据等部分组成。印章信息eSealInfo的ASN.1定义如下:

SES_SealInfo结构中各项含义见表14。

表14 印章信息数据类型

其中,印章头由头标识、版本号和厂商标识等组成。印章头的ASN.1定义为:

SES_Header结构中各项含义见表15。

表15 印章头数据类型

印章属性由印章类型、印章名称、签章者证书信息类型、签章者证书信息列表、制作时间、有效期起始时间、有效期终止时间等部分组成。印章属性的ASN.1定义为:

SES_ESPropertyInfo结构中各项含义见表 16。

表16 印章属性数据类型

签章者证书信息列表的ASN.1定义为:

其中:

CertInfoList为签章者证书

CertDigestList为签章者证书杂凑值

其中:

ObjType为自定义类型

CertDigestValue为证书杂凑值

印章图像数据由图像类型、图像数据、图像显示宽度和图像显示高度等部分组成。印章图像数据的ASN.1定义为:

SES_ESPictrueInfo结构中各项含义见表 17。

表17 印章图像数据类型

自定义数据包含一系列自定义属性字段,可用于支持电子印章扩展特性,其ASN.1定义为:

ExtData结构中各项含义见表18。

表18 自定义属性字段数据类型

02电子签章数据格式

电子签章数据由签章信息、签章者证书、签章算法标识、签名值、时间戳等组成。电子签章数据的ASN.1定义为:

SES_Signature结构中各项含义见表 19。

表19 电子签章数据类型

其中,签章信息由版本号、电子印章、签章时间、原文杂凑值、自定义数据等组成。签章信息的ASN.1定义为:

TBS_Sign结构中各项含义见表20。

表20 签章信息数据类型

图14 电子签章ASN.1结构示例

密评中对基于ASN.1编码的几类数据分析

密评实施过程中,常常需要对采集的数据包、协议报文、数字证书等数据进行密码应用安全性分析研判。其中很多数据的编码都基于ASN.1实现,本章重点介绍对密评过程中采集的基于ASN.1编码的X.509数字证书数据、RSA/SM2公私钥数据、SM2签名/加密数据、安全电子签章数据等进行分析的内容和目的、思路和方法。

X.509数字证书数据分析

分析内容和目的:针对常见的SSL、IPSec协议报文、数据库中的X.509数字证书的类型、颁发者、使用者、有效期、签名算法、签名值等数据进行分析,检验其合规性。

分析思路和方法:

(1)结合X.509数字证书类型,并依据相关标准,查阅X.509数字证书在相关标准定义的ASN.1结构以及字段的描述,RSA数字证书可参考ITU-T X.509,SM2数字证书可参考GM/T 0015-2012《基于SM2密码算法的数字证书格式规范》。

(2)使用ASN.1解码工具打开X.509数字证书数据。例如,使用Asn1View打开X.509数字证书数据,可直观展示X.509数字证书的字段内容,Asn1View工具如图15所示。

图15 Asn1View工具

(3)查看并分析证书关键字段信息,包括证书颁发者、证书使用者、证书有效期、证书签名算法、证书签名等字段。核查证书颁发者字段,确认签发该证书的CA机构信息;核查证书使用者字段,确认证书的使用主体;核查证书有效期字段,确认证书是否过期;核查证书签名算法字段,确认上级CA签名使用的算法;核查证书签名值,确认上级CA签名的签名值。X.509数字证书ASN.1结构示例如下所示。

图16 证书颁发者

图17 证书使用者

图18 证书有效期(起始日期)

图19 证书有效期(终止日期)

图20 证书签名算法

证书签名算法对象标识符为1.2.156.10197.1.501,由GM/T 0006-2012《密码应用标识规范》可知为基于SM2算法和SM3算法的签名。

图21 对象标识符

图22 证书签名值

证书签名格式为BIT STRING,从BIT STRING的Value中可提取出SM2签名数据。

若获取了证书链,可以提取使用者证书、CA证书的证书签名,借助算法校验工具,可对证书链签名值的正确性进行验证。

证书签名格式为BIT STRING,从BIT STRING的Value中可提取出SM2签名数据。

(4)若获取了证书链,可以提取使用者证书、CA证书的证书签名,借助算法校验工具,可对证书链签名值的正确性进行验证。

RSA/SM2公私钥数据分析

分析内容和目的:针对应用系统客户端或服务端存储的RSA、SM2公私钥数据,核查私钥是否为明文存储、验证密钥对匹配性等。

分析思路和方法:

(1)查阅RSA、SM2公私钥格式在相关标准定义的ASN.1结构以及字段描述,RSA公私钥格式可参考PKCS#1、PKCS#8,SM2公私钥格式可参考GB/T 35275-2017《信息安全技术 SM2密码算法加密签名消息语法规范》、GB/T 35276-2017《信息安全技术 SM2密码算法使用规范》、SEC 1: Elliptic Curve Cryptography、PKCS#8。

(2)分析公私钥的结构,若私钥为明文,可借助算法校验工具验证密钥对的匹配性。RSA、SM2公私钥数据ASN.1结构示例如下所示。

图23 RSA公钥算法对象标识符

如图23所示,由前文所介绍公钥格式的ASN.1结构和算法标识的对象标识符(1.2.840.113549.1.1.1)可知,为RSA公钥且格式为SubjectPublicKeyInfo。

图24 RSA公钥

如图24所示,RSA公钥为BIT STRING,BIT STRING的Value为RSAPublicKey。

图25 RSA私钥算法对象标识符

如图25所示,由前文所介绍私钥格式的ASN.1结构和算法标识的对象标识符(1.2.840.113549.1.1.1)可知,为RSA私钥且格式为PrivateKeyInfo。

图26 RSA私钥

如图26所示,RSA私钥为OCTET STRING,OCTET STRING的Value为RSAPrivateKey。

图27 SM2公钥算法对象标识符

如图27所示,由前文所介绍公钥格式的ASN.1结构和算法标识的对象标识符(1.2.156.10197.1.301)可知,为SM2公钥且格式为SubjectPublicKeyInfo。

图28 SM2公钥

图29 SM2私钥算法标识

如图29所示,由前文所介绍私钥格式的ASN.1结构和算法标识的对象标识符(1.2.156.10197.1.301)可知,为SM2私钥且格式为PrivateKeyInfo。

图30 SM2私钥

如图30所示,SM2私钥为OCTET STRING,OCTET STRING的Value为ECPrivateKey。

(3)若私钥为密文,在条件允许的情况下,可借助算法校验工具对私钥解密并验证密钥对的匹配性。

注意事项:

由于密码产品版本、互联互通要求等原因,实际中可能存在未遵循相关标准对RSA或SM2密钥进行ASN.1编码封装,而是将RSA或SM2密钥的各部分直接进行拼接,密评人员在密评实施中应予以关注。

GB/T 35275-2017《信息安全技术 SM2密码算法加密签名消息语法规范》与SEC 1: Elliptic Curve Cryptography定义的ECPrivateKey结构上有部分差异,其中,私钥字段在GB/T 35275-2017中定义为SM2PrivateKey,在SEC 1: Elliptic Curve Cryptography中定义为OCTET STRING;公钥字段在GB/T 35275-2017中未标明可选,SEC 1: Elliptic Curve Cryptography中为可选(OPTIONAL),如图 31、图 32所示。在实际应用中遇到SM2私钥ASN.1结构符合SEC 1: Elliptic Curve Cryptography定义的ECPrivateKey的居多。

图31 GB/T 35275-2017定义的ECPrivateKey

图32 SEC 1: Elliptic Curve Cryptography定义的ECPrivateKey

SM2签名/加密数据分析

数据分析内容和目的:

针对SM2签名、加密等数据进行分析,验证其正确性。

分析思路和方法:

(1)查阅SM2签名、加密数据格式在相关标准定义的ASN.1结构以及字段描述,可参考GB/T 35276—2017《信息安全技术 SM2密码算法使用规范》。

若SM2签名、加密数据为十六进制字符串,首先将十六进制字符串通过编码转换工具转换为Base64编码,再使用ASN.1解码工具打开。也可根据ASN.1编码规则将十六进制字符串直接手动解析。初步判断签名值或密文值是否符合相关标准定义的ASN.1结构。其中,SM2Cipher的Hash长度为256位,CipherText长度和原文长度相同,SM2密文、签名示例如下所示。

表21 示例数据

图33 SM2密文-HASH

由图33可知,ASN.1结构符合SM2加密数据格式,即SM2Cipher。哈希结果为256位。

图34 SM2密文-CipherText

由图34可知,CipherText长度和原文长度相同,均为16字节。

图35 SM2签名-R

由图35可知,ASN.1结构符合SM2签名数据格式,即SM2Signature。

图36 SM2签名-S

(3)在条件允许的情况下,可借助算法校验工具,对SM2签名、加密数据正确性进行验证。

注意事项:

由于密码产品版本、互联互通要求等原因,实际应用中可能存在未遵循相关标准将SM2签名、加密数据进行ASN.1编码封装,而是将签名或加密结果的各部分直接进行拼接,密评人员在密评实施中应予以关注。

安全电子签章数据分析

数据分析内容和目的:

针对安全电子签章数据进行分析,验证电子签章、电子印章数据格式的正确性、签名值的正确性、证书有效性。

分析思路和方法:

(1)查阅安全电子签章在相关标准定义的ASN.1结构以及字段的描述,可参考GB∕T 38540-2020《信息安全技术安全电子签章密码技术规范》。

(2)对于使用安全电子签章技术的电子文件,例如电子发票,其文件后缀名一般为.ofd,可通过7zip解压工具打开,查看文件内部结构,其中SignedValue.dat文件为电子签章文件。

图37 SignedValue.dat文件

(3)使用ASN.1解码工具打开电子签章文件。例如,使用Asn1View打开电子签章文件,可直观展示电子签章文件的字段内容。

图38 电子签章ASN.1结构示例

(4)查看并分析电子签章关键字段信息,包括签章信息、签章者证书、签名算法标识、签名值、电子印章等字段。可根据GB∕T 38540-2020《信息安全技术安全电子签章密码技术规范》,选取电子签章和电子印章验证流程中的关键步骤进行验证。电子签章ASN.1结构示例如下。

图39 签章信息-电子签章版本号

图40 签章信息-电子印章

图41 签章信息-签章时间

图42 签章信息-原文杂凑值

图43 签章信息-原文数据的属性

图44 签章者证书

图45 签名算法标识

图46 签名值

结束语

本文在简要介绍ASN.1基本语法、编码规则的基础上,梳理了ASN.1编码在商用密码中的应用,结合密评工作实践,简述了密评中对基于ASN.1编码的几类数据的分析内容和目的、分析思路和方法,希望能为密评人员开展相关密评工作提供借鉴和参考。

由于作者认识的局限性,文中不妥和错漏之处在所难免,恳请读者提出宝贵意见。

参考文献

[1] GB/T 16262.1-2006,信息技术抽象语法记法一(ASN.1)第1部分:基本记法规范[S].

[2] GB/T 16262.2-2006,信息技术抽象语法记法一(ASN.1)第2部分:信息客体规范[S].

[3] GB/T 16262.3-2006,信息技术抽象语法记法一(ASN.1)第3部分:约束规范[S].

[4] GB/T 16262.4-2006,信息技术抽象语法记法一(ASN.1)第4部分:ASN.1规范的参数化[S].

[5] GB/T 16263.1-2006,信息技术 ASN.1 编码规则第1部分:基本编码规则(BER)、正则编码规则(CER)和非典型编码规则(DER)规范[S].

[6] GB/T 35275—2017, 信息安全技术 SM2密码算法加密签名消息语法规范[S].

[7] GB/T 35276—2017, 信息安全技术 SM2密码算法使用规范[S].

[8] Recommendation ITU-T X.680,Information technology–Abstract Syntax Notation One (ASN.1):Specification of basic notation[S].

[9] Recommendation ITU-T X.690,Information technology–ASN.1 encoding rules:Specification of Basic Encoding Rules (BER), Canonical Encoding Rules (CER) and Distinguished Encoding Rules (DER)[S].

[10] Public-Key Cryptography Standards (PKCS) #1, RSA Cryptography Specifications Version 2.1[S].

[11] Public-Key Cryptography Standards (PKCS) #8, Private-Key Information Syntax Specification Version 1.2[S].

[12] SEC 1, Elliptic Curve Cryptography Version 2.0[S].

[13] 唐林,基于ASN.1的智能网编解码技术研究(硕士学位论文)[D].成都:电子科技大学,2007.

[14] 李贺禄,ASN.1通用编解码器的设计与应用研究(硕士学位论文)[D].合肥:中国科技技术大学,2003.

[15] Olivier Dubuisson,ASN.1 Communication between Heterogeneous Systems[M].San Francisco:Morgan Kaufmann,2000.

[16] 电子产品世界, X.509证书的编码及解析:程序解析以及winhex模板解析[EB/OL].http://www.eepw.com.cn/zhuanlan/201219.html,2021-08-09.

作者:张帆

审核:吴冬宇

编辑:林青

声明:本文来自极客安全,版权归作者所有。文章内容仅代表作者独立观点,不代表安全内参立场,转载目的在于传递更多信息。如有侵权,请联系 anquanneican@163.com。