上一篇渗透入门结尾留了个尾巴:HTTP 抓到了,HTTPS 为什么抓不到?这篇专门讲透。这门课最大的价值是把几个最容易混的概念——加密、哈希、编码——一次掰清了。
0x01 四个基础概念:明文、密文、算法、密钥
- 明文:原始数据;密文:算法处理后的难读数据;
- 算法:明文↔密文的转换规则(如 AES、RSA);
- 密钥:算法里的具体参数。
一个直观的例子很直观:“数字移位”是算法,“移几位”是密钥。只知算法不知密钥,解密等于猜。所以安全的重心在密钥的保密,不在算法的神秘——现代算法全是公开的,照样安全。
0x02 编码不是加密,哈希也不是加密
这三个概念面试和实战里天天被混着用,课堂专门做了切割:
| 可逆性 | 密钥 | 目的 | |
|---|---|---|---|
| 编码(Base64/URL) | 可逆 | 无 | 方便存储传输、避免特殊字符误判 |
| 加密(AES/RSA) | 可逆 | 有 | 机密性 |
| 哈希(MD5/SHA) | 不可逆 | 无(理想) | 完整性校验 |
哈希的两个关键特性:
- 雪崩效应:输入变一个字母(
hello丢掉o),输出天差地别——这使它天然适合校验; - 双端对算:收发双方各自计算哈希值并比对,相等即说明传输无篡改,用极低算力换极高可信度。
0x03 对称与非对称:密钥分发死结
对称加密(AES):加解密同一把钥匙。优点是快、省资源(“一把钥匙开一把锁”);死穴是密钥分发——在不信任的网络里把钥匙传给对方,路上被截获,加密形同虚设。“先有鸡还是先有蛋”的死循环。
非对称加密(RSA):公钥加密、私钥解密。公钥随便发,解决了分发问题;代价是计算开销大,不适合加密大流量数据。
HTTPS 的答案就是两者混用:非对称只用来协商对称密钥,对称密钥负责真正的数据传输——性能与安全的折中。
0x04 CA 与 PKI:防中间人的最后一环
非对称加密还有个漏洞没堵:你怎么知道公钥真是对方的?中间人可以把自己的公钥发给你,神不知鬼不觉地双向转发解密(这正是抓包工具的工作原理)。
**CA(证书权威机构)**的作用:为网站的公钥签名背书。浏览器内置了受信 CA 根证书列表,收到证书时验证签名链——对得上才信任。这就是 PKI(公钥基础设施)的核心逻辑。
0x05 回到抓包:为什么 HTTPS 需要装证书
现在整个链条通了:
- Burp 做中间人:对浏览器冒充服务器(出示自己的证书),对服务器冒充浏览器;
- HTTP 明文,直接拦;HTTPS 里浏览器要校验证书链——Burp 的证书不在受信列表,校验失败,连接中断;
- 解决:把 Burp 的 CA 根证书(
http://burp下载)安装进浏览器/系统的”受信任的根证书颁发机构”。浏览器信任了 Burp 这个”假 CA”,中间人链路成立,HTTPS 就能抓了。
顺带纠正一个我之前的错误认知:这套原理也正是后面学 App 渗透时 SSL Pinning(证书绑定)绕过的基础——App 把校验做死在代码里,不认系统证书库,所以光装证书没用,得 Hook 掉校验逻辑(见 App 渗透篇)。面试答”SSL 能不能绕过”要小心:SSL/TLS 算法本身不可破(破了等于破解 RSA),能”绕”的只是实现层的校验逻辑——把这两者混为一谈在面试里是硬伤。
0x06 TLS 1.3 与实战补充
- 当前主流 TLS 版本是 1.3,握手轮次比 1.2 更少、更快,且强制了更安全的套件;
- 抓包排错的通用顺序:先确认能抓 HTTP → 再装证书抓 HTTPS → 还不行查代理配置(上一篇 0x04 的三个坑);
- 加密算法遇到”算法不可用”报错时(如工具连 SSH 报 AEAD 协商失败),思路是调整算法组合或换更通用的方案,不同版本环境有差异,一个版本失败别放弃试。