什么是密码学?

一场惊心动魄的勒索攻击

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)在他的著作《论解译密码信息》里,第一次把频率分析法讲清楚了。这种方法专门用来破解单表代换密码,步骤很简单:

  1. 统计密文里每个字母出现的次数
  2. 将这些字母按出现频率从高到低排序
  3. 根据频率猜测替换关系(最常见密文字母对应明文E,次常见对应T或A)
  4. 一步步验证猜测,解开密码

例如,收到密文后分析发现出现最多的字母是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公钥加密颠覆了传统范式,开启了公钥密码的新时代。与此同时,杂凑算法作为"数字指纹",在完整性校验和数字签名等领域发挥着不可替代的作用。

密码学的历史本质上是一场加密与破译的持续对抗。每一种密码体制都有其时代背景和局限性,一旦破解方法被找到,它就永久失效。这正是密码学不断演进的根本动力。

相关推荐
如君愿6 小时前
考研复习 Day 49 | 密码学--第八章 数字签名与身份认证(中)
密码学
huluang1 天前
密评多选题 — 陷阱名单(费曼自述法版)
网络·数据库·密码学
如君愿1 天前
考研复习 Day 48 | 密码学--第八章 数字签名与身份认证(上)
考研·密码学
humors2212 天前
四种字母密码表示法
安全·网络安全·密码学
如君愿2 天前
考研复习 Day 47 | 密码学--第七章 公钥密码(下)
考研·密码学·课后习题
humors2212 天前
六位数字密码表示
安全·网络安全·密码学
下午写HelloWorld4 天前
同态加密(Homomorphic Encryption, HE)
人工智能·算法·密码学·同态加密
无风听海5 天前
PKCE 的 S256 算法深度剖析:从协议设计到密码学原理
javascript·网络·算法·密码学
如君愿5 天前
考研复习 Day 46 | 密码学--第七章 公钥密码(上)
密码学