密码算法安全通信哈希算法完整性校验讲义 - 第1节

1.1 密码学发展简史

密码学(Cryptography)是研究信息加密、解密及安全通信的技术科学,其发展经历了从手工到机械、再到数学与计算机化的三个主要阶段。理解这一演进过程,有助于把握对称加密、非对称加密和哈希函数在整体安全体系中的定位。

1.1.1 古典密码时期(手工阶段)

古典密码主要依赖纸笔或简单机械装置,核心是替换与换位两种基本操作。典型代表包括:

  • 凯撒密码(Caesar Cipher):将字母按固定位数偏移,如将 A→D、B→E。密钥空间极小(仅25种偏移),极易被暴力破解。
  • 维吉尼亚密码(Vigenère Cipher):使用关键词循环决定每个字母的偏移量,首次引入“多表替换”概念,对抗频率分析。
  • 恩尼格玛机(Enigma):二战时期德国使用的转子机械密码机,通过多个转子的组合实现复杂替换,但最终被图灵等数学家攻破。
关键启示:古典密码的安全性完全依赖于算法的保密性(即“通过隐匿实现安全”),一旦算法暴露,加密即告失效。现代密码学则遵循柯克霍夫原则(Kerckhoffs's Principle)——系统的安全性应仅依赖于密钥的保密,而非算法的保密。

1.1.2 近代密码时期(机械与电子阶段)

20世纪中叶,密码学从军事领域逐步走向民用。1949年香农(Claude Shannon)发表《保密系统的通信理论》,将密码学建立在信息论和数学基础之上,标志着理论密码学的诞生。这一时期的主要特征是:

  • 加密算法开始使用二进制位运算(XOR、置换、S盒等),而非字母替换。
  • 出现了分组密码(Block Cipher)和流密码(Stream Cipher)的雏形。
  • 1977年,美国国家标准局(NIST)正式发布DES(Data Encryption Standard),成为第一个公开的、标准化的对称加密算法。

1.1.3 现代密码时期(公钥与哈希阶段)

1976年,Diffie和Hellman发表《密码学的新方向》,提出了公钥密码学的思想,彻底改变了密钥分发的难题。随后出现的里程碑包括:

年份 事件 意义
1976 Diffie-Hellman 密钥交换 首次实现不依赖安全信道的密钥协商
1978 RSA 算法(Rivest-Shamir-Adleman) 第一个实用的公钥加密与数字签名方案
1991 MD5 哈希函数发布 广泛用于完整性校验,后被发现碰撞漏洞
2001 AES(Rijndael)成为 NIST 标准 取代 DES,成为对称加密的新一代标准
2015 SHA-3(Keccak)正式发布 新一代哈希标准,抗量子攻击潜力更强
密码学发展简史时间线 古典密码 凯撒 / 维吉尼亚 恩尼格玛机 近代密码 香农信息论 DES 标准 现代密码 RSA / AES SHA-3 ~公元前100年 – 1940s 1949 – 1970s 1976 – 至今 核心趋势:从“算法保密” → “密钥保密” → “公开算法 + 数学难题” 安全性基础从经验直觉 → 信息论 → 计算复杂性理论

1.2 对称加密与非对称加密基本概念

1.2.1 对称加密(Symmetric Encryption)

对称加密使用同一把密钥进行加密和解密。发送方用密钥加密明文,接收方用相同的密钥解密密文。其核心特征如下:

特性 说明
密钥管理 通信双方必须事先共享密钥,密钥分发是主要安全挑战
运算速度 通常比非对称加密快 100–1000 倍,适合大量数据加密
典型算法 AES、DES、3DES、SM4(国密)、ChaCha20
主要用途 文件加密、磁盘加密、VPN 数据通道、HTTPS 会话加密
实践提示:现代对称加密通常使用分组密码模式(如 CBC、GCM、CTR)来增强安全性。GCM 模式同时提供加密和完整性校验,是当前推荐的首选模式。

1.2.2 非对称加密(Asymmetric Encryption)

非对称加密使用一对密钥:公钥(Public Key)和私钥(Private Key)。公钥可以公开分发,私钥必须严格保密。加密和解密使用不同的密钥,解决了对称加密的密钥分发难题。

  • 加密场景:发送方用接收方的公钥加密数据,只有接收方用对应的私钥才能解密。
  • 数字签名场景:发送方用自己的私钥签名,接收方用发送方的公钥验证签名,确保身份真实性和数据完整性。
特性 对称加密 非对称加密
密钥数量 1 个(共享密钥) 2 个(公钥 + 私钥)
密钥分发 需要安全信道 公钥可公开,私钥本地保管
计算开销 低(适合大数据量) 高(通常仅加密小数据或密钥)
典型算法 AES、ChaCha20 RSA、ECC、SM2(国密)
主要用途 数据加密 密钥交换、数字签名、身份认证
对称加密 vs 非对称加密 对比图 对称加密 明文 密文 同一把密钥 K 明文 加密:E(K, 明文) → 密文 解密:D(K, 密文) → 明文 非对称加密 明文 密文 公钥 PK 明文 私钥 SK 加密:E(PK, 明文) → 密文 解密:D(SK, 密文) → 明文
常见误区:非对称加密并非“安全”。RSA 的安全性依赖于大整数分解的困难性,ECC 依赖于椭圆曲线离散对数问题。随着量子计算的发展,这些数学难题可能被 Shor 算法破解,因此后量子密码(Post-Quantum Cryptography)已成为当前研究热点。

1.3 哈希函数在密码学中的定位

1.3.1 什么是哈希函数

哈希函数(Hash Function)是一种将任意长度的输入数据映射为固定长度输出(称为哈希值或摘要)的数学函数。在密码学中,哈希函数需要满足以下核心安全属性:

  • 抗原像性(Preimage Resistance):给定哈希值 h,无法找到任何输入 m 使得 H(m) = h。
  • 抗第二原像性(Second Preimage Resistance):给定输入 m₁,无法找到另一个输入 m₂(m₂ ≠ m₁)使得 H(m₁) = H(m₂)。
  • 抗碰撞性(Collision Resistance):无法找到任意两个不同的输入 m₁ 和 m₂ 使得 H(m₁) = H(m₂)。

1.3.2 哈希函数在密码学体系中的角色

哈希函数不是加密算法(它不可逆),但它是密码学安全体系中不可或缺的基础设施。其定位可以用下表概括:

应用领域 具体用途 典型哈希算法
完整性校验 验证文件、消息在传输或存储过程中是否被篡改 SHA-256、SHA-3
数字签名 先对消息哈希,再对哈希值签名,提高签名效率 SHA-256 + RSA/ECDSA
消息认证码(MAC) 结合密钥和哈希,验证消息完整性和来源真实性(HMAC) HMAC-SHA256
密码存储 存储密码的哈希值而非明文,防止数据库泄露 bcrypt、scrypt、Argon2
区块链与工作量证明 比特币等使用哈希函数构造链式结构和挖矿难度调整 SHA-256(比特币)、Keccak(以太坊)
随机数生成与密钥派生 从熵源生成确定性随机数或派生密钥 HKDF、SHA-256
哈希函数在密码学体系中的定位 哈希函数 SHA-256 / SHA-3 密码学安全体系 完整性校验 文件/消息防篡改 数字签名 先哈希后签名 密码存储 消息认证码 HMAC 认证 区块链 工作量证明 密钥派生

1.3.3 哈希函数与对称/非对称加密的关系

在安全通信系统中,三种密码学原语通常协同工作,而非相互替代:

  • 对称加密负责机密性——确保数据不被未授权者读取。
  • 非对称加密负责密钥交换与身份认证——解决对称密钥的分发问题,并提供数字签名。
  • 哈希函数负责完整性校验——确保数据在传输或存储过程中未被篡改。
典型组合示例(HTTPS/TLS):
1. 非对称加密(ECDHE)协商会话密钥。
2. 对称加密(AES-GCM)加密通信数据,同时 GCM 模式内置完整性校验。
3. 哈希函数(SHA-256)用于证书签名验证和密钥派生。
三者缺一不可,共同构成现代安全通信的基石。