6.证书

公钥基础设施——Public Key Infrastructure,PKI。

公钥证书——Pubilc-Key Certificate,PKC,也称为证书——certificate。

由认证机构(Certification Authority 、Certifying Authority——CA)施加数字签名。

认证机构就是能够认定【公钥确实属于此人】并能够生成数字签名的个人或组织。

认证机构必须是可信的。

6.证书证书生成步骤实际生成一张证书证书标准规范公钥基础设施(PKI)PKI组成要素认证机构的工作生成密钥对注册证书作废证书与CRL证书的层级结构对证书的攻击小结

证书生成步骤

image-20250427164625721

 

  1. Bob生成密钥对

    密钥对可以由Bob自己生成,也可以由认证机构代为生成。私钥需要妥善保管。

  2. Bob在认证机构Trent注册自己的公钥

    Bob将公钥发送给认证机构Trent,Trent收到Bob的公钥后,会确认所收到的公钥是否是Bob本人所有。

    专栏:身份确认和认证业务准则

    认证机构确认【本人】身份的方法和认证机构的 认证业务准则 (Certification Practice Statement,CPS)的内容有关。如果认证机构提供的是测试用的服务,可能完全不会进行任何身份确认。如果是政府部门运营的认证机构,可能就需要根据法律规定来进行身份确认。如果是企业面向内部设立的认证机构,可能会给部门负责人打电话进行确认。

  3. 认证机构Trent用自己的私钥对Bob的公钥施加数字签名并生成证书

    Trent对Bob的公钥加上数字签名。Trent事先已经生成了密钥对。

  4. Alice得到带有认证机构Trent的数字签名的Bob的公钥(证书)

    Alice从Trent获取证书。证书中包含了Bob的公钥,并带有Trent对该公钥签署的数字签名。

  5. Alice使用认证机构Trent的公钥验证数字签名,确认Bob的公钥的合法性

    Alice使用认证机构Trent的公钥对证书中的数字签名进行验证。如果验证成功,就相当于确认了证书中所包含的公钥的确属于Bob。

    至此,Alice就得到了合法的Bob的公钥。

  6. Alice用Bob的公钥加密消息并发送给Bob

    Alice用Bob的公钥加密要发送的消息,然后将消息发送给Bob。

  7. Bob用自己的私钥解密密文得到Alice的消息

    Bob收到Alice发送的密文,然后用自己的私钥解密,这样就能够看到Alice的消息了。

以上步骤中,1到3步仅在注册新公钥时才会进行,并不是每次通信都需要。步骤4仅在Alice第一次用公钥密码向Bob发送消息时才需要进行,只要Alice将Bob的公钥保存到电脑中,在以后的通信中就可以直接使用了。

实际生成一张证书

证书标准规范

最广泛使用的是有ITU和ISO制定的X.509规范(RFC3280)。

ITU——International Telecommunication Union——国际电信联盟

ISO——International Organization for Standardization——国际标准化组织

X.509证书包含以下构成要素:

要素示例
证书序列号S/N: 23F1FD364C08...
证书颁发者Issuer:CN=Symantec Class 1 Individual SubScriber CA - G4, ...
公钥所有者Subject: ... aka; bobby@example.com
SHA-1 指纹sha1_fpr: 39:28:FE:1B...
MD5 指纹md5_fpr: 95:2B:83:B5...
证书IDcertid: 2BE81DBC...
有效期(起始时间)notBefore: 2015-06-12 00:00:00
有效期(结束时间)notAfter: 2015-07-07 23:59:59
散列算法hashAlgo:1.2.840.113549.1.1.5(sha1WithRSAEncryption)
密钥类型keyType: 2048 bit RSA
密钥IDsubjKeyId: EAD8D26....
密钥用途keyUsage: digitalSignature keyEncipherment

公钥基础设施(PKI)

Public-Key Infrastructure——公钥基础设施,是为了能够更有效地运用公钥而制定的一系列规范和规格的总称。

PKI组成要素

用户和认证机构不仅限于人,统称为 实体 (entitiy)。

实体就是进行证书和密钥相关处理的行为主体。

认证机构的工作

生成密钥对

密钥对有两种生成方式,一种是由PKI用户自行生成,一种是由认证机构生成。

如果认证机构生成用户密钥对,需要将私钥发送给用户,具体方法在RFC7292(PKCS#12:Personal Information Exchange Syntax V1.1)中进行了规定。

注册证书

申请证书时使用的规范是RFC2986(PKCS#10:Certification Request Syntax Specification Version 1.7)等定义的。

认证机构根据其认证业务准则(Certification Practice Statement,CPS)对用户的身份进行认证,并生成证书。

在生成证书时,需要使用认证机构的私钥来进行数字签名。

生成的证书格式是由X.509定义的。

作废证书与CRL

当用户的私钥丢失、被盗时,认证机构需要对证书进行 作废 (revoke)。其他情况也会需要作废证书,比如保管证书的人离职、名称变更导致和证书中记载的内容不一致等情况。

要作废证书,认证机构需要制作一张 证书作废清单 (Certificate Revocation List,CRL)。

CRL是认证机构宣布作废的证书一览表,具体来说,是一张已作废的证书序列号的清单,并由认证机构加上数字签名。证书序列号是认证机构在颁发证书时所赋予的编号,在证书中都有记载。

PKI用户需要从认证机构获取最新的CRL,并查询自己要用于验证签名(或用于加密)的公钥证书是否已经作废。此步骤非常重要。

检查证书是否有效,一般是由处理该证书的软件完成的,但有很多软件并没有及时更新CRL。

证书的层级结构

对于认证机构的公钥,可以由其他的认证机构施加数字签名,从而对认证机构的公钥进行验证,即,生成一张 认证机构的公钥证书

一个认证机构来验证另一个认证机构的公钥,这样的关系可以迭代数层。最顶端的机构一般称为 根CA (Root CA)。

根CA给自己颁发证书,这种对自己的公钥进行数字签名的行为称为 自签名 (self-signature)。

对证书的攻击

小结