目录
10.1 本章学习的内容
10.2 证书
10.2.1 什么是证书
10.2.2 证书的应用场景
10.3 实际生成一张证书
10.4 公钥基础设施(PKI)
10.4.2 PKI的组成要素
10.4.3 认证机构的工作
10.5 对证书的攻击
10.1 本章学习的内容
无论是公钥密码还是数字签名,公钥都扮演了重要的角色。然而如果我们不能判断公钥是否合法,就有可能遭到中间人攻击。
10.2 证书
10.2.1 什么是证书
公钥证书(Public-Key Certificate,PKC),由认证机构(Certificate Authority,CA)施加数字签名,简称证书(Certificate)。
公钥证书里面包含有姓名、组织、邮箱等个人信息,以及属于此人的公钥,并由认证机构施加数字签名。
10.2.2 证书的应用场景
Alice利用认证机构Trent向Bob发送密文的示例
10.3 实际生成一张证书
感兴趣的自己去看书吧
- 赛门铁克的Digital ID免费试用服务
- 生成证书
- 显示证书
- 证书标准规范:使用最广泛的就是X.509规范。
X.509证书包含的构成要素:
证书序列号 | |
证书颁发者 | |
公钥所有者 | |
SHA-1指纹 | |
MD5指纹 | |
证书ID | |
有效期(起始时间) | |
有效期(结束时间) | |
散列算法 | |
密钥类型 | |
密钥ID | |
密钥用途 |
10.4 公钥基础设施(PKI)
10.4.1 什么是公钥基础设施
PKI只是一个总称,并非指某一个单独的规范或规格。例如:RSA公司的PKCS、互联网规范RFC中有很多与PKI相关的规范。上节终端 X.509规范就是其中一种。
根据具体所采用的规格,PKI也会有很多变种。
10.4.2 PKI的组成要素
- 用户:使用PKI的人
- 认证机构:颁发证书的人
- 仓库:保存证书的数据库
(1)用户
用户就是像Alice、Bob这样使用PKI的人。用户包括两种:一种是希望使用PKI注册自己的公钥的人,另外一种是希望使用已注册的公钥的人,下面看看这两种用户所要进行的操作。
【注册公钥的用户所进行的操作】
- 生成密钥对(也可以由认证机构生成)
- 在认证机构注册公钥
- 向认证机构申请证书
- 根据需要申请作废已注册的公钥
- 解密接收到的密文
- 对消息进行数字签名
【使用已注册公钥的用户所进行的操作】
- 将消息加密后发送给接收者
- 验证数字签名
(2) 认证机构(CA)
认证机构是对证书进行管理的人。认证机构具体所进行的操作如下。
- 生成密钥对(也可以由用户生成)
- 在注册公钥时对本人身份进行认证(可由RA分担)
- 生成并颁发证书
- 作废证书
认证机构的工作中、公钥注册和本人身份认证这一部分可以由注册机构(Registration Authority,RA)来分担。这样一来,认证机构就可以将精力集中到颁发证书上,从而减轻了认证机构的负担。不过,引入注册机构也有弊端,比如说认证机构需要对注册机构本身进行身份认证,而且随着组成要素的增加,沟通过程也会变得复杂,容易遭受攻击的点也会增加。
(3)仓库
仓库是一个保存证书的数据库,PKI用户在需要的时候可以从中获取证书,它的作用有点像打电话时用的电话本。仓库也叫做证书目录。
10.4.3 认证机构的工作
- 生成密钥对:一种由PKI用户自行生成,一种由认证机构来完成。
- 注册证书
- 作废证书与CRL(证书作废清单)
10.4.4 证书的层级结构
认证机构的公钥可以由另一个认证机构来认证,这样的关系可以迭代好几层。
对于最根一层的认证机构(根 CA),由自己来颁发证书。
10.5 对证书的攻击
- 在公钥注册之前进行攻击
- 注册相似人名进行攻击
- 窃取认证机构的私钥进行攻击
- 攻击者伪装成认证机构进行攻击
- 钻CRL的空子进行攻击:有可能实现否认
- 当公钥失效时尽快通知认证机构
- 尽快发布CRL
- 及时更新CRL
- 在使用公钥前,再次确认公钥是否已经失效