证书介绍
什么是证书
- 先来回顾一下数字签名技术。
数字签名就是将消息的散列值用自己的私钥进行加密,然后接收端用对应的公钥进行解密得出散列值,再和接收端自己计算的散列值做比对。
整个过程中最为关键的是公钥的正确性,如果公钥是中间人的,则可以形成中间人攻击。 -
证书
证书就是为了解决上面的公钥问题的。
证书就是由认证机构对某个公钥施加数字签名,并附上此公钥所属人的姓名、组织、邮箱形成的文件。又称为公钥证书。
证书应用场景流程
- 接收者生成密钥对
- 接收者在认证机构注册自己的公钥
- 认证机构用自己的私钥对接收者的公钥施加数字签名并生成证书
- 发送者得到认证机构发布的证书
- 发送者使用认证机构的公钥解密证书,得到接收者的公钥
- 发送者使用接收者的公钥对消息进行加密,发送给接收者
- 接收者接收到消息后,用自己的私钥解密获得明文消息
X.509证书内容
- 签名前的证书
- 规范版本: 现在一般要求版本是3
- 证书序列号
- 数字签名算法: 一般都是SHA1WithRSA,意思是用RSA对SHA1散列值进行签名
- 证书颁发者
- 有效期起始时间
- 有效期结束时间
- 公钥所有人
- 公钥算法:现在一般都是RSA
- 公钥内容
- 数字签名算法:一般都是SHA1WithRSA,意思是用RSA对SHA1散列值进行签名
- 数字签名内容
公钥基础设施(PKI)
什么是公钥基础设施
- 英文全称是Public-Key Infrastructure
- 简单的说就是证书各种规格、规范的总称
- 涉及到的角色包括
- 用户:使用证书的实体
- 认证机构:颁发证书的实体
- 仓库:保存证书的数据库
认证机构的工作
-
生成密钥对
这个工作可以有用户自己完成。 -
注册证书
就是用自己的私钥完成对注册人公钥的数字签名,并附上其他信息。 -
作废证书和CRL
证书在某些情况下是需要作废的,例如私钥已经泄露。
CRL就是一张作废的证书序列号的清单,并附上认证机构的数字签名。
不过仅凭CRL来判断证书是否有效,还需要查询最新的CRL。
证书的层级结构
- 简单的说就是逐级分层的签名认证,最上面一层是CA认证,根认证。
- 根证书是认证机构的自签名,下一级证书是下一级的公钥被根证书的私钥签名。
- 这样看的话,基本至少应该有两级证书
- 至于为什么会有这样的需求,书本里并没有描述。
对证书的攻击
- 在公钥注册之前发动攻击
- 在准备注册人发送给认证机构的公钥替换掉
- 破解的办法是认证机构在颁布证书之前,发给注册人确认
- 注册相似人名进行攻击
- 攻击很好理解,类似于周黑鸭和邹黑鸭的商标。
- 破解的办法是认证机构确认个人信息的身份
- 窃取认证机构的私钥进行攻击
- 攻击者伪装成认证机构进行攻击
- 钻CRL的空子进行攻击(1)
利用CRL发布的时间差来发动攻击 - 钻CRL的空子进行攻击(2)
简单的说是注册一方,在发送消息后,申请证书注销。利用时间差来晚成攻击,而且可以否认是自己发送。