Merge branch 'main' of https://gitea.simengweb.com/si-meng-spec/SiMengWebSite_Notes
This commit is contained in:
@@ -38,6 +38,68 @@ permalink: /theory/cryptography/
|
|||||||
- **移动通信**:SIM卡加密、移动支付安全
|
- **移动通信**: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. 密码学历史简述
|
||||||
|
|
||||||
### 2.1 古代密码学(公元前-15世纪)
|
### 2.1 古代密码学(公元前-15世纪)
|
||||||
@@ -51,6 +113,11 @@ permalink: /theory/cryptography/
|
|||||||
- 时间:公元前5世纪
|
- 时间:公元前5世纪
|
||||||
- 原理:缠绕在特定直径木棒上的皮条
|
- 原理:缠绕在特定直径木棒上的皮条
|
||||||
|
|
||||||
|
古典密码简述:
|
||||||
|
- 核心思路:替换或移位(重新排列)字符。
|
||||||
|
- 代表示例:凯撒(替换)、栅栏(移位)、维吉尼亚(多表替换)。
|
||||||
|
- 直觉目标:混淆结构、增加猜测难度;但易受频率分析。
|
||||||
|
|
||||||
### 2.2 文艺复兴时期(15-18世纪)
|
### 2.2 文艺复兴时期(15-18世纪)
|
||||||
|
|
||||||
**维吉尼亚密码(Vigenère Cipher)**
|
**维吉尼亚密码(Vigenère Cipher)**
|
||||||
@@ -87,6 +154,22 @@ permalink: /theory/cryptography/
|
|||||||
- 时间:2001年
|
- 时间:2001年
|
||||||
- 意义:取代DES的新一代加密标准
|
- 意义:取代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 关键历史时间线
|
### 2.5 关键历史时间线
|
||||||
|
|
||||||
```
|
```
|
||||||
@@ -99,206 +182,7 @@ permalink: /theory/cryptography/
|
|||||||
2001年:AES标准
|
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