本章学习内容
证书可以用于判断手上的公钥是否合法,防止遭到中间人攻击。
证书
什么是证书
公钥证书包含了姓名,组织,邮箱,地址等个人信息,并且由认证机构施加数字签名。公钥证书简称证书。
证书的应用场景
- Bob生成秘钥对
- Bob在认证机构注册公钥
- 认证机构用私钥对Bob的公钥施加数字签名生成证书
- Alice得到带有机构认证数字签名的Bob的公钥(证书)
- Alice使用认证机构的公钥验证数字签名,认证公钥合法性
- Alice用Bob的公钥解密消息发送给Bob
- Bob用私钥解密密文
## 公钥基础设施(PKI)
什么是公钥基础设施
公钥基础设施是为了更有效地运用公钥而制定的一些列规范与规格的总称。
PKI只是一种总称,而非单独的规范或规格。
PKI的要素
- 用户——使用PKI的人
- 认证机构——颁发证书的人
- 仓库——保存证书的数据库
当然PKI的用户可以是任意的实体,包括人、计算机、组织
用户
注册公钥的人:
- 生成秘钥对(可以由认证机构生成)
- 在认证机构注册公钥
- 在认证机构申请证书
- 根据需要申请作废已注册的公钥
- 解密收到的密文
- 对消息进行数字签名
使用已注册的公钥的用户:
- 将消息加密后发送给接受者
- 验证数字签名
认证机构(CA)
- 生成秘钥对
- 在注册公钥时对本人身份进行认证
- 生成并颁发证书
- 作废证书
仓库
仓库是一个保存证书的数据库,PKI用户可以在需要的时候从中获取证书。
认证机构的工作
生成秘钥对
注册证书
作废证书与CRL
证书的层级结构
上层为下层办法证书,而根级CA则对自己签名,称为自签名。
各种各样的PKI
对证书的攻击
在公钥注册之前进行攻击
在施加数字签名之前的公钥进行攻击
注册相似人名进行攻击
主要是根据人们容易看错的特点进行攻击,可以通过确认证书中包含的信息是否就是持有者的个人信息来确定。
窃取认证机构的私钥来攻击
一般认证机构私钥被泄漏会需要通过CRL通知用户,证书失效的信息。
攻击者伪装成认证机构的攻击
证书无法保证其认证机构的合法性,所以如果认证机构不可信,公钥也不能使用
钻CRL的空子进行攻击
利用CRL发布的时间差进行攻击,使用过时的公钥
最好的办法就是在使用公钥前确认公钥是否失效
并且在这段时间有可能实现否认
SuperFish
本地软件内置了生产数字签名的私钥,恶意软件可以任意生成伪造的网站证书
关于证书的Q&A
为什么需要证书
问:通过认证机构证书获取秘钥和直接获取秘钥有什么区别
答:可以降低遭到中间人攻击的风险,如果双方可以直接会面授予秘钥,那么也可以不通过机构
通过自己的方法进行认证是不是更安全
问:使用公开的技术不放心,用自己的保密认证是否更安全
答:不能使用隐蔽式安全的行为
为什么要相信认证机构
问:为了相信公钥,必须相信为该公钥颁发证书的认证机构,但是我为什么要相信这个认证机构
答:认证机构的可信是基于我们多个可信情报做出的判断,我们不可能在完全不可信的状态下创造出可信关系