上一篇渗透入门留的尾巴: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下载)装进浏览器/系统的”受信任的根证书颁发机构”;信任了这个”假 CA”,中间人链路成立,HTTPS 就能抓。
纠正一个错误认知:这也是 SSL Pinning(证书绑定)绕过的基础——App 把校验做死在代码里,不认系统证书库,光装证书没用,得 Hook 掉校验(见 App 渗透篇)。注意:SSL/TLS 算法本身不可破(破了等于破解 RSA),能”绕”的只是实现层的校验逻辑。
0x06 TLS 1.3 与实战补充
- 主流 TLS 版本是 1.3:握手比 1.2 更少、更快,且强制更安全的套件;
- 抓包排错顺序:先确认能抓 HTTP → 再装证书抓 HTTPS → 还不行查代理配置(上一篇 0x04 的三个坑);
- 遇到”算法不可用”报错(如工具连 SSH 报 AEAD 协商失败),思路是调算法组合或换更通用的方案;不同版本环境有差异,一个版本失败别放弃。