目录
- 一、非对称加密与对称加密的结合
- 1. 对称加密
- 2. 非对称加密
- 3. HTTPS 的智慧:混合加密机制
- 二、数字证书(Digital Certificate)
- 1.问题引入
- 2.解决方案
- 证书包含的信息
- 信任链机制
- 三、HTTPS 通信全过程
- 角色说明
- 步骤 1:Client Hello
- 步骤 2:Server Hello
- 步骤 3:证书验证(Certificate Validation)
- 步骤 4:生成预主密钥(Pre-Master Secret)
- 步骤 5:服务器解密预主密钥
- 步骤 6:生成会话密钥(Session Key)
- 步骤 7:握手完成,开始安全通信
- 四、HTTPS 如同寄密信
- 1. 获取公钥(证书)
- 2.传递密钥(握手)
- 3. 朋友拿到钥匙
- 4. 安全通信开始
- 五、关键要点回顾
- 六、总结
可以把 HTTPS 理解为 “穿着 SSL/TLS 盔甲的 HTTP”。
它的核心目标很简单:
在不安全的网络(如互联网)上建立一个安全的通信通道,确保数据传输的三大安全属性:
- 机密性:内容不会被窃听者解密
- 完整性:内容在传输过程中未被篡改
- 身份真实性:你连接的服务器就是你以为的那个服务器
一、非对称加密与对称加密的结合
HTTPS 的安全并非依赖单一技术,而是巧妙地结合了两种加密方式。
1. 对称加密
Symmetric Encryption
- 概念:加密和解密使用同一把密钥。
- 优点:速度快,适合加密大量数据。
- 缺点:如何安全地把密钥交给对方?
如果密钥在传输中被窃听,整个通信就不再安全。
2. 非对称加密
Asymmetric Encryption
- 概念:一对密钥 —— 公钥 和 私钥
- 用 公钥 加密的数据,只有对应的 私钥 才能解密
- 用 私钥 加密的数据(即数字签名),可用对应的 公钥 验证其来源
- 优点:解决了密钥分发问题。公钥可公开,即使被窃听也无法解密
- 缺点:速度慢,比对称加密慢百倍甚至千倍,不适合加密大量数据
3. HTTPS 的智慧:混合加密机制
用非对称加密交换密钥,用对称加密传输数据
- 使用非对称加密安全地传递“对称密钥”
- 后续通信全部使用对称加密,保证效率与安全兼顾
二、数字证书(Digital Certificate)
1.问题引入
如何确保你拿到的公钥是真实服务器的,而不是中间人伪造的?
2.解决方案
数字证书
数字证书就像服务器的“网络身份证”,由可信的第三方机构——证书颁发机构(CA) 颁发。
证书包含的信息
- 证书持有者信息(域名、公司名称等)
- 服务器的公钥
- CA 的信息
- CA 对上述信息的 数字签名
- 有效期
信任链机制
Certificate Chain
- 操作系统和浏览器内置了 受信任的根证书列表
- 当服务器发送证书时,浏览器会逐级验证签名:
- 是否由可信 CA 签发?
- 是否在有效期内?
- 域名是否匹配?
- 若验证失败 → 浏览器弹出安全警告
这样就防止了“中间人攻击”:攻击者无法伪造一个被信任的证书。
三、HTTPS 通信全过程
TLS 握手详解
这是 HTTPS 安全通信的核心环节,称为 TLS 握手。
角色说明
- 客户端:你的浏览器
- 服务器:你要访问的网站(如
https://www.google.com
)
步骤 1:Client Hello
客户端发起连接请求,发送:
- 支持的 TLS 版本
- 支持的密码套件(Cipher Suites)
- 一个 客户端随机数(Client Random)
步骤 2:Server Hello
服务器回应:
- 确定使用的 TLS 版本
- 选定的密码套件
- 一个 服务器随机数(Server Random)
- 自己的 数字证书
步骤 3:证书验证(Certificate Validation)
客户端验证服务器证书:
- 证书是否在有效期内?
- 域名是否匹配?
- 数字签名是否能被信任链验证?
❌ 若任一验证失败 → 浏览器提示“您的连接不是私密连接”等警告
步骤 4:生成预主密钥(Pre-Master Secret)
- 客户端从证书中提取服务器的 公钥
- 生成第三个随机数:预主密钥(Pre-Master Secret)
- 用服务器的 公钥加密 这个预主密钥
- 发送给服务器
步骤 5:服务器解密预主密钥
- 服务器用自己的 私钥 解密,获得预主密钥
- 至此,双方都拥有了三个随机数:
- 客户端随机数
- 服务器随机数
- 预主密钥
私钥始终保存在服务器本地,绝不外泄!
步骤 6:生成会话密钥(Session Key)
- 客户端和服务器使用这三个随机数,通过相同的算法生成 主密钥(Master Secret)
- 再从中派生出本次通信使用的 对称加密密钥(会话密钥)
注意:后续所有通信都使用这个对称密钥进行加解密!
步骤 7:握手完成,开始安全通信
- 双方互相发送一条
Finished
消息- 使用会话密钥加密
- 验证密钥是否一致、握手是否成功
- 握手成功!进入加密通信阶段
从此以后:
所有 HTTP 请求和响应数据都通过 对称加密 传输,既安全又高效
四、HTTPS 如同寄密信
想象你要通过一个不安全的邮递系统(互联网)给朋友(服务器)寄一封密信。
1. 获取公钥(证书)
朋友先通过权威公证处(CA)公证了他的公开信箱(公钥),并把公证书(数字证书)寄给你。你确认公证处可信 → 相信这个信箱是真的。
2.传递密钥(握手)
你写一封信,里面装着一把保险箱的钥匙(会话密钥),然后放进朋友的公开信箱(用公钥加密),寄出去。
即使信被截获,别人没有朋友的私人钥匙(私钥),也打不开信箱。
3. 朋友拿到钥匙
朋友用他的私人钥匙打开信箱,取出保险箱钥匙(预主密钥),生成相同的会话密钥。
4. 安全通信开始
现在你们都有了同一把保险箱钥匙。之后所有的信件都放进这个保险箱邮寄,既安全又快捷。
五、关键要点回顾
要点 | 说明 |
---|---|
混合加密 | 非对称加密用于安全交换密钥,对称加密用于高效传输数据 |
数字证书 | 解决“公钥信任”问题,防止中间人冒充服务器 |
TLS 握手 | 建立安全连接的关键过程,核心是生成共享的会话密钥 |
三重随机数 | 客户端随机数 + 服务器随机数 + 预主密钥 → 生成唯一会话密钥 |
前向安全性 | 即使未来私钥泄露,也无法解密过去的通信(现代 TLS 支持) |
六、总结
HTTPS 并不是一种全新的协议,而是 HTTP + TLS/SSL 的安全组合。
它通过:
- 数字证书验证身份
- 非对称加密建立信任
- 对称加密保障性能
在开放网络中构建出一条“加密隧道”,让我们可以安全地浏览网页、登录账号、进行支付。
下次当你看到浏览器地址栏的小锁图标时,就知道:
背后正有一场精密而优雅的加密握手在悄然完成。
本文参考 TLS 1.2/1.3 协议设计原理,简化描述以帮助初学者理解。