密码学(Cryptography)的历史是一部人类保护信息秘密的漫长史诗,贯穿了从古埃及象形文字到现代量子密码学的数千年。密码学的核心目标始终未变——确保信息的机密性(Confidentiality)、完整性(Integrity)和真实性(Authenticity)。本文将沿着历史的轴线,从古典密码的起源,经历机械密码时代,穿越现代密码学的数学革命,一直到量子时代的前沿探索,系统梳理密码学发展的关键里程碑和技术演进。
古典密码的历史几乎与文字本身一样古老。人类最早的安全通信需求源于军事、外交和政治领域——如何让信使在传递过程中即便被截获,对方也无法理解信息内容?
在正式的密码学诞生之前,古人已经掌握了隐写术(Steganography)——将信息隐藏起来,而不是将其加密。古希腊历史学家希罗多德(Herodotus)在《历史》中记录了多种隐写方法:
隐写术和密码学的根本区别在于:隐写术隐藏信息的存在,而密码学隐藏信息的意义。现代数字隐写术将信息隐藏在图片的像素低位或音频文件的噪声中,核心思想与两千年前如出一辙。
凯撒密码(Caesar Cipher)是历史上最著名的古典密码之一,由古罗马统帅尤利乌斯·凯撒(Julius Caesar)在公元前1世纪使用。其原理非常简单:将字母表中的每个字母按照固定的位数进行移位。
加密规则:对于明文字母 p,密文字母 c = (p + k) mod 26,其中 k 是密钥(移位量)。凯撒通常使用 k = 3。
具体示例:
HELLOKHOOR解密规则:p = (c - k) mod 26,即 K(10)→H(7), H(7)→E(4), O(14)→L(11), O(14)→L(11), R(17)→O(14)。
| 明文字母 | 数字 | 加密(k=3) | 密文字母 |
|---|---|---|---|
| H | 7 | 10 | K |
| E | 4 | 7 | H |
| L | 11 | 14 | O |
| L | 11 | 14 | O |
| O | 14 | 17 | R |
凯撒密码极其脆弱——只有25种可能的移位(k=1到25),暴力破解只需最多25次尝试。但其"替换"的思想影响了之后两千年的密码学发展。
16世纪,意大利密码学家乔瓦尼·巴蒂斯塔·波塔(Giovanni Battista Porta)首次提出了多字母替换(Polyalphabetic Substitution)的概念。但直到1586年,布莱斯·德·维吉尼亚(Blaise de Vigenère)发表了"维吉尼亚密码"(Vigenère Cipher),这一思想才得以完善。
维吉尼亚密码使用一个密钥词来控制加密过程,不同的明文字符根据密钥词中对应的字母使用不同的移位量,从而有效抵抗频率分析攻击。
加密过程:
KEY具体示例:
ATTACKATDAWNKEYKEYKEYKEY(重复)| 位置 | 明文字母 | 明文字母值 | 密钥字母 | 密钥值 | 和 mod 26 | 密文字母 |
|---|---|---|---|---|---|---|
| 1 | A | 0 | K | 10 | 10 | K |
| 2 | T | 19 | E | 4 | 23 | X |
| 3 | T | 19 | Y | 24 | 43→17 | R |
| 4 | A | 0 | K | 10 | 10 | K |
| 5 | C | 2 | E | 4 | 6 | G |
| 6 | K | 10 | Y | 24 | 34→8 | I |
| 7 | A | 0 | K | 10 | 10 | K |
| 8 | T | 19 | E | 4 | 23 | X |
| 9 | D | 3 | Y | 24 | 27→1 | B |
| 10 | A | 0 | K | 10 | 10 | K |
| 11 | W | 22 | E | 4 | 26→0 | A |
| 12 | N | 13 | Y | 24 | 37→11 | L |
密文:KXRKGIKXBKAL
维吉尼亚密码被认为是"不可破解的",这个称号持续了约300年。直到1863年,普鲁士军官弗里德里希·卡西斯基(Friedrich Kasiski)发表了一种攻击方法——卡西斯基检验(Kasiski Examination),通过分析密文中重复模式的出现间隔来推断密钥长度。
卡西斯基检验原理:如果密文中出现重复的字母序列(如"ABC"出现两次),且间隔为 d,那么密钥长度很可能是 d 的一个因数。得到密钥长度后,每个位置上的单表替换密码就退化为凯撒密码,可逐个攻破。
| 密码类型 | 密钥空间 | 攻击方法 | 安全等级 |
|---|---|---|---|
| 凯撒密码 | 25种移位 | 暴力破解 | 极低 |
| 单表替换 | 频率分析 | 低 | |
| 维吉尼亚密码 | (k为密钥长度) | 卡西斯基检验+频率分析 | 中 |
| 一次性密码本 | (n为明文长度) | 无(信息论安全) | 极高 |
值得注意的是,一次性密码本(One-Time Pad, OTP)——由弗兰克·米勒(Frank Miller)在1882年发明,后由吉尔伯特·弗纳姆(Gilbert Vernam)在1917年改进——是唯一被数学证明信息论安全的加密方案。其条件是:密钥必须真正随机、长度至少等于明文长度、且密钥绝对不重复使用。OTP 至今仍在外交热线中使用(如美俄热线)。
20世纪的两次世界大战极大地推动了密码学的发展。随着电报和无线电的普及,通信量剧增,手工加密已无法满足需求,机械化和自动化的密码设备应运而生。
恩尼格玛机(Enigma Machine)由德国工程师阿瑟·谢尔比乌斯(Arthur Scherbius)在1918年发明,最初用于商业通信保护。二战期间,德国军方对其进行了大幅改进,作为其通信加密的核心设备。
恩尼格玛机的物理结构:
键盘(输入) 灯板(输出)
┌───┬───┬───┐ ┌───┬───┬───┐
│ Q │ W │ E │ ... │ Q │ W │ E │ ...
└───┴───┴───┘ └───┴───┴───┘
│ ▲
▼ │
┌─────────────────────────────┐
│ 转轮(3-5个) │
│ ┌───┐ ┌───┐ ┌───┐ │
│ │ I │ │II │ │III│ │
│ └───┘ └───┘ └───┘ │
│ ⬇ 步进 │
└─────────────────────────────┘
│
▼
┌─────────────┐
│ 反射器 │
└─────────────┘
恩尼格玛机的工作原理基于转轮(Rotor)机制。每个转轮是一个26条线路的替换表。当敲击一个键时,电流经过三个(或更多)转轮,到达反射器后折返,再经过转轮反向路径回到灯板亮起。每次按键后,第一个转轮自动步进一格,像汽车的里程表一样,第二个转轮在第一个转轮完整转一圈后步进一格。
关键特性:
| 配置项 | 选择方式 | 组合数 |
|---|---|---|
| 转轮选择(5选3) | 60 | |
| 转轮初始位置 | 17,576 | |
| 插板连接(10对) | ||
| 理论总密钥空间 | 约 |
这个数字在当时被认为是天文数字,手动暴力破解完全不现实。但恩尼格玛机存在两个致命弱点:
英国在布莱切利园(Bletchley Park)集中了全国顶尖的数学家和密码学家,包括艾伦·图灵(Alan Turing),对恩尼格玛机发动了系统性的破译攻击。
图灵 Bombe 机器的核心思想——已知明文攻击:
Bombe 将密钥搜索从暴力破解的 降低了约 倍。配合密码分析中的统计方法和机器并行化,盟军能够在24小时内破译当天的德军密钥。
图灵在密码学上的贡献远不止于此。他在1936年发表的论文《论可计算数》中提出了图灵机(Turing Machine)的概念,奠定了计算理论的基础,同时也间接为现代密码学的计算安全性理论铺平了道路。
德国在二战中还使用了更复杂的洛伦兹SZ40/42密码机用于高层通信。与恩尼格玛机不同,洛伦兹是一种流密码(Stream Cipher)设备,使用伪随机密钥流对电报的5位博多码(Baudot Code)进行异或(XOR)加密。
英国人开发了巨人计算机(Colossus)——世界上第一台可编程电子计算机——专门用于破译洛伦兹密码。Colossus 由汤米·弗劳尔斯(Tommy Flowers)领导设计,使用了超过1000个真空管,通过统计分析破解洛伦兹的密钥流生成模式。
| 对比项 | 恩尼格玛机 | 洛伦兹SZ40/42 |
|---|---|---|
| 加密方式 | 分组替换密码 | 流密码(异或) |
| 编码 | 字母(26字符) | 二进制(5位博多码) |
| 使用层级 | 战术级(前线) | 战略级(高层) |
| 破译方法 | Bombe(机电式) | Colossus(可编程电子) |
| 破译信息数 | 每日数千条 | 累计数万条最高机密 |
二战结束后,密码学从一门"技艺"转变为一门科学。这一转变的标志是克劳德·香农(Claude Shannon)在1949年发表的里程碑论文《保密系统的通信理论》(Communication Theory of Secrecy Systems)。
香农将信息论引入密码学,为密码系统的安全性提供了严格的数学基础。他提出了两个关键概念:
1. 混淆(Confusion)与扩散(Diffusion)
2. 唯一解距离
香农提出了唯一解距离(Unicity Distance)的概念——理论上需要多少密文才能唯一确定密钥。对于简单的单表替换密码:
其中 是密钥的熵(对于26!种可能的替换, 比特), 是冗余度(英语的冗余度约3.2比特/字符)。
对于英语的单表替换密码:
1973年,美国国家标准局(NBS,即后来的NIST)公开征集数据加密标准。IBM提交了基于其Lucifer密码的设计方案,经过美国国家安全局(NSA)的评估和修改,于1977年正式成为联邦信息处理标准。
DES是一种分组密码(Block Cipher),采用Feistel网络结构:
明文(64位)
│
┌───▼───┐
│ 初始置换 │
└───┬───┘
│
┌───────┴───────┐
│ L0(32位) │ R0(32位)
└───────┬───────┘
│
┌───▼──────────────────────────┐
│ 16轮 Feistel 结构 │
│ │
│ For i = 1 to 16: │
│ Li = Ri-1 │
│ Ri = Li-1 ⊕ F(Ri-1, Ki)│
│ │
│ 其中 F 函数包含: │
│ - 扩展置换(32→48位) │
│ - 与子密钥 Ki 异或 │
│ - 8个 S-box(6→4位替换) │
│ - P-置换 │
└───────────┬───────────────────┘
│
┌───▼───┐
│ 逆初始置换 │
└───┬───┘
│
密文(64位)
DES的关键参数:
| 参数 | 值 |
|---|---|
| 分组大小 | 64位 |
| 密钥长度 | 56位(实际64位含8位奇偶校验) |
| 轮数 | 16轮 |
| Feistel结构 | 是 |
| 子密钥长度 | 48位/轮 |
64位S-box示例(DES的第一个S-box S1):
| 行/列 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 14 | 4 | 13 | 1 | 2 | 15 | 11 | 8 | 3 | 10 | 6 | 12 | 5 | 9 | 0 | 7 |
| 1 | 0 | 15 | 7 | 4 | 14 | 2 | 13 | 1 | 10 | 6 | 12 | 11 | 9 | 5 | 3 | 8 |
| 2 | 4 | 1 | 14 | 8 | 13 | 6 | 2 | 11 | 15 | 12 | 9 | 7 | 3 | 10 | 5 | 0 |
| 3 | 15 | 12 | 8 | 2 | 4 | 9 | 1 | 7 | 5 | 11 | 3 | 14 | 10 | 0 | 6 | 13 |
S-box的输入输出示例:
10011010 → 行号20011 → 列号31000DES的56位密钥在1990年代已经不够安全。1997年,DESCHALL项目通过互联网分布式暴力破解,在96天内成功找到密钥。1998年,电子前哨基金会(EFF)制造的Deep Crack专用机器在56小时内破解DES。1999年,Deep Crack + 分布式网络在22小时15分钟内完成破解。
意识到DES的不足,NIST在1997年发起了AES竞赛,面向全球征集下一代加密标准。经过五年的公开评审和密码分析,Rijndael算法(由比利时密码学家Joan Daemen和Vincent Rijmen设计)在15个候选算法中胜出,于2001年成为FIPS 197标准。
AES的核心结构——SPN网络(Substitution-Permutation Network):
明文(128位)
│
┌───▼───────────────────────┐
│ AddRoundKey(与K0异或) │
└───────────┬───────────────┘
│
┌──────────▼──────────┐
│ 轮函数(Nr轮) │
│ │
│ ┌─────────────────┐│
│ │ SubBytes ││ ← 16个S-box并行的字节替换
│ │ (S-box查找表) ││
│ └────────┬────────┘│
│ │ │
│ ┌────────▼────────┐│
│ │ ShiftRows ││ ← 行移位(第1行不移,第2行移1...)
│ └────────┬────────┘│
│ │ │
│ ┌────────▼────────┐│
│ │ MixColumns ││ ← 列混合(GF(2^8)矩阵乘法)
│ └────────┬────────┘│
│ │ │
│ ┌────────▼────────┐│
│ │ AddRoundKey ││ ← 与子密钥异或
│ └─────────────────┘│
└─────────────────┬───┘
│
┌────▼────┐
│ 最终轮 │(无MixColumns)
└────┬────┘
│
密文(128位)
AES的参数变体:
| 版本 | 密钥长度 | 轮数 | 状态矩阵 | 安全性级别 |
|---|---|---|---|---|
| AES-128 | 128位 | 10轮 | 4×4字节 | 目前安全 |
| AES-192 | 192位 | 12轮 | 4×4字节 | 极安全 |
| AES-256 | 256位 | 14轮 | 4×4字节 | 最高安全 |
截至2024年,AES仍然是全球使用最广泛的分组密码,从Wi-Fi加密(WPA2/3)、TLS/SSL到全磁盘加密均以其为基础。没有任何实用的密码分析攻击能有效降低AES的理论安全强度。
1976年之前,所有加密系统都依赖于对称密钥(Symmetric Key)——通信双方必须预先共享一个密钥。这在电子商务和互联网时代带来了一个根本性问题:从未见过面的双方如何安全地建立共享密钥?
1976年,惠特菲尔德·迪菲(Whitfield Diffie)和马丁·赫尔曼(Martin Hellman)发表了论文《密码学的新方向》(New Directions in Cryptography),提出了公钥密码学(Public Key Cryptography)的革命性概念,以及具体的Diffie-Hellman密钥交换协议。
核心思想:利用单向函数(One-way Function)——正向计算容易,反向计算极其困难。
数学基础——离散对数问题:
DH密钥交换的具体过程(以Alice和Bob为例):
公开参数:p = 23(素数),g = 5(原根)
Alice端 Bob端
│ │
│ 选择私钥 a = 6 │ 选择私钥 b = 15
│ │
│ 计算公钥 A = 5⁶ mod 23 = 8 │ 计算公钥 B = 5¹⁵ mod 23 = 19
│ │
│─── 发送A=8 ─────────────────────→ │
│←── 发送B=19 ──────────────────── │
│ │
│ 计算密钥 K = 19⁶ mod 23 = 2 │ 计算密钥 K = 8¹⁵ mod 23 = 2
│ │
│ 共享密钥 K = 2(双方一致) │
验证过程:
即使攻击者Eve截获了 这些全部公开信息,她仍然无法求得 Alice 或 Bob 的私钥。这就是离散对数问题的困难性。
离散对数问题的难度与密钥长度的关系:
| 密钥长度(的比特数) | 破解所需时间(2024年硬件估算) |
|---|---|
| 512位 | 数小时内(已不安全) |
| 1024位 | 数天~数周(不推荐) |
| 2048位 | 数千年(当前安全标准) |
| 4096位 | 远超宇宙年龄(长期安全) |
1977年,罗恩·里维斯特(Ron Rivest)、阿迪·沙米尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman)发表了RSA算法,实现了实际的公钥加密和数字签名。RSA的安全性基于大整数因子分解难题。
RSA密钥生成:
公钥:,私钥:
加密和解密示例(加密消息 ):
安全性讨论:如果攻击者能从 分解出 和 ,就可以计算出 并解密所有消息。当 足够大时(如4096位),分解极其困难。
| RSA密钥长度(的比特数) | 因子分解难度 | 相当对称密钥强度 | 状态 |
|---|---|---|---|
| 1024位 | 次基础运算 | 80位 | 已不安全(2015年已破解) |
| 2048位 | 次基础运算 | 112位 | 当前标准(推荐最低) |
| 3072位 | 次基础运算 | 128位 | 高安全 |
| 4096位 | 次基础运算 | 256位 | 极高安全 |
实际应用:RSA广泛应用于TLS/SSL证书、HTTPS、电子邮件加密(PGP)、数字签名等领域。在典型的HTTPS连接中,RSA用于密钥交换和身份认证,而实际的数据加密使用AES等对称算法(混合加密)。
1985年,尼尔·科布利茨(Neal Koblitz)和维克多·米勒(Victor Miller)分别独立提出了将椭圆曲线(Elliptic Curve)用于公钥密码学。
椭圆曲线定义:
其中 (保证曲线无奇点)。
在椭圆曲线群上定义"点加"运算后,椭圆曲线离散对数问题(ECDLP)成为ECC的安全基础:给定基点 和公钥 ,求 极其困难。
ECC vs RSA 的等效强度对比:
| ECC密钥长度 | RSA密钥长度 | 破解所需MIPS年 | 带宽比 |
|---|---|---|---|
| 160位 | 1024位 | 1:6.4 | |
| 224位 | 2048位 | 1:9.1 | |
| 256位 | 3072位 | 1:12 | |
| 384位 | 7680位 | 1:20 | |
| 521位 | 15360位 | 1:29 |
ECC的主要优势在于:更短的密钥提供同等的安全性。这使其特别适合移动设备、物联网等资源受限场景。Bitcoin和以太坊均使用secp256k1曲线进行数字签名(ECDSA)。
具体曲线的应用场景:
| 曲线名称 | 密钥长度 | 应用 |
|---|---|---|
| secp256k1 | 256位 | Bitcoin、Ethereum |
| P-256 (secp256r1) | 256位 | 美国政府推荐、TLS |
| P-384 (secp384r1) | 384位 | 国家安全级应用 |
| Curve25519 (X25519) | 256位 | TLS 1.3、Signal、WhatsApp |
| ed25519 | 256位 | SSH、OpenPGP、DNSsec |
X25519的实际应用:Signal 协议使用 X25519 进行密钥交换。当你发送一条加密消息时:1) 你的客户端生成临时密钥对,2) 用 X25519 与接收者的长期公钥计算共享密钥,3) 用派生出的对称密钥(AES-256 + HMAC-SHA256)加密消息,4) 临时公钥随密文一同发送。整个过程在不到1毫秒内完成。
密码学哈希函数将任意长度的输入映射到固定长度的输出,并满足以下关键性质:
哈希函数的发展历程:
| 算法 | 输出长度 | 年份 | 状态 |
|---|---|---|---|
| MD5 | 128位 | 1991 | 已破解(2004年理论碰撞,2008年实际碰撞) |
| SHA-1 | 160位 | 1995 | 已破解(2017年Google 次运算得到碰撞) |
| SHA-256 | 256位 | 2001 | 当前安全 |
| SHA-3 | 可变 | 2015 | 当前安全(基于Keccak海绵结构) |
| BLAKE3 | 可变 | 2020 | 极高性能,安全 |
SHA-1碰撞的实际演示(Google's SHAttered attack, 2017):
Merkle-Damgård 结构与海绵结构对比:
Merkle-Damgård(MD5/SHA-1/SHA-2):
明文块1 → 明文块2 → ... → 明文块n
│ │ │
▼ ▼ ▼
压缩函数 → 压缩函数 → ... → 压缩函数 → 输出
▲ │
初始向量 ──────────────────┘
海绵结构(SHA-3/Keccak):
可选的吸收阶段 挤压阶段
┌──────┐
│ r │ ← 输入块1
├──────┤ ┌────────────────────┐
│ c │ │ │
└──────┘ │ ← XOR → f → XOR → f → ... → 输出块1
┌──────┐ │
│ r │ ← 输入块2 → 输出块2
├──────┤ │
│ c │ │
└──────┘ └────────────────────┘
...
Merkle-Damgård 结构存在长度扩展攻击的弱点(给定 ,可以在不知道 的情况下计算 ),这也是为什么 SHA-3 采用了海绵结构。
哈希函数的实际应用示例——Merkle Tree:
Bitcoin 中的每个区块包含数百笔交易,这些交易的组织方式是 Merkle Tree:
Root
/ \
H12 H34
/ \ / \
H1 H2 H3 H4
│ │ │ │
Tx1 Tx2 Tx3 Tx4
数字签名提供消息的真实性、完整性和不可否认性。其基本流程如下:
签名生成(Alice):
签名验证(Bob):
常见数字签名算法效率对比:
| 算法 | 签名速度 | 验证速度 | 签名大小 | 安全性 | 典型应用 |
|---|---|---|---|---|---|
| RSA-2048 | 慢 | 快 | 256字节 | 112位 | TLS证书、PGP |
| ECDSA (P-256) | 快 | 中 | 64字节 | 128位 | Bitcoin、以太坊 |
| EdDSA (ed25519) | 极快 | 极快 | 64字节 | 128位 | SSH、Signal |
| BLS | 中 | 中 | 32字节 | 128位 | 区块链聚合签名 |
性能数据(ed25519 在 3.0GHz Intel CPU 上):
量子计算对现有公钥密码学构成根本性威胁。1994年,彼得·秀尔(Peter Shor)提出了秀尔算法(Shor's Algorithm),证明量子计算机可以在多项式时间内解决大整数因子分解和离散对数问题:
对比经典算法:
量子攻击对各密码学领域的影响:
| 密码学方案 | 受量子威胁程度 | 替代方案 |
|---|---|---|
| AES-256 | 低(Grover算法仅将密钥强度减半→128位) | 增长密钥长度即可 |
| SHA-256 | 低(Grover算法碰撞搜索仅平方根加速) | 增长输出长度即可 |
| RSA | 高(Shor算法完全攻破) | 基于格的密码(Lattice-based) |
| ECDSA | 高(Shor算法完全攻破) | CRYSTALS-Dilithium |
| Diffie-Hellman | 高(Shor算法完全攻破) | CRYSTALS-Kyber |
| 一次性密码本 | 不受影响 | 继续使用 |
NIST后量子密码标准化进程:
NIST在2016年发起了后量子密码(Post-Quantum Cryptography, PQC)竞赛,经过六年的评审,于2022年公布了首批入选算法:
| 算法 | 类型 | 公钥大小 | 密文/签名大小 | 主要优势 |
|---|---|---|---|---|
| CRYSTALS-Kyber | 基于格(ML-KEM) | 1.3KB | 1.5KB | 最快的PQC KEM,最终标准 |
| CRYSTALS-Dilithium | 基于格(ML-DSA) | 1.3KB | 2.4KB | 高签名性能,最终标准 |
| FALCON | 基于格(FN-DSA) | 0.9KB | 0.7KB | 最小签名大小 |
| SPHINCS+ | 基于哈希(SLH-DSA) | 首次签名慢 | 大签名 | 最保守的安全性(仅依赖哈希安全) |
"先存储、后解密"威胁(Harvest Now, Decrypt Later):
现代HTTPS连接综合运用了多个时代的密码学成果。以TLS 1.3中的典型密码套件 TLS_AES_256_GCM_SHA384 为例:
1. 密钥交换(公钥密码学)
┌────────────────────────────────────────────────┐
│ X25519 (ECC) 或 CRYSTALS-Kyber (PQC) │
│ → 客户端和服务器协商出共享密钥 K │
└────────────────────────────────────────────────┘
2. 身份认证(数字签名)
┌────────────────────────────────────────────────┐
│ Ed25519 或 ECDSA (P-256) │
│ → 服务器用私钥签名握手消息以证明身份 │
└────────────────────────────────────────────────┘
3. 对称加密(实际数据保护)
┌────────────────────────────────────────────────┐
│ AES-256-GCM (混合加密,使用共享密钥K) │
│ → 所有HTTP数据用AES-256加密,GCM模式提供认证 │
└────────────────────────────────────────────────┘
4. 完整性(哈希函数)
┌────────────────────────────────────────────────┐
│ SHA-384 (用于密钥派生和消息认证) │
│ → HKDF (HMAC-based Key Derivation Function) │
└────────────────────────────────────────────────┘
一次HTTPS连接的完整握手大约需要:
密码学的发展历史,就是一场防御者与攻击者之间永无止境的博弈。
| 时代 | 代表技术 | 理论基础 | 安全模型 | 弱点 |
|---|---|---|---|---|
| 古典 | 凯撒密码、维吉尼亚 | 字母替换 | 算法保密 | 频率分析、暴力破解 |
| 机械 | 恩尼格玛机 | 机电替换 | 密钥空间 | 操作失误、已知明文攻击 |
| 现代 | DES、AES、RSA | 信息论、计算复杂性 | 计算安全 | 密钥长度不足、量子计算 |
| 未来 | 格密码、量子密钥分发 | 格理论、量子力学 | 量子安全 | 实现效率、实际部署 |
当今密码学面临的核心挑战包括:
正如密码学家布鲁斯·施奈尔(Bruce Schneier)所总结的:"密码学通常不会直接失败——是它周围的系统会失败。" 理解密码学的历史,本质上是理解这场持续数千年的攻防博弈如何塑造了我们对信任、隐私和安全的基本认知。
推荐读物: