密码算法安全通信加密方案设计入门到实战 - 第1节
1.1 密码学发展史:从古典到量子
密码学并非现代产物,其发展历程可划分为三个主要阶段,每个阶段都对应着不同的技术特征与安全目标。
| 阶段 | 时间跨度 | 典型算法 | 核心特征 |
|---|---|---|---|
| 古典密码学 | 古代 — 19 世纪末 | 凯撒密码、维吉尼亚密码 | 基于字符替换与置换,依赖算法保密 |
| 近代密码学 | 20 世纪初 — 1970 年代 | 恩尼格玛机、一次一密 | 机械/电子化加密,开始引入数学理论 |
| 现代密码学 | 1976 年至今 | DES、RSA、AES、ECC | 基于计算复杂度,密钥公开,算法公开 |
里程碑事件:1976 年 Diffie 与 Hellman 发表《密码学的新方向》,首次提出公钥密码概念,标志着现代密码学的诞生。
1.2 对称加密与非对称加密
1.2.1 对称加密
加密和解密使用同一个密钥。优点是计算速度快、吞吐量大,适合批量数据加密;缺点是密钥分发与管理困难。
| 算法 | 密钥长度 | 分组大小 | 安全状态 |
|---|---|---|---|
| AES | 128 / 192 / 256 bit | 128 bit | 安全(推荐) |
| DES | 56 bit | 64 bit | 已破解,不推荐 |
| SM4 | 128 bit | 128 bit | 安全(国密标准) |
1.2.2 非对称加密
加密和解密使用不同的密钥(公钥与私钥)。公钥公开,私钥保密。解决了密钥分发问题,但计算速度比对称加密慢 2~3 个数量级。
| 算法 | 典型密钥长度 | 安全基础 | 主要用途 |
|---|---|---|---|
| RSA | 2048 / 4096 bit | 大整数分解 | 密钥交换、数字签名 |
| ECC | 256 bit | 椭圆曲线离散对数 | 密钥交换、数字签名 |
| SM2 | 256 bit | 椭圆曲线离散对数 | 密钥交换、数字签名(国密) |
工程实践建议:实际通信中通常采用混合加密方案——使用非对称加密安全传递对称密钥,再用对称加密加密实际数据。这样兼顾了安全性与性能。
1.3 哈希函数的作用
哈希函数将任意长度的输入数据映射为固定长度的输出(摘要),具有以下核心性质:
- 单向性:从哈希值无法反推出原始数据。
- 抗碰撞性:难以找到两个不同输入产生相同哈希值。
- 雪崩效应:输入微小变化会导致输出完全不同。
| 算法 | 输出长度 | 安全状态 | 典型应用 |
|---|---|---|---|
| MD5 | 128 bit | 已破解,不推荐 | 仅用于非安全校验 |
| SHA-256 | 256 bit | 安全(推荐) | 数字签名、完整性校验 |
| SM3 | 256 bit | 安全(国密标准) | 数字签名、完整性校验 |
安全警告:MD5 和 SHA-1 已被证明存在实际碰撞攻击,严禁在安全敏感场景中使用。所有新系统应默认使用 SHA-256 或 SM3。
1.4 通信安全三要素
信息安全领域通常用 CIA 三元组来定义安全目标,这也是密码方案设计的根本出发点。
| 要素 | 英文 | 定义 | 实现手段 |
|---|---|---|---|
| 机密性 | Confidentiality | 确保信息不被未授权者获取 | 对称加密 + 非对称加密 |
| 完整性 | Integrity | 确保信息在传输中未被篡改 | 哈希函数 + 消息认证码 (MAC) |
| 可用性 | Availability | 确保授权用户能正常访问信息 | 冗余设计、抗 DDoS、密钥备份 |
设计原则:在密码方案设计时,必须同时考虑 CIA 三要素。例如,仅加密(机密性)而不做完整性校验,攻击者可能通过密文篡改实施攻击;仅做完整性校验而不加密,敏感数据会直接暴露。