密码学导论:概念、模型与历史脉络
密码学(Cryptography)是研究信息保护的科学与艺术,其核心目标是在存在潜在 adversary(攻击者)的环境中,实现数据的机密性(Confidentiality)、完整性(Integrity)、认证(Authentication)与不可否认性(Non-repudiation)。这些目标共同构成了现代信息安全的理论基石,广泛应用于金融交易、政府通信、个人隐私保护及云计算等场景。本章将系统阐述密码学的基本概念、形式化模型与历史演进脉络,为理解后续各章内容提供必要的理论框架。我们将首先定义四大核心安全属性,进而构建密码系统的通用模型,随后追溯从古代隐蔽技术到量子抗性密码学的关键历史节点,并辨析密码学与隐写术(Steganography)的本质差异,最后阐明现代密码学与经典密码学的根本区别,并规划本书的学习路径与预备知识要求。
1.1 核心安全目标:机密性、完整性、认证与不可否认性
密码学的根本使命是解决开放网络环境中的信任问题。国际标准组织(如ISO/IEC 27000系列)将信息安全属性归纳为机密性、完整性、可用性(Availability)等,其中密码学主要直接保障前四个目标,而可用性更多依赖系统架构与冗余设计。以下逐一详解:
机密性(Confidentiality) 确保信息仅能被授权实体访问,防止未授权泄露。其形式化定义为:对于明文空间 $\mathcal{P}$ 中的任意消息 $m$,在未持有正确密钥 $K$ 的情况下,攻击者从密文 $C$ 中获取 $m$ 的有效信息的概率可忽略不计。例如,对称加密算法 AES-256 在密钥随机选取时,满足 $Pr[D(K, E(K,m)) = m] \approx 1$ 且 $Pr[E(K,m) = C] \approx 2^{-256}$ 对任意固定 $m$ 和随机 $K$。历史案例如二战时期盟军破译恩尼格玛密码,直接体现了机密性失效的灾难性后果——大西洋护航舰队位置泄露导致商船损失激增。
完整性(Integrity) 保证信息在传输或存储过程中未被篡改、插入或删除。密码学通过消息认证码(MAC)或数字签名实现,其核心是检测任何非授权修改。形式化地,完整性方案需满足:对于任意密文 $C$,若 $C$ 被篡改为 $C' \neq C$,则验证算法以高概率拒绝 $C'$。例如,HMAC-SHA256 利用密钥 $K$ 计算 $tag = H((K \oplus opad) \| H((K \oplus ipad) \| m))$,任何对 $m$ 的修改都会导致 $tag$ 不匹配。2008年,某银行因未验证SWIFT消息完整性,遭攻击者篡改交易金额,损失达数千万美元,凸显了完整性缺失的金融风险。
认证(Authentication) 验证实体身份或消息来源的真实性。在对称场景中,共享密钥可用于身份认证(如 Challenge-Response 协议);在公钥场景中,数字证书绑定公钥与身份。例如,TLS 握手阶段通过服务器证书(包含 CA 签名)认证服务器身份,防止中间人攻击。2011年,DigiNotar 证书机构被入侵,伪造 Google 等网站证书,导致伊朗用户遭大规模中间人攻击,此事件直接推动了证书透明度(Certificate Transparency)机制的诞生。
不可否认性(Non-repudiation) 防止通信一方事后否认其行为(如发送过某消息或签署过某合同)。数字签名通过私钥的唯一性提供此属性:签名 $S = Sign_{sk}(m)$ 可被任何人用公钥 $pk$ 验证 $Verify_{pk}(m, S) = true$,且签名者无法否认因私钥仅其持有。法律上,许多国家(如美国《电子签名法》、欧盟《eIDAS条例》)已承认符合标准的数字签名具有法律效力。例如,2019年,某公司CEO通过数字签名批准并购协议,后试图以“私钥泄露”为由否认,但因签名时间戳与硬件安全模块(HSM)日志证据充分,法院判定其无效。
这四目标常需组合实现。例如,安全电子邮件标准 PGP 同时提供机密性(对称加密会话密钥)、完整性(SHA 哈希)、认证(数字签名)与不可否认性(发送方签名)。值得注意的是,可用性虽常列为信息安全三要素之一,但其保障主要依赖冗余、负载均衡等非密码学机制,故本章聚焦前三者。
1.2 密码系统的基本模型与形式化描述
1.2.1 基本组件
一个通用密码系统由以下要素构成:
- **明文(Plaintext)**:原始信息 $m \in \mathcal{P}$,$\mathcal{P}$ 为明文空间。
- **密文(Ciphertext)**:加密后信息 $c \in \mathcal{C}$,$\mathcal{C}$ 为密文空间。
- **加密算法(Encryption Algorithm)**:$E: \mathcal{P} \times \mathcal{K} \rightarrow \mathcal{C}$,其中 $\mathcal{K}$ 为密钥空间。通常 $E$ 为概率性算法(如使用随机 IV)。
- **解密算法(Decryption Algorithm)**:$D: \mathcal{C} \times \mathcal{K} \rightarrow \mathcal{P}$,满足正确性:$\forall m \in \mathcal{P}, \forall k \in \mathcal{K}, D(k, E(k,m)) = m$。
- **密钥(Key)**:控制加密/解密过程的秘密参数 $k$。密钥长度直接决定安全强度,如 AES-128 的密钥空间大小为 $2^{128}$。
1.2.2 系统分类
根据密钥使用方式,密码系统分为三类: 1. 对称密码(Symmetric Cryptography):加密与解密使用相同密钥 $k$,即 $E_k(m) = c, D_k(c) = m$。代表算法:AES、ChaCha20。优点:效率高,适合大数据加密;缺点:密钥分发困难。 2. 非对称密码(Asymmetric Cryptography):使用公钥 $pk$ 与私钥 $sk$ 对,$E_{pk}(m) = c, D_{sk}(c) = m$,且从 $pk$ 难以推导 $sk$。代表算法:RSA、ECC。优点:解决密钥分发问题;缺点:速度慢,通常用于加密会话密钥或数字签名。 3. 混合密码系统(Hybrid Cryptosystem):实际应用(如 TLS)中,结合两者优势:用非对称加密安全传输随机生成的对称会话密钥,随后用对称加密传输大量数据。
1.2.3 安全模型
现代密码学强调可证明安全(Provable Security),即安全性的严格数学证明。典型模型包括:
- **唯密文攻击(Ciphertext-Only Attack, COA)**:攻击者仅拥有密文。
- **已知明文攻击(Known-Plaintext Attack, KPA)**:攻击者拥有若干明文-密文对。
- **选择明文攻击(Chosen-Plaintext Attack, CPA)**:攻击者可选择任意明文并获取对应密文(如通过加密 oracle)。
- **选择密文攻击(Chosen-Ciphertext Attack, CCA)**:攻击者可选择任意密文并获取解密结果(自适应选择)。
安全定义通常基于游戏(Game) 框架:挑战者与攻击者交互,若攻击者区分加密输出与随机字符串的优势可忽略,则称方案满足 IND-CPA 安全(语义安全)。例如,AES-GCM 在随机密钥下满足 IND-CPA 安全。
1.2.4 密码系统模型图示
以下 Mermaid 图展示了通用密码系统的信息流,区分对称与非对称场景:
```mermaid graph TD A[明文 m] --> B{加密算法 E}; B --> C[密文 c]; C --> D{解密算法 D}; D --> E[明文 m];
subgraph 对称密码 B -->|密钥 k| F[共享密钥]; D -->|密钥 k| F; end
subgraph 非对称密码 B -->|公钥 pk| G[公钥]; D -->|私钥 sk| H[私钥]; G --> B; H --> D; end ```
1.3 历史脉络:从古典ciphers到现代密码学
1.3.1 古代至文艺复兴:艺术性与隐蔽性
早期密码学多依赖手工操作,算法与密钥常混合保密,即 “security by obscurity”。
- **斯巴达 scytale(公元前5世纪)**:将长条羊皮纸缠绕于圆柱,横向书写明文,展开后成乱码。解密需同直径圆柱。本质是换位密码,密钥为圆柱直径。
- **凯撒密码(Caesar Cipher,公元前1世纪)**:字母表循环移位 $k$ 位,$E(m) = (m + k) \mod 26$。密钥空间仅 25(忽略 $k=0$),易受频率分析攻击。单表替换密码的脆弱性在于字母频率分布不变,如英语中 'E' 出现率约 11.7%。
- **维吉尼亚密码(Vigenère Cipher,1586年)**:多表替换,使用关键词 $K = k_1k_2...k_t$ 循环移位,$E(m_i) = (m_i + k_{(i \mod t)}) \mod 26$。密钥空间 $26^t$,若 $t$ 足够大,可抵抗频率分析。19世纪,巴泽里埃斯(Bazeries)曾误认为其“不可破”,但1863年,卡西斯基(Kasiski)通过重复密文段距离分析推出密钥长度,最终破译。
- **波利比乌斯方阵(Polybius Square,公元前2世纪)**:将字母映射至 $5 \times 5$ 网格(合并 I/J),用坐标数字表示,如 A=(1,1)。可结合多表替换增强。
此阶段密码学多为军事/外交工具,缺乏系统理论,依赖操作者保密。
1.3.2 19世纪:机械密码与密码分析兴起
- **机械密码设备**:19世纪末,出现早期转子机械,如 1918 年美国 Edward Hebern 的转子打字机,但未大规模应用。
- **密码分析科学化**:1854年,波利比乌斯方阵的变体被用于克里米亚战争;1883年,法国密码学家 **Kerckhoffs** 提出著名原则:“密码系统的安全性应仅依赖于密钥的保密,而非算法的保密。” 此原则成为现代密码学基石,促使算法公开化。
- **恩尼格玛密码机(Enigma,1920s)**:纳粹德国使用,含多个转子、反射器与插接板,密钥空间约 $10^{23}$。1932年,波兰数学家雷耶夫斯基(Rejewski)利用 permutation group theory 和情报破译基础设置;1940年,英国布莱切利园(Bletchley Park)在图灵领导下,利用“炸弹”(Bombe)设备大规模破译,据估计缩短二战至少两年。恩尼格玛的破译凸显了**密钥管理**与**系统设计缺陷**(如禁止字母映射自身)的重要性。
1.3.3 20世纪中叶:数字时代与DES革命
- **信息论与密码学**:1949年,香农(Shannon)发表《保密系统的通信理论》,首次用数学定义密码学,提出**混淆(Confusion)与扩散(Diffusion)** 原则:混淆使密文与密钥关系复杂,扩散使明文影响大范围密文。这成为分组密码设计准则。
- **数据加密标准(DES,1977)**:IBM 设计,NSA 调整,56位密钥,16轮 Feistel 结构。DES 首个广泛采用的公开标准,但其56位密钥在1998年被电子前沿基金会(EFF)用专用机器 56 小时暴力破解,暴露了密钥长度不足问题。DES 的兴衰推动了密钥长度标准演进。
- **公钥密码学革命(1976)**:Diffie 与 Hellman 发表《密码学的新方向》,提出**公钥密码**概念与**密钥交换**方案。1977年,Rivest、Shamir 与 Adleman 提出 RSA 算法,基于大整数分解难题。公钥密码解决了密钥分发难题,并催生数字签名、身份基加密等新范式。
- **高级加密标准(AES,2001)**:NIST 公开征集,2000年选定 Rijndael(比利时设计)。AES 支持 128/192/256 位密钥,128 位分组,采用 SubBytes、ShiftRows、MixColumns、AddRoundKey 操作。其设计抵抗已知攻击(如差分、线性),成为全球对称加密标准。
1.3.4 21世纪:椭圆曲线与量子威胁
- **椭圆曲线密码学(ECC,1985提出,2000s普及)**:基于椭圆曲线离散对数问题(ECDLP),相同安全强度下密钥远短于 RSA(如 ECC-256 ≈ RSA-3072)。广泛用于移动设备、TLS、比特币(ECDSA)。
- **散列函数与消息认证**:MD5(1992)因碰撞攻击(2004年)淘汰;SHA-1(1995)于 2017 年被 Google 实际碰撞;现主流为 SHA-2(SHA-256/384/512)与 SHA-3(Keccak,2015)。
- **量子计算威胁**:1994年,Shor 算法提出多项式时间破解 RSA、ECC,威胁公钥密码;Grover 算法将对称密钥搜索从 $O(2^n)$ 降为 $O(2^{n/2})$,故 AES-256 仍安全(需 $2^{128}$ 操作)。**后量子密码学(PQC)** 兴起,NIST 于 2022 选定 CRYSTALS-Kyber(基于格)为标准化算法,用于替代 RSA/ECC。
1.3.5 历史演进对比表
| 时期 | 代表技术 | 关键人物/事件 | 核心特点 | 安全基础 | |--------------|----------------|--------------------|------------------------------|------------------------| | 古典时期 | 凯撒、维吉尼亚 | 凯撒、维吉尼亚 | 手工操作,单/多表替换 | 算法保密 | | 机械时期 | 恩尼格玛 | 雷耶夫斯基、图灵 | 机电转子,密钥空间大 | 物理复杂性 | | 数字初期 | DES | 香农、IBM、NSA | 迭代 Feistel 结构 | 计算复杂性(56位不足) | | 公钥革命 | RSA, DH | Diffie-Hellman, RSA| 数学难题(分解、离散对数) | 数论难题 | | 现代 | AES, ECC, SHA-3| NIST, 密码学家 | 可证明安全,标准化 | 计算复杂性,抗量子设计 |
1.4 隐写术与密码学:本质差异与协同应用
隐写术(Steganography)与密码学常被混淆,但目标截然不同:
- **密码学**:使消息内容不可读,但攻击者知悉密文存在。**安全目标为机密性**,攻击模型包括被动/主动攻击。
- **隐写术**:隐藏消息的存在本身,使攻击者无法察觉通信。**安全目标为隐蔽性**,常与密码学结合:先加密再隐藏(如 LSB 替换、DCT 域修改)。
关键区别: 1. 问题域:密码学处理“如何保护内容”,隐写术处理“如何隐藏行为”。 2. 攻击者模型:密码学假设攻击者主动获取密文并分析;隐写术假设攻击者监控信道并检测异常。 3. 容量与鲁棒性:隐写术载体(如图像、音频)的隐藏容量有限,且可能因压缩/处理而破坏;密码学密文通常可任意扩展(如分块加密)。 4. 历史应用:古典隐写术包括希腊人将消息刻于木板覆蜡、二战时期将微点照片藏于邮票后;现代数字隐写术如 JPEG 的 F5 算法、网络协议中的 Covert Channel。
协同案例:安全通信中,先使用 AES 加密消息(保障机密性、完整性),再以 LSB 法嵌入 PNG 图像(保障隐蔽性)。攻击者若仅检测信道,可能忽略图像;若获取图像并提取 LSB,仍需破解 AES。这种“防御纵深”策略提升了整体安全性。
1.5 经典与现代密码学的根本区别
经典密码学(至 1970 年代前)与现代密码学(后 Diffie-Hellman)存在范式转移:
| 维度 | 经典密码学 | 现代密码学 | |--------------|--------------------------------|--------------------------------------| | 设计原则 | 算法保密(security by obscurity) | 算法公开,仅密钥保密(Kerckhoffs 原则) | | 安全性依据 | 手工操作复杂性,对手资源有限 | 计算复杂性理论(NP 问题) | | 分析方式 | 经验性,依赖密码分析师直觉 | 形式化证明(归约到数学难题) | | 密钥管理 | 物理分发,共享密钥 | 公钥基础设施(PKI)、密钥交换协议 | | 应用规模 | 点对点,少量通信 | 大规模网络,自动化协议(TLS, IPsec) | | 攻击模型 | 被动分析为主 | 主动选择明文/密文攻击(CPA/CCA) |
根本区别在于:现代密码学将安全性从“算法保密”转为“密钥保密”,并引入计算模型与数学证明。例如,经典替换密码(如凯撒)的安全性依赖于攻击者不知移位值,但一旦知道算法,密钥空间仅 25;而现代 AES-256 即使算法完全公开,攻击者仍需 $2^{256}$ 操作,这在物理上不可行。Kerckhoffs 原则确保系统经得起公开审查——如 AES 经过全球密码学家十余年分析而未破,反之,经典算法如 WWII 日本紫密(Purple)因部分设计保密,战后分析发现其结构存在弱点。
此外,现代密码学区分对称与**非对称*