CA机构、数字证书、数字签名分别是什么?

公钥加密体系

公钥加密体系,也称为非对称加密。它与传统的对称加密有根本的不同。

核心概念:

在非对称加密中,有一对密钥:

  1. 公钥:公开给所有人,就像你的银行账号,可以告诉任何人。
  2. 私钥:绝对保密,只有自己持有,就像你的银行密码,绝不能告诉别人。
    这对密钥在数学上是关联的,但从公钥几乎不可能推算出私钥。可以把公钥和密钥类比为“阴阳”一对钥匙,“阳”则是公开的,谁都可以看到,但是“阴”只有自己手里有,而且不能告诉任何人。

两大核心功能:

1. 加密和解密

  • 目的:为了保密性
  • 过程
    • 发送者接收者的公钥对信息进行加密。
    • 加密后的密文只能由对应的接收者的私钥来解密。
  • 比喻:就像很多人可以把信投进一个只能由你用专用钥匙打开的邮箱里。
  • 例子:A想给B发送一条秘密消息。A找到B的公钥,加密消息后发送。B收到后,用自己的私钥解密阅读。即使中间有人截获了消息,因为没有B的私钥,也无法解密。
    2. 数字签名
  • 目的:为了身份认证完整性(确保信息未被篡改)。
  • 过程
    • 发送者用自己的私钥对信息的“摘要”(哈希值,可以用MD5或SHA摘要算法)进行加密,这个加密后的结果就是“数字签名”。
    • 接收者发送者的公钥来解密这个签名。如果解密成功,就能证明两件事:
      • 身份认证:这条信息确实来自持有对应私钥的发送者。
      • 完整性:信息在传输过程中没有被篡改。
  • 比喻:就像在一份文件上盖上你的个人印章,别人可以通过这个印章来验证文件确实是你发出的。

证书颁发机构CA

CA,全称证书颁发机构,是一个在公钥加密体系中扮演“公证人”或“公安局户口管理处”角色的可信第三方机构。

CA 诞生的原因:中间人攻击

在纯公钥加密体系中,存在一个根本问题:如何确定你拿到的公钥真的是对方的?
比如,你想访问 www.jhacker.cn,一个攻击者可能会截获你的请求,然后把他自己的公钥发给你,冒充是银行的公钥。如果你用这个假公钥加密信息,攻击者就能用他的私钥解密,窃取你的数据。这就是“中间人攻击”。

CA 的解决方案:数字证书

CA 通过颁发数字证书来解决身份信任问题。
数字证书是什么?
数字证书就像一个数字身份证,它绑定了某个实体(如网站、公司、个人)的身份信息和他的公钥。这个证书由受信任的CA进行数字签名
数字证书的主要内容:

  • 证书持有者的信息(如网站域名、公司名称)
  • 证书持有者的公钥
  • 颁发者(CA)的信息
  • 有效期
  • CA 对以上所有信息的数字签名

CA 的工作流程:

  1. 申请:一个网站(如 jhacker.cn)生成一对公钥和私钥。然后向CA提交自己的公钥和公司信息。
  2. 验证:CA会严格验证申请者的真实身份(例如,确认它确实拥有 jhacker.cn 这个域名)。
  3. 签发:验证通过后,CA将网站的信息和公钥打包成一个证书请求,并用CA自己的私钥对这个证书进行数字签名,生成最终的数字证书
  4. 部署:网站将这个数字证书部署到自己的服务器上。

访问 HTTPS 网站流程

当你用浏览器访问 `https://jhacker.cn 时:

  1. 建立连接:浏览器向 jhacker.cn 服务器发起请求。
  2. 发送证书:服务器将其数字证书发送给浏览器。
  3. 验证证书:这是最关键的一步:
    • 浏览器里内置了一个受信任的CA根证书列表(包含这些CA的公钥)。
    • 浏览器用对应CA的公钥去解密证书里的CA数字签名。如果解密成功,就证明这个证书确实是由该CA签发的,证书内容(包括网站的公钥)是可信的、未被篡改的。
    • 浏览器还会检查证书上的域名是否与正在访问的域名一致,以及证书是否在有效期内。
  4. 生成会话密钥:证书验证通过后,浏览器会生成一个随机的对称加密密钥(会话密钥)。
  5. 加密会话密钥:浏览器用从证书中获取的网站的公钥加密这个会话密钥,然后发送给服务器。
  6. 解密会话密钥:服务器用自己的私钥解密,得到会话密钥。
  7. 安全通信:此后,浏览器和服务器都使用这个会话密钥,采用对称加密的方式来加密传输所有数据。之所以切换到对称加密,是因为它的计算开销远小于非对称加密,效率更高。