1. 初始通信:一对一

  • 公钥和私钥的定义

    • 公钥(Public Key):可以公开分享,任何人都可以使用这个公钥来加密数据。
    • 私钥(Private Key):必须保密,只有一方持有,可以用来解密通过公钥加密的数据。
  • 使用示例

    • 设想两个朋友,Alice 和 Bob。Alice 将消息用 Bob 的公钥加密,只能通过 Bob 的私钥解密。这种方式保证了即使其他人拦截了消息,也无法解读内容。

2. 多人通信

  • 多人通信

    • 当用户数量增加时,通信变得更加复杂。每个用户都需要与所有其他用户共享各自的公钥。
  • 问题

    • 如果存在多个用户,如何保证每个人都能确认自己正在与正确的人通信?如何避免中间人攻击?

3. 引入Web服务

  • Web服务的出现

    • 随着互联网的发展,网站(Web服务商)开始提供信息和服务。用户通过浏览器访问这些网站。
  • 公钥的分发问题

    • 每个网站需要将其公钥共享给用户,但在这种情况下,用户并不知道哪个网站的公钥是真实可信的。
    • 换言之,用户需要确定它所获取的公钥是网站所有者生成的。这时候我们会很自然的想到一个权威的中间媒介,他能一方面核对网站的公钥和身份信息,一方面能帮助用户通过域名获取到对应公钥。

4. 浏览器作为中介

  • 浏览器的角色

    • 浏览器作为用户与Web服务商之间的中介,负责内容的呈现和数据的安全性。
  • 用户信任问题

    • 用户希望确保访问的网站确实是他们想要访问的目标,而不仅仅是某个恶意网站。
  • 所需机制

    • 为了提供这种信任基础,浏览器需要一种机制来验证网站的身份,并确保安全的数据交换。

5. 引入数字证书

  • 数字证书的概念

    • 网站将公钥与其身份信息结合,生成数字证书,证书中包含了网站的公钥及其他信息(如域名、有效期等)。
  • 证书的作用

    • 数字证书起到了“身份证”的作用,可以告诉用户,访问的网站确实是它声称的那一个。

6. 证书颁发机构(CA)

  • CA的角色

    • 由于每个浏览器都不能单独管理每个网站的公钥,CA(证书颁发机构)作为一种权威实体被引入。
  • 信任链的建立

    • CA会验证网站的身份,确保其合法性,并对其公钥进行数字签名,生成SSL证书。
  • 浏览器的信任链

    • 浏览器已内置了受信任CA的公钥,收到的网站证书会通过CA的公钥进行验证,以确认证书的有效性和真实性。

7. 正式的安全连接建立

  • 建立安全连接

    • 用户的浏览器从网站获取了数字证书,验证了证书的真实性后,即可安全地使用网站的公钥进行加密通信。
  • 数据传输

    • 通过私钥进行消息解密和签名,保证数据的机密性和完整性。