防窃听的根本手段就是加密:用算法 + 密钥把明文搅成看不懂的密文,半路被截走也只能拿到乱码。加密只有两大思路——对称密钥(加解密同一把钥匙,快,代表 AES;致命难题=钥匙怎么安全交给对方)和公开密钥(公钥人人可拿、私钥自己留,公钥加密只有私钥能解,代表 RSA;分发难题解决了,但很慢)。实战从来不是二选一,而是混合加密:用公钥把一次性的"会话密钥"安全送给对方,数据本身用对称密钥加密——HTTPS 就是这么干的。记住行业底线:算法公开没关系,秘密全在钥匙上(柯克霍夫原则);而"加密"只保机密性,防不了篡改、防不了攻击、防不了两端泄露。
7.1 把门关上了——"谁有资格用网络";本节回答下一个问题:进了门的人说的话,半路会不会被人偷听? 这在前面其实早埋了两处伏笔:
- 5.21 WPA2:当时说 WEP 死了、WPA2 用 AES-CCMP 逐帧加密、"抓包只能离线猜"——为什么 WEP 会死(RC4 的毛病)、AES 强在哪,本节给出原理;
- 第四章 HTTP:网页请求全程明文,账号密码在共享介质(5.8)上一路裸奔——"防止数据被窃听"最典型的场景就是它。
7.1 里还留过一句"挑战-应答:凭据不上线",那其实是加密思想的小试牛刀。本节把"加密"这个工具箱正式打开:对称与公开密钥这两把家伙什,是后面讲防篡改(数字签名)、防假冒(证书)的全部地基。
一、窃听有多容易:明文就是一张明信片
先看清威胁在哪。网络上的数据是"路过很多设备"才到达目的地的——这在前六章我们已经看得清清楚楚:
- 共享介质时代(5.8 的 CSMA/CD):同一根总线上,谁的网卡都能听到所有帧,只是"不是给我的就不收"——约束靠自觉,不靠技术;把网卡调成混杂模式,全楼流量一览无余;
- Wi-Fi 更彻底:无线电波向四面八方广播(5.16),半径内的任何天线都在"听",你根本不知道谁在听;
- 互联网上:你的包要经过十几跳路由器(第六章的 tracert),每一跳的运营商设备理论上都能看。
所以:
明文传输 = 寄明信片:沿途所有邮递员都能把内容读个遍。 加密传输 = 装进保险箱再寄:就算被拆开看,里面也只是一堆乱码。
最典型的受害者是老式 HTTP:登录表单里的密码、Cookie 里的会话标识,从头到尾明文——同一间咖啡馆 Wi-Fi 里的任何人都能原样抄走。"防止数据被窃听",防的就是这个。
二、加密的最小模型:算法 + 密钥(第一张配图)
把加密拆到最简,就四个角色:
| 角色 | 是什么 | 比喻 |
|---|---|---|
| 明文 | 原始数据 | 信的内容 |
| 密文 | 加密后的乱码 | 打乱后的天书 |
| 算法 | 加/解密的步骤(公开) | 搅拌的方法 |
| 密钥 | 那串只有通信双方知道的数 | 密码本的页码 |
关键的一条行业铁律叫柯克霍夫原则:
假设敌人连你的算法都知道了,系统仍然应当安全——因为秘密全部藏在密钥里。
听着别扭,其实是被历史反复打脸后总结出来的:
- 靠"算法保密"的系统:一旦泄露(内部人员、逆向工程),全世界用这套算法的人同时报废,而且没人知道它早就被破了;
- 算法公开:全球密码学家帮你挑毛病,能扛住几十年公开攻击留下来的(如 AES),才值得信;
- 你电脑上的 TLS、AES、RSA 全是公开标准——公开不是妥协,是前提。
📌 所以"加密强不强"这个问题,几乎总可以翻译成:"钥匙有多长、管得好不好"。
三、对称密钥加密:一把钥匙走天下(第二张配图·左)
最直觉的思路:加密和解密用同一把钥匙——就像家门钥匙,锁门开门是同一把。
- 代表算法:AES(当今标准,128/192/256 位密钥)、3DES(旧)、RC4(已死,WEP 和早期 TLS 用它,死因见下);
- 最大优点:快——单核每秒能加解密数 GB,还有 CPU 硬件指令加速,所以加密大流量数据全靠它(视频、文件、整个 Wi-Fi 信道的每一帧);
- 5.21 的老账:WPA2 的 AES-CCMP 就是"每一帧无线数据都用 AES 加一遍";而 WEP 死因正是"RC4 这个算法本身有毛病 + 密钥流重复使用"——同一把锁,锁芯有缺陷。
它的致命难题:钥匙怎么交出去?
两个人第一次通信,对称密钥得先让双方都有。可是——
在加密通道建立之前,你根本没有安全渠道送这把钥匙。 明文寄钥匙 = 把保险箱钥匙和保险箱一起寄,还挂在门把手上。
而且规模一大直接爆炸:n 个人两两通话,每人要保管 n-1 把钥匙,全网共 n(n-1)/2 把——1000 人的公司要发 499500 把,还都是"绝密"。
这个密钥分发问题,就是对称加密的死穴,也是公开密钥加密登场的原因。
四、公开密钥加密:两把一对的数学魔术(第二张配图·右)
1970 年代出现了一个漂亮得多的想法:把钥匙拆成一对。
- 公钥:随便发,贴墙上都行;
- 私钥:自己藏着,永远不出门;
- 数学上保证:用公钥加密的东西,只有配对的私钥能解开(反过来也一样,这个"反过来"是下一节数字签名的地基)。
生活比喻最形象的是开着的挂锁:
你想给我寄机密:
① 我把"开着的挂锁"(公钥)人手一把地发出去
② 你把信放进盒子,用我的挂锁咔哒扣上
③ 半路谁拿着盒子都打不开——锁只有扣上的功能,没有开的功能
④ 盒子寄回我家,我用唯一的钥匙(私钥)打开
- 代表算法:RSA(基于"把一个大整数拆回两个质数极其困难")、ECC(椭圆曲线,更短的密钥做到同等强度);
- 最大优点:密钥分发问题直接消失——公钥被窃听者抄走也无所谓,它本来就人人可拿;
- 最大缺点:慢——比 AES 慢成百上千倍,拿来加密整个视频流会把 CPU 烧穿。
📌 关键纠正一个直觉:"公开密钥加密更安全"是错的。两者都建立在"计算上不可行"之上(现有算力穷举不动),区别不在安全高低,在用途:对称管快,公开管分发。
五、混合加密:实战从来都是"两队合作"
既然一个快但不便分发、一个免分发但太慢,实战方案顺理成章:
用公开密钥做一件"小活"——安全地送一把一次性对称密钥(会话密钥);然后所有数据用对称密钥加密。
这就是 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)
- 随便挑一个文件,右键 → 7-Zip → 添加到压缩包;
- 右侧「加密」区输入密码,勾选「加密文件名」,算法保持默认(AES-256);
- 确定 → 得到一个
.7z; - 换台电脑(或删掉原文件)双击打开:没密码连文件名都看不见。
看到什么算成功:没密码打不开;输密码解压成功。这就是"一把钥匙加解密"的对称加密——而且密码只在你和"打开的人"之间,你刚亲手复现了"密钥分发难题"(你是怎么把密码告诉对方的?微信?那微信本身就是个加密通道,套娃了)。
B. 亲眼看到混合加密的两个名字同框
- 浏览器打开任意 https 网站,点地址栏的小锁 → 连接安全 → 查看证书/更多信息;
- 找「密码套件 / 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 这类补丁)。加密 ≠ 隐身。
八、常见误区
- "加密算法保密才安全。" —— 恰恰相反。柯克霍夫原则:秘密全在密钥;公开的算法经受过全球检验,"祖传保密算法"一旦泄露全线报废。
- "公开密钥加密比对称加密更安全。" —— 不存在"谁更安全",只有"谁适合干什么":对称管快,公开管分发;两者都是"计算上不可破"。
- "公钥加密的东西,拿到公钥就能解开。" —— 不能。公钥只能加密(或验签),解密必须用配对的私钥;否则这套体系当场崩塌。
- "数据加密了,就绝对安全了。" —— 加密只保机密性:防不了篡改(下一节)、防不了两端泄露(你电脑中木马)、防不了 DoS 攻击(可用性)、防不了你把密码亲手发给钓鱼网站。
- "密钥越长越好,无脑上最长。" —— 长度有性能代价;现实中密钥管理和人的环节(弱密钥、复用、泄露)比长度先出事。
- "同一个文件每次加密,密文应该一模一样。" —— 正确的加密会混入随机数(IV/nonce),同一明文每次密文都不同——这是特性不是 bug,专治"对照分析"。
- "WEP 时代 Wi-Fi 也有加密,说明无线以前也是安全的。" —— WEP 用有缺陷的 RC4 且密钥流重复,几分钟就能破(5.21);"有加密"和"加密有效"是两回事。
- "HTTPS 看不见内容,所以匿名。" —— 内容加密了,但通信对象、时间、流量大小仍可见;DNS 查询也可能明文。加密 ≠ 匿名。
九、动手自测
点开自测(先自己答,再展开)
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)重复使用——教训是"用错/用老算法"和"随机数管理失误"都能让看似有加密的系统形同虚设。
十、下一步学什么
- ☑ 7.3(按教材顺序)
相关笔记
- 使用一个密钥管理数据(共享密钥加密方式) —— 本节左半边的正名与深挖:一把钥匙提前共享,"分发难题"与"数量爆炸"正式展开
- 限制访问用户和设备的方法(身份认证) —— 上一节"认人",本节"防听";那里的数字证书与挑战-应答都是加密思想的先遣队
- 无线局域网的安全性(WPA2) —— AES-CCMP 逐帧加密、"密码不上线"的握手、WEP 之死,本节全部给出原理层解释
- 浏览Web网站时执行的处理(DNS的域名解析、HTTP请求与HTTP响应) —— HTTP 明文请求就是"明信片"本体,HTTPS = 给它套上本节的混合加密
- 控制发送数据的时间(CSMA CD) —— 共享介质"人人听得见"的出处:窃听威胁的物理根源
- 不用网线也可轻松创建网络(无线局域网) —— 无线电波广播特性让"半路偷听"变成零成本
- 连接网络的过程(IP地址的设置) —— "钥匙怎么安全交出去"这个问题,和当年"网关怎么自动下发"一样,都是配置阶段的配送难题