证书

  • 证书,联想的是驾驶证、毕业证、英语四六级证等等,都是由权威机构认证的

    • 密码学中的证书,全称叫公钥证书(Public-key Certificate,PKC),跟驾驶证类似
    • 里面有姓名、邮箱等个人信息,以及此人的公钥
    • 并由认证机构(Certificate Authority,CA)施加数字签名
  • CA就是能够认定“公钥确实属于此人”并能够生成数字签名的个人或者组织

    • 有国际性组织、政府设立的组织
    • 有通过提供认证服务来盈利的企业
    • 个人也可以成立认证机构

证书的利用

证书是为了解决,公钥发送过程中,被中间人攻击的情况。

在上一篇文章介绍,数字签名时,我们的问题是: 当Bob 把 自己的公钥 发送给 Alice时,可能会存在中间人攻击

  • 中间人 Mallory 保存 Bob 的公钥
  • Mallory将 自己的 公钥发送给 Alice
  • Alice 以为 公钥是 Bob的,实际上却是中间人Mallory的,会使用Mallory的公钥对发送消息进行加密
  • Alice 在给 Bob发消息时, Mallory拦截到消息,因为消息是用 Mallory 的公钥加密的,所以 Malllory可以解密。 然后篡改消息,接着用第一步保存的Bob的公钥对消息进行加密,并发送个Bob
  • 这时,Bob以为得到的消息是Alice发送的,而Alice以为自己的消息已经发送给了Bob。 消息发送者和接收者对已被攻击完全不知情。

截屏2020-06-05上午1.53.51

而使用上图中的流程, Bob不直接将 公钥发送给 Alice, 而是

  • Bob在认证机构 注册自己的公钥
  • 认证机构用自己的私钥,对Bob的公钥施加数字签名并生成 证书
  • Alice 得到带有认证机构 的数字签名的 Bob的公钥 (证书)
  • Alice 使用 认证机构 的公钥 验证数字签名, 确认Bob的公钥的合法性
  • Alice 使用Bob的公钥加密消息,并发送给Bob

总结

加密/解密算法

对称加密

  • 加密解密使用的同一个密码
  • 加密解密速度快
  • 无法解决密钥配送的问题

公钥密码

  • 加密解密是不同的密钥
  • 加密解密速度慢
  • 解决密钥配送问题

单向散列函数

  • 根绝消息生成固定长度的散列值
  • 防止数据被篡改

数字签名

  • 用私钥加密消息的散列值,生成的密文

证书

  • 用CA的私钥,对其他人的公钥生成数字签名