一、HTTPS安全机制
1. HTTP的安全风险
- 窃听风险:明文传输导致通信内容可被直接截获(如Wireshark抓包获取密码)。
- 篡改风险:中间人可修改传输内容(如注入恶意脚本)。
- 冒充风险:攻击者伪造服务端身份(如钓鱼网站)。
2. HTTPS解决方案
通过TLS/SSL协议在HTTP与TCP层之间加密:
HTTP → 明文风险
└─ SSL/TLS → 加密层 └─ TCP → 安全传输
- 信息加密:使用对称加密算法(如AES)加密通信内容。
- 校验机制:通过MAC(消息认证码)检测数据篡改。
- 身份证书:数字证书验证服务端身份,防止伪造。
3. TLS握手流程
步骤 | 关键操作 | 作用说明 |
---|---|---|
第一次握手 | 客户端发送Client Hello (含TLS版本、密码套件、Client Random) | 协商加密参数,生成密钥材料 |
第二次握手 | 服务端回复Server Hello (选定密码套件、Server Random) + 发送数字证书 | 确认加密方式,证明身份 |
第三次握手 | 客户端用证书公钥加密Pre-master Key → 生成会话密钥 → 发送加密的摘要 | 密钥交换,验证通信完整性 |
第四次握手 | 服务端生成会话密钥 → 返回加密摘要 | 双向验证加密通道可用性 |
会话密钥:由
Client Random + Server Random + Pre-master Key
生成,用于后续对称加密。
二、证书体系与信任链
1. 数字证书验证流程
- 证书签名过程:
- CA对证书信息(公钥、持有者等)做Hash运算。
- 用CA私钥加密Hash值 → 生成数字签名。
- 客户端验证:
- 用CA公钥解密签名 → 得到Hash值H2。
- 计算证书Hash值H1 → 对比H1=H2(一致则可信)。
2. 证书链信任传递
- 验证逻辑:
- 用根证书公钥验证中间证书签名
- 用中间证书公钥验证域名证书
- 全部验证通过才建立信任
关键点:信任锚点是预置在操作系统/浏览器中的根证书(自签证书)。
三、RSA算法原理
1. 密钥生成流程
- 选两个大素数
p
和q
(1024位以上)。 - 计算模数
n = p × q
。 - 计算欧拉函数
φ(n) = (p-1)(q-1)
。 - 选公钥指数
e
(通常为65537),需满足1 < e < φ(n)
且与φ(n)
互质。 - 计算私钥指数
d
:d × e ≡ 1 mod φ(n)
(使用扩展欧几里得算法)。
- 公钥:
(n, e)
- 私钥:
(n, d)
2. 加解密过程
- 加密(明文
m
):c = m^e mod n
- 解密(密文
c
):m = c^d mod n
3. 可靠性基础
- 大数分解难题:从
n
反推p
和q
在计算上不可行(n
足够大时)。 - 欧拉定理保证:若
m
与n
互质,则m^{kφ(n)+1} ≡ m mod n
,使得m^{ed} ≡ m mod n
成立。
四、DNS解析流程
1.关键步骤解析
以访问 www.baidu.com
为例:
- 本地缓存:浏览器/OS缓存 → 减少查询延迟。
- 递归查询:本地DNS服务器代表客户端完成全链路查询。
- 层级查询:
- 根DNS → 返回顶级域服务器(如
.com
)。 - 顶级DNS → 返回权威DNS服务器(如
ns1.baidu.com
)。 - 权威DNS → 返回域名对应的IP(A记录)。
- 根DNS → 返回顶级域服务器(如
- 结果缓存:本地DNS缓存记录(TTL控制时效)
- 建立连接:客户端通过IP访问目标服务器
2. 攻击面分析
- DNS劫持:篡改本地DNS配置或中间节点响应
- 缓存投毒:伪造权威DNS响应污染缓存
- DDoS攻击:洪水请求瘫痪DNS服务器
渗透测试关联点
- HTTPS中间人攻击:
- 利用伪造证书或SSL Strip攻击降级HTTPS → 窃取敏感数据。
- 工具:Burp Suite证书劫持、SSLStrip降级攻击
- 防御:强制HSTS、证书钉扎(Certificate Pinning)
- RSA密钥破解:
- 针对短密钥(如512位)使用工具暴力分解
n
。 - 工具:John the Ripper破解弱口令私钥
- 条件:当 ( p ) 和 ( q ) 接近时,可通过Fermat分解攻击
- 针对短密钥(如512位)使用工具暴力分解
- DNS劫持:
- 污染本地DNS缓存 → 将域名解析到恶意IP。
- 命令:
nslookup
、dig
、whois
- 高阶:DNS区域传输漏洞(
axfr
请求获取全量记录)
- 证书伪造:
- 自签名证书钓鱼 → 诱导用户信任非法服务端。
防御建议:
- 强制HSTS策略防止HTTPS降级
- 使用2048位以上RSA密钥
- 部署DNSSEC防止DNS欺骗