NET-07 网络安全
07 · 网络安全(Network Security)
📅 预计 90 分钟 | ⭐ 本章主题:加密、数字签名、证书、HTTPS 与常见攻击
7.0 网络安全要解决什么问题
把网络想象成一条公共走廊,数据像信件一样从你的门送到对方的门。走廊里来来往往什么人都有:有人想偷看信的内容,有人想改信上的话,有人干脆想把你家的门堵住。网络安全(network security)解决的就是这三类问题,总结成 CIA 三元组:
| 目标 | 英文 | 意思 | 破坏它的攻击 |
|---|---|---|---|
| 机密性 | Confidentiality | 内容只有该看的人能看 | 窃听、中间人窃取 |
| 完整性 | Integrity | 内容没有被篡改 | 篡改报文 |
| 可用性 | Availability | 服务一直可用 | DDoS 瘫痪服务器 |
记这三个词的钥匙就是"保密、保鲜、保在"。后面所有技术都围绕这三点。
⚠️ 常见错误
- 把机密性和完整性混为一谈:机密性防"看"(加密),完整性防"改"(校验/签名),是两件事。
- 以为"加密"解决所有问题:加密只解决机密性;防篡改靠完整性校验,防抵赖靠数字签名。
- CIA 缩写记成别的:Confidentiality-Integrity-Availability。
7.1 对称加密:一把钥匙开一把锁
DES / AES
对称加密(symmetric encryption)用同一个密钥既加密又解密。就像你和朋友约定好一把相同的钥匙:你用钥匙锁上,他用同一把钥匙打开。
过程描述:
明文 "HELLO" --(密钥 K 加密)--> 密文 "x8#k!" --(同一密钥 K 解密)--> 明文 "HELLO"
- DES(Data Encryption Standard):早期标准,密钥长度 56 位,在今天已经可以被暴力破解,基本淘汰。
- 3DES:把 DES 连做三次,属于临时过渡方案。
- AES(Advanced Encryption Standard):当前主流,密钥长度可选 128 / 192 / 256 位,安全且高效,浏览器、WiFi(WPA2)都在用。
对称加密的优点是快(适合加密大量数据);缺点是密钥分发难题——你俩相隔千里,怎么安全地把同一把钥匙交给对方?要是钥匙被偷,等于白锁。
⚠️ 常见错误
- DES 与 AES 记反:DES 老、密钥 56 位、不安全;AES 新、128/192/256 位、主流。
- 以为对称加密也用于身份验证:对称加密主要管机密性;验身份、防抵赖靠数字签名(非对称)。
- 忽略"密钥分发"问题:这是对称加密的核心短板,也是非对称加密登场的原因。
7.2 非对称加密:一公一私两把钥匙
RSA
非对称加密(asymmetric encryption)用一对钥匙:公钥(public key)公开给所有人,私钥(private key)自己保管。用公钥加密的内容,只有配对的私钥能解;反之亦然。它像公共信箱:谁都能往投递口塞信(公钥加密),但只有握着信箱钥匙的收件人(私钥)能打开取信。
- RSA 是最经典的非对称算法,安全性建立在"两个大素数的乘积容易算,但把乘积分解回两个素数极难"这一数学事实上。
- 比 RSA 更新的有 ECC(椭圆曲线)等,密钥更短、性能更好。
非对称加密的核心用途有两个方向(务必分清):
| 用途 | 用哪把钥匙加密 | 用哪把钥匙解密 | 解决什么 |
|---|---|---|---|
| 加密传输 | 接收方公钥 | 接收方私钥 | 机密性(只有接收方能看) |
| 数字签名 | 发送方私钥 | 发送方公钥 | 完整性 + 身份验证 + 防抵赖 |
用 RSA 的小数字例子体会"加密-解密"往返(真实密钥远大于此):
选素数 p=61, q=53,n = p*q = 3233
公钥 (e, n) = (17, 3233)
私钥 (d, n) = (2753, 3233)
加密:密文 = 明文^e mod n
65^17 mod 3233 = 2790
解密:明文 = 密文^d mod n
2790^2753 mod 3233 = 65 ← 还原成功
⚠️ 常见错误
- "加密"与"签名"的钥匙方向记反:加密用接收方公钥,签名用发送方私钥——这是本讲被问最多的混淆点。
- 以为公钥能解密私钥加密的一切:同一对钥匙互为逆运算,但"公钥加密私钥解"用于保密,"私钥加密公钥解"用于签名。
- 非对称 vs 对称搞混:对称一把钥匙、快、有分发难题;非对称一对钥匙、慢、无分发难题。
7.3 数字签名与数字证书:盖章与验章
数字签名:防篡改 + 防抵赖
数字签名(digital signature)解决两件事:内容没被人改过(完整性)、发送方无法抵赖(不可否认)。它像文件上的手写签名加骑缝章。
过程(发送方):
1. 对明文做哈希(hash,如 SHA-256)→ 得到固定长度的"指纹"(摘要)
2. 用发送方【私钥】对指纹加密 → 得到"数字签名"
3. 把【明文 + 数字签名】一起发给对方
过程(接收方验证):
1. 用发送方【公钥】解密签名 → 得到"对方算出的指纹 A"
2. 自己再对收到的明文做同样的哈希 → 得到"我算出的指纹 B"
3. 若 A == B:明文没被改过,且确实来自持有该私钥的人
这里必须带出 哈希(hash)这个概念:它是一个"单向"函数——内容随便多长,算出来都是固定长度(如 SHA-256 是 256 位);内容只要改一个字符,指纹就完全变样;而且几乎不可能从指纹反推出原文。哈希本身不加密、也不解密,它是"数字指纹"。
数字证书:把公钥和"人"绑定
非对称加密有个前提问题:你怎么确定手里的公钥真是对方的?中间人可能把自己的公钥塞给你。数字证书(digital certificate)就是由权威机构 CA(Certificate Authority,证书颁发机构)给"公钥 + 持有人身份"签名盖章,证明"这把公钥确实属于某某网站"。它像身份证:你自己说你是谁没用,得由发证机关(CA)盖章。
工作流程(浏览器访问 HTTPS 网站时):
1. 网站把"证书"发给浏览器:证书里有网站域名 + 网站公钥 + CA 的签名
2. 浏览器用【CA 的公钥】验证证书上的签名 → 证书是真的、没被篡改
3. 浏览器确认证书里的域名 == 正在访问的域名
4. 信任证书里的公钥,用它完成后续加密通信
CA 的公钥怎么来?它来自根证书(root certificate),预装在操作系统/浏览器里。这就形成了一条信任链:根证书 → 中间 CA → 网站证书。
⚠️ 常见错误
- 证书解决的是"公钥是谁的",不是"数据是否加密"——加密靠密钥协商,证书提供信任基础。
- 哈希 ≠ 加密:哈希不可逆、无密钥;加密可逆、有密钥。SHA-256 不是"加密算法"。
- 签名方向记反:签名用私钥,验签用公钥;而加密用接收方公钥,解密用接收方私钥。
- 忽略域名校验:证书合法但域名对不上(如你访问 a.com 收到 b.com 的证书),浏览器会报警,说明可能正遭遇中间人攻击。
7.4 TLS/SSL 与 HTTPS:加密的握手
TLS 握手:先谈好"暗号",再开始聊天
TLS(Transport Layer Security)是 HTTP 加密的基础,前身叫 SSL(Secure Sockets Layer),现代标准是 TLS,但大家常混叫"SSL"。HTTPS = HTTP + TLS。
TLS 的第一步是握手(handshake)——双方先协商出"用什么算法、用什么密钥",然后再用这个密钥加密传输内容。简化流程如下:
客户端 服务器
│ ① ClientHello:我支持 TLS1.3、这些加密算法 ──→│
│ ←─ ② ServerHello:我们用它;并发送【数字证书】 │
│ ③ 验证证书(CA 签名 + 域名) │
│ ④ 用证书里的公钥协商出一个"会话密钥"(细节: │
│ 客户端生成预主密钥,用服务器公钥加密发过去)──→│
│ ←─ ⑤ Finished:我也准备好了 │
│ ⑥ Finished:开始用会话密钥加密通信 │
└───────────────────────────────────────────→
之后的所有 HTTP 请求/响应都用【会话密钥】对称加密传输
关键点:握手阶段用非对称加密传递秘密(慢但安全),正式通信阶段用对称加密(会话密钥)加密海量数据(快)。两种加密在这里配合登场。
⚠️ 常见错误
- 以为 HTTPS 全程都用 RSA:只有密钥协商阶段用非对称,传输阶段用对称的会话密钥。
- SSL 与 TLS 混淆:SSL 是老版本、已不推荐;现在用的是 TLS,TLS 1.2 / 1.3。
- 以为 HTTPS 只是"HTTP 加把锁"这么简单:涉及证书校验、密钥协商、加密套件协商三件事。
- 端口:HTTPS 443,别写 80。
7.5 防火墙:小区的门卫
防火墙(firewall)是部署在网络边界(内网与外网之间)的门卫,根据预设规则决定放行还是拦截数据包。它保护"内网"不被外部恶意访问,也能限制内网向外访问。
常见类型(从"粗"到"细"):
| 类型 | 检查到哪一层 | 特点 |
|---|---|---|
| 包过滤防火墙 | 网络层/传输层(IP、端口、协议) | 快,按五元组放行/丢弃 |
| 状态检测防火墙 | 网络层/传输层 + 连接状态 | 能识别"这是合法连接的后续包" |
| 应用层代理防火墙 | 应用层 | 最细,能识别 HTTP 内容,慢 |
包过滤的典型规则:只放行从内网发起的连接及其响应,禁止外部主动连入内网的 22 端口(SSH)。状态检测比普通包过滤聪明的地方在于:它记录连接状态,只放行"会话中"的合法回包。代理则替内网用户转发请求,内网主机对外不可见。
⚠️ 常见错误
- 把防火墙和杀毒软件混淆:防火墙管"放行/拦截网络流量",杀毒软件管"主机上的病毒"。
- 以为防火墙能防一切:防火墙拦不住来自内网内部的攻击,也拦不住已被加密封装的可疑流量。
- 类型层级记反:包过滤最粗、代理最细;代理慢但查得深。
7.6 常见攻击
中间人攻击(MITM)
中间人攻击(Man-In-The-Middle)指攻击者插入通信双方之间,双方都以为自己在和对方说话,其实都在和中间人说话。中间人可以窃听(读内容)、篡改(改内容)、甚至冒充(伪造身份)。对策:加密 + 证书验证(HTTPS),让中间人"看不懂、改不了、装不成"。
A ──信─→ [M 中间人,偷看/改写] ──信─→ B
A 以为在跟 B 通信,B 以为在跟 A 通信
DDoS 攻击
DDoS(Distributed Denial of Service,分布式拒绝服务)通过大量被控制的机器(僵尸网络)同时向目标发送海量请求,把服务器的带宽、连接数、CPU 打满,让正常用户访问不到——破坏的是 CIA 里的"可用性"。单机发起的叫 DoS,DDoS 是"分布式"(许多台一起)。防御思路:流量清洗、限速、CDN 分摊、封禁恶意 IP。
SQL 注入
SQL 注入(SQL Injection)利用程序把用户输入直接拼接进 SQL 语句的漏洞,让数据库执行攻击者构造的恶意语句。比如登录框输入:
用户名:admin' --
密码:随便
拼接成的 SQL:SELECT * FROM users WHERE username='admin' --' AND password='随便'
-- 是 SQL 注释,把后面的密码判断"注释掉"了,于是攻击者以 admin 身份直接登录。防御核心:参数化查询(占位符),永远不要字符串拼接 SQL。
补充两个概念
- 暴力破解(brute-force):逐个试密码。
- XSS(跨站脚本):把恶意脚本注入到网页里,在别人浏览器中执行。
⚠️ 常见错误
- DDoS 破坏的是可用性,不是机密性——目标是"让服务不可用"。
- SQL 注入的根因是"字符串拼接 SQL",不是数据库本身不安全。
- 中间人攻击的前提是对方没验证证书;HTTPS + 证书校验能有效拦截。
- 不要把 DoS 和 DDoS 完全等同:DDoS 是分布式发起,更难以防御。
7.7 本讲小结
网络安全 = 围绕 CIA 三元组。对称加密管快、非对称加密管钥匙分发、哈希管完整性、数字签名管防抵赖、证书 + CA 管信任、TLS/HTTPS 把它们组合落地、防火墙守边界、各种攻击提醒我们这些技术为什么存在。
🧠 记忆口诀
- CIA:机密(Confidentiality)、完整(Integrity)、可用(Availability)。
- 钥匙方向:加密用对方公钥,签名用自己私钥——"加密给人看,签名给自己证"。
- 哈希是指纹:不可逆、定长、一变全变。
- 握手分两段:非对称传密钥,对称传正文。
- 攻击三连:MITM 插中间,DDoS 塞满门,SQL 注入改查询。
📌 中英术语表(本讲)
| 中文 | English | 说明 |
|---|---|---|
| 网络安全 | network security | 保护网络与数据的机密性/完整性/可用性 |
| 机密性 | confidentiality | 内容只给该看的人看 |
| 完整性 | integrity | 内容未被篡改 |
| 可用性 | availability | 服务始终可用 |
| 对称加密 | symmetric encryption | 一把密钥加解密 |
| DES | Data Encryption Standard | 56 位密钥,已不安全 |
| AES | Advanced Encryption Standard | 128/192/256 位,当前主流 |
| 非对称加密 | asymmetric encryption | 公钥/私钥一对 |
| 公钥 / 私钥 | public key / private key | 公开 / 保密 |
| RSA | RSA | 经典非对称算法,基于大数分解 |
| 哈希 | hash | 单向指纹函数,不可逆 |
| 数字签名 | digital signature | 私钥签、公钥验,防篡改防抵赖 |
| 数字证书 | digital certificate | CA 为公钥+身份盖章 |
| 证书颁发机构 | Certificate Authority (CA) | 签发证书的可信第三方 |
| 信任链 | chain of trust | 根证书 → 中间 CA → 网站证书 |
| TLS / SSL | Transport Layer Security | 传输层加密协议 |
| 握手 | handshake | 协商算法与密钥的过程 |
| 会话密钥 | session key | 本次会话用的对称密钥 |
| 防火墙 | firewall | 网络边界的访问控制 |
| 包过滤 | packet filtering | 按 IP/端口/协议放行 |
| 状态检测 | stateful inspection | 结合连接状态判断 |
| 代理防火墙 | proxy firewall | 应用层代转发 |
| 中间人攻击 | man-in-the-middle (MITM) | 插在双方中间窃听篡改 |
| 分布式拒绝服务 | DDoS | 大量机器同时攻击使服务瘫痪 |
| SQL 注入 | SQL injection | 拼接 SQL 语句的漏洞 |
| 暴力破解 | brute-force attack | 逐个试密码 |
| 跨站脚本 | cross-site scripting (XSS) | 在网页中注入脚本 |
⭐ 本章考点清单
- CIA 三元组及各自对应的攻击。
- DES / AES 的密钥长度与安全定位。
- RSA 的公钥/私钥用途方向:加密 vs 签名。
- 数字签名过程:哈希 → 私钥签名 → 公钥验签。
- 哈希的性质(不可逆、定长、一变全变)。
- 证书的作用与 CA 的信任链。
- TLS 握手两步:非对称协商密钥 + 对称传输。
- HTTPS 与 HTTP 的区别;端口 443。
- 防火墙三类及各自的检查层级。
- 中间人、DDoS、SQL 注入的原理与对策。