对称与非对称加密
第 4 章讲"一次访问的旅程"时,有一站被我们匆匆带过:你的手机和淘宝的服务器"互相验明身份并商定密语"(§ 4.4 的 TLS 握手)。当时你只知道有这么一步,不知道那一步里藏着整个互联网最精巧的发明。第 7 章讲完了云和边缘——计算跑到了全世界每个街角;可只要数据还在网上跑,就有一个问题始终悬着:凭什么你输的银行卡密码,路上几十个经手的设备一个都看不见?第 8 章"网络安全"就从这块基石讲起:把数据搅成一团天书的两把钥匙。一把钥匙上锁又开锁,叫对称加密;一对钥匙一半公开一半私藏、配合成套,叫非对称加密——而真实世界两者搭伙干活,叫混合加密。这三件事,就是本节的全部主线。
你把银行卡密码写在一张纸条上,托同事下班顺路捎给你家人。纸条封进信封交出去的那一秒,你心里"咯噔"一下:捎信的人、他路上经过的每一张桌子,理论上都拆得开这个信封。
你想了两招。第一招,用只有你家人看得懂的黑话写——可你们上次见面约暗语,已经是三个月前的事了,来不及。第二招,找个带挂锁的小铁盒装进去——锁上锁这个动作人人都会,但开锁的钥匙全楼只有一把,在你家人手里。
第二招就是本节的全部秘密:上锁的办法可以完全公开(任何人都能往盒子上扣锁),开锁的能力必须独家(钥匙只发一个人)——把"怎么锁"和"怎么开"拆成两件事,整个现代加密大厦就立在这一拆之上。
先把这一节的术语翻译成人话
照例,先上术语对照表。密码学的名词听着都带一股冷战谍战味,其实每一个都能在你家楼道里找到原型。老规矩:读完正文回来再扫一遍,收获翻倍。
| 术语 | 换成大白话 | 生活里对应的东西 |
|---|---|---|
| 明文 / 密文 | 说白了就是"谁都看得懂的原信"和"搅成一团的天书" | 白纸条 / 撕碎重拼的纸条 |
| 密钥(Key) | 说白了就是"开锁的钥匙——一串数字,长度按位算" | 家门钥匙,齿形对上才能开 |
| 对称加密 | 说白了就是"上锁开锁用同一把钥匙" | 普通挂锁:一把钥匙两头用 |
| AES | 说白了就是"今天全世界通用得最广的那把对称锁" | 全国统一的防盗门锁芯标准 |
| 非对称加密 | 说白了就是"上锁开锁用两把不同的钥匙,配成一对" | 邮筒:人人能投,只有管理员能开 |
| 公钥 | 说白了就是"可以印在名片上到处发的那半把钥匙——只能上锁,不能开锁" | 街角邮筒的投递口,谁都能塞信 |
| 私钥 | 说白了就是"打死也不能外借的那半把——唯一能开锁的" | 邮筒底部开箱钥匙,只归管理员 |
| 密钥交换(Diffie-Hellman) | 说白了就是"两个人当着围观群众的面,商量出一把谁也偷不走的共同钥匙" | 当众各自倒颜料,混出一种色,围观者拆不回原色 |
| 混合加密 | 说白了就是"用慢的钥匙把快的钥匙递过去,之后全程用快的" | 挂号信寄门禁卡,之后天天刷卡进门 |
| 哈希(Hash) | 说白了就是"给任意文件算出一个定长指纹——能对指纹,拼不回原件" | 咖啡豆磨成粉:好磨,没法拼回豆子 |
| 盐(Salt) | 说白了就是"算指纹之前先撒一把专属调料,让抄答案的人白忙" | 腌菜每家方子不同,同样的菜腌出不同的味 |
| 数字签名 | 说白了就是"用私钥给文件的指纹盖章——章只有你能盖,验章人人都能验" | 火漆印:仿不出,一验便知 |
| 暴力破解 | 说白了就是"不琢磨开锁,挨个试遍所有齿形" | 拿一整箱钥匙串逐把捅锁眼 |
一句话串起整节:明信片网络逼出了加密;对称加密快但钥匙难送,非对称加密钥匙好送但慢,混合加密让两者各干擅长的活;哈希和签名在加密之外补上"没被改过"和"确实是本人"两块拼图。下面按这个顺序展开。
为什么必须加密:一张由明信片组成的互联网
先建立本节最重要的一个直觉:你在网上发的每一个包,走的都不是"你和对面的专线",而是一段接力。从你家手机出发,先到路由器,再进小区宽带的光猫,钻进运营商的城域网,跳上骨干光纤,跨过几个省市,最后落进机房里某台服务器——一路上少则七八跳,多则二十几跳(第 2 章讲过的路由转发)。每一个跳板上的设备,都有机会"看一眼"这个包里装了什么。
这不是危言耸听的理论设定,而是 TCP/IP 的出厂默认。这套协议诞生在上世纪七十年代的科研网里,设计者们互相都认识、互相都信任,压根没想过"中间人会偷看"这件事——就好比一群同门师兄弟在一个院子里传纸条,谁会防着谁?于是 HTTP 明文跑了二十多年:网址、账号、密码、搜索记录,全都是裸奔的明信片。你在咖啡店连公共 WiFi 打开一个早期网站,隔壁桌一个装了抓包软件的笔记本,理论上就能看到你提交的登录表单。运营商劫持更是真实存在的老问题:早年不少 HTTP 页面会被半路插进运营商的广告弹窗——能在半路加东西,就说明半路的人看得见也改得动。
所以"加密"要对付的,从来不是某一个具体的坏人,而是这条接力路上所有理论上可能经手的陌生眼睛。把明信片装进信封,让每一个中转站都只能看到信封上的地址(转发需要的信息),看不到信瓤(内容本身)——这就是加密在网络里干的活儿。信封上的地址还得留着,不然快递没法投递,这正是第 2 章说过的"包头明文、载荷加密"的分层分工。
对称加密:同一把钥匙的保险箱
第一种思路,人类用了几千年,朴素到不需要任何数学:用同一把钥匙上锁和开锁。把信放进保险箱,用钥匙锁上;寄到对方手里,对方用同一把钥匙打开。数字世界一模一样:密钥 K 把明文搅成一团天书,同样的 K 再把天书搅回明文——加密解密一把钥匙、一套算法,这就是对称加密。
它有一个压倒性的优点:快。今天的对称算法之王叫 AES(高级加密标准),快到什么程度?现代 CPU 里干脆内置了专门执行 AES 的硬件指令,一秒钟加解密几个 GB 不在话下——你打视频电话的每一帧、网盘同步的每一个文件块、手机整盘加密的每一次读写,背后都是它。海量数据扛得住,这是对称加密吃饭的本钱。顺带一提它的出身:上一代标准 DES 在 1977 年用的钥匙只有 56 位,1998 年被一台专造的机器 22 小时暴力试开——锁没坏,是钥匙太短了。美国国家标准机构于是搞了一场全球公开招标,2001 年选定了比利时两位学者设计的算法,改名 AES,钥匙长度 128 位起步、可到 256 位。这段史实顺便埋了个伏笔:好锁的第一讲究,是钥匙足够长。国内银行和政务系统里你还会遇到一套国产算法:对称的叫 SM4、非对称的叫 SM2,思路与 AES/RSA 同宗,属于"另一套标准件"。
对称加密还有个常被低估的分支妙用:它不挑内容。不管加密的是一句话、一部电影还是整块硬盘,算法都一视同仁地按块搅拌。你在手机上设置开机密码之后,整机存储就被一把由这个密码派生的钥匙加密了——丢了手机,捡到的人面对的是一整块天书硬盘。对称加密是整个数字世界的"主力保险箱":哪里有海量数据要藏,哪里就有它。
一把好锁的三个讲究:搅得匀、钥匙长、图纸公开
"加密"两个字听玄,拆开看其实就是按规则搅拌。但同样是搅拌,地摊玩具和银行金库的锁差着十万八千里。一把现代好锁的讲究,挑三条最要紧的说。
- 讲究一:同样的输入,不能搅出同样的输出最朴素的错误用法是把"明文的每一块各自搅一坨":那么"是"永远搅成同一坨、"否"永远搅成另一坨。窃听者虽然看不懂每一坨是什么,但只要统计哪个坨出现得多,就能猜出答案——好比把"同意"的票都折成飞机、"反对"的票都团成纸球:你没看到字,但你数得出飞机多还是纸球多。现代方案让每一块的实际搅拌配方都掺进前一块的结果(链接起来),再加上随机"作料",密文里连统计规律都摸不出来。
- 讲究二:钥匙要长到"试不起"128 位的钥匙有 2 的 128 次方种可能,约 3.4×1038。全世界把所有比特币矿机加起来去挨个试,也要试上远超宇宙年龄的时间。256 位更是把这个数字再平方一遍。这就是为什么"暴力破解 AES"在工程上等于死路——后面攻击者一节还会回到这条。
- 讲究三:图纸可以公开,安全全押在钥匙上这条听着最反直觉,却是现代密码学的立身之本(行话叫 Kerckhoffs 原则):算法的设计细节哪怕全部公开,只要钥匙保密,系统照样安全。好比锁厂把锁芯图纸贴在墙上卖锁——图纸公开反而让全世界的锁匠都来帮你找毛病,找出的毛病当场改掉;而小偷就算背熟图纸,没你那把钥匙照样开不了你家门。反过来,指望"我家的锁结构保密所以安全"叫做隐蔽式安全:一旦图纸泄露,全楼换锁都来不及。AES 那场全球公开招标,就是这条原则的现场演示。
记牢这三个讲究,你就比多数人更明白"加密安全"到底在安全什么:不在算法神秘,而在搅拌充分、钥匙够长、钥匙保密。
对称的死穴:钥匙怎么送到对方手里
讲到这里,对称加密看起来已经无敌了——快、结实、标准统一。可它有个致命的软肋,本节开头那张纸条的故事已经演过一遍:上锁开锁同一把钥匙,那"这把钥匙"本身,怎么交到对方手上?
你可能会说:微信发过去呗。停一下——微信自己也是跑在这张明信片网络上的;用一条不保密的信道去送钥匙,等于把保险箱和钥匙捆在一起寄。那先建一条加密通道再送钥匙?可加密通道也需要钥匙,这把钥匙又得先送过去……鸡生蛋、蛋生鸡,绕死了。这个死循环在密码学里有个正式的名字,叫密钥分发难题。
传统世界的解法其实是有的:提前线下见面,当面约定。二战片里两本一模一样的密码本,一本在总部、一本在潜艇上,出发前亲手交接——好用,但只适合"少数几方、长期合作"的场合。互联网干的是另一门生意:你的手机今天要和成千上万个从没见过面、以后也不会再见的服务器建立保密线路。总不能每打开一个网页先去人家公司前台领钥匙。军队的密码本模式,撑不起一个每天几十亿次握手网络。对称加密单独挑不起互联网这副担子——不是锁不够好,是钥匙送不到。破局需要换一个思路:干脆让"上锁"和"开锁"变成两件不同的事。
非对称加密:一对接头暗号的信箱
1976 年,两位研究者发表了一篇后来被称为"密码学新方向"的论文,第二年三位 MIT 的学者造出了第一套能用的方案(用三人姓氏首字母命名为 RSA)。他们带来的观念转变只有一句话:让钥匙成对出现——一把负责上锁,另一把才负责开锁。
具体玩法回到楼道里的邮筒就全通了。你想收密信,就去申请一个专属信箱:这个信箱的投递口设计(公钥)你可以印在名片上满世界发——任何人、任何时候、不用打招呼,都能往里投信;而箱底那把开箱钥匙(私钥)从出厂那天起就只在你手里,全世界独一份。想给我发密信?拿我名片上的公钥把信锁进箱子就行,一路经过多少双眼睛都无所谓——因为能打开这个箱子的钥匙,从物理上就只存在一把。
注意这套流程里藏着的那次质变:我和你从未见过面、没有共用过任何秘密、不需要任何提前约定,却完成了一次保密通信。你用来上锁的公钥本来就是公开的,被偷看一百遍也无所谓;而唯一的秘密——私钥——从始至终没离开过我家抽屉,根本不需要"送"。上一节那个"钥匙送不过去"的死循环,不是被解开的,是被整个绕开的:需要传输的东西全部公开,真正保密的东西一步都不动窝。
为什么公开的钥匙不怕人看:数学里的单向门
第一个合理的疑问马上来了:公钥公开、算法公开,那小偷拿着公钥,为什么推算不出私钥?答案是一座数学奇观:单向门——一个方向走容易到飞起,反方向走难到宇宙尽头。
拿 RSA 依赖的这扇门说:它是"大数分解"。两个三百位的大素数相乘,计算机毫秒级搞定——乘法往这个方向走,是高速公路。可把得到的乘积反过来拆回那两个素数呢?目前人类已知最好的算法,配上全世界的算力,所需时间也是天文数字——好比榨橙汁:橙子榨成汁一分钟的事,可你把一杯橙汁还原回一只完整的橙子试试?门就在那儿:谁都能往前走,没人能走回来。
RSA 的整套构造就立在这扇门上,可以这样粗糙地理解:公钥里装着那个巨大的乘积(大方公开,反正拆不开),私钥里藏着拆开它的方法(其实就是那两个素数的知识,只有你自己知道)。你可能会嘀咕:万一哪天有人发明了神级分解算法呢?问得完全正确——这正是密码学的日常焦虑,所以工程界早就在准备后手:另一条路线叫椭圆曲线(ECC),用不同的数学单向门达成同样效果,钥匙更短、更省电,手机和国产的 SM2 走的都是这条路;量子计算机如果成熟,会动摇其中一部分门(后量子密码是当下热点),但那是另一部长篇了。这里只需要带走一个观念:非对称加密的安全性不靠藏,靠"知道的人也倒不回去"——公开的东西架在单向门上,公开本身就是安全的。
顺带把"当众商量钥匙"的调色把戏也收进来:密钥交换(Diffie-Hellman)允许双方各自守一个秘密颜色,当众把公开色倒进同一个桶里混合——最后两边调出了同一种混合色当共同钥匙,而围观群众就算录下了全程、拿走了所有公开颜色的样本,也拆不出每个人私藏的那一瓶。两只从未交换过秘密的手,就这样在众目睽睽之下握到了一起。
一对钥匙的两用:保密是正着用,签名是反着用
这对钥匙的妙处还远没挖完。到目前为止我们都在"正着用":拿你的公钥上锁,只有你的私钥能开——这个方向管的是"保密",防的是偷看。现在把流程整个反过来:拿你的私钥去"锁"一段内容,而全世界任何人都能拿你的公钥去"开"。开得开,就证明了一件事:这段内容出不了别人手,因为私钥全宇宙只有一把,在你抽屉里。
这就是数字签名的原理骨架。注意它一次性解决了两个问题:防冒充(别人没有你的私钥,盖不出这个章)和防抵赖(你没法说"这不是我发的"——章只能出自你的钥匙,你把章借出去等于把私钥泄了,责任跑不掉)。同一对钥匙,正着用是保密信箱,反着用是个人印章——加密防"看",签名防"赖"和"冒",方向一换,用途天差地别。这个"一钥两用"的对称美,是整个非对称体系最耐人寻味的地方。
哈希:磨成粉末就再也拼不回去的指纹
在钥匙的故事之外,还差一块关键拼图。加密管住了"不被偷看",但没人管"没被改过"——信封是封好了,可半路要是有人把信瓤里的"转账 100 元"改成"转账 10000 元"再封回去呢?这就轮到哈希登场。严格说哈希甚至不算"加密":它根本不打算还原,只负责给任意内容算出一个固定长度的指纹——一部 4K 电影和两个字"好的"进去,出来的都是一串同样长度的乱码(常用算法 SHA-256 算出的指纹是 64 个十六进制字符)。
好哈希算法有三个脾气,每个都有生活原型:
- 脾气一:只进不退(单向)从内容算指纹是眨眼的事,从指纹反推内容比登天还难。好比咖啡豆磨成粉:磨,三秒钟;把粉拼回豆子,不可能。注意它跟加密的区别:加密是"锁起来还能开",哈希是"磨碎了就别想拼回去"——一个保还原,一个拒还原。
- 脾气二:一星半点,面目全非(雪崩)改一个标点、一个空格,整个指纹就会变得完全不同——不是"略有变化",是从头到尾没有一位还对得上。合同里那个"1"被人偷偷描成"7"?新旧指纹一对,当场穿帮。
- 脾气三:撞车难于登天(抗碰撞)想人为造出两份不同内容、指纹却相同的文件,难度同样在宇宙级。好比指纹鉴定:全世界几十亿人,没有两根一样的手指。
这三个脾气合起来,让哈希成了数字世界的"验货章"。下载站旁边那行"SHA256 校验值",就是官方指纹:你下载完自己磨一遍,对上了就证明文件一个字节没坏、没被人塞过东西。网盘的"秒传"也是它:你上传一部电影,网盘先算指纹,发现库里早有一模一样的指纹,就免了真传——你的上传进度条一秒走完,传的其实只是"指纹核对"。一句话记住哈希的分工:它不藏东西,它负责"对指纹"——完整性交给它,机密性才轮到加密。
密码为什么不能明文存:哈希加上一把盐
哈希还有一个和每个读者都直接相关的应用:网站根本不知道你的密码。听起来玄,其实是行业标配——你注册时填的密码,网站第一时间就磨成了指纹(哈希值)存进数据库,原始密码看一眼就扔。以后每次登录,把你这次输入的再磨一遍,对指纹就行。哪天数据库被人整库拖走(行话叫"拖库"),小偷抱走的只是一仓库指纹:想从指纹拼回密码,等于想从咖啡粉拼回咖啡豆。
但小偷也不是吃素的,他们有一招叫彩虹表:提前把"所有常见密码"的哈希值算好存成一本对照字典,拖库之后拿指纹一查就反查出明文。破解这招的办法简单到可爱:盐(Salt)。给每个用户的密码在磨粉之前,先掺一小撮各不相同的随机调料——"123456"磨出来不再是全网统一的那个指纹,而是"你这家的 123456"专属指纹。对照字典瞬间作废:好比同样的白菜,你家按自家方子腌,腌出来的味道跟谁家的都对不上号,抄答案的人对着味道表干瞪眼。所以每次爆出"某某网站数亿条密码泄露",密码存得好(加盐哈希)的站,泄的只是腌菜坛子;存得差的站(明文或裸哈希),才是把钥匙串整串奉送。判断一个网站有没有基本的安全素养,就看它存的是你的密码,还是你密码的"加了盐的指纹"。
数字签名:先磨指纹,再盖私章
把哈希和"反着用的私钥"组装起来,就得到了完整版的数字签名——顺便解决一个工程问题:直接拿私钥给整个文件"上锁"太慢了(下节就讲非对称有多慢),而签名要的本来也不是藏住文件,只是证明"文件没变、出自本人"。于是流程优化成两步走:
- 盖章程(发送方)①把整份文件磨成哈希指纹——一部电影也好一份合同也好,磨完只剩一串短指纹,快得很;②用私钥给这枚指纹盖上章。文件原样明文放着,旁边附上这枚章。
- 验章程(接收方)①拿你的公钥(公开可查)把章揭开,取出里面的指纹;②自己也把收到的文件磨一遍指纹;③两枚指纹一对——分毫不差,验讫。文件哪怕被改了一个标点,磨出的指纹就全变了,当场露馅。
说白了,签名签的从来不是文件本身,而是文件的指纹——好比公证处不会把整栋楼扛进保险库,只给房产证盖一个骑缝章:章跟证一起才有效,谁也换不走内页。这套机制今天跑在软件更新上(系统敢自动装补丁,是因为每一个补丁包都带着开发者的签名)、跑在 HTTPS 里、也跑在电子合同和电子发票里。不过这里埋着一个新问题:验章要用你的公钥——那我上哪儿去拿"你的"公钥?拿到手又怎么确定它真是你的?万一有人半路把公钥调了包,整套签名就全部签在骗子名下了。这个问题足够重要,重要到值得单独一节——§ 8.2 数字证书与 CA 专讲它。
非对称的软肋:慢,慢得离谱
非对称加密这么神,为什么不全用它?一个字:慢。对称算法是流水线上的搅拌机,非对称算法是手工雕刻的大数乘方——两者的速度差在两到三个数量级,也就是说同样一段数据,非对称要慢几十到几千倍。用 RSA 去加密一部电影,好比用毛笔手写每一张快递面单上的每一行地址:不是写不出来,是这买卖没法做了。
所以非对称在真实系统里的戏份其实极少,演的都是"关键一幕":握手的那几毫秒、签名盖章的那一下、交换钥匙的那一送。剩下九成九点九的数据搬运,全部交回给对称算法这个老实主力。非对称是"礼宾车",对称是"货运重卡"——礼宾车负责最金贵的那一程(把钥匙送到),重卡负责之后所有的重活。这个分工不是权宜之计,而是刻在所有现代安全协议骨头里的架构。那两者具体怎么交接?这就到了本节的收官大戏。
混合加密:真世界的黄金组合
现在把所有零件拼起来,看一眼 HTTPS 的真实流程——也就是第 4 章 § 4.4 那次"商定密语"的幕后真容:
- 第一步:接上头你的手机向服务器打招呼,双方亮明各自支持的算法清单,挑一套都认的(譬如"密钥交换用椭圆曲线、加密用 AES")。这一步所有内容当众进行,不怕看。
- 第二步:当众调钥匙(非对称的高光时刻)双方用密钥交换那套"调色把戏"(或服务器公钥加密),在众目睽睽之下共同调出一把本次通话专用的对称钥匙——行话叫会话密钥。围观者看完全程也拆不走它;这把钥匙两头都有,别处谁也没有。
- 第三步:全程高速加密(对称的主场)从这一毫秒起,你和服务器的所有数据——网页、图片、表单里的密码——全部用这把会话钥匙加解密。挂断连接,钥匙当场作废;下次再连,重新调一把新的。
看出这套设计的精妙了吗?慢的非对称只出场一瞬,干完"安全递钥匙"这一件它独门擅长的事就退场;快的对称接管之后的一切。好比新员工入职:公司用挂号信把门禁卡郑重寄到你家(慢、贵、但确保卡真到了你本人手里——这一步对应非对称),之后你天天刷卡进出办公楼(快、便宜、天天用——这一步对应对称)。没人会每天用挂号信寄门禁卡上下班,也没人会拿门禁卡当传家宝供着不用。顺带还能解释一个你听过的时髦词——前向保密:因为钥匙是每次现调、用完就焚,就算哪天某把钥匙真的泄露了,也只能解开"那一次"通话的录音,昨天的、上个月的全部无恙。混合加密 = 非对称保"接头",对称保"干活"——这就是 § 4.4 里那半秒握手真正办下的事。
攻击者为什么不砸锁:他们只骗你交钥匙
写到这儿你可能有个疑问:这些算法全都公开了几十年,全世界黑客日夜研究,怎么就没人破开?老实回答:靠正面强攻,确实没人破得开。2 的 128 次方不是修辞,是把全球算力烧干也算不完的物理事实。可现实中的数据泄露事件几乎每周都有,那坏人走的是哪条路?
答案是:没人撬保险箱,都在骗你亲手交钥匙。钓鱼网站做的就是这门生意——做个和真官网一模一样的页面发链接给你,你"自愿"把密码输了进去;假 WiFi 蹲守咖啡店,冒充网络名字等你连上来,做中间人两头传话;木马程序干脆住进你手机里,密码输进真网站也照样被当场抄走。再结实的锁也架不住主人把钥匙递给门口的陌生人。数学保护的是"锁",而攻击瞄准的永远是"人"——安全链条里最脆的一环,从来是人这一环。
这解释了为什么后面几节的方向会和这一节如此不同:本节讲的是数学上的铜墙铁壁,§ 8.3 讲的是 Web 世界里那些"不正面攻锁、专走歪门"的打法(注入、跨站、伪造请求),§ 8.6 讲的是把"不信任任何人"制度化的一整套管理哲学。先记结论:加密本身几乎无懈可击,出事的永远是使用加密的人和流程。
你身边的四个现场:这套东西天天在替你打工
老规矩,概念读完回生活里验一遍货。下面四个现场,今天之内你大概率全会路过:
- 现场一:地址栏那把小锁点开浏览器,网址前的小锁图标在告诉你:此刻这条连接正在跑混合加密——握手调好了会话钥匙,你正在看的每一个字节都装在信封里。点开锁还能看到服务器亮出的证书——那是 § 8.2 的主角提前露脸。
- 现场二:聊天记录的"加密"提示聊天软件提示"消息已加密"时,说的就是本节这套:你和服务器(或对方设备)之间握手调钥、之后全程对称加密。运营商能看到你有流量、有多大,但看不到内容——明信片和信封的区别。
- 现场三:网盘秒传与下载校验"秒传"是哈希在工作:指纹库里已有同款,免传。下载开源系统镜像时页面上那行 SHA256 值,也是哈希在工作:下完自己磨一遍,防止镜像被人在半路塞了私货。
- 现场四:家里那把 Wi-Fi 密码连 Wi-Fi 时输的密码从来不会拿去直接加密数据:路由器和手机用它当场"调"出一把会话钥匙,之后流量全走这把钥匙。邻居抓到你家满天的无线电波,没有那把调钥匙的作料,也只能收一箱子乱码——这正是把"人类记得住的短密码"翻译成"机器用的长钥匙"的标准手法。
认这个套路的口诀:凡是你和一台陌生机器"没见过面却开始说悄悄话"的地方,背后都是同一套剧本——非对称接头,对称干活。
常见误区:三条最容易念歪的经
- 误解一:"加密了就绝对安全"锁是世界级的,钥匙管理是人级的。私钥写在代码里传上 GitHub、密码贴在显示器上、钓鱼页面乖乖奉上账号——锁再好也白搭。安全的上限,永远由链条上最弱的一环决定。
- 误解二:"算法保密才安全"恰好相反:公开算法是让全世界专家帮你挑毛病,AES 就是公开招标选出来的。凡是宣称"我们的加密算法独家保密、绝无漏洞"的,行内一律按"没经过检验"处理——图纸贴墙上的锁,才敢说自己是好锁。
- 误解三:"网址带锁的就是正经网站"小锁只证明"这一路上了信封",不证明"信封那头是好人"——骗子网站也能申请证书上 HTTPS。信封保的是路上不被偷看,至于对面是谁,得靠证书体系回答——这正是 § 8.2 要讲的事,别走开。
如果你只记住这一节的一个画面,请记住这栋楼:一栋建在闹市里的保密公寓,楼下人来人往、快递层层转手——这就是互联网本身。
① 楼里的信件分两种走法。懒住户直接寄明信片(明文 HTTP),整条街谁都能瞄一眼——早年运营商往明信片上贴广告的事,真发生过。
② 大件贵重品,走保险箱(对称加密 / AES)。一把钥匙上锁开锁,流水线快得能扛下全楼的快递量。可新住户第一天就撞上死结:钥匙怎么交给收件人?快递员代送钥匙,等于锁和钥匙一起寄(密钥分发难题)。
③ 于是物业在每户门口装了邮筒(非对称加密)。邮筒的投递口设计(公钥)印在通讯录上任人索取,箱底钥匙(私钥)出厂就一户一把、永不离手。陌生人投信不用打招呼(公钥随便发),取信只此一家(私钥不外借)。数学保证了一条:仿造邮筒容易,仿造那把箱底钥匙,比把橙汁还原成橙子还难(单向门)。
④ 真实订单是这么跑的:买家先用邮筒接头,双方当众调出一把今天专用的箱钥匙(密钥交换),之后这一单的所有包裹全走保险箱(混合加密:非对称递钥匙,对称扛大件);今天用完今天作废,明天重调一把(前向保密)。
⑤ 楼下还有两件公共设施。一台磨豆机(哈希):任何文件倒进去出一份指纹,磨得飞快、拼不回去,掺了各家私方调料(盐)连对答案都办不到;一枚火漆章(数字签名):盖章只能用各家私钥,验章人人可查——文件配指纹,指纹配火漆,谁也别想偷换内页。
这栋楼记住,本节所有名词就都有了门牌号:明文是明信片、AES 是保险箱、公钥是邮筒口、私钥是箱底钥匙、密钥交换是当众调色、混合加密是邮筒接头后走保险箱、哈希是磨豆机、盐是各家腌菜方子、签名是火漆章。
一句话送给你:本节的三个心法
收束全节,带走三句话。第一,快慢分工是全局钥匙:对称快但钥匙送不动,非对称送得动但慢——真实世界的一切安全协议,本质都是"非对称接头、对称干活"这一句话的变奏。第二,公开不等于不安全:算法公开、公钥公开、当众调色——现代密码学的底气恰恰建立在"公开"之上,真正要捂严实的只有一样:私钥。第三,锁是数学的,钥匙是人的:暴力破解在数学上死路一条,现实里的失窃几乎全是"人交出了钥匙"——所以本节之后的三节,讲的都不是更硬的锁,而是更清醒的流程。两把钥匙一对章,外加一台磨豆机——第 8 章的地基,至此打完。
一句话总结:对称加密一把钥匙锁开两用、快而无匹却困于送钥匙;非对称一对钥匙公开一半私藏一半、慢而金贵却专治接头;混合加密让两者各展所长——非对称负责安全地把钥匙递过去,对称负责拿着钥匙高速干活,哈希和签名补上「没被改」与「是本人」。
机制上记住五件事:
· 互联网是明信片网络:数据包层层转发、路路经手,加密防的不是某个坏人,是整条链上的陌生眼睛。
· 对称加密(AES):一把钥匙、速度之王、海量数据的主力;软肋是密钥分发——钥匙和锁不能同路。
· 非对称加密(RSA / ECC / SM2):公钥上锁私钥开锁,公钥随便发、私钥永不外借;安全不靠藏,靠数学单向门「知道也倒不回去」。
· 哈希与签名:哈希是磨豆机(单向、雪崩、难撞车),配盐存密码、配私钥成签名——完整性、防冒充、防抵赖三件事一把抓。
· 混合加密(TLS 的骨架):当众调出会话密钥、用完即焚——快慢分工,外加前向保密。
下一步:地基有了,但一个新问题立刻冒头——你手机里存的那把"淘宝公钥",是怎么来的?万一路上半路被人调了包,你以为在跟淘宝说悄悄话,其实每句都被骗子转述。锁没问题了,接下来要解决"对面到底是谁":§ 8.2 数字证书与 CA,讲那套给公钥发"身份证"的体系。