docs(密码学): 添加基础概念与术语章节和现代密码简述
为初学者添加密码学核心概念解释,包括明文/密文、加密/解密、密钥类型等基础术语。同时补充现代密码学中对称加密、非对称加密和数字签名的简要说明,帮助建立基本认知框架。
This commit is contained in:
@@ -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
|
||||
$$
|
||||
|
||||
- 密钥交换:Diffie–Hellman 在不安全信道建立共享密钥。
|
||||
- 数字签名:私钥签名、公钥验证,保障真实性与不可否认性。
|
||||
|
||||
### 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),其中d≡e⁻¹ 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. 结合两种加密的优势
|
||||
```
|
||||
|
||||
## 总结
|
||||
|
||||
|
||||
Reference in New Issue
Block a user