图解密码学(第十章)--证书
证书
目录
什么是证书
为公钥加上数字签名
公钥证书中有认证机构施加的数字签名
证书的应用场景
Alice利用认证机构Trent向Bob发送密文的步骤:
- Bob生成密钥对(公私钥)
- Bob在认证机构Trent注册自己的公钥
- 认证机构Trent用自己的私钥对Bob的公钥施加数字签名并生成证书
- Alice得到带有认证机构Trent的数字签名的Bob的公钥(证书)
- Alice使用认证机构Trent的公钥验证数字签名,确认Bob的公钥的合法性
- Alice用Bob的公钥加密信息并发送给Bob
- Bob用自己的私钥解密密文得到Alice的消息
123这几个步骤只会在新公钥注册时进行
证书的标准规范
使用最广泛的是有ITU(International Telecommunication Union,国际电信联盟)和ISO(International Organization for Standardization,国际标准化组织)制定的X.509规范(RFC3280)
公钥基础设施(Public Key Infrastructure)
什么是PKI
是为了能够更有效的运用公钥而指定的一系列规范和规格的总称
例如RSA公司制定的PKCS(Public-Key Cryptography Standars,公钥密码标准)系列规范也是PKI的一种,X.509也是PKI的一种。
PKI的组成要素
- 用户——使用PKI的实体
- 认证机构——颁发证书的实体
- 仓库——保存证书的数据库
用户
像Alice和Bob这样使用OKI的人。
用户包括两种:
- 希望使用PKI注册自己的公钥的实体
- 希望使用已注册的公钥的实体
注册公钥的用户所进行的操作
- 生成密钥对(也可以由认证机构生成)
- 在认证机构注册公钥
- 向认证机构申请证书
- 根据需要申请作废已注册的公钥
- 解密接收到的密文
- 对消息进行数字签名
使用已注册公钥的用户所进行的操作
- 将消息加密后发送给接收者
- 验证数字签名
认证机构(CA)
认证机构(Certification Authority,CA)是对证书进行管理的实体(Trent)。
CA具体进行的操作有:
- 生成密钥对(也可以由用户生成)
- 在注册公钥时对本人身份进行认证
- 生成并颁发证书
- 作废证书
认证机构工作中可以将注册和本人身份认证这一部分交给注册机构(Registration Authority,RA)来承担
但RA也需要被CA认证
仓库
仓库(repository)是一个保存证书的数据库,PKI用户可以在需要的时候从仓库中获取证书,类似打电话时的电话簿。仓库也叫哦证书目录。
认证机构的工作
-
生成密钥对
- 生成密钥对的方式有两种:PKI用户自己生成、CA生成。在CA生成用户密钥对的情况下,认证机构需要将私钥发送给PKI用户,具体方法在RFC7292中进行了规定。
-
注册证书
- 申请证书是所使用的的规范是RFC2986,生成证书的格式是X.509.
-
作废证书与CRL
- 作废证书是要制作一张证书作废清单(Certificate Revocation List,CRL)
- 查询认证机构最新的CRL,并确认该证书是否有效
证书的层级结构
证书是有层级结构的,最上层是根CA(Root CA)
各种各样的PKI
误解:面向公众的权威认证机构只有一个和全世界的公钥最终都是由一个根CA来认证的。这些都是不正确的。
认证机构只要对公钥进行数字签名就可以了,因此任何人都能成为认证机构,实际上世界上已经有了无数个认证机构了。
PKI具体采用什么样的方式,取决于摸底和规模。
对证书的攻击
针对PKI的攻击
- 在公钥注册之前进行攻击
- 注册相似人名进行攻击
- 窃取认证机构的私钥进行攻击
- 攻击者伪装成认证机构进行攻击
- 钻CRL的空子进行攻击
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步