共享密钥加密就是 7.2 说的"对称密钥"路线的正名与深挖:加密和解密共用同一把密钥——双方提前用安全渠道(当面、U 盘、电话)把钥匙共享好,之后密文随便公开走,没钥匙就是天书。它快(AES 快到能加密整条 Wi-Fi 信道),所以扛起了全世界的大数据量加密;但它有两个先天难题:第一把钥匙怎么安全交出去(先有鸡还是先有蛋),以及n 个人两两通话要 n(n-1)/2 把钥匙(1000 人公司 = 499500 把)。安全性由密钥空间决定:凯撒密码只有 25 种、几秒破光;DES 的 56 位在 1998 年被数天穷举;AES-128 的 2^128 用全宇宙算力也算不完——钥匙长度每多 1 位,穷举成本翻一倍。这个解药(公开密钥加密)留给下一节。
7.2 把加密的两条路线并排摆了出来(对称 vs 公开),本节专门把左半边放大细看——教材用"共享密钥加密方式"这个名字,强调的就是"一把钥匙,提前共享"这个动作。
手里已有的老账全都能对上:5.21 WPA2 的 AES-CCMP 是"共享密钥逐帧加密"的样板(那把共享钥匙就是 Wi-Fi 密码亲手配出来的);Demo90 的 7-Zip 密码压缩包是你已经做过的共享密钥加密(一个密码,加解密都用它);7.2 埋下的两个钩子——"密钥分发难题"和"密钥长度"——本节正式展开。看完本节你会发现:7.1 的口令、5.21 的 Wi-Fi 密码、7-Zip 的压缩密码、本节的共享密钥,本质都是"同一份秘密,双方各持一份"——共享密钥思想你其实从第一天就在用了。
一、工作原理:一把钥匙、双方各持一份(第一张配图)
共享密钥加密的完整生命周期只有三步:
| 步骤 | 做什么 | 关键约束 |
|---|---|---|
| ① 提前共享钥匙 | 用安全渠道让双方都拿到同一把钥匙:当面口述、U 盘拷贝、写纸上递过去 | 这条渠道不能是要加密的那条网络路——明文在网上发钥匙=白干 |
| ② 用钥匙通信 | 发送方加密 → 密文公开走 → 接收方用同一把钥匙解密 | 密文随便被抄;窃听者没有钥匙只能拿到乱码 |
| ③ 钥匙的日常管理 | 生成、分发、更换、销毁 | 谁持有、多久换一次、作废怎么清干净 |
第②步是它的强项(快),第①③步是它的软肋(见第六节)。先记住这幅全景图,剩下的内容全是围绕"钥匙"两个字展开的。
二、从凯撒密码开始:算法和钥匙是两回事
共享密钥加密最古老的祖师爷是两千年前凯撒用的移位密码:
规则(算法):每个字母沿字母表向后挪 k 位
钥匙(密钥):k = 3
明文: H E L L O
密文: K H O O R (H→K,E→H,L→O,O→R)
它麻雀虽小五脏俱全,正好把 7.2 的四角色演活:
- 算法公开("往后挪"这个规则谁都知道);
- 钥匙保密(挪几位只有通信双方知道);
- 换钥匙不改算法:今天 k=3,明天 k=17,规则一个字不变——这就是"算法与密钥分离"的意义:算法定终身,钥匙天天换。
📌 一句话抓住共享密钥的本质:算法是公开的锁具设计,密钥是那把只有你们俩有的钥匙。
三、密钥空间:为什么钥匙越长越难猜(第二张配图)
凯撒密码输在哪?钥匙太少了——字母表只有 26 个字母,k 除去 0 最多 25 种。攻击者不分析任何数学,挨个试一遍(穷举)最多 25 次就破。
于是引出本节最重要的概念——密钥空间(keyspace):
密钥空间 = 这套加密下,钥匙所有可能取值的总数。穷举破解 = 把密钥空间挨个试一遍。
而钥匙通常用二进制位数衡量,密钥空间就是 2 的 n 次方:
| 加密方式 | 密钥长度 | 密钥空间 | 穷举的现实结果 |
|---|---|---|---|
| 凯撒密码 | ~5 位 | 25 种 | 几秒,肉眼可破 |
| DES | 56 位 | ≈ 7.2 亿亿(2^56) | 1998 年被专用机数天穷举 → 退役 |
| AES-128 | 128 位 | ≈ 3.4 × 10^38(2^128) | 用全球算力试到宇宙热寂也算不完 → 现行标准 |
关键规律:
密钥空间每多 1 位,穷举时间翻一倍。 56 位到 128 位,难度不是"翻一倍多",而是翻了 2^72 倍——这就是"钥匙长度=穷举成本"的真正含义。
📌 顺带修正一个直觉:AES 没有 512 位版,因为 256 位已经"物理上不可能穷举",再长只是浪费电——安全瓶颈从来不在钥匙长度,而在钥匙管理(第六节)。
四、现代共享密钥加密:DES → 3DES → AES
三代算法就是一部"穷举军备竞赛史":
| 算法 | 出生 | 密钥长度 | 现状与死因 |
|---|---|---|---|
| DES | 1977(美国标准) | 56 位 | 已退役:1998 年被专用穷举机数天破解——密钥空间被算力追上了 |
| 3DES | 1990s | 112~168 位 | 过渡方案:把 DES 跑三遍凑长度;太慢,已步入淘汰 |
| AES | 2001(全球公开招标) | 128 / 192 / 256 位 | 现行标准:全球密码学家公开竞选出来的,手机 CPU 有硬件加速;WPA2、HTTPS、磁盘加密、7-Zip 用的全是它 |
AES 的出身就是柯克霍夫原则的现场直播:2001 年全球公开征集、各家方案互相攻击、最终比利时的 Rijndael 胜出——公开比武活下来的,才敢把全世界的银行押在它身上。
再补一块 7.2 留的拼图——同一个明文每次加密,密文为什么不一样? 现代共享密钥加密在干活时还会混入一个随机数(IV/nonce),让"同样的明文+同样的密钥"每次产出不同密文,专治攻击者"对照分析"(比如著名的 ECB 模式:同样的明文块永远加密成同样的密文块,加密一张企鹅图,轮廓能从密文里直接看出来——所以 ECB 严禁单独使用;真正在用的是 CBC、GCM 这类带随机数的模式)。这一条你已经在 7.2 的误区里见过结论了,这里是原理。
五、典型应用:共享密钥在哪些岗位上
| 场景 | 共享密钥是什么 | 备注 |
|---|---|---|
| Wi-Fi(WPA2-个人) | 你在路由器里设的那个密码 | 全家共享一把(5.21 的 PSK);AES-CCMP 逐帧加密 |
| 7-Zip 压缩包 | 你设的压缩密码 | Demo90 亲手做过,AES-256 |
| 手机/电脑磁盘加密 | 开机密钥派生出的密钥 | 整机 AES,丢机不丢数据 |
| VPN(IPsec) | 双方协商的会话密钥 | 公司异地组网的加密管道 |
| HTTPS 的"数据阶段" | 握手协商出的会话密钥 | 注意:只有"送钥匙"用公钥,干活的是它(7.2 的混合加密) |
看清楚这张表会发现一个规律:共享密钥加密无处不在,但"第一把钥匙怎么来的"全都被刻意藏起来了——要么人肉配(Wi-Fi 密码)、要么公钥帮忙送(HTTPS)。这正是它唯一的软肋所在。
六、两大先天难题与钥匙的日常管理
图一右下角那块红,展开说:
难题一:首次分发(先有鸡还是先有蛋)
要加密通信,先得共享钥匙;可共享钥匙本身就需要一条安全的通信路——而安全路还没建起来。目前的笨办法全是"带外":当面说、U 盘寄、电话里念(Wi-Fi 密码就是你妈喊你"密码在路由器贴纸上"完成的分发)。优雅的办法要等下一节的公开密钥加密。
难题二:数量爆炸(n 个人两两通话)
n 个人要保证任意两人通信都加密,每对需要一把独立钥匙:
| 人数 | 需要的钥匙数 |
|---|---|
| 5 人 | 10 把 |
| 100 人 | 4 950 把 |
| 1000 人 | 499 500 把 |
每人还得记住 n-1 把、知道哪句话用哪把——人数一大,管理成本先于安全性崩盘。
钥匙的日常:生命周期四件事
| 环节 | 要做什么 | 做砸了的后果 |
|---|---|---|
| 生成 | 用真随机来源,别用生日、12345678 | 弱密钥=密钥空间看着大、实际只有几百种 |
| 分发 | 走安全渠道(带外 / 下一节的公钥) | 明文发=直接送给窃听者 |
| 更换 | 定期换;会话密钥用完即弃(7.2) | 一把钥匙用十年,被分析的材料越攒越多 |
| 销毁 | 离职/换钥匙时清干净所有副本 | 删不干净的旧钥匙=后门一直开着 |
📌 和 7.1 口令、7.2 钥匙管理那句结论完全一致:共享密钥体系被攻破,几乎从来不是数学被破了,而是钥匙在"人"这一环漏了。
七、动手 Demo(Demo91)
目标:亲手玩一把"算法与密钥分离",亲手穷举一次密钥空间,把"钥匙长度=穷举成本"变成体感。
A. 纸笔玩凯撒密码(5 分钟)
- 拿一段英文(如
MEET AT NOON),用钥匙 k=3 加密:每个字母后挪 3 位 →PHHW DW QRRQ; - 把密文发给同伴(或换个窗口存着),让他用 k=3 反向挪回来解密;
- 看到什么算成功:没钥匙的人看密文是一串乱码;知道 k=3 的人 10 秒还原。
B. 30 秒穷举:亲手把 26 把钥匙试一遍
打开 PowerShell(开始菜单搜 powershell),把下面两行整段粘贴进去回车(把 PHHW DW QRRQ 换成你自己的密文):
$c = "PHHW DW QRRQ"
0..25 | ForEach-Object { $k = $_; ($c.ToCharArray() | ForEach-Object { if ($_ -match '[A-Z]') { [char]((([int][char]$_ - 65 + $k) % 26 + 65)) } else { $_ } }) -join '' }
屏幕会一次吐出 26 行——全部 26 种"钥匙"的解密结果,肉眼扫一眼,哪行是英文哪行就是答案(其中一行应是 MEET AT NOON)。
看到什么算成功:你刚亲眼完成了对"5 位密钥"的全空间穷举——不到一秒。现在想象密钥空间是 2^56、2^128,就能体会 DES 为什么死、AES 为什么稳。
C. 看 7-Zip 的钥匙长度选项(呼应 Demo90)
7-Zip 添加压缩包时的加密算法固定显示 AES-256——256 位密钥,密钥空间 2^256。对比 B 里你秒破的 25 种:这就是从"5 位"到"256 位"的差距(2^256 比可观测宇宙的原子总数还多)。
D. 30 秒实验:换钥匙,密文面目全非
用 A 的同一句 MEET AT NOON,换钥匙 k=17 再加密一次:得到的密文与 k=3 的版本毫无相似之处。算法一个字没变,只换了钥匙——共享密钥体系"钥匙天天换、算法定终身"的日常,就是这个动作。
E. 反直觉小测
问自己:"把 AES 密钥从 128 位加长到 256 位,安全性提升最大的场景是哪个?"
答案是:几乎没有场景显著受益——2^128 已不可穷举,真正的短板在钥匙管理(弱密钥、泄露、不更换)。对照第六节的表格自检一遍,你会发现"人"的四个环节每一个都比长度更容易出事。
八、常见误区
- "共享密钥加密就是把密码设复杂点。" —— 密钥不等于口令:它要求足量的随机性(真随机生成),生日、手机号这类"人类记忆友好"的东西会把 2^128 的密钥空间压缩成几千种。
- "算法保密会更安全。" —— 柯克霍夫原则(7.2):秘密全在钥匙;AES 能被全世界信任,恰恰因为它是公开比武的胜者。
- "凯撒密码也算加密,所以加密很简单。" —— 它只是教学模型:结构上完整(算法+密钥),但密钥空间只有 25,等于没锁门。现代加密的全部难度都在"把密钥空间做大、把算法做无懈可击"。
- "密钥越长越好,以后肯定会有 AES-512。" —— 256 位已超出物理穷举极限,再加长只是烧电;瓶颈在钥匙管理,不在长度。
- "DES 退役是因为算法被人'算出来'了。" —— 不是数学被破,是56 位密钥空间被算力追上(穷举);这提醒我们:今天安全的长度,不一定扛得住十年后的硬件。
- "同一文件加密两次,密文应该相同,不同才说明出错。" —— 相反,正确实现混入随机 IV,每次密文都不同才是正常(7.2 误区回收)。
- "把密钥写在小本本上的人不懂安全,存在电脑里才安全。" —— 看威胁模型:对"网络窃听者",纸上最安全;对"能碰你电脑的人",纸上反而更安全。钥匙管理的本质是想清楚"谁能碰到钥匙"。
- "共享密钥加密能解决所有安全问题。" —— 它只保机密性;分发难题靠 7.4,防篡改靠后续的哈希与签名,它自己一个都管不了。
九、动手自测
点开自测(先自己答,再展开)
1. 共享密钥加密的定义是什么?"共享"两个字指的是什么动作? 2. 三步生命周期里,为什么第一步的安全渠道"不能是要加密的那条网络路"? 3. 凯撒密码怎么体现"算法与密钥分离"?换钥匙时什么变了、什么没变? 4. 什么是密钥空间?穷举破解和它是什么关系? 5. 为什么说"密钥空间每多 1 位,穷举时间翻一倍"?从 56 位到 128 位总共翻了多少倍? 6. DES 是怎么死的?它给"密钥长度"什么启示? 7. AES 是怎么选出来的?这体现了 7.2 的哪条原则? 8. 同一个文件每次加密密文都不同,是 bug 还是特性?靠什么机制实现? 9. n 个人两两加密通话需要多少把钥匙?这个难题叫什么? 10. 钥匙生命周期四环节是什么?各举一个"做砸了"的例子。 11. WPA2-个人、7-Zip、HTTPS 数据阶段,各自用的共享密钥从哪来? 12. 为什么说"共享密钥体系被攻破几乎都是钥匙在人这环漏了"?结合 7.1 的口令说说共同点。答案:① 加解密共用同一把密钥;"共享"指双方提前通过安全渠道各持一份同一把钥匙。② 因为安全路还没建起来——在这条网络路上明文发钥匙,等于当着窃听者面交钥匙,加密形同虚设,所以必须"带外"(当面/U 盘/电话)。③ 算法="每字母后挪 k 位"公开不变;密钥=k 保密可换;换钥匙只改 k,规则一个字不动。④ 钥匙所有可能取值的总数;穷举=把密钥空间挨个试一遍,空间越大穷举成本越高。⑤ 二进制钥匙每加 1 位,取值多一倍;从 56 到 128 共加了 72 位,难度翻 2^72 倍。⑥ 56 位密钥空间(2^56)被 1998 年的专用穷举机数天试遍——启示是"密钥长度必须追着算力跑,今天的长度不保证十年后安全"。⑦ 2001 年全球公开征集、互相攻击、Rijndael 胜出;体现柯克霍夫原则——公开检验出来的算法才可信。⑧ 特性;靠混入随机 IV/nonce,让"同明文同钥"每次产出不同密文,专治对照分析(ECB 的企鹅图就是反例)。⑨ n(n-1)/2 把;密钥分发/管理难题(数量爆炸)。⑩ 生成(用生日→弱密钥)、分发(网上明文发→被窃听)、更换(十年不换→被积累分析)、销毁(离职清不干净→留后门)。⑪ Wi-Fi 密码=人肉在路由器里配的 PSK;7-Zip=你现场输入的密码派生;HTTPS 数据阶段=握手时双方协商出的一次性会话密钥。⑫ 因为数学层面(2^128)已不可穷举,失守点只剩"钥匙被偷":弱密钥、明文分发、不更换、删不净——与 7.1 口令"再强的策略也挡不住你亲手说出去"完全同构:最薄弱的环节永远是人。
十、下一步学什么
- ☑ 7.4(按教材顺序)
相关笔记
- 使用两个密钥管理数据(公开密钥加密方式) —— 本节埋的"解药"登场:公钥上锁私钥开,分发难题与数量爆炸就地化解
- 防止数据被窃听的方法(加密) —— 上一节给的全景图,本节把"对称"这半边放大:分发难题与密钥长度在此展开
- 限制访问用户和设备的方法(身份认证) —— 口令也是"双方各持一份同一份秘密",共享密钥思想你从第一天就在用
- 无线局域网的安全性(WPA2) —— AES-CCMP 逐帧加密=共享密钥加密的样板间;PSK 就是那把人肉分发的钥匙
- 浏览Web网站时执行的处理(DNS的域名解析、HTTP请求与HTTP响应) —— HTTPS 数据阶段的会话密钥就是本节的共享密钥,"送钥匙"的活留给 7.4
- IP地址范围的分隔符(子网掩码) —— "数字写成二进制才看得清规模"这个习惯,从子网掩码的 /24 一路用到本节的 2^128