密码学发展简史与核心概念体系
这种对抗关系的本质,是密码设计者与密码分析者始终围绕“信息熵的隐藏与挖掘”展开的博弈,而支撑这场博弈的底层逻辑,正是密码学自诞生以来逐步确立的核心设计原则与分类体系。从古典密码的经验性设计,到现代密码学的数学化驱动,再到后量子密码的抗量子化演进,密码学的每一次范式跃迁,都伴随着核心原则的明确与分类体系的完善。
1.4 密码学的核心设计原则
密码学作为一门交叉学科,其发展过程中逐步形成了被全球密码学界公认的核心设计准则,其中最具代表性的是柯克霍夫斯原则(Kerckhoffs's Principle)与香农完美安全理论,二者分别从系统设计与信息论底层定义了密码系统的安全性边界。
1.4.1 柯克霍夫斯原则:密码系统的安全性边界
1883年,荷兰语言学家、密码学家奥古斯特·柯克霍夫斯(Auguste Kerckhoffs)在其著作《军事密码学》中提出了现代密码学的六条核心设计原则,其中第一条被后世总结为柯克霍夫斯原则:密码系统的安全性应当仅依赖于密钥的保密性,而不依赖于加密算法本身的保密性。换言之,即使攻击者完全知晓加密算法的所有细节,只要密钥未泄露,就无法破解密文。 这一原则的提出彻底颠覆了古典密码的设计逻辑:古典密码时代的设计者普遍认为“算法越神秘,密码越安全”,因此各国军队和政府都会严格保密自己的加密算法,甚至对不同部门使用不同的加密体系。但这种做法的弊端极为明显:一旦算法被敌方获取,整个加密体系就会彻底失效,且更换算法的成本极高。而遵循柯克霍夫斯原则的密码系统,只需要更换密钥即可恢复安全性,无需重新设计算法。 以二战时期的德军恩尼格玛密码机为例:德军始终认为恩尼格玛的加密算法是绝对保密的,甚至认为“没有敌人能破解它”,但盟军在获取了恩尼格玛的机器样本后,很快通过分析其机械结构推导出了加密逻辑,再结合密码分析技术破解了大量密文。如果恩尼格玛的设计遵循柯克霍夫斯原则,将算法公开、仅保密密钥,那么即使机器被缴获,德军只需要更换转子设置(即密钥)即可避免被破解。 柯克霍夫斯原则的另一重要价值是推动密码算法的标准化与公开化:所有遵循该原则的加密算法都需要经过全球密码学界的公开分析与验证,只有经过长期检验、未发现有效攻击方法的算法才能被广泛采用。目前全球通用的AES、RSA、SM2等国密/商用密码算法,全部是公开的,其安全性已经经过了几十年的公开验证。相反,未公开的私有加密算法往往存在大量未被发现的漏洞:例如2013年曝光的NSA主导的Dual_EC_DRBG随机数生成算法,因为被植入了隐蔽后门,在公开后被全球密码学家迅速识别,最终被NIST从标准中移除。
1.4.2 香农完美安全理论:密码系统的安全性上限
1949年,克劳德·香农(Claude Shannon)发表了划时代的论文《保密系统的通信理论》,首次将信息论引入密码学研究,从数学上严格证明了密码系统的安全性上限,也就是完美安全(Perfect Secrecy)的定义:对于任意明文$m$、密文$c$和密钥$k$,如果满足以下三个条件,那么攻击者无法从密文中获取任何关于明文的信息: 1. 密钥空间的大小$|K|$不小于明文空间的大小$|M|$,即$|K| \geq |M|$; 2. 密钥是均匀随机生成的,每个密钥被使用的概率相等; 3. 每个密钥仅使用一次,使用后立即销毁。 从信息论角度,完美安全的数学表达式为: $$P(M=m|C=c) = P(M=m)$$ 其中$P(M=m|C=c)$表示在截获密文$c$的条件下,明文为$m$的条件概率,$P(M=m)$是明文$m$的先验概率。该公式的含义是:密文的出现不会改变明文的概率分布,即攻击者即使拥有无限的计算资源,也无法从密文中推断出任何明文的信息。 最典型的完美安全加密体制是一次一密(One-Time Pad, OTP):其加密过程为$c = m \oplus k$,其中$\oplus$表示异或运算,$k$是长度与明文$m$完全一致的随机密钥,每个密钥仅使用一次。二战时期苏军在莫斯科保卫战期间大规模使用了一次一密体制:每个通信单位的密码本由总部统一发放,包含数十万组随机密钥,每次通信使用一组密钥,使用后立即销毁。德军在整个战争期间截获了超过200万份苏军密文,始终未能破解任何一份有效内容,直到战后通过缴获的苏军密码本才得知其加密机制。 完美安全理论为密码系统提供了安全性上限:任何密码系统的安全性都不可能超过完美安全的水平,而一次一密是唯一已知能达到完美安全的加密体制。但一次一密的工程局限性极强:密钥的长度必须与明文一致,且需要安全的密钥分发与存储机制,仅适用于极高密级的短报文通信,无法大规模商用。因此现代商用密码系统的设计目标,是在计算安全(Computational Security)的前提下,尽可能接近完美安全的上限:即假设攻击者的计算资源有限,在合理的时间内无法破解密文。
1.5 密码系统的典型分类
随着密码学的发展,密码系统的分类体系逐步完善,目前通常按照加密方式、用途两个维度进行划分,不同类别的密码系统对应不同的应用场景与安全需求。
1.5.1 按加密方式划分:对称密码与非对称密码
这是密码系统最核心的分类方式,二者的核心区别在于密钥的数量与使用方式: ##### (1)对称密码 对称密码的加密密钥与解密密钥完全相同,或者可以通过其中一个密钥推导出另一个。其核心优势是运算效率极高,适合加密大量数据,目前所有商用对称密码的加密速度都可以达到GB/s级别,远高于非对称密码。 对称密码的典型代表包括:
- 分组密码:将明文分成固定长度的分组,逐个分组加密,代表算法有AES(高级加密标准,分组长度128位,密钥长度128/192/256位,是目前全球通用的商用加密标准)、SM4(中国国密分组密码算法,分组长度128位,密钥长度128位,已广泛应用于国内金融、政务领域);
- 流密码:对明文逐位或逐字节加密,适合实时加密场景,代表算法有RC4(早期Wi-Fi加密标准WEP使用的算法,后来被发现漏洞已淘汰)、SM4的流模式。
对称密码的核心缺陷是密钥分发困难:如果通信双方A和B需要共享对称密钥,必须提前通过安全的信道交换密钥,如果A需要与N个不同的通信方交换密钥,则需要管理$N-1$个密钥,当N达到百万级时,密钥管理的成本会变得不可接受。 ##### (2)非对称密码 非对称密码也叫公钥密码,其加密密钥(公钥)是公开的,可以任意分发,解密密钥(私钥)由持有者严格保密,二者无法互相推导。其核心优势是解决了对称密码的密钥分发问题:任何人都可以用公钥加密信息,只有持有对应私钥的人才能解密,无需提前交换密钥。 非对称密码的典型代表包括:
- 公钥加密算法:RSA(基于大整数分解困难性,是目前应用最广泛的非对称加密算法)、ECC(椭圆曲线密码,基于椭圆曲线离散对数困难性,相同安全强度下密钥长度仅为RSA的1/10,运算速度更快,目前逐渐替代RSA)、SM2(中国国密椭圆曲线公钥算法,已广泛应用于电子政务、金融领域);
- 数字签名算法:ECDSA(椭圆曲线数字签名算法)、SM2签名算法,用于验证信息来源与不可否认性;
- 密钥交换算法:DH(迪菲-赫尔曼密钥交换算法)、ECDH(椭圆曲线迪菲-赫尔曼算法),用于通信双方在不安全的信道上协商出对称密钥。
非对称密码的核心缺陷是运算效率极低,通常仅为对称密码的1/1000到1/10000,因此仅适合加密小量数据(如对称密钥)或用于身份认证、数字签名等场景。目前主流的加密方案(如HTTPS、区块链)都采用“非对称密码+对称密码”的混合架构:用非对称密码协商对称密钥,再用对称密码加密大量数据,兼顾安全性与效率。
1.5.2 按用途划分:加密算法、哈希函数与签名算法
除了按加密方式划分,密码系统还可以按照用途分为四大类,分别对应密码学的四大安全目标: 1. 加密算法:对应机密性目标,用于将明文转换为密文,仅授权用户可以解密,代表算法有AES、RSA、SM4、SM2; 2. 哈希函数:对应完整性目标,将任意长度的输入映射为固定长度的唯一输出(哈希值),不可逆,且输入的任何微小变化都会导致输出完全不同,代表算法有SHA-2(SHA-256、SHA-512)、SM3,目前比特币、以太坊等区块链系统均使用SHA-256作为哈希算法; 3. 数字签名算法:对应不可否认性目标,发送方用私钥对消息的哈希值进行签名,接收方用公钥验证签名,若验证通过则证明消息确实来自发送方且未被篡改,发送方无法否认,代表算法有ECDSA、SM2; 4. 消息认证码(MAC):对应完整性与真实性目标,通信双方共享密钥,用密钥对消息生成认证码,接收方用同样的密钥验证认证码,若验证不通过则证明消息被篡改或来源不可信,代表算法有HMAC-SHA256、GMAC。
1.6 密码分析学的攻击模型与安全强度
密码分析学是研究如何破解密码系统的学科,其攻击能力是衡量密码系统安全性的核心标准。根据攻击者掌握的信息资源不同,密码分析攻击通常分为四个等级,强度依次递增:
1.6.1 四种经典攻击模型
```mermaid graph LR A[攻击模型强度] --> B[唯密文攻击(最弱)] B --> C[已知明文攻击] C --> D[选择明文攻击] D --> E[选择密文攻击(最强)] ``` 1. 唯密文攻击(Ciphertext-Only Attack, COA):攻击者仅能获取到密文,没有其他任何辅助信息,是最弱的攻击模型。例如二战时期盟军在早期破解恩尼格玛时,仅能截获德军发射的无线电密文,不知道明文内容,也无法主动发送信息诱使德军加密,此时的攻击难度最大。 2. 已知明文攻击(Known-Plaintext Attack, KPA):攻击者可以获取到部分明文与对应的密文对,利用这些对分析加密算法的规律。例如二战时期德军每天发送的天气预报电报开头固定为“WETTERFÜRHEUTE”(德语“今日天气”),盟军获取到这部分明文与对应的密文后,大幅降低了恩尼格玛转子设置的破解难度;再如攻击者如果知道某加密网页的Cookie中固定包含“session_id=”字段,就可以利用这部分已知明文破解加密密钥。 3. 选择明文攻击(Chosen-Plaintext Attack, CPA):攻击者可以主动选择任意明文,获取对应的密文,攻击能力更强。例如2001年AES算法公开评选期间,密码学家对AES进行了选择明文攻击,成功破解了4轮AES,但全轮(10/12/14轮)AES无法被破解,这证明了AES在CPA模型下的安全性;再如针对TLS协议的“心脏出血”漏洞(Heartbleed),攻击者可以发送精心构造的明文请求,获取服务器返回的加密数据,进而推导出会话密钥。 4. 选择密文攻击(Chosen-Ciphertext Attack, CCA):攻击者可以主动选择任意密文,获取对应的明文,是最强的攻击模型。1998年密码学家丹尼尔·伯利恒(Daniel Bleichenbacher)发现了RSA加密算法在PKCS#1 v1.5填充方案下的CCA漏洞:攻击者可以发送精心构造的密文,获取服务器解密后的明文,进而推导出RSA的私钥,该漏洞影响了几代SSL/TLS协议,直到TLS 1.3废弃了不安全的填充方案才彻底修复;2020年研究人员还发现部分物联网设备的加密实现存在CCA漏洞,攻击者可以发送选择的密文,获取设备返回的明文,进而破解设备的通信密钥,控制整个物联网系统。
1.6.2 安全强度的量化定义
密码系统的安全强度通常用攻击者破解系统所需的最小计算量来量化,单位为比特(bit):例如128位安全强度意味着攻击者需要执行$2^{128}$次运算才能破解该系统,这个计算量即使使用全球最强的Frontier超算(运算速度约$1.1 \times 10^{18}$次/秒),也需要超过$10^{13}$年才能完成,远超过宇宙的年龄(约$1.38 \times 10^{10}$年)。 目前全球密码学界公认的安全强度标准为:
- 商用场景:至少128位安全强度,可抵御经典
目前全球密码学界公认的安全强度标准为:
- 商用场景:至少128位安全强度,可抵御经典计算机的暴力破解,目前主流的AES-128、RSA-2048、ECC-256、SM4、SM2等算法均满足该要求;
- 高安全等级政务/军事场景:至少192位安全强度,对应AES-192、RSA-3072、ECC-384等算法;
- 后量子密码迁移场景:需达到256位及以上的安全强度,以抵御量子计算机的格罗弗算法(Grover's Algorithm)攻击——该算法可将经典无序数据库搜索的复杂度从$O(N)$降低到$O(\sqrt{N})$,相当于将对称密码的安全强度降低一半,因此256位AES在量子计算环境下仍能维持128位的安全强度。
这里需要特别说明的是,非对称密码的安全强度与密钥长度的对应关系并非线性:RSA算法的安全强度约为密钥长度的1/3,即2048位RSA对应112位安全强度,3072位RSA对应128位安全强度,而4096位RSA才对应152位安全强度;而ECC(椭圆曲线密码)算法的安全强度约为密钥长度的1/2,即256位ECC对应128位安全强度,384位ECC对应192位安全强度。相同安全强度下,ECC的密钥长度仅为RSA的1/10,签名与解密速度是RSA的10倍以上,这也是目前全球互联网逐步淘汰RSA、转向ECC的核心原因。 哈希函数的安全强度则分为两类:预像攻击(Preimage Attack)强度与碰撞攻击(Collision Attack)强度。预像攻击是指攻击者给定一个哈希值$h$,寻找任意输入$m$使得$hash(m)=h$,其攻击复杂度约为$2^n$($n$为哈希输出长度);碰撞攻击是指攻击者寻找两个不同的输入$m_1$和$m_2$使得$hash(m_1)=hash(m_2)$,其攻击复杂度约为$2^{n/2}$,这也是SHA-1(输出长度160位,碰撞强度仅80位)在2017年被谷歌正式宣布实现碰撞攻击、彻底淘汰的核心原因,而SHA-2系列的SHA-256碰撞强度为128位,目前仍被全球密码学界认为是安全的。 为了更直观地理解安全强度的含义,我们可以通过实际计算对比:假设使用当前主流的比特币矿机,单台算力为100TH/s(即每秒可执行$10^{14}$次SHA-256哈希运算),破解128位安全强度的密文需要执行$2