密码算法安全通信哈希算法完整性校验讲义 - 第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)正式发布 | 新一代哈希标准,抗量子攻击潜力更强 |
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(国密) |
| 主要用途 | 数据加密 | 密钥交换、数字签名、身份认证 |
常见误区:非对称加密并非“安全”。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 |
1.3.3 哈希函数与对称/非对称加密的关系
在安全通信系统中,三种密码学原语通常协同工作,而非相互替代:
- 对称加密负责机密性——确保数据不被未授权者读取。
- 非对称加密负责密钥交换与身份认证——解决对称密钥的分发问题,并提供数字签名。
- 哈希函数负责完整性校验——确保数据在传输或存储过程中未被篡改。
典型组合示例(HTTPS/TLS):
1. 非对称加密(ECDHE)协商会话密钥。
2. 对称加密(AES-GCM)加密通信数据,同时 GCM 模式内置完整性校验。
3. 哈希函数(SHA-256)用于证书签名验证和密钥派生。
三者缺一不可,共同构成现代安全通信的基石。
1. 非对称加密(ECDHE)协商会话密钥。
2. 对称加密(AES-GCM)加密通信数据,同时 GCM 模式内置完整性校验。
3. 哈希函数(SHA-256)用于证书签名验证和密钥派生。
三者缺一不可,共同构成现代安全通信的基石。