Skip to content
Vol. 1 · Ed. 2026
CyberGlossary
Entry № 076

ASN.1

审核人Cybersecurity entrepreneur & security researcher

ASN.1 是什么?

ASN.1抽象语法标记一号(Abstract Syntax Notation One):一项 ITU-T 标准(X.680 系列),用与编程语言无关的方式描述密码学和电信中使用的数据结构。


ASN.1(Abstract Syntax Notation One)是一种形式化标记,在 ITU-T X.680-X.681 中定义,用于描述结构化数据(整数、序列、集合、选择以及标签类型),并且独立于任何编程语言或 CPU。配套标准 X.690 定义了线上编码方式:BER(基本)、CER、DER(可区分),而 X.691 定义了 PER(压缩)。每个元素都是一个 标签-长度-值(TLV) 三元组,这正是为什么 X.509 证书本质上就是由 TBSCertificatesignatureAlgorithmsignatureValue 组成的 SEQUENCE

ASN.1 是 X.509/PKI、CMS/PKCS#7、PKCS#12、LDAP、Kerberos、SNMP 以及电信信令(3GPP S1AP/NGAP、GSM MAP)的基础。DER 对安全至关重要:它强制唯一的规范化编码(确定长度、最小整数表示、排序后的 SET OF),因此在 ASN.1 结构上计算的签名或哈希具有可重现性,无法被悄悄地重新编码。BER 的宽松性(不定长度、冗余标签)是 解析器差异(parser differentials) 和绕过签名手法的经典来源。

由于证书解析发生在身份验证 之前,ASN.1 解码器是高价值的攻击面。真实漏洞包括 CVE-2016-2108(OpenSSL 中 ANY 字段的"负零"内存损坏)、CVE-2021-3712(对非 NUL 结尾的 ASN1_STRING 的读越界,泄露密钥内存)以及 CVE-2022-0778(解析精心构造的证书时触发的无限循环)。防御措施:使用内存安全或经过模糊测试加固的解码器、强制严格 DER,并限制嵌套深度和长度。

flowchart LR
  S[ASN.1 schema in X.680] --> M[In-memory structure]
  M --> ENC{Encoding rules}
  ENC -->|DER canonical| D[Bytes for signing / PKI]
  ENC -->|BER permissive| B[Bytes - interop only]
  ENC -->|PER compact| P[Bytes for telecom links]
  D --> W[Wire / stored certificate]
  B --> W
  P --> W
  W --> DEC[TLV decoder]
  DEC --> V{Strict DER & bounds checks?}
  V -->|Yes| OK[Validated object]
  V -->|No| VULN[Parser differential / overflow / DoS]

示例

  1. 01

    X.509 证书是由 TBSCertificate、signatureAlgorithm 和 signatureValue 组成的 SEQUENCE,采用 DER 编码。

  2. 02

    eNodeB 与 MME 之间的 3GPP S1AP 消息用 ASN.1 描述,并以 PER 编码。

常见问题

ASN.1 是什么?

抽象语法标记一号(Abstract Syntax Notation One):一项 ITU-T 标准(X.680 系列),用与编程语言无关的方式描述密码学和电信中使用的数据结构。 它属于网络安全的 密码学 分类。

ASN.1 是什么意思?

抽象语法标记一号(Abstract Syntax Notation One):一项 ITU-T 标准(X.680 系列),用与编程语言无关的方式描述密码学和电信中使用的数据结构。

如何防御 ASN.1?

针对 ASN.1 的防御通常结合技术控制与运营实践,详见上方完整定义。

ASN.1 还有哪些其他名称?

常见的别称包括: 抽象语法标记一号, X.680。

相关术语