🌐 第七章 网络安全技术
📄 一句话概括

防窃听的根本手段就是加密:用算法 + 密钥把明文搅成看不懂的密文,半路被截走也只能拿到乱码。加密只有两大思路——对称密钥(加解密同一把钥匙,快,代表 AES;致命难题=钥匙怎么安全交给对方)和公开密钥(公钥人人可拿、私钥自己留,公钥加密只有私钥能解,代表 RSA;分发难题解决了,但很慢)。实战从来不是二选一,而是混合加密:用公钥把一次性的"会话密钥"安全送给对方,数据本身用对称密钥加密——HTTPS 就是这么干的。记住行业底线:算法公开没关系,秘密全在钥匙上(柯克霍夫原则);而"加密"只保机密性,防不了篡改、防不了攻击、防不了两端泄露。

📝 本节和前面几节的关系

7.1 把门关上了——"谁有资格用网络";本节回答下一个问题:进了门的人说的话,半路会不会被人偷听? 这在前面其实早埋了两处伏笔:

  • 5.21 WPA2:当时说 WEP 死了、WPA2 用 AES-CCMP 逐帧加密、"抓包只能离线猜"——为什么 WEP 会死(RC4 的毛病)、AES 强在哪,本节给出原理;
  • 第四章 HTTP:网页请求全程明文,账号密码在共享介质(5.8)上一路裸奔——"防止数据被窃听"最典型的场景就是它。

7.1 里还留过一句"挑战-应答:凭据不上线",那其实是加密思想的小试牛刀。本节把"加密"这个工具箱正式打开:对称与公开密钥这两把家伙什,是后面讲防篡改(数字签名)、防假冒(证书)的全部地基。

一、窃听有多容易:明文就是一张明信片

先看清威胁在哪。网络上的数据是"路过很多设备"才到达目的地的——这在前六章我们已经看得清清楚楚:

所以:

明文传输 = 寄明信片:沿途所有邮递员都能把内容读个遍。 加密传输 = 装进保险箱再寄:就算被拆开看,里面也只是一堆乱码。

最典型的受害者是老式 HTTP:登录表单里的密码、Cookie 里的会话标识,从头到尾明文——同一间咖啡馆 Wi-Fi 里的任何人都能原样抄走。"防止数据被窃听",防的就是这个。

二、加密的最小模型:算法 + 密钥(第一张配图)

把加密拆到最简,就四个角色:

角色 是什么 比喻
明文 原始数据 信的内容
密文 加密后的乱码 打乱后的天书
算法 加/解密的步骤(公开) 搅拌的方法
密钥 那串只有通信双方知道的数 密码本的页码

关键的一条行业铁律叫柯克霍夫原则:

假设敌人连你的算法都知道了,系统仍然应当安全——因为秘密全部藏在密钥里。

听着别扭,其实是被历史反复打脸后总结出来的:

📌 所以"加密强不强"这个问题,几乎总可以翻译成:"钥匙有多长、管得好不好"。

三、对称密钥加密:一把钥匙走天下(第二张配图·左)

最直觉的思路:加密和解密用同一把钥匙——就像家门钥匙,锁门开门是同一把。

它的致命难题:钥匙怎么交出去?

两个人第一次通信,对称密钥得先让双方都有。可是——

在加密通道建立之前,你根本没有安全渠道送这把钥匙。 明文寄钥匙 = 把保险箱钥匙和保险箱一起寄,还挂在门把手上。

而且规模一大直接爆炸:n 个人两两通话,每人要保管 n-1 把钥匙,全网共 n(n-1)/2 把——1000 人的公司要发 499500 把,还都是"绝密"。

这个密钥分发问题,就是对称加密的死穴,也是公开密钥加密登场的原因。

四、公开密钥加密:两把一对的数学魔术(第二张配图·右)

1970 年代出现了一个漂亮得多的想法:把钥匙拆成一对。

生活比喻最形象的是开着的挂锁:

你想给我寄机密:
① 我把"开着的挂锁"(公钥)人手一把地发出去
② 你把信放进盒子,用我的挂锁咔哒扣上
③ 半路谁拿着盒子都打不开——锁只有扣上的功能,没有开的功能
④ 盒子寄回我家,我用唯一的钥匙(私钥)打开

📌 关键纠正一个直觉:"公开密钥加密更安全"是错的。两者都建立在"计算上不可行"之上(现有算力穷举不动),区别不在安全高低,在用途:对称管快,公开管分发。

五、混合加密:实战从来都是"两队合作"

既然一个快但不便分发、一个免分发但太慢,实战方案顺理成章:

用公开密钥做一件"小活"——安全地送一把一次性对称密钥(会话密钥);然后所有数据用对称密钥加密。

这就是 HTTPS(TLS 握手)、SSH、WPA2-企业背后一模一样的套路:

① 客户端连上服务器,拿到对方的证书(含公钥)——7.1 的数字证书在此归队
② 双方协商出一个"会话密钥"(只活这一次连接的对称密钥),用公钥机制保证它没被偷看
③ 之后的每一个包:AES 对称加密,速度拉满
④ 断开重来:会话密钥作废,下次连接换新的

回看老账:5.21 说 WPA2 四步握手"密码不上线"——本质就是第②步:真正加密数据的对称密钥(PTK)是双方当场算出来的,从没在空中传过;7.1 的"挑战-应答"也是同一个思想的近亲。你看,认证、握手、加密,到这里已经拧成一股绳了。

六、钥匙要管好:长度、寿命与人

最后把"钥匙管理"的三件常识立起来:

事项 说法 大白话
密钥长度 AES 128 / 256 位,RSA 2048/3072 位 长度决定"穷举要试多少年";DES 56 位 1998 年就被暴力破解了,所以标准一路加长
密钥寿命 会话密钥用完即弃 用得越久,被分析的材料越多;一次性密钥是常态(握手每次换)
人的环节 弱密钥、复用、泄露 系统被攻破十有八九死在这里:拿生日当密码、一把钥匙用十年、私钥放进代码仓库

📌 破解的现实:面对现代算法,硬碰硬的数学破解几乎不存在,真实的失守几乎都是"钥匙被偷"或"用错了算法"——和 7.1 口令的那句结论一模一样:薄弱的从来是人这一环。

七、动手 Demo(Demo90)

目标:亲手做一次对称加密,亲眼看到混合加密的证据,把"加密"从名词变成手感。

A. 7-Zip 亲手做一次对称加密(你电脑上就装着 7-Zip)

  1. 随便挑一个文件,右键 → 7-Zip → 添加到压缩包;
  2. 右侧「加密」区输入密码,勾选「加密文件名」,算法保持默认(AES-256);
  3. 确定 → 得到一个 .7z;
  4. 换台电脑(或删掉原文件)双击打开:没密码连文件名都看不见。

看到什么算成功:没密码打不开;输密码解压成功。这就是"一把钥匙加解密"的对称加密——而且密码只在你和"打开的人"之间,你刚亲手复现了"密钥分发难题"(你是怎么把密码告诉对方的?微信?那微信本身就是个加密通道,套娃了)。

B. 亲眼看到混合加密的两个名字同框

  1. 浏览器打开任意 https 网站,点地址栏的小锁 → 连接安全 → 查看证书/更多信息;
  2. 找「密码套件 / Cipher Suite」一栏,会看到类似:
TLS_AES_256_GCM_SHA384          (AES = 对称,干重活)
TLS_ECDHE_RSA_WITH_AES_128_GCM  (ECDHE/RSA = 公钥,送钥匙)

看到什么算成功:一行里同时出现"公钥家族"和"对称家族"的名字——这就是混合加密的现场证据。

C. 30 秒实验一:明信片 vs 保险箱

浏览器地址栏分别留意 http:// 和 https:// 开头的网站:Chrome/Edge 会在 http 网站旁直接标「不安全」。同一个网站两个协议来回试(如 http://neverssl.com),亲眼看这个标记的差别。

D. 30 秒实验二:数一数你身边的加密

场景 加密方式 对应本节概念
手机锁屏后的整机数据 AES(文件级/整机加密) 对称密钥
家里 Wi-Fi(WPA2) AES-CCMP 逐帧 对称密钥(5.21)
微信/Signal 私聊 端到端(含公钥交换) 混合加密
网银/购物 HTTPS TLS 握手 + 会话密钥 混合加密
7-Zip 密码压缩包 AES-256 对称密钥

E. 一个反直觉小测

问自己:"用了 HTTPS,别人是不是就完全看不到我在干什么了?"

答案是否——加密保护的是内容,但你在和谁通信、什么时候、流量多大(元数据)依然可见;DNS 查询、IP 目的地址都在裸奔(所以才有 DoH 这类补丁)。加密 ≠ 隐身。

八、常见误区

九、动手自测

点开自测(先自己答,再展开) 1. 加密系统的四个基本角色是什么?各自的比喻是什么? 2. 柯克霍夫原则说了什么?为什么"算法公开"反而更让人放心? 3. 明文传输为什么危险?请结合 5.8 和 5.16 各说一个窃听场景。 4. 对称密钥加密的定义、优点、代表算法各是什么? 5. "密钥分发问题"具体指什么?为什么说 n 个人两两通信时它会爆炸? 6. 公开密钥加密是怎么解决分发问题的?"开着的挂锁"比喻里,公钥、私钥、扣锁、开锁分别对应什么? 7. RSA 的安全性建立在什么数学难题上?(说出"大数拆质因数"这个方向即可) 8. 混合加密的完整流程是什么?为什么不全用公钥加密、也不全用对称加密? 9. WPA2 四步握手的"密码不上线"与本节哪个概念是一脉相承的? 10. DES 56 位为什么退役了?密钥长度的意义是什么? 11. "加密 ≠ 匿名",被加密保护的和不保护的分别是什么? 12. WEP 的死因暴露了什么教训?(提示:算法缺陷 + 密钥流复用)

答案:① 明文(信的内容)、密文(打乱后的天书)、算法(搅拌的方法,公开)、密钥(密码本页码,保密)。② 假设敌人知道算法,系统仍应安全——秘密全在密钥;因为公开算法能接受全球密码学家检验,扛住几十年公开攻击的算法才可信,而"保密算法"一旦泄露全线报废且无人知晓。③ 共享介质上网卡混杂模式能收全部帧(5.8);Wi-Fi 电波广播,半径内任何天线都能听(5.16);此外互联网每一跳路由设备理论上可读。④ 加解密同一把钥匙;快(硬件加速、适合大流量);AES(以及已退役的 DES、已死的 RC4)。⑤ 建立加密通道之前没有安全渠道送钥匙,明文寄钥匙等于钥匙挂门把手上;n 个人两两通信需 n(n-1)/2 把密钥、每人保管 n-1 把,规模一大无法管理。⑥ 钥匙拆成一对,公钥随便发、私钥自留,公钥加密只有私钥能解;挂锁=公钥(人人可拿、只能扣上)、钥匙=私钥(唯一能开)、扣锁=加密、开锁=解密。⑦ 大整数拆回两个质因数在计算上极其困难(RSA);ECC 则基于椭圆曲线离散对数难题。⑧ 先用公钥机制安全送出一次性会话密钥,再用它做对称加密通信;不全用公钥是因为太慢(慢千百倍),不全用对称是因为第一次分发没有安全渠道且密钥数量爆炸。⑨ 就是"会话密钥现场生成、从不在网络上传输"的思想——握手交换的只是能各自算出同一把钥匙的材料。⑩ 56 位密钥空间太小,1998 年即被暴力穷举破解;长度决定穷举所需的算力与时间,标准随算力增长不断加长(AES 128/256、RSA 2048+)。⑪ 保护的是通信内容;不保护的是元数据(对象、时间、流量大小)以及两端设备的安全与你自己的操作。⑫ 算法本身(RC4)有缺陷 + 密钥流(IV)重复使用——教训是"用错/用老算法"和"随机数管理失误"都能让看似有加密的系统形同虚设。

十、下一步学什么

相关笔记