asn.1学习以及相关资料收集

第一周学习

asn.1学习

asn.1介绍

ASN.1是一种形式化的符号,用于描述通过电信协议传输的数据,无论这些数据的语言实现和物理表示方式如何,无论其应用是复杂还是非常简单。
asn.1是一个标准,用于定义抽象数据类型规范的形式。
提供了一定数量的预定义基本类型,例如:

  • 整数(INTEGER)
  • 布尔(BOOLEAN)
  • 字符串(IA5String,UniversalString ...)
  • 位串(BIT STRING)
  • 等等

并可以定义构造的类型,例如:

  • 结构(SEQUENCE)
  • 列表(SEQUENCE OF)
  • 在类型之间选择(CHOICE)
  • 等等

ASN.1在证书中的应用

X.509标准定义了证书应该包含的内容,ASN.l标准可以用来描述X.509标准。换句话说就是ASN.1类似与伪代码,能够让人们更好地理解和组织X.509标准。
证书中有如下结构

Certificate ::= SEQUENCE 
{     
    tbsCertificate    TBSCertificate, 
    signatureAlgorithm    Algorithmidentifier, 
    signature    BIT STRING 
}
  • tbsCertificate:证书核心,包含了服务器实体和CA机构信息。
  • signatureAlgorithm:描述签名算法,用于对tbsCertificate的内容进行签名。
  • signature:签名的值。

接下来看TBSCertifcate结构:

TBSCertificate ::= SEQUENCE {
    version    [0] Version DEFAULT vl,
    serialNumber    CertificateSerialNumber,
    signature    Algorithmidentifier, 
    issuer    Name,
    validity    Validity, 
    subject    Name,
    subjectPublicKeyinfo    SubjectPublicKeyinfo, 
    issuerUniqueID    [1] IMPLICIT Uniqueidentifier OPTIONAL,
                        -- If present, version MUST be v2 or v3
    subjectUniqueID    [2] IMPLICIT Uniqueidentifier OPTIONAL,
                        -- If present, vers工on MUST be v2 or v3 
    extensions    [3] Extensions OPTIONAL
                    -- If present, version MUST be v3 --
}
  • version:version类型是Version,相当于一个枚举类型。值表示的是证书的版本号,目前有v1、v2、v3三个版本,证书叫校验方需要使用对应版本校验。
  • serialNumber:每个证书都有唯一的编号,对于不同的CA机构来说,编号是无法预测的,CertificateSerialNumber是一个整型类型。
  • signature:描述采用的签名算法。
  • issuer:代表 CA 机构的名称,值由国家、组织、子组织名组成。
  • validity:描述证书的有效期。
  • subject:代表服务器实体的名称,该组织向CA机构申请证书,其对应的Name类型和issuer的Name类型是一样的。
  • subjectPublicKeylnfo:包含服务器的公开密码算法和公钥值。
  • issuerUniquelD和subjectUniquelD:这两个分别代表CA机构和服务器实体的唯一编号,目前已经被相应的证书扩展替代。
  • extension:扩展是X.509 V3版本引入的,主要是为了扩展证书的含义,在不改变X.509版本的情况下,可以相对方便地增加证书新属性,新添加的扩展是否生效取决于证书校验方。

收集后续所用资料

《568262 HTTPS权威指南在服务器和Web应用上部署SSL&TLS和PKI》PDF
《深入浅出HTTPS从原理到实战》PDF+卫东
国际电联电信标准化部门官方网站
ITU标准文档X.680’s documentation
ASN1编码学习
ASN学习

原文地址:https://www.cnblogs.com/luoleqi/p/12721544.html