This commit is contained in:
2025-10-29 14:10:04 +08:00

View File

@@ -38,6 +38,68 @@ permalink: /theory/cryptography/
- **移动通信**SIM卡加密、移动支付安全
- **物联网安全**:设备身份认证、数据传输加密
### 1.5 基础概念与术语(入门)
为方便初学者快速建立直觉,先认识密码学中最核心的几个概念:
**明文Plaintext与密文Ciphertext**
- 明文未加密的原始消息例如“HELLO”。
- 密文:加密后的消息,人类或未授权系统难以直接理解。
**加密Encryption与解密Decryption**
- 加密:用密钥将明文转换为密文,记为:
$$
C = E_k(P)
$$
- 解密:用密钥将密文还原为明文,记为:
$$
P = D_k(C)
$$
其中,$P$ 表示明文,$C$ 表示密文,$k$ 表示密钥,$E$ 为加密算法,$D$ 为解密算法。
**密钥Key对称密钥 vs 非对称密钥**
- 对称密钥:加密和解密使用相同的密钥,速度快,但密钥分发与管理是难点。
- 非对称密钥(公钥密码):加密使用“公钥”,解密使用“私钥”,便于密钥分发,还能支持数字签名。
对称加密流程示意(同一把密钥):
```mermaid
flowchart LR
S[发送者] -- 使用共享密钥 K 加密 --> C[(密文)]
C -- 使用共享密钥 K 解密 --> R[接收者]
```
非对称加密流程示意(公钥/私钥):
```mermaid
flowchart LR
S[发送者] -- 使用接收者公钥加密 --> C[(密文)]
C -- 使用接收者私钥解密 --> R[接收者]
```
在典型的 RSA 公钥体制中,还可以用一个简洁的数学表达式表示加解密:
$$
\begin{aligned}
c &= m^{e} \bmod n,\\
m &= c^{d} \bmod n,
\end{aligned}
$$
其中 $(e, n)$ 为公钥,$(d, n)$ 为私钥,$m$ 为明文,$c$ 为密文。
**常见攻击模型简介(只需直观理解)**
- 唯密文攻击COA攻击者只有密文尝试恢复明文或密钥。
- 已知明文攻击KPA攻击者拥有部分“明文-密文”对,用于分析算法或密钥。
- 选择明文攻击CPA攻击者可选择明文并获取其密文用于推断密钥或算法结构。
- 选择密文攻击CCA攻击者可选择密文并得到其解密结果进一步分析系统弱点。
直观结论:设计良好的现代密码系统,应当在这些攻击模型下仍保持安全(在合理的参数与假设下)。
## 2. 密码学历史简述
### 2.1 古代密码学(公元前-15世纪
@@ -51,6 +113,11 @@ permalink: /theory/cryptography/
- 时间公元前5世纪
- 原理:缠绕在特定直径木棒上的皮条
古典密码简述:
- 核心思路:替换或移位(重新排列)字符。
- 代表示例:凯撒(替换)、栅栏(移位)、维吉尼亚(多表替换)。
- 直觉目标:混淆结构、增加猜测难度;但易受频率分析。
### 2.2 文艺复兴时期15-18世纪
**维吉尼亚密码Vigenère Cipher**
@@ -87,6 +154,22 @@ permalink: /theory/cryptography/
- 时间2001年
- 意义取代DES的新一代加密标准
现代密码简述:
- 对称加密同一密钥加解密适合大量数据示例AES/DES/3DES
$$
C = E_k(P), \quad P = D_k(C)
$$
- 非对称加密公钥加密、私钥解密便于密钥分发与数字签名示例RSA/ECC
$$
c = m^{e} \bmod n, \quad m = c^{d} \bmod n
$$
- 密钥交换DiffieHellman 在不安全信道建立共享密钥。
- 数字签名:私钥签名、公钥验证,保障真实性与不可否认性。
### 2.5 关键历史时间线
```
@@ -99,206 +182,7 @@ permalink: /theory/cryptography/
2001年AES标准
```
## 3. 密码分类
### 3.1 古典密码
#### 3.1.1 替换密码Substitution Cipher
**原理**:将明文中的每个字符替换为另一个字符
**凯撒密码示例**
```
明文HELLO
密钥移位3
密文KHOOR
加密公式C = (P + K) mod 26
解密公式P = (C - K) mod 26
```
**单表替换密码**
- 特点:每个明文字符对应固定的密文字符
- 弱点:频率分析攻击
#### 3.1.2 移位密码Transposition Cipher
**原理**:重新排列明文字符的顺序
**栅栏密码示例**
```
明文CRYPTOGRAPHY
写入: 读取:
C R Y P C Y R H A R Y
T O G R T O G P P
A P H Y
密文CYRHARYTOGPP
```
#### 3.1.3 维吉尼亚密码
**原理**:使用关键词进行多表替换
**加密过程**
```
明文ATTACKATDAWN
密钥LEMON
密文LXFOPVEFRNHR
计算:
A(0) + L(11) = L(11)
T(19) + E(4) = X(23)
T(19) + M(12) = F(5)
...
```
#### 3.1.4 古典密码的局限性
- 易受频率分析攻击
- 密钥空间有限
- 缺乏严格的数学证明
- 无法抵抗现代计算攻击
### 3.2 现代密码
#### 3.2.1 对称加密Symmetric Cryptography
**定义**:加密和解密使用相同密钥的密码系统
**基本原理**
```
加密C = E(K, P)
解密P = D(K, C)
其中:
C - 密文
P - 明文
K - 密钥
E - 加密函数
D - 解密函数
```
**常见算法**
**AES高级加密标准**
- 密钥长度128/192/256位
- 分组大小128位
- 轮数10/12/14轮
- 结构SPN网络
**DES数据加密标准**
- 密钥长度56位实际64位
- 分组大小64位
- 轮数16轮
- 结构Feistel网络
**3DES三重DES**
- 原理三次DES加密
- 密钥长度168位
- 兼容DES但更安全
**对称加密优缺点**
**优点**
- 加密速度快
- 计算资源需求低
- 适合大量数据加密
**缺点**
- 密钥分发困难
- 密钥管理复杂
- 不支持数字签名
**应用场景**
- 文件加密
- 数据库加密
- 网络通信加密
- 磁盘加密
#### 3.2.2 非对称加密Asymmetric Cryptography
**公钥密码体系概念**
使用一对数学相关的密钥:
- **公钥Public Key**:公开分发,用于加密
- **私钥Private Key**:秘密保存,用于解密
**加密过程示意图**
```
发送方 接收方
| |
明文 + 接收方公钥 → 密文 → 密文 + 接收方私钥 → 明文
| |
加密 解密
```
**典型算法**
**RSA算法**
- 基于大数分解难题
- 密钥生成选择两个大质数p,q计算n=pqφ(n)=(p-1)(q-1)
- 公钥:(e, n)其中1<e<φ(n)且gcd(e,φ(n))=1
- 私钥(d, n)其中de⁻¹ mod φ(n)
**RSA加密示例**
```
假设:
p=61, q=53, n=3233, φ(n)=3120
选择e=17, 计算d=2753
公钥:(17, 3233)
私钥:(2753, 3233)
加密C = M¹⁷ mod 3233
解密M = C²⁷⁵³ mod 3233
```
**ECC椭圆曲线加密**
- 基于椭圆曲线离散对数问题
- 相同安全强度下密钥更短
- 计算效率更高
**ElGamal加密**
- 基于离散对数问题
- 可用于加密和数字签名
**数字签名应用**
```
签名过程:
1. 对消息计算哈希值 H(M)
2. 使用私钥加密哈希值 S = Sign(私钥, H(M))
3. 发送 (M, S)
验证过程:
1. 对消息计算哈希值 H(M)
2. 使用公钥解密签名 Verify(公钥, S) = H'(M)
3. 比较 H(M) == H'(M)
```
**密钥交换应用**
- Diffie-Hellman密钥交换
- 在不安全信道建立共享密钥
**与对称加密的比较分析**
| 特性 | 对称加密 | 非对称加密 |
|------|----------|------------|
| 密钥数量 | 1个 | 2个公钥+私钥 |
| 加密速度 | | |
| 密钥分发 | 困难 | 容易 |
| 数字签名 | 不支持 | 支持 |
| 适用场景 | 大量数据 | 小量数据密钥交换 |
**混合加密系统**
实际应用中常结合两种加密方式
```
1. 使用非对称加密交换对称密钥
2. 使用对称加密加密实际数据
3. 结合两种加密的优势
```
## 总结