《图解密码技术》第十章
- 公钥证书(简称证书):public-key certificate, PKC,认证机构:certification authority、certifying authority,CA,认证业务准则:certification practice statement,CPS
- 公钥基础设施PKI:public-key infrastructure,实体:entitiy,注册机构RA:registration authority,仓库:repository
- 作废:revoke,证书作废清单CRL: certificate revocation list
证书
证书的应用场景
实际生成一张证书
证书的规范X.509_规范
公钥基础设施PKI
PKI:public-key infrastructure,是为了能够更有效的运用公钥而指定的一系列规范和规格的总称
PKCS、RFC、X.509、API也都是PKI的一种
PKI的组成要素
- 用户——使用PKI的人
- 希望使用PKI注册自己的公钥的人
- 希望使用已注册公钥的人
- 认证机构——颁发证书的人
- 仓库(证书目录)——保存证书的数据库
认证机构的工作
- 生成密钥对:用户或者认证机构来生成
- 注册证书:认证机构根据CPS对用户身份进行认证,生成证书时,需要使用认证机构的私钥进行数字签名
- 作废证书与CRL:当私钥丢失、被盗以及无使用权限,内容变更都需要作废,认证机构需要制作证书作废清单,PKI用户需要从认证机构获取最新CRL,查询自己验证签名的公钥证书是否已经作废
证书的层级结构
一个认证机构来验证另一个认证机构的公钥,这样的关系可以迭代好几层,认证机构的终点称为根CA,对自己的公钥进行数字签名的行为称为自签名
各种各样的PKI
世界上已经有无数个认证机构了,认证机构只要对公钥进行数字签名就可以了
对证书的攻击
针对数字签名的攻击方法对证书都有效,主要看针对PKI的攻击
在公钥注册前进行攻击
在Bob准备注册公钥前,攻击者已经将Bob的公钥换成了自己的
- 为了防止,可以用认证机构的公钥对Bob的公钥进行加密,此外,认证身份时,可以将公钥的指纹并发送给Bob
注册相似人名进行攻击
BOB和Bob
- 为了防止,认证机构必须确认证书中所包含的信息是否真的是其持有者的个人信息
窃取认证机构的私钥进行攻击
认证机构必须花费大量的钱来防止自己的私钥被窃取
如果私钥泄露,就要通过CRL通知用户
攻击者伪装成认证机构进行攻击
如果认证机构本身不可信,即使证书合法,公钥也不能使用
钻CRL的空子进行攻击(1)
利用CRL发布的时间差来发动攻击
被盗取之后,CRL发布之前,
- 公钥丢失之前尽快通知认证机构
- 尽快发布CRL
- 及时更新CRL
- 使用公钥前,再次确认公钥是否失效
钻CRL的空子进行攻击(2)
通过钻CRL的空子,实现否认
为了快速确认证书是否已经失效,设计了一种OCSP的协议
关于证书的Q&A
-
为什么需要证书?
降低遭受中间人攻击的风险
- 如果能够取得可信的公钥,则不需要认证机构
- 当持有可信的认证机构公钥,并相信认证机构所进行的身份确认的情况下,则可以信任该认证机构颁发的证书以及通过该途径取得的公钥
-
通过自己的方法进行认证是否更安全
犯了隐蔽式安全的错误,全世界的安全专家也在为这些公开的技术寻找漏洞
-
为什么要相信认证机构
我们之所以信任某个认证机构,是因为我们基于多个可信的情报源所作出的判断