公钥证书(Public-Key Certificate,PKC)记录了公钥所有者的组织、邮箱地址、公钥等信息,并由认证机构(Certification Authority,CA)施加数字签名

10-Produce-CA

公钥基础设施

公钥基础设施(Public-Key Infrastructure,PKI)是为了能够更加有效地运用公钥而指定的一系列规范和规格的总称。

主要组成如下:

  • 用户:使用PKI的人,包括注册公钥的人和使用公钥的人。
    • 生成密钥对
    • 在认证机构注册公钥
    • 从认证机构申请证书
    • 根据需要申请作废已注册的公钥
    • 解密接收到的密文
    • 对消息进行数字签名(以上为注册公钥者的行为)
    • 将消息加密后发送给接收者
    • 验证数字签名
  • 认证机构:颁发证书的人
    • 生成密钥对
    • 在注册公钥时对本人身份进行认证
    • 生成并颁发证书
    • 作废证书
  • 仓库:存放证书的数据库
    • 存放证书

10-PKI

认证机构的一个重要工作是,当用户的私钥丢失、被盗时,或者其他情况下,需要对证书进行作废。此时,认证机构会制作一张证书作废清单(Certificate Revocation List,CRL)

PKI用户在使用证书时,需要查询认证机构最新的CRL,并确认该证书是否有效

此外,证书还有层级之分,A认证机构颁发的证书使用的签名是A的上级认证机构的签名,最上层的根证书自签名。具体如图所示。

10-CA-Level

针对证书的攻击

中间人攻击,攻击者Eve把自己伪装成认证机构,将自己的公钥颁发证书,伪装成"Bob的证书",发送给Alice,Alice得到证书后,使用Eve公布的公钥对此进行验证,发现合法,于是使用此公钥加密消息发送给Bob,Eve从中截取了消息,并用自己的私钥进行解密。

针对CRL攻击,此攻击利用CRL发布的时间差来发动攻击。攻击者窃取了Bob的私钥,将消息和用Bob的私钥进行加密的数字签名一同发给Alice。Alice使用Bob的公钥对消息进行验证时,发现发送者为"Bob"。第二天,Bob将密钥失窃告诉认证机构,认证机构更新CRL,但Alice已经相信了昨晚的Bob。