一场惊心动魄的勒索攻击
2017年5月12日,星期五,一个看似平常的日子。
英国一家医院里,医生正在准备一台紧急手术,当他打开患者的病历系统时,发现屏幕上的所有文件,都变成了奇怪的乱码,文件名后缀都变成".WNCRY"。电脑桌面上弹出一段红色文字:
"您的所有文件已被加密!三天内支付价值300美元的比特币,否则文件将永久丢失。"
手术被迫取消,患者被紧急转往其他医院。
但这只是开始,短短一天内,一款名为WannaCry的勒索病毒,扩散到了全球150多个国家,感染了数十万台电脑。
医院无法看病,加油站无法加油,学校被迫停课,工厂的生产线停了。犯罪分子什么都没偷,却让整个世界陷入了瘫痪。他们是怎么做到的?
他们只做了一件事,把数据加密,然后索要赎金。

图1 WannaCry感染页面
从案例看本质:什么是加密?
我们来看一下WannaCry到底做了什么。被感染之前,电脑里有一份普通的Word文档,内容是"明天下午三点开会",这是任何人都能读懂的信息,密码学称之为明文。
WannaCry病毒使用一种加密算法,把这个文档变成了一串毫无意义的乱码,例如"8fj29dn!x@#s7d"。被加密之后,我们打开文件,也无法看懂其中的内容,密码学称之为密文。
病毒的制造者手里有一把"钥匙",可把这串无意义的乱码,还原成原先的明文,这把钥匙称之为密钥 。只要受害者支付赎金,他们就交出密钥,把乱码恢复成原来的"明天下午三点开会",而这个从乱码恢复成原文的过程,密码学称之为解密。
加密的本质是什么?说白了,加密就是一场信息变形记。它通过一套固定的"变形规则",也就是算法,把原本有意义的明文,变成看起来毫无意义的密文。这个过程是可逆的,只要拥有密钥,就能把密文变回明文。
勒索病毒的可怕之处在于,密钥掌握在攻击者手里。你的文件虽然还在你的电脑上,但变成了毫无意义的乱码,你已经失去了解读它的能力。
密码学的基本概念
从勒索案例中,我们已经引出了密码学的几个最核心的概念。现在,让我们正式把它们梳理出来:
- 明文:原始、可读的消息,例如"明天下午三点开会"。
- 密文:经过加密后,不可读的乱码形式。
- 加密:将明文转换为密文的过程。
- 解密:将密文恢复为明文的过程。
- 密钥:控制加密和解密过程的秘密参数,相当于那把"钥匙"。
- 算法:加解密所使用的具体规则。现代密码中,算法都是公开的,只对密钥保密。

密码的四大核心功能
不过,现代密码学不仅仅是加密解密这么简单。从功能角度来说,密码可以解决四类安全问题:保密性、完整性、真实性、不可否认性。
保密性是最古老、最直观的功能,用于确保信息不被未授权者读取。本章开头的WannaCry勒索病毒,就是对保密性的"反向利用"。在正常场景下,我们用加密算法保护数据,只有持有密钥的人才能解密读取。
真实性包含两层含义:一是信息来源的真实性,保证消息确实来自它所声称的发送者,没有被伪造或篡改;二是实体身份的真实性,确保通信双方的身份与声称的一致。简单说,就是"你确实是你,我确实是我"。日常生活中,很多人可能会想到一些哭笑不得的社会新闻------比如老人被要求"证明我妈是我妈",或者办事大厅里"本人拿着身份证却无法证明本人"的尴尬场景。这些新闻看似荒诞,却恰恰揭示了真实性在现实世界中的困境,有时候光靠一张身份证是不够的,还需要一个可靠的验证机制。
在密码学里,这种验证是通过安全认证技术来实现的,比如数字证书、消息认证码等。它们的作用就像经过权威机构出具的公证书,证明了你就是你本人。
完整性是指数据没有被非授权篡改或破坏。比如下载一个软件,官网同时提供它的哈希值,下载后自己算一遍,对得上,说明文件没有被篡改。完整性和真实性容易混淆,两者区别在于:完整性不要求数据来源可靠,但真实性往往要依赖完整性。一个文件可能没有被篡改,但你无法确定它是不是伪造的;反过来,要证明来源可靠,通常必须先确保数据没被动过。密码杂凑算法是实现完整性的常用工具。
不可否认性 也叫抗抵赖性,意思是一个已经发生的操作行为无法被否认。比如你网购付款后,不能事后说"我没付过"。日常生活中,签字、按手印正是不可否认性的体现。在密码学中,数字签名算法专门解决这个问题:你用自己的私钥签名,别人用你的公钥验证,签名一旦生成,你就无法抵赖。
这四大功能构成了现代密码学的应用基石,而支撑这四个功能的三类算法如下:
- 对称密码 :加密和解密使用同一把密钥,主要解决保密性问题。代表算法有DES、AES以及我国的SM4。
- 公钥密码 :加密和解密使用不同的密钥(公钥加密、私钥解密),主要解决真实性 和不可否认性问题。数字证书、身份认证、数字签名都依赖这类算法。代表算法有RSA、ECC以及我国的SM2。
- 杂凑算法 :把任意长度的消息压缩成固定长度的"数字指纹",主要解决完整性问题。下载文件时校验哈希值、存储密码时比对摘要,都是它的典型应用。代表算法有MD5、SHA-3以及我国的SM3。

罗马不是一天建成的。现代密码学这套丰富的工具箱,也不是一蹴而就的。
我们今天看到的这些算法背后,凝聚了两千多年来无数人的智慧、失败与突破。从古希腊斯巴达人缠绕羊皮纸的木棒,到古罗马凯撒密码的简单移位;从阿拉伯学者肯迪的频率分析,到维吉尼亚那看似不可破译的多表密码;从二战中恩尼格玛的转子,到香农用数学为密码学奠基------每一步都是在前人的肩膀上迈出的一步。
有人说,密码学的历史就是一场永不停歇的猫鼠游戏。加密者在进化,破解者也在追赶。正是这场持续了两千多年的攻防博弈,才催生出我们今天看到的这套精密的体系。
下面,就让我们回到起点,看看密码学是如何一步步走到今天的。
密码学历史脉络
密码学(Cryptography),源自希腊文"kryptos"及"logos"两字,直译即为"隐藏"及"讯息"之意。这个学科,就是研究如何设计安全的加密和解密规则,保护信息不被未授权者读取。
密码学是一个既古老又新兴的学科。古老在于,密码学是一门拥有几千年历史的学科,早在公元400年前的古希腊,斯巴达人就用"天书棒"(Scytale)缠绕羊皮纸传递军情;新兴则在于,现代密码学的发展到现在仅仅几十年,真正爆发于20世纪中叶计算机诞生之后,以香农1949年发表《保密系统的通信理论》为标志。
密码学的发展大概经历了三个阶段:古典密码阶段、近代密码阶段、现代密码阶段。
- 古典密码学阶段:1949年之前
- 近代密码学阶段:1949年至1975年,密码学成为科学的分支
- 现代密码学阶段:1976年以后,产生了公钥密码学
1976年,迪菲与赫尔曼提出公钥密码思想,彻底颠覆了"密钥必须秘密共享"的传统范式。
1. 古典密码学
古典密码学(Classical Cryptography)指的是从密码产生之初,到20世纪初近代密码学诞生之前的这段时期,跨度超过两千年。
古典密码学的核心手段只有两种:置换 和代换。
- 置换:不改变字符本身,只改变字符的顺序。就像把一句话里的词重新排列,"明天开会"变成"会明天开",字没变,但顺序乱了。
- 代换:不改变字符的位置,只改变字符本身。就像把"A"全部换成"D","B"全部换成"E",位置不变,但字形变了。
大多数古典密码是这两种方法的某种组合。下面我们按照时间顺序,逐一介绍最具代表性的古典密码。
虎符:密码学思想的东方起源
在讨论西方密码之前,先看看古代中国密码学智慧。
虎符是中国古代调兵遣将的凭证,最早出现在春秋战国时期(公元前700年左右)。虎符通常由铜或金制成,铸成老虎形状,从中间一分为二。右半留在君王手中,左半发给统兵将帅或地方长官。
当朝廷需要调兵时,使者持右半虎符前往军营,将帅取出自己的左半,两半能够完美拼合,则命令有效;若无法拼合,将帅有权拒绝执行。
《史记》记载了著名的"信陵君窃符救赵"故事。秦国围攻赵国都城邯郸,魏王派将军晋鄙率军救援,但晋鄙按兵不动。信陵君魏无忌通过魏王的宠妃如姬,从魏王卧室窃取了虎符,假传王命接管兵权,最终击败秦军解了赵国之围。
虎符的密码学思想是实现了一种身份认证机制------使者必须证明自己是君王授权的,两半虎符的拼合验证。它的致命弱点是"窃取即冒充",这正是密码学中密钥泄露问题的古代版本。
当然,虎符不是严格意义上的"加密",但体现了密码学的核心思想:通过某种"秘密凭证"来验证身份和授权。

图1 虎符
斯巴达棒(Scytale):人类最早的加密工具
在古希腊,大约公元前700年,军队使用一种叫做Scytale的圆木棍进行保密通信。使用方法如下:将羊皮纸条缠绕在圆木棍上,沿木棍轴向写字;解下羊皮纸后,上面的字符杂乱无章。只有将纸条再次缠绕到相同粗细的木棍上,才能读出原文。
这种Scytale圆木棍可能是人类最早的文字加密工具。它主要由斯巴达人使用,因此也被称为"斯巴达棒"。
斯巴达棒属于置换密码 :它没有改变任何一个字母,只是彻底打乱了字母的顺序。

除了斯巴达棒这种"矩阵转置"方式,置换密码还有另一种常见形式------栅栏密码(Rail Fence Cipher)。它同样不改变字母本身,只改变顺序,但采用之字形路径排列字母。
以栅栏数 R=3,明文 HELLOWORLD 为例:

按行读出得到密文:HOLELWRDLO。
解密过程:
已知:
- 密文:HOLELWRDLO
- 栏数:3
- 明文长度:10
步骤1:重建占位符网格
首先,我们在纸上画出之字路径,用占位符(如 ?)标记字符应该出现的位置。
| 行号 | 列1 | 列2 | 列3 | 列4 | 列5 | 列6 | 列7 | 列8 | 列9 | 列10 |
|---|---|---|---|---|---|---|---|---|---|---|
| 第1行 | ? | . | . | . | ? | . | . | . | ? | . |
| 第2行 | . | ? | . | ? | . | ? | . | ? | . | ? |
| 第3行 | . | . | ? | . | . | . | ? | . | . | . |
步骤2:填入密文
按照行的顺序,将密文 HOLELWRDLO 填入标记 ? 的位置:
- 第一行填入前3个字符:H, O, L
- 第二行填入接下来的5个字符:E, L, W, R, D
- 第三行填入剩下的2个字符:L, O
步骤3:按之字路径读取
从第1行第1列开始,沿着加密时相同的之字形路径遍历,恢复明文:HELLOWORLD
栅栏密码的安全性
栅栏密码在古代具备不错的保密效果,但在现代计算机面前则非常脆弱。一方面其密钥空间小,明文长度为N时,理论可选栏数上限仅N-1,但如果栏数偏大,每行字母数太少,密文字母顺序几乎与明文相同,加密失去意义。通常栅栏密码的有效栏数不超过5~7,最佳为3或4。另一方面该密码仅对字符位置做重新排布,不改变原有字符,密文字母频率与明文完全一致,密码分析者可以快速判定其属于换位密码。
凯撒密码(Caesar Cipher):最简单的代换密码
凯撒密码命名来源于古罗马的尤利乌斯·凯撒(Gaius Julius Caesar,公元前100年---公元前44年)。据古罗马历史学家苏埃托尼乌斯记载,凯撒在与西塞罗等人的秘密通信中使用了这种加密方法。

尤利乌斯·凯撒(Gaius Julius Caesar)
凯撒采用的加密方法很简单:将字母表中的每个字母向后移动固定位置。苏埃托尼乌斯对此写道:"如果他要保密某件事,他就用密码书写......他只是把字母表中的字母替换成它后面第三个字母。"
| 明文 | A | B | C | D | E | F | G | H | I | J | K | L | M |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 密文 | F | G | H | I | J | K | L | M | N | O | P | Q | R |
| 明文 | N | O | P | Q | R | S | T | U | V | W | X | Y | Z |
| 密文 | S | T | U | V | W | X | Y | Z | A | B | C | D | E |
表1 凯撒密码明密文对应表(k=5)
注意末尾的U、V、W...开始,又循环到开头的A、B、C...,这就是模运算的体现。
如果用数学来表示,可设字母在字母表中的位置为数字:A=0, B=1, C=2, ..., Z=25。
- 加密:C = (P + k) mod 26
- 解密:P = (C - k) mod 26
其中:
- P是明文字母对应的数字
- C是密文字母对应的数字
- k是密钥(偏移量,取值范围为1到25)
凯撒密码的破解极其简单,因为密钥空间只有25种可能,攻击者只需要尝试所有25种偏移量,就能看到有意义的明文。例如密文 DSSOH,用k=3解密:D→A,S→P,S→P,O→L,H→E,就还原出 APPLE。
实际上,凯撒密码算不上"安全"的加密,但不影响其在密码学史上的地位------它第一次提出了密钥 的概念,也第一次建立了加密/解密的数学模型。
凯撒密码在很长一段时间内被罗马人用于军事和私人通信,似乎"足够安全"。然而,当频率分析被提出后,凯撒密码在这种方法面前几乎如同明文,被迫退出历史舞台。
频率分析:古典密码学的噩梦
频率分析的基本原理是:在英语等拼音文字中,不同字母出现的频率是不均匀的。以英语为例:
| 字母 | 出现频率 |
|---|---|
| E | 约12.7% |
| T | 约9.1% |
| A | 约8.2% |
| O | 约7.5% |
| I | 约7.0% |
| N | 约6.7% |
| ... | ... |
| Z | 约0.07% |
公元9世纪,阿拉伯哲学家肯迪(Al-Kindi)在他的著作《论解译密码信息》里,第一次把频率分析法讲清楚了。这种方法专门用来破解单表代换密码,步骤很简单:
- 统计密文里每个字母出现的次数
- 将这些字母按出现频率从高到低排序
- 根据频率猜测替换关系(最常见密文字母对应明文E,次常见对应T或A)
- 一步步验证猜测,解开密码
例如,收到密文后分析发现出现最多的字母是X,约占12%,那这个X大概率就是E。由此可推测出偏移量:X是第23个,E是第4个,两者相差19。之后就可以根据这个偏移量还原出其他明文。
频率分析法在当时影响巨大,它打破了所有单表代换密码的安全性。该方法迅速在阿拉伯世界流传,但由于语言不通,过了几百年才传到欧洲------而这段时间里,欧洲人一直觉得单表代换密码是安全的。
频率分析法的出现,迫使密码学家不得不寻找新的加密方式。维吉尼亚密码就是在这样的背景下被发明出来的。
维吉尼亚密码:古典密码学最高峰
维吉尼亚密码以法国外交官布莱斯·德·维吉尼亚(1523--1596)命名,但背后的故事更有意思。他在1585年写成《论密码》一文,集中了当时密码学的诸多精华,并提出了一种自身密钥体制:以双方共同约定的一个字母作为起始密钥,用它对第一个密文解密得到第一个明文,再以第一个明文作为密钥解密第二个密文,以此类推。这样密钥不会重复使用,安全性更高。
然而,维吉尼亚提出的这种机制反而被人们长期遗忘。与此同时,意大利人贝拉索(Bellaso)早在1553年就提出了另一种使用重复关键词的多表替换密码,后人误将贝拉索的发明冠以维吉尼亚之名,于是贝拉索密码被误称为"维吉尼亚密码",并沿用至今。

图2 布莱斯·德·维吉尼亚(1523--1596)
在凯撒密码中,字母表的每一个字母做固定偏移,而维吉尼亚密码则是由一些偏移量不同的凯撒密码组成。
维吉尼亚密码使用了维吉尼亚方表。这一表格包括26行字母表,每一行都由前一行向左偏移一位得到。
| A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| A | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z |
| B | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | A |
| ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
| Z | Z | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y |
图3 维吉尼亚方表
加密示例:
明文:HELLO WORLD
密钥:KEY(重复扩展后:KEYKE YKEYK)
- 第一个字母H(列)和密钥K(行)对应 → K行+H列 = R
- 第二个字母E和密钥E对应 → E行+E列 = I
- 以此类推...
得到密文:RIJVS UYVJN
解密是加密的逆操作:密钥字母决定行,在行内找到密文字母,该字母所在的列即为明文字母。
为什么维吉尼亚密码能抵抗频率分析?
在凯撒密码中,一个明文字母永远被替换成同一个密文字母,导致明文频率特征原封不动地泄露给攻击者。
而维吉尼亚密码用一个关键词,在不同位置使用不同的凯撒偏移。例如,明文HELLOWORLD中:
- 第一个L(密钥Y,偏移24)→ 密文J
- 第二个L(密钥K,偏移10)→ 密文V
同一个明文字母L被加密成了两个不同的密文字母J和V,从一对一映射 变成一对多映射。明文字母的频率分布特征在密文中不再直接体现,原有的频率尖峰被"抹平",传统的单字母频率分析因此失效。
维吉尼亚密码的破解
不过,维吉尼亚密码终究没能逃脱被破解的命运。1863年,德国人弗里德里希·卡西斯基(Friedrich Kasiski)在《秘密书写与解密艺术》中,首次公开发表了破解方法,即卡西斯基测试。
由于维吉尼亚密码的密钥通过重复关键词构成,如果相同的明文片段恰好出现在密钥周期的相同相位,就会被加密成完全相同的密文片段。
例如,明文THE FAMOUS THE,密钥KEYKEYKEYKEY,得到密文DLCPEKYYQDLC。观察发现,密文片段"DLC"出现在位置1-3和位置10-12,距离d=9。因此密钥长度m很可能是9的约数:9、3、1。如果有多组重复片段,则取最大公约数作为密钥长度。
一旦知道密钥长度,维吉尼亚密码就退化成了几个独立的凯撒密码,用频率分析即可轻松破解。
| 明文 | T | H | E | F | A | M | O | U | S | T | H | E |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 密钥 | K | E | Y | K | E | Y | K | E | Y | K | E | Y |
| 密文 | D | L | C | P | E | K | Y | Y | Q | D | L | C |

图4 查尔斯·巴贝奇(Charles Babbage)
弱点暴露之后,维吉尼亚密码不能再用于任何需要真实安全的场合,只能作为密码学历史的经典案例,安静地待在教科书里。这也是密码学的残酷性:一旦弱点暴露,意味着永久报废。
2. 近代密码学:从一战到1976
前面讲的古典密码,无论是斯巴达棒、凯撒还是维吉尼亚,都有一个共同特点:依靠手工操作。到了20世纪,随着武器进入热兵器时代,密码学也适应需求,进入了自己的"热兵器时代"。
一战、二战是人类历史上规模最大的热兵器战争。枪炮、坦克、飞机、军舰取代了刀剑和骑兵。战场从局部扩展到全球,信息量呈爆炸式增长。
在这样的战场上,手工加密已经完全不现实。将军们需要指挥百万大军,军舰和飞机需要实时通信,每一条指令都必须加密,而且必须加得快、破得慢。在这样的背景下,密码研究者设计出了一些机械和电动设备,自动实现了加密和解密计算。这一阶段的密码称为机械密码。
恩尼格玛密码机
机械密码的典型代表是**恩尼格玛(Enigma)**密码机。Enigma在拉丁语中意为"谜",因为当时难以被破解,人们又称它为"隐匿之王"。它由德国人亚瑟·谢尔比乌斯和理查德·里特发明,20世纪20年代开始用于商业,后来被一些国家的军队与政府改造使用。最著名的是发动第二次世界大战的德国,恩尼格玛让二战期间德军的保密通讯技术处于当时的领先地位。

加密原理
恩尼格玛密码机由多组转子构成,每组转子刻有1到26个数字,对应26个字母。转子的转动方向、相互位置以及连线板的连线状态,共同构成了一个复杂的多表代换密码系统。
以最常见的三转子恩尼格玛为例(包含慢转子、中转子和快转子),其密码变换组合极其庞大:
- 转子方向:三个转子共有 26×26×26 = 17,576 种起始方向
- 转子顺序:三个转子的排列顺序共有 3! = 6 种可能
- 连线板交换:在连线板上交换6对字母,共有约 100,391,791,500 种组合
总密钥空间:三者相乘
17,576 × 6 × 100,391,791,500 ≈ 1.06 × 10^16
即大约1亿亿种不同的密码变换组合。这样庞大的密钥空间,在当时的计算能力下,仅靠"人海战术"逐一尝试,几乎是不可能完成的任务。
而对于通信双方来说,只要事先约定好转子的起始方向、排列顺序和连线板的接线方式(也就是密钥),就可以轻松地进行加密和解密。
破译过程
从1926年开始,盟军的情报机构就开始对恩尼格玛密码机进行分析,但对其军用型号的研究一直未取得实质性突破。直到1941年英国海军捕获德国潜艇U-110,拿到德国海军使用的恩尼格玛密码机和密码本后,通过对大量明文与密文的统计分析,密码破译才有了转机。
之后,计算机科学之父艾伦·图灵作为英国密码破译的核心人物,制造了专用设备对破译算法进行加速,最终实现了对恩尼格玛密码机的实时破译。
柯克霍夫原则
随着恩尼格玛被盟军破译,人们意识到一个关键问题:真正保证密码安全的,不是算法,而是密钥。算法被设计出来,就必须交给通信双方使用,它可能写在纸上、刻在硬件里、嵌入到设备中。只要有人在使用,就有机会被敌人获取。
早在1883年,荷兰密码学家Kerckhoffs就在其著作《军事密码学》中提出:密码系统的安全性应只取决于可随时改变的密钥,而不应取决于算法。这一原则被称为柯克霍夫原则,它后来成为近代密码学的基石。
只是柯克霍夫原则虽然早被提出,但在很长一段时间里无人问津。原因可能有两个方面:一方面当时的数学和信息技术还很落后,难以设计出"只靠密钥就能保证安全"的算法;另一方面是人们的观念根深蒂固------算法和密钥都保密,直觉上比只保密密钥更安全。
俗话说:事教人,一次就会;人教人,教不会。
恩尼格玛被破译这件事,让德国人把算法保密做到了极致,但最终因为算法被截获、密钥管理失误而功亏一篑。从那以后,密码学界彻底转向了"算法公开、密钥保密"的设计思路。
3. 现代密码学:从机械走向科学
香农的理论奠基
1949年,信息论之父克劳德·香农 发表了论文《保密系统的通信理论》。这篇文章首次将信息论引入密码学,打破了此前密码学仅依赖经验和技巧的局限,将其置于坚实的数学理论框架之下,并提出了混淆 和扩散两大设计原则,为对称密码学奠定了理论基础。可以说,这篇论文标志着密码技术从技艺走向科学。

克劳德·艾尔伍德·香农(Claude Elwood Shannon)
DES:密码学进入民用领域
在香农奠定理论基础之后,现代密码学迎来了第一个重要工程化里程碑------数据加密标准(DES)。在此之前,密码技术长期仅在军事、情报等核心领域使用,普通民众和商业领域几乎无法接触到规范、安全的加密手段。DES的诞生,实现了"密码学飞入寻常百姓家"的跨越。
DES由IBM公司主导设计,其核心设计思路基于该公司密码学者霍斯特·费斯泰尔(Horst Feistel)提出的Feistel结构。美国国家安全局(NSA)在DES的设计过程中仅承担评估角色,并未直接参与核心设计。最终该算法经美国国家标准与技术研究院(NIST)公开征集、严格评审后,于1977年正式确定为联邦信息处理标准。
DES的影响力远超美国本土,它被广泛部署于全球各地的金融、通信、政务等各类领域,成为第一个真正实现全球化商用的加密标准。不过,随着计算机硬件的发展及计算能力的提升,1998年电子前线基金(EFF)使用一台25万美元的计算机在56小时内破译了DES算法。1998年12月,美国正式决定不再使用DES算法。
AES:接替DES的新标准
为了取代DES,NIST在1997年启动了高级加密标准(AES)的征集工作。最终由比利时密码学家设计的Rijndael算法脱颖而出,成为AES标准。AES是一种分组密码,分组长度固定为128比特,密钥长度支持128比特、192比特和256比特,大幅提升了密钥空间的规模。即便是目前性能最强的计算机,也无法通过穷举攻击破解它。直到今天,AES依然是全球应用最广泛、安全性被公认的对称加密算法之一。
公钥密码的革命
不管是DES还是AES等对称加密算法,都面临一个根本问题:通信双方必须事先共享同一个密钥。如果两人相隔万里,如何安全地传递密钥?这个问题直到1976年才被公钥密码解决。
1976年,美国密码学家马丁·迪菲 (Martin Diffie)和惠特菲尔德·赫尔曼 (Whitfield Hellman)联合发表了题为《密码学的新方向》的著名论文,提出了具有革命性意义的密钥交换算法------Diffie-Hellman(DH)密钥交换。这一算法首次解决了"在不安全信道上安全传递加密密钥"这一古老难题。
其巧妙之处在于,通信双方无需直接传输密钥本身,而是通过交换两组公开的参数信息,再结合各自手中的私有参数,分别独立计算出同一个共享密钥。偷听者即便听到了所有公开的喊话内容,也无法推算出密钥。
今天再看这个协议,或许觉得习以为常,但在DH出现之前,所有人都被困在对称密钥的思维牢笼里。DH的出现,就像一把锤子,在思维的墙上凿了个洞。它第一次证明了没有预先共享的秘密,也能建立共同秘密。
RSA:第一个公钥加密算法
1977年,美国麻省理工学院的罗纳德·李维斯特 (Ron Rivest)、阿迪·沙米尔 (Adi Shamir)和伦纳德·阿德尔曼 (Len Adleman)三人提出了历史上第一个公钥加密算法------RSA算法。

RSA算法基于大整数因子分解这一数学难题:将两个素数相乘很容易,但要找到一个乘积大整数的素因子却非常困难。因此可以将乘积公开作为密钥。
在RSA之后,密码学家们沿着公钥密码的思路不断创新:
- 1985年,塔希尔·艾尔伽马(Taher ElGamal)提出了ElGamal加密算法
- 同年,尼尔·科布里茨(Neal Koblitz)和维克托·米勒(Victor Miller)各自独立提出了椭圆曲线密码(ECC),可在同等安全强度下使用比RSA短得多的密钥
杂凑算法
现代密码学里还有一类同样关键的算法------密码杂凑算法(也叫哈希算法)。它不是用来加密解密的,而是把任意长度的消息压缩成一个固定长度的消息摘要。只要原文有哪怕一个比特的变化,摘要就会完全不同,因此常被用来做数字签名、完整性校验、安全认证,甚至保护用户口令。
杂凑算法的研究始于20世纪70年代末,其中最著名的两个是MD5和SHA-1:
- MD5(1992年):由RSA算法的发明者之一李维斯特设计,输出128位摘要
- SHA-1(1995年):由NIST和NSA联合发布,输出160位摘要
进入21世纪,这两个算法接连"倒下"。2004年,中国密码学家王小云 在国际密码学大会上宣布找到了MD5算法的碰撞,随后SHA-1也被同样方法攻破。这一突破直接推动了美国NIST启动SHA-3的全球公开征集。经过五年选拔,2012年,Keccak算法最终胜出,成为新的标准------SHA-3。
本章小结
本章介绍了密码学的基本概念和历史脉络。
首先,通过WannaCry勒索病毒案例,我们理解了密码学的六个核心要素:明文、密文、加密、解密、密钥和算法。加密的本质就是把可读的信息变成乱码,只有持有密钥的人才能恢复原文。
随后,我们回顾了密码学发展的三个阶段:
古典密码学(古代至20世纪初)以置换和代换为主要手段,代表性密码有斯巴达棒、栅栏密码、凯撒密码和维吉尼亚密码。这一时期的密码主要依靠手工操作和设计者的技巧。频率分析法的出现宣告了单表代换密码的终结。维吉尼亚密码虽然通过多表替换暂时抵抗了频率分析,但其重复密钥的周期性结构最终被卡西斯基测试攻破。
近代密码学(一战至1976年)与热兵器战争同步爆发。电报和无线电让加密成为必需品,机械密码机(如恩尼格玛)登上历史舞台。恩尼格玛的破译让人们意识到:真正保证安全的不是算法,而是密钥。柯克霍夫原则------"算法公开、密钥保密"------从此成为密码学的设计基石。
现代密码学(1976年至今)以香农的理论奠基为起点,密码学从技艺走向科学。DES和AES让加密技术进入民用领域,但对称密码始终面临密钥分发的难题。Diffie-Hellman密钥交换和RSA公钥加密颠覆了传统范式,开启了公钥密码的新时代。与此同时,杂凑算法作为"数字指纹",在完整性校验和数字签名等领域发挥着不可替代的作用。
密码学的历史本质上是一场加密与破译的持续对抗。每一种密码体制都有其时代背景和局限性,一旦破解方法被找到,它就永久失效。这正是密码学不断演进的根本动力。