1 历史发展

1.1 古典密码学

古典密码学是指计算机出现之前,主要依赖手工或简单机械进行加密的方法。其核心思想是通过对字母的替换或排列来隐藏信息。由于当时的计算能力有限,这些密码主要靠算法的保密和人工操作来保障安全性,而非现代意义上与密钥强绑定的计算安全性

1.1.1 单表替换密码

单表替换密码是最早的加密形式之一,它将明文中的每个字母按照固定的映射关系替换为另一个字母或符号。典型的例子是凯撒密码,它将字母表向前或向后移动固定位数。例如,密钥为3时,A替换为D,B替换为E。这种密码的弱点在于它保留了字母的频率分布特征,攻击者可以通过统计英文中字母出现的频率(如E、T、A)轻易破解。由于映射是一对一且固定的,一旦明文的语言被识别,密码就形同虚设。

1.1.2 多表替换密码

为了克服单表替换的弱点,多表替换密码引入了多个替换表,并按照一定周期切换使用。最著名的是维吉尼亚密码,它使用一个关键词来确定每个字母位使用的替换表。例如,关键词为“KEY”时,第一个字母按K对应的偏移量替换,第二个按E,第三个按Y,然后重复。这种方法有效掩盖了单字母的频率特征,但周期性的模式仍然可以被卡西斯基试验等方法检测,一旦密钥长度被确定,每个位置上的单表替换就可以被频率分析逐一攻破。

1.1.3 转置密码

转置密码不改变字母本身,而是重新排列它们在信息中的顺序。常用的方法是列换位:将明文按行写入一个矩阵,然后按列读出。例如,明文“HELLO WORLD”写入2行5列矩阵,按列读出的密文可能是“HOLWD ELLOR”。转置密码的强度取决于矩阵大小和读取路径的复杂性。它常与替换密码结合使用,以增强整体安全性。

1.2 近代密码学

近代密码学以机械化和理论化为特征,标志着密码从手工艺术向科学领域的过渡。

1.2.1 机械密码机(如Enigma)

Enigma是二战期间德国广泛使用的转子机械密码机,它通过多个可旋转的转子实现多表替换。每个按键触发转子转动,使每个字母的替换映射在每个时刻都发生变化,从而产生极高的复杂度。然而,Enigma的设计缺陷(如转子位置可穷举、密钥空间有限)以及操作规程上的疏忽,最终被盟军(特别是阿兰·图灵领导的团队)通过密码分析和计算机辅助所破解。Enigma的故事是密码学史上破坏与反破坏的经典案例。

1.2.2 香农的信息论与保密系统

克劳德·香农在1949年发表《保密系统的通信理论》,将密码学置于数学信息论的框架下。他提出了“完美保密”的概念:当密钥长度不小于明文长度且只使用一次(即一次一密)时,密文不泄露任何关于明文的信息。他还明确了安全性的两个衡量标准——扩散与混淆:扩散指明文的统计特性被分散到整个密文中;混淆指密钥与密文之间的关系复杂化。这一理论奠定了现代对称密码设计的基石。

1.3 现代密码学

现代密码学以计算安全性和公钥概念为核心,借助计算机的强大算力,实现了大规模、高效率的加密通信。

1.3.1 公钥密码学起源

1976年,Whitfield Diffie和Martin Hellman提出了公钥密码学的概念,颠覆了传统对称加密必须预先安全分享密钥的局限。他们提出了一个密钥交换协议(后称Diffie-Hellman密钥交换),使得通信双方可以在不安全的信道上协商出一个共享密钥。随后,1977年Rivest、Shamir和Adleman提出了RSA算法,实现了第一个实用的公钥加密与数字签名方案。公钥密码学的出现,使电子商务、安全邮件和数字身份认证成为可能。

1.3.2 分组密码与流密码标准化

自20世纪70年代以来,分组密码(如DES、AES)和流密码(如RC4、ChaCha20)经历了大规模标准化过程。美国国家标准局(NIST)通过公开竞赛征集并评估算法,最终确定AES为新一代标准。这些标准化工作确保了全球通信的互操作性和基本安全水平。

2 基础概念与术语

2.1 明文、密文与密钥

  • 明文:原始的可读信息,如文本、图像或二进制数据。
  • 密文:经过加密后的不可读数据,旨在抵御未经授权的访问。
  • 密钥:控制加密和解密过程的参数,是密码系统的核心秘密。在对称密码中,加密和解密使用相同密钥;在非对称密码中,使用一对公钥和私钥。

2.2 加密与解密算法

加密算法将明文和密钥作为输入,输出密文;解密算法将密文和正确密钥作为输入,恢复明文。算法本身是公开的,安全性完全依赖于密钥的保密性(即Kerckhoffs原则)。

2.3 密码分析

密码分析是研究如何破解密文或恢复密钥的科学。

2.3.1 唯密文攻击

攻击者只拥有部分密文,没有明文或密钥信息。这是最弱的攻击模型,但通过统计分析可能成功,尤其当使用简单替换密码时。

2.3.2 已知明文攻击

攻击者同时拥有若干对明文和对应的密文。例如,已知邮件签名部分在密文中对应的明文“Sincerely”。这种攻击常用于破解流密码、密钥恢复。

2.3.3 选择明文攻击

攻击者可以任意选择明文并获取其密文。例如,可以向加密系统提交被加密的文本,观察输出。该攻击对公钥密码尤为危险,因为公钥公开,任何人都可以生成任意明文的密文。现代密码要求即使在这种攻击下也应保持安全性。

2.4 安全模型与攻击能力假设

密码协议的安全性通常在其设计时预设特定攻击能力,例如密码语义安全性(即攻击者即使选择明文也无法区分两个明文的密文)。这些模型构成了密码原语(如加密、签名)的理论基础。

3 对称密码学

对称密码学中,加密与解密使用同一密钥,因此通信双方必须事先安全共享密钥。其优点是速度快、实现简单,适合大量数据的加解密。

3.1 分组密码

分组密码将明文分成固定长度的块(如64位、128位),逐块进行加密。

3.1.1 数据加密标准(DES)

DES于1977年被采纳为美国联邦标准,使用56位密钥、64位分组。它基于Feistel网络结构,经过16轮迭代加密。随着计算能力的提升,56位密钥在1997年被暴力破解攻破,使其逐渐被淘汰。

3.1.2 高级加密标准(AES)

AES于2001年被选为DES的继任者,由Joan Daemen和Vincent Rijmen设计,也被称为Rijndael算法。AES支持128、192、256位密钥,分组大小为128位。它采用替换-置换网络结构,具有高安全性和高效性,是目前最广泛使用的分组密码。其设计充分考虑了扩散与混淆原则,至今未发现有效的针对完全AES的攻击。

3.1.3 工作模式(ECB、CBC、CTR等)

工作模式定义了分组密码如何应用于长于一个分组的消息。常见模式包括:

  • ECB(电子密码本):每个分组独立加密,容易受重放和模式识别攻击(如图像加密后仍能看出轮廓)。
  • CBC(密码分组链接):每个明文分组与前一个密文分组异或后再加密,需要初始化向量(IV),能隐藏明文模式。
  • CTR(计数器模式):将分组密码转换为流密码,使用递增计数器生成密钥流,可并行计算,适合加密随机访问数据。

3.2 流密码

流密码将密钥通过密钥流生成器扩展为与明文等长的伪随机密钥流,然后与明文逐位异或生成密文。

3.2.1 RC4

RC4由Ron Rivest设计,是一种简单高效的流密码,曾广泛用于SSL/TLS和WEP。但由于其初始比特存在偏差和密钥重用漏洞,已被证明不安全,逐步被禁用。

3.2.2 ChaCha20

ChaCha20由Daniel Bernstein设计,是目前推荐使用的流密码之一。它基于加法和异或运算,具有良好性能,并提供更强的安全性,已被纳入TLS 1.3标准。

3.3 密钥分发与管理挑战

对称密钥的分发是其主要短板。通信双方必须通过安全信道协商密钥,否则密钥在中途被截获将导致整个通信失效。密钥管理还涉及密钥的生成、存储、更新和销毁,在大规模系统中是一项复杂的工程挑战。公钥密码和密钥交换协议(如Diffie-Hellman)常被用来解决此问题。

4 非对称密码学

非对称密码学使用一对密钥:公钥(公开)和私钥(保密)。加密用公钥,解密用私钥;数字签名则相反。它解决了密钥分发问题,但计算效率远低于对称密码。

4.1 数学基础

非对称密码的安全性基于一系列数学难题的难解性。

4.1.1 大整数分解问题(RSA)

RSA的安全性依赖于大整数分解的困难性:给定两个大素数的乘积,找出其素因子。目前,对于足够大的数字(如2048位),分解在计算上不可行。

4.1.2 离散对数问题(ElGamal)

在有限域或椭圆曲线上,已知一个生成元g和g^x,求x是困难问题。ElGamal加密和Diffie-Hellman密钥交换均基于此。

4.1.3 椭圆曲线密码(ECC)

ECC基于椭圆曲线上的离散对数问题,能在相同安全强度下使用远小于RSA的密钥长度(如256位ECC相当于3072位RSA)。这使得ECC在资源受限设备中非常流行。

4.2 经典算法

4.2.1 RSA

RSA算法由Rivest、Shamir和Adleman提出。步骤包括:选择两个大素数p和q,计算n=p*q和欧拉函数φ(n)=(p-1)(q-1),选择公钥e(与φ(n)互质),并求解私钥d(满足e*d≡1 mod φ(n))。加密:c = m^e mod n;解密:m = c^d mod n。RSA广泛用于加密、数字签名和密钥交换。

4.2.2 Diffie-Hellman密钥交换

该协议允许双方在不安全的信道上商定一个共享密钥。双方分别选择私钥a和b,计算公钥g^a和g^b并交换。最终共享密钥为g^(ab) mod p。攻击者即使截获g^a和g^b,也无法在合理时间内计算g^(ab)(假定离散对数问题困难)。

4.2.3 DSA与ECDSA

DSA(数字签名算法)和ECDSA(基于ECC的DSA变体)是用于数字签名的标准算法。它们利用离散对数问题,提供高效的身份验证和不可否认性。

4.3 应用场景

4.3.1 安全信道建立(TLS/SSL)

TLS/SSL协议使用非对称加密进行握手阶段(如使用RSA或DH密钥交换),在双方确认身份后协商一个对称会话密钥,随后使用对称密码进行有效数据传输。这是HTTPS的基础安全机制。

4.3.2 数字信封

数字信封将对称密钥用接收方的公钥加密,然后用对称密钥加密实际消息。这结合了非对称密码的密钥分发便利性和对称密码的高效率。

5 哈希函数与消息认证

5.1 哈希函数性质

哈希函数(也称散列函数)将任意长度消息映射为固定长度的摘要,并满足以下三个核心安全属性:

5.1.1 抗原像性(单向性)

给定一个摘要值y,找到任何消息x使得H(x)=y在计算上不可行。

5.1.2 抗第二原像性(弱抗碰撞性)

给定一个消息x,找到另一个不同的消息x',使得H(x)=H(x')在计算上不可行。

5.1.3 抗碰撞性(强抗碰撞性)

找到任意两个不同的消息x和x',使得H(x)=H(x'),在计算上不可行。

5.2 常用哈希算法

5.2.1 MD系列(MD5)

MD5由Rivest设计,输出128位摘要。但MD5已被证实存在碰撞漏洞,不再推荐用于安全敏感场景,仅可用于非安全的完整性校验。

5.2.2 SHA系列(SHA-1、SHA-2、SHA-3)

  • SHA-1:输出160位,已于2017年被发现可构造实际碰撞,故退役。
  • SHA-2:包括SHA-224、256、384、512等变体,是目前最广泛使用的哈希函数。
  • SHA-3:由Keccak算法获胜,采用海绵结构,提供与SHA-2不同的安全特性,可作为备选标准。

5.3 消息认证码(MAC)

MAC结合共享密钥与消息,生成用于验证消息完整性和来源的固定长度标签。

5.3.1 HMAC结构

HMAC(基于哈希的消息认证码)将哈希函数与密钥结合,抵御长度扩展攻击。其构造为:H((K' xor opad)H((K' xor ipad)message)),其中K'是调整后的密钥。HMAC被广泛用于API认证和TLS。

5.3.2 认证加密模式(GCM)

GCM(伽罗瓦/计数器模式)同时提供数据机密性和完整性。它将CTR模式加密与GMAC(基于伽罗瓦域的MAC)结合,支持关联数据认证。其高效和并行化特性使其成为TLS 1.3的首选认证加密方式。

6 数字签名与证书

6.1 数字签名原理

数字签名使用签名者的私钥对消息的哈希摘要进行加密,生成签名。验证者使用对应的公钥解密签名,并与实际消息的哈希比较。若一致,则证明消息确实来自私钥持有者且未被篡改。签名算法如RSA、DSA、ECDSA都是实现此目标的常用方案。

6.2 公钥基础设施(PKI)

PKI是一套管理公钥与身份绑定的体系,通过数字证书和认证机构实现信任链。

6.2.1 数字证书格式(X.509)

X.509证书包含证书持有者的身份信息、公钥、CA签名、有效期和序列号等字段。浏览器通过信任预安装的根证书,验证证书链,确认网站身份。

6.2.2 证书颁发机构(CA)

CA是受信任的第三方,负责签发、管理和吊销数字证书。CA通过核实证书申请人身份后,使用自己的私钥对证书进行签名。用户信任CA所签发的证书,从而建立对公钥所有者的信任。

6.3 不可否认性实现

数字签名提供不可否认性:签名者不能否认自己签名的事实,因为只有其私钥能生成有效签名。这在电子商务、法律合同和审计日志中至关重要。

7 密码学协议

7.1 身份认证协议

7.1.1 挑战-响应协议

服务器向用户发送一个随机挑战(如nonce),用户用私钥对挑战签名或加密后返回。服务器验证签名或解密,从而确认用户持有相应私钥。这是TLS握手和SSH等协议的基本认证机制。

7.1.2 零知识证明

零知识证明允许证明者向验证者证明自己知道某个秘密,而不泄露任何关于该秘密的信息。例如,证明者知道一个离散对数x满足g^x=y,但从不给出x。这种技术广泛应用于隐私保护场景(如加密货币的匿名交易)。

7.2 密钥协商协议

7.2.1 Diffie-Hellman与变体

基本DH协议易受中间人攻击(攻击者可以在两方之间劫持并伪造公钥)。其变体如签名的Diffie-Hellman(结合数字签名)和经过认证的密钥交换(如STS协议)解决了此问题。

7.2.2 密钥派生函数(KDF)

KDF将共享秘密(如DH协商出的共享密钥)通过哈希函数等算法转换为适用于加密或认证的强会话密钥。常见的KDF包括HKDF和PBKDF2。

7.3 安全多方计算

安全多方计算允许多方共同计算一个函数,而不泄露各自私有输入。

7.3.1 秘密共享

秘密共享将一个秘密分割成多个份额分发给不同参与者。只有达到特定数量的份额才能恢复原始秘密。Shamir秘密共享方案是最著名的实现。

7.3.2 混淆电路

混淆电路用于安全地计算布尔电路。一方将电路进行加密和打乱,另一方在不解密的情况下计算。这是通用安全多方计算的基础,常用于拍卖、隐私保护机器学习等场景。

8 量子密码学

8.1 量子密钥分发(QKD)

QKD利用量子力学原理(如不确定性原理和不可克隆定理),使两个远程方能够生成并共享一个安全的对称密钥,且可以检测任何窃听行为。

8.1.1 BB84协议

BB84由Bennett和Brassard于1984年提出。它使用四个量子态(如光子极化)编码比特。发送方随机选择两类基底发送量子态,接收方随机选择基底测量。通过公开比较基底的选择,双方保留一致基底的比特,生成共享密钥。量子拦截会引入可检测的误码率。

8.1.2 诱骗态方法

由于实际单光子源难以实现,诱骗态方法使用不同强度的光脉冲来检测并抵御光子数分裂攻击。该方法使QKD在现有光纤基础设施中变得实用。

8.2 后量子密码学

后量子密码学旨在设计能抵御量子计算机攻击的密码算法。典型量子算法(如Shor算法)可高效破解RSA和ECC,因此需要新的数学基础。

8.2.1 格基密码学

格基密码学基于格上的困难问题,如最短向量问题和带错误学习问题。其代表算法包括Kyber(用于密钥封装)和Dilithium(用于数字签名),它们在NIST后量子密码标准化竞赛中表现突出。

8.2.2 基于编码的密码学

基于线性纠错码的困难问题(如综合码译码)构建算法,如Classic McEliece。它的公钥体积较大,但安全性历史久远且结构简单。

8.2.3 多变量密码学

多变量密码学利用多变量二次方程组的难解性。其代表如Rainbow,但由于密钥尺寸和性能原因,其标准化进程放缓。

9 密码学的实际应用

9.1 网络通信安全

9.1.1 虚拟专用网(VPN)

VPN使用加密隧道让远程用户通过公共网络安全访问私有网络。常见协议包括IPsec(支持加密和认证)和OpenVPN(基于SSL/TLS)。密码学确保了传输数据的机密性和完整性。

9.1.2 HTTPS与TLS握手

HTTPS通过在HTTP下叠加TLS来保障Web通信安全。TLS握手过程涉及密钥协商、服务器认证(通过数字证书)、协商加密套件等。证书错误(如过期、不匹配域名)会破坏安全性。

9.2 数据存储安全

9.2.1 磁盘加密(BitLocker、LUKS)

全盘加密工具如Windows的BitLocker和Linux的LUKS,在硬盘层面加密所有数据。它们使用对称密钥(如AES)加密磁盘,并在系统启动时需提供口令或硬件令牌解密,保护数据在丢失或被盗时不被读取。

9.2.2 数据库加密

数据库加密保护静态数据集,防止未授权访问。常见方式包括透明数据加密(TDE)和字段级加密(应用层加密)。TDE在数据库引擎层面加密存储文件,而字段级加密允许应用控制特定敏感数据的解密权限。

9.3 区块链与加密货币

9.3.1 公钥地址生成

用户生成一对非对称密钥(如ECC),通过其公钥的哈希衍生出区块链地址。该地址用于接收资产,而私钥用于签署交易。私钥丢失意味着资金永久丢失。

9.3.2 交易签名与共识机制

交易被签名后广播到网络,矿工或验证节点通过共识机制(如工作量证明PoW、权益证明PoS)确认交易。数字签名确保交易只来自合法地址所有者,而共识机制防止双花攻击。

9.4 物联网安全

9.4.1 轻量级密码

物联网设备普遍资源受限,要求密码算法在低功耗、小内存下运行。轻量级算法如PRESENT(分组密码)和ASCON(认证加密)专为嵌入式环境设计。

9.4.2 设备身份认证

通过预置证书或唯一密钥、利用协议(如DTLS)验证物联网设备的身份,防止设备被篡改或加入恶意节点。设备身份管理是大规模部署的关键挑战。

10 密码学的安全挑战与未来

10.1 密码分析的进展

密码分析不断进步:对DES的暴力破解、MD5和SHA-1的碰撞攻击公开、对AES某些简化版本的攻击均已实现。虽然完整AES仍安全,但密码学研究者始终在寻找新攻击方式。后量子时代又催生了针对量子密码的新分析方向。

10.2 侧信道攻击与防护

侧信道攻击利用密码设备运行时的物理泄露(如功耗、电磁辐射、时间差异、缓存行为)来提取密钥。例如,Spectre和Meltdown漏洞可通过CPU缓存时延推断信息。防护措施包括恒定时间执行、随机延迟、功耗均衡和屏蔽等。

10.3 密码学的伦理与法律

10.3.1 加密与隐私权

密码学是保护个人隐私和信息安全的基础,但也引发了“加密之门”的争议。政府与执法机构有时要求设置后门以应对恐怖主义、犯罪调查。然而,后门会削弱所有用户的保护,成为恶意攻击者的入口。

10.3.2 后门与执法访问辩论

该辩论在全球持续:一方面,加密后门可能被滥用,破坏国家安全和公民隐私;另一方面,执法部门需要访问加密通信来打击犯罪。技术社群普遍反对弱化加密,认为后门无法仅对“好人”开放,最终会危及整个数字生态。苹果与FBI的解锁事件是典型案例。