Public-Key Certificate (PKC)
公钥证书:简称证书,记有姓名、组织、邮箱等个人信息,以及属于此人的公钥,并由认证机构(Certification Authority,CA)施加数字签名。
证书的应用场景
Alice利用认证机构Trent向Bob发送密文:
证书标准规范X.509
X.509是由ITU(国际电信联盟)和ISO(国际标准化组织)制定的,大体上包含以下3部分内容:
- 签名前的证书——签名对象的信息
- 数字签名的算法——对证书签名是所使用的算法
- 数字签名——对证书施加的数字签名
证书的层级
对于认证机构的公钥,可以由其它的认证机构施加数字签名,从而对认证机构的公钥进行验证即生成一张认证机构的公钥证书,这样的关系可以迭代好几层,一直到最高一层的认证机构时该认证机构就称为根CA,根CA会对自己的公钥进行数字签名叫做自签名。
公钥基础设施(PKI)
公钥基础设施:为了能够更有效地运用公钥而制定的一系列规范和规格的总称。
PKI的组成要素
用户——使用PKI的人
注册公钥的用户所进行的操作:- 生成密钥对
- 在认证机构注册公钥
- 向认证机构申请证书
- 根据需要申请作废已注册的公钥
- 解密接收到的密文
- 对消息进行数字签名
使用已注册公钥的用户所进行的操作:
- 将消息加密后发送给接收者
- 验证数字签名
认证机构(CA)——颁发证书的人
所进行的操作:- 生成密钥对(也可以由用户生成)
- 在注册公钥时对本人身份进行认证
- 生成并颁发证书
- 作废证书:要作废证书,认证机构需要制作一张证书作废清单CRL(Certificate Revocation List)
仓库——保存证书的数据库
对证书的攻击
- 在公钥注册之前进行攻击
- 注册相似人名进行攻击
- 窃取认证机构的私钥进行攻击
- 攻击者伪装成认证机构进行攻击
- 钻CRL的空子进行攻击(1):利用CRL发布的时间差来发动攻击
- 钻CRL的空子进行攻击(2):通过钻CRL的空子,就可以实现否认
关于证书的注意点
- 证书的必要性,通过认证机构获取公钥比直接获取公钥能降低遭到中间人攻击的风险。