ASN.1
ASN.1 是什么?
ASN.1抽象语法标记一号(Abstract Syntax Notation One),由 ITU-T X.680 系列定义,用与编程语言无关的方式描述密码学和电信中的数据结构。
ASN.1 是 ITU-T X.680 和 X.681 定义的一种形式化标记,用于描述整数、序列、集合、选择和标签类型等结构化数据。配套的 X.690 系列规定了线上编码方式:BER(基本)、CER、DER(可区分,在 PKI 中无处不在)以及 PER(压缩)。ASN.1 是 X.509 证书、CMS/PKCS#7、PKCS#12、LDAP、Kerberos、SNMP 以及众多电信协议(3GPP 信令、GSM MAP、S1AP 等)的基础。由于 DER 提供唯一的规范化编码,基于 ASN.1 结构计算的签名与哈希具有可重现性。ASN.1 解析器的缺陷曾导致著名漏洞,例如 CVE-2016-2108(OpenSSL)和 CVE-2021-3711,因此使用安全解析器并严格遵循 DER 至关重要。
● 示例
- 01
X.509 证书是由 TBSCertificate、signatureAlgorithm 和 signatureValue 组成的 SEQUENCE,采用 DER 编码。
- 02
3GPP S1AP 消息在 eNodeB 与 MME 之间传递,用 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 是 ITU-T X.680 和 X.681 定义的一种形式化标记,用于描述整数、序列、集合、选择和标签类型等结构化数据。配套的 X.690 系列规定了线上编码方式:BER(基本)、CER、DER(可区分,在 PKI 中无处不在)以及 PER(压缩)。ASN.1 是 X.509 证书、CMS/PKCS#7、PKCS#12、LDAP、Kerberos、SNMP 以及众多电信协议(3GPP 信令、GSM MAP、S1AP 等)的基础。由于 DER 提供唯一的规范化编码,基于 ASN.1 结构计算的签名与哈希具有可重现性。ASN.1 解析器的缺陷曾导致著名漏洞,例如 CVE-2016-2108(OpenSSL)和 CVE-2021-3711,因此使用安全解析器并严格遵循 DER 至关重要。
如何防御 ASN.1?
针对 ASN.1 的防御通常结合技术控制与运营实践,详见上方完整定义。
ASN.1 还有哪些其他名称?
常见的别称包括: 抽象语法标记一号, X.680。
● 相关术语
- cryptography№ 831
PKCS#7
用于打包签名和/或加密数据的二进制格式,IETF 在 RFC 5652 中将其标准化为加密消息语法(CMS)。
- cryptography№ 830
PKCS#12
由 RFC 7292 标准化的口令保护文件格式(.pfx / .p12),将私钥与其证书链打包在一起。
- cryptography№ 811
PEM 格式
RFC 7468 定义的密码学对象(密钥、证书、CRL)文本编码,将 Base64 编码的 DER 包裹在 BEGIN 与 END 头部之间。
- identity-access№ 611
LDAP
轻量目录访问协议,IETF 制定的标准,用于通过 TCP/IP 查询和修改分层目录服务,通常使用 389 端口或 636 端口(配合 TLS)。
- identity-access№ 584
Kerberos
基于票据的网络认证协议,利用对称加密和受信的密钥分发中心实现跨服务的安全单点登录。