第9章:网络安全(Network Security)
一、导读
9.1 本章学习目标
网络安全是互联网的核心挑战。本章讲解密码学基础、安全协议、以及网络安全实践。
本章的核心学习目标包括:
- 掌握密码学基础:对称加密、公钥加密、数字签名、哈希
- 理解 SSL/TLS:安全传输层协议
- 掌握 IPsec:网络层安全
- 理解防火墙和 IDS:网络安全设备
- 了解常见攻击:DDoS、中间人攻击、钓鱼
- 理解证书和 PKI:公钥基础设施
9.2 为什么网络安全如此重要
网络安全关系到个人隐私、企业数据、国家安全。随着互联网渗透到生活的方方面面,网络安全的重要性日益凸显。理解网络安全的基本原理,对于开发安全应用、保护数据至关重要。
网络安全的核心挑战可以归纳为三个方面:机密性(Confidentiality)——防止信息泄露;完整性(Integrity)——防止信息被篡改;可用性(Availability)——防止服务被中断。这三个方面被称为 CIA 三元组。
9.3 核心问题引导
在阅读本章时,请带着以下问题思考:
对称加密和公钥加密有什么区别?各自适用于什么场景?
TLS 握手过程中发生了什么?如何防止中间人攻击?
数字签名的原理是什么?它提供了哪些安全保证?
防火墙有哪些类型?各自的优缺点是什么?
如何防范 DDoS 攻击?
二、核心概念详解
2.1 密码学基础
2.1.1 对称加密
加密和解密使用相同的密钥。
- DES:56 位密钥,已不安全
- 3DES:三次 DES,168 位密钥,较慢
- AES:128/192/256 位密钥,目前安全
明文 → 加密(密钥K)→ 密文 → 解密(密钥K)→ 明文优点:速度快,适合加密大量数据
缺点:密钥分发困难——通信双方如何安全地共享密钥?
AES(Advanced Encryption Standard)是目前最广泛使用的对称加密算法。AES-128 使用 128 位密钥,AES-256 使用 256 位密钥。AES 的分组大小为 128 位,支持多种工作模式(ECB、CBC、CTR、GCM 等)。
2.1.2 公钥加密
加密和解密使用不同的密钥:公钥加密,私钥解密。
- RSA:基于大数分解,2048 位密钥
- ECC:基于椭圆曲线,256 位密钥(等效安全性,密钥更短)
明文 → 加密(公钥)→ 密文 → 解密(私钥)→ 明文优点:解决密钥分发问题(公钥可以公开)
缺点:速度慢,比对称加密慢 100-1000 倍
公钥加密通常用于密钥交换(Key Exchange):双方使用公钥加密技术安全地协商出一个共享密钥,然后使用对称加密进行后续通信。这就是"混合加密"的思想。
2.1.3 数字签名
发送方用私钥签名,接收方用公钥验证。
消息 → 哈希 → 签名(私钥)→ 验证(公钥)→ 哈希比对功能:身份认证(确认发送方身份)、不可否认性(发送方不能否认签名)、完整性保护(消息未被篡改)。
数字签名的过程是:先对消息计算哈希值,然后用私钥加密哈希值(即签名)。验证时,用公钥解密签名得到哈希值,再与消息的哈希值比对。如果一致,则签名有效。
2.1.4 哈希函数
将任意长度的消息映射为固定长度的摘要。
- MD5:128 位,已不安全(可构造碰撞)
- SHA-1:160 位,已不安全(Google 已演示碰撞攻击)
- SHA-256:256 位,目前安全
- SHA-3:最新标准,基于 Keccak 算法
特性:单向性(无法从哈希值反推原文)、抗碰撞(无法找到两个不同消息产生相同哈希值)。
2.2 SSL/TLS
SSL/TLS 为应用层提供安全传输。TLS(Transport Layer Security)是 SSL 的继任者,目前广泛使用的是 TLS 1.2 和 TLS 1.3。
2.2.1 TLS 握手过程(TLS 1.2)
客户端发送 ClientHello(支持的密码套件、随机数)
服务器发送 ServerHello(选择的密码套件、随机数)、证书
客户端验证证书,生成预主密钥,用服务器公钥加密
服务器用私钥解密,得到预主密钥
双方根据预主密钥和随机数生成会话密钥
后续通信使用会话密钥(对称加密)加密
TLS 1.3 简化了握手过程,只需要 1-RTT(甚至 0-RTT),去除了不安全的密码套件(如 RSA 密钥交换、CBC 模式),只保留 AEAD(如 AES-GCM)和前向安全的密钥交换(如 ECDHE)。
2.2.2 TLS 记录协议
将数据分片、压缩、计算 MAC、加密后发送。每个记录包括:内容类型、版本、长度、MAC、加密数据。
2.2.3 前向安全(Forward Secrecy)
前向安全意味着即使长期密钥(如服务器私钥)被泄露,过去的通信也不会被解密。实现前向安全的方法是使用临时密钥交换(如 DHE 或 ECDHE),每次会话使用不同的临时密钥。
2.3 IPsec
IPsec 在网络层提供安全服务。
2.3.1 AH(认证头)
提供数据源认证和完整性保护,不提供加密。AH 对 IP 首部和载荷都进行认证。
2.3.2 ESP(封装安全载荷)
提供加密、认证和完整性保护。ESP 只加密和认证载荷部分。
2.3.3 工作模式
- 传输模式:只加密载荷,用于主机到主机通信
- 隧道模式:加密整个 IP 包,用于站点到站点通信(VPN)
IPsec 通常与 IKE(Internet Key Exchange)协议配合使用,自动协商和交换密钥。
2.4 防火墙
防火墙控制网络之间的访问。
2.4.1 包过滤防火墙
根据 IP 地址、端口号、协议过滤分组。优点:速度快、实现简单。缺点:无法理解应用层协议、无法跟踪连接状态。
2.4.2 状态检测防火墙
跟踪连接状态,只允许合法的分组通过。例如,只允许属于已建立连接的分组通过。状态检测防火墙比包过滤更安全,但性能开销更大。
2.4.3 应用层防火墙
深度检查应用层协议,阻止恶意内容。例如,检查 HTTP 请求中的恶意代码、过滤恶意 URL。应用层防火墙最安全,但性能开销最大。
2.5 IDS(入侵检测系统)
IDS 监控网络流量,检测可疑活动。
- 基于签名:匹配已知攻击模式(类似杀毒软件)
- 基于异常:检测偏离正常行为的活动(机器学习方法)
IDS 与防火墙的区别:防火墙是预防性的(阻止可疑流量),IDS 是检测性的(发现已经发生的攻击)。现代安全系统通常将两者结合,形成 IDS/IPS(入侵防御系统)。
三、深入分析
3.1 证书和 PKI
证书将公钥与身份绑定,由 CA(证书颁发机构)签发。
证书内容:
- 主体公钥
- 主体信息
- 颁发者
- 有效期
- 签名PKI(Public Key Infrastructure)是证书管理的完整体系,包括 CA、RA(注册机构)、证书库、CRL(证书吊销列表)等。浏览器内置了受信任的根 CA 证书,用于验证服务器证书。
Let's Encrypt 是一个免费的 CA,推动了 HTTPS 的全面普及。证书格式通常使用 X.509 标准。
3.2 常见网络攻击
| 攻击类型 | 描述 | 防御 |
|---|---|---|
| DDoS | 分布式拒绝服务 | 流量清洗、CDN、Anycast |
| 中间人攻击 | 截获并篡改通信 | TLS、证书验证 |
| 钓鱼 | 伪装成可信实体 | 用户教育、SPF/DKIM |
| SQL 注入 | 注入恶意 SQL | 参数化查询 |
| XSS | 注入恶意脚本 | 输入过滤、输出编码 |
DDoS 攻击是最难防御的攻击之一。常见的 DDoS 攻击包括:SYN Flood、UDP Flood、DNS 放大攻击、HTTP Flood。防御方法包括:流量清洗(scrubbing center)、CDN 分散流量、Anycast 路由、速率限制等。
3.3 WiFi 安全
- WEP:已不安全(RC4 加密,可被破解)
- WPA:使用 TKIP,过渡方案
- WPA2:使用 AES-CCMP,目前安全
- WPA3:最新标准,更安全(SAE 密钥交换,防止离线字典攻击)
四、实践案例
4.1 案例一:使用 openssl 管理证书和加密
# 生成私钥
openssl genrsa -out key.pem 2048
# 生成证书请求
openssl req -new -key key.pem -out csr.pem
# 自签名证书
openssl x509 -req -days 365 -in csr.pem -signkey key.pem -out cert.pem
# 查看证书信息
openssl x509 -in cert.pem -text -noout
# 加密/解密文件
openssl enc -aes-256-cbc -in file.txt -out file.enc
openssl enc -d -aes-256-cbc -in file.enc -out file.txtopenssl 是网络安全领域最重要的工具之一,提供了完整的密码学功能:加密/解密、证书管理、密钥生成、哈希计算等。
4.2 案例二:使用 curl 和 nmap 进行安全测试
# 查看 HTTPS 证书信息
curl -vI https://www.google.com
# 检查 TLS 版本和密码套件
curl -vI --tlsv1.2 https://www.google.com
# 忽略证书验证(测试用)
curl -k https://self-signed.example.com
# 扫描开放端口
nmap target_ip
# 扫描特定端口和服务版本
nmap -sV -p 80,443 target_ip五、常见误区
5.1 误区一:"HTTPS 就是安全的"
HTTPS 只保证传输安全(机密性、完整性),如果服务器被入侵、证书被伪造、或者使用了不安全的密码套件,仍然不安全。此外,HTTPS 不保护 DNS 查询(DNS over HTTPS 除外)。
5.2 误区二:"密码越长越安全"
密码的安全性取决于熵(随机性),不仅仅是长度。一个 20 个字符的 "aaaaaaaaaaaaaaaaaaaa" 不如一个 12 个字符的 "Tr5#kL9@mP2!" 安全。建议使用密码管理器生成和存储强密码。
5.3 误区三:"开源的加密算法不安全"
实际上,现代加密算法(AES、RSA、ECC 等)都是公开的。安全性不依赖于算法的保密,而依赖于密钥的保密(Kerckhoffs 原则)。开源的密码学库(如 OpenSSL)经过广泛审查,反而更安全。
5.4 难点:理解 TLS 握手过程
TLS 握手涉及多个密码学概念,需要理解公钥加密、数字签名、密钥交换等。关键步骤是:双方通过公钥加密协商出一个共享的会话密钥,然后使用对称加密进行后续通信。
六、本章小结
第9章讲解了网络安全:
对称加密 速度快,但密钥分发困难
公钥加密 解决密钥分发问题,但速度慢
数字签名 提供身份认证和不可否认性
TLS 为应用层提供安全传输
IPsec 在网络层提供安全服务
防火墙和 IDS 保护网络安全
后续章节将讲解网络管理。
七、思考题
假设 Alice 和 Bob 需要通过不安全的网络进行安全通信。请描述一个完整的方案,包括密钥交换、数据加密和身份认证。
TLS 1.3 相比 TLS 1.2 有哪些改进?为什么 TLS 1.3 的握手只需要 1-RTT?
什么是前向安全(Forward Secrecy)?为什么它很重要?如何实现前向安全?
比较包过滤防火墙、状态检测防火墙和应用层防火墙的优缺点。在什么场景下你会选择哪种?
假设你的网站遭受了 DDoS 攻击,流量是正常流量的 100 倍。请描述你的应急响应方案。