ARTICLE

密码学

密码学 (Cryptography) 密码学 (Cryptography) 是研究如何在敌手 (adversary) 存在的情况下进行安全通信的科学与艺术。其核心目标是为信息的机密性 (Confidentiality)、完整性 (Integrity)、认证性 (Authentication) 和不可否认性 (Non-repudiation) 提供数学保障。密

浏览 5 更新 2025-10-26

密码学 (Cryptography)

密码学 (Cryptography) 是研究如何在敌手 (adversary) 存在的情况下进行安全通信的科学与艺术。其核心目标是为信息的机密性 (Confidentiality)、完整性 (Integrity)、认证性 (Authentication) 和不可否认性 (Non-repudiation) 提供数学保障。密码学从古老的替换式加密技术演变为现代数学驱动的基础学科,构成了互联网安全、区块链数字身份等系统的基石。

从古典到现代

古典密码学可追溯至数千年前。古罗马的凯撒密码 (Caesar Cipher) 通过将字母表中每个字母向后偏移固定位数来实现加密——例如偏移3位后,A 变为 D,B 变为 E。这是一种替换密码 (Substitution Cipher) 的简单实例。随后的维吉尼亚密码 (Vigenère Cipher) 引入了关键字,使用多重偏移使频率分析更困难,但仍未能实现真正的安全。

现代密码学的分水岭是 柯克霍夫原则 (Kerckhoffs's Principle):一个密码系统的安全性应当完全依赖于密钥 (Key) 的保密性,而非算法本身的保密性。这一原则由奥古斯特·柯克霍夫在1883年提出,至今仍是密码系统设计的核心信条。与之相对的是"通过隐匿实现安全" (Security through Obscurity),后者在现代密码学中被普遍视为一种反模式。

现代密码学的另一个里程碑是 信息论安全香农 (Claude Shannon) 在1949年的论文《保密系统的通信理论》中证明了:如果密钥是真正随机的、与明文等长的且永不重用的(即一次性密码本,One-Time Pad),那么密文在信息论意义上是不可破解的。然而,一次性密码本的密钥分发困难使其在实际应用中受限。

对称密码学

对称密码学 (Symmetric Cryptography) 中,加密和解密使用同一把密钥。发送方用密钥 KK明文 PP 加密为密文 C=E(K,P)C = E(K, P),接收方用同一密钥解密密文 P=D(K,C)P = D(K, C)。对称密码的安全前提是双方事先通过安全信道共享了密钥。

对称密码分为两大类:

  • 流密码 (Stream Cipher):将密钥扩展为与明文等长的密钥流 (keystream),然后逐位进行异或 (XOR) 操作。典型代表为 RC4ChaCha20。流密码的优势在于速度快,适合实时通信场景,但要求密钥流永不重用。
  • 分组密码 (Block Cipher):将明文分割为固定长度的分组(如128位),在密钥控制下对每个分组进行置换和代换操作。AES (Advanced Encryption Standard) 是当前使用最广泛的分组密码,由 Joan Daemen 和 Vincent Rijmen 设计(原名 Rijndael),于2001年被NIST选定为标准。AES 支持128位、192位和256位三种密钥长度,经历十余年全球密码分析仍未出现实用化攻击。此前广泛使用的 DES (Data Encryption Standard) 因56位密钥过短而已被暴力破解攻破。分组密码需要结合工作模式 (Mode of Operation)——如 CBC (Cipher Block Chaining)、CTR (Counter)、GCM (Galois/Counter Mode)——来处理任意长度的明文并提供认证。

非对称密码学

对称密码的最大痛点——密钥分发——在1976年迎来了突破。DiffieHellman 发表了《密码学的新方向》,提出了公钥密码学 (Public-Key Cryptography) 的概念。在公钥(非对称)密码系统中,每个参与者拥有一对数学上关联的密钥:公钥 (Public Key) 可公开发布,私钥 (Private Key) 必须秘密保管。

公钥密码的安全性建立在某些数学问题的单向函数 (One-Way Function) 特性之上——在一个方向上容易计算,但反向求解极其困难:

  1. RSA 算法:由 Rivest、Shamir 和 Adleman 于1977年提出,安全性基于大整数分解 (Integer Factorization) 的困难性。选择两个大素数 ppqq,计算 n=p×qn = p \times q欧拉函数 φ(n)=(p1)(q1)\varphi(n) = (p-1)(q-1),公钥为 (n,e)(n, e)(其中 eeφ(n)\varphi(n) 互素),私钥 d=e1modφ(n)d = e^{-1} \mod \varphi(n)。加密:C=MemodnC = M^e \bmod n,解密:M=CdmodnM = C^d \bmod n。目前2048位 RSA 密钥被视为安全基线,4096位用于高安全需求。
  2. 椭圆曲线密码学 (ECC):由 Neal Koblitz 和 Victor Miller 在1985年独立提出,安全性基于椭圆曲线离散对数问题 (ECDLP)。相比 RSA,ECC 在提供同等安全强度时使用短得多的密钥——256位 ECC 密钥的安全性与3072位 RSA 相当。这使得 ECC 在资源受限的设备(如智能手机、物联网终端)上尤为普及。secp256k1 曲线因被比特币采用而广为人知。
  3. 离散对数问题 (DLP):Diffie-Hellman 密钥交换和 ElGamal 加密方案的安全性基础。给定 gamodpg^a \bmod p,在模素数群中求解 aa 是计算上不可行的。

在实际部署中,公钥密码通常不直接加密大量数据(因运算速度远慢于对称密码),而是用于密钥封装 (Key Encapsulation):用公钥加密一个随机的会话密钥,随后整个会话切换到对称加密。TLS 协议中的握手阶段即遵循此模式。

哈希函数

密码学哈希函数 (Cryptographic Hash Function) 将任意长度的输入映射为固定长度的输出,称为哈希值摘要 (Digest)。一个安全的哈希函数需满足三项核心性质:

  • 抗原像性 (Pre-image Resistance):给定哈希值 hh,在计算上无法找到满足 H(m)=hH(m) = hmm
  • 抗第二原像性 (Second Pre-image Resistance):给定 m1m_1,无法找到 m2m1m_2 \neq m_1 使得 H(m1)=H(m2)H(m_1) = H(m_2)
  • 抗碰撞性 (Collision Resistance):无法在计算上找到任意两个不同的 m1m_1m2m_2 使得 H(m1)=H(m2)H(m_1) = H(m_2)

SHA-2 系列(SHA-256、SHA-512)由NSA设计,目前仍被广泛使用。SHA-3 基于 Keccak 海绵结构,在2015年被 NIST 标准化为 SHA-2 的替代方案。MD5 和 SHA-1 因已遭受实际的碰撞攻击,不应在任何新系统中使用。

哈希函数是许多密码学上层构造的基础:默克尔树 (Merkle Tree) 用递归哈希构建可高效验证的数据结构,是区块链的核心组件;工作量证明 (Proof of Work) 依赖哈希的部分原像求解来实现共识机制。

数字签名

数字签名 (Digital Signature) 是公钥密码学的镜像应用:发送方用其私钥对消息的哈希值进行签名,任何持有对应公钥的人都可以验证签名的有效性。数字签名同时提供认证性(签名者身份可确认)、完整性(消息未被篡改)和不可否认性(签名者事后无法抵赖)。

主流数字签名方案包括:基于 RSA 的 PKCS\#1 v1.5 和 RSA-PSS、基于椭圆曲线的 ECDSA(比特币和以太坊采用)以及更现代的 EdDSA(基于 Edwards 曲线,如 Ed25519)。Ed25519 因其确定性签名、抗侧信道攻击以及高速验证而逐渐成为新系统的首选方案。

密钥交换与会话安全

Diffie-Hellman 密钥交换 使通信双方在不安全的信道上协商出一把共享秘密。令 gg 为生成元,pp 为大素数:Alice 选择私钥 aa,发送公钥 A=gamodpA = g^a \bmod p;Bob 选择私钥 bb,发送公钥 B=gbmodpB = g^b \bmod p;双方分别计算 BamodpB^a \bmod pAbmodpA^b \bmod p,得到相同的共享秘密 gabmodpg^{ab} \bmod p。窃听者从 gag^agbg^b 推导 gabg^{ab} 面临计算 Diffie-Hellman 问题。

现代安全通信协议将此过程系统化。TLS (Transport Layer Security) 是互联网加密通信的事实标准,其1.3版本强制采用支持前向安全性 (Forward Secrecy) 的密钥交换(如 ECDHE),确保即使长期私钥泄露,历史会话的保密性也不受影响。Signal 协议 则采用双棘轮 (Double Ratchet) 算法,使每次消息都使用不同的密钥,实现了端到端加密中最强的安全属性。

前沿与挑战

密码学正面临两大前沿挑战。其一,量子计算 威胁:Shor算法能在多项式时间内分解大整数和求解离散对数,这意味着一旦大规模通用量子计算机问世,RSA 和 ECC 将不再安全。为此,NIST 正在推进后量子密码学 (Post-Quantum Cryptography) 的标准化,候选方案涵盖基于格 (Lattice-based)、基于编码 (Code-based)、基于多变量 (Multivariate-based) 和基于哈希的签名等多个方向。其二,密码学在安全多方计算 (MPC)、全同态加密 (Fully Homomorphic Encryption) 和零知识证明 (Zero-Knowledge Proof) 等前沿领域的进展,正在重新定义"在不可信的环境中执行可信计算"的可能性边界。

密码学不再仅关乎保密通信——它已成为数字时代信任的数学基础设施。