从零学习 CA 系列 (三) -- ASN.1 基础

本文参考《PKI/CA 与数字证书技术大全》书籍,如有理解bug, 请大家指正。

ASN.1

目前北美、欧洲和日本等地使用的移动电话,都是基于TCAP消息协议的。TCAP消息协议中的消息是采用 ASN.1 描述的,使用了 BER 编码规范,共同实现了移动电话的呼叫。
后来制定的有关地对空和地对地等通信协议都使用 ASN.1 描述的,并采用 PER 编码规则。除此之外,ASN.1 和编码规则还被联邦快递用于大量的传输信息;还有很多大公司如 HP, IBM, SUN 等, 使用 ASN.1 描述其打印机打印业务管理的标准接口。有名的简单网络管理协议(SNMP) 就是用 ASN.1 对所有数据进行描述的。

ASN.1 是一种对分布计算机系统之间交换的数据消息进行抽象描述的规范化语言。

ASN.1 是一种国际标准,它为抽象数据结构的描述说明定义了一种记法。ASN.1 使用抽象描述法对各种编程语言定义的数据类型进行了重新定义,将所有数据分为两类:

  • 基础类型 整型、布尔类型、字符类型和比特串类型等原子类型
  • 结构类型 结构、链表和选择类型

通过 ASN.1 抽象定义后的数据类型几乎包括现实世界中存在的所有数据类型,具有相当的通用性。

ASN.1 编码规则

ASN.1 编码规则是把使用 ASN.1 语言说明的数据转化为一种标准格式的系列规则,同时,保证转换后的数据在任意操作系统中,只要使用相同编码规则的解码器就可以解码获得原始数据。

ASN.1 的标准化编码规则有如下几种:

  • BER ( Basic Encoding Rules)
    用于互联网管理的简单网络管理协议(SNMP), 互传电子邮件的消息处理服务(MHS),及用于控制计算机和电话交付信息使用的 TSAPI 等。
  • DER (Distinguished Encoding Rules)
    是 BER 的一种特殊形式,用于具有安全特性的应用系统,如涉及加密技术和要求编解码信息唯一性的系统,如电子商务等
  • PER (Packed Encoding Rules)
    最近制定的系列编码规则,使用有效的算法对数据编码,获得比DER更快更紧凑的数据,因此PER常常被应用于宽带及CPU饿死状态的应用系统,如空中交通管制和视听通信等领域
  • CER (Canonical Encoding Rules)
    是 BER 编码的另一种特殊形式,是对大数据实现编码,而在数据还未完全获得之前就可进行编码。但由于业界认定在安全传输中最好的编码是 DER 编码,所以CER未广泛使用。

X.500 协议

X.500 是国际电信联盟 (ITU-T) 定义的目录标准,它主要充当商业产品的一种模型。设计 X.500 的目的是 OSI 协议族,但是 TCP/IP 却成为了实际的网络协议,因此,如今大多数目录服务都以 X.500 为模型并设计用于在 TCP/IP 上运行。
X.500 是一个协议族,由一系列的概念和协议组成,包括:

  • x.501 模型定义,定义目录服务的基本模型和概念
  • x.509 认证框架,定义如何处理目录服务中的客户和服务认证
  • x.511 抽象服务定义,定义 x.500 提供的功能性服务
  • x.518 分布式操作过程定义,定义如何跨平台处理目录服务
  • x.519 协议规范, 定义了 x.500 协议,包括 DAP(Directory Access Protocol), DSP(Directory System Protocol), DOP(Directory Operator Protocal), DISP (Directory Information Shadowing Protocol)。
  • x.520 定义属性类型要求
  • x.521 定义对象类型
  • x.525 定义如何在目录服务器之间复制内容

DER 编码示例:X.501 Name 类型

如下图:

X.501 Name 类型

PKI 中证书,数字信封等均使用 ASN.1 类进行定义的,即使用 DER 规则进行编码的。

推荐阅读更多精彩内容