309 lines
7.3 KiB
Markdown
309 lines
7.3 KiB
Markdown
---
|
||
title: 密码学基础
|
||
createTime: 2025/10/27 10:38:57
|
||
permalink: /theory/cryptography/
|
||
---
|
||
|
||
# 密码学基础
|
||
|
||
## 1. 密码学的定义
|
||
|
||
### 1.1 基本概念
|
||
|
||
**密码学(Cryptography)** 是一门研究信息安全的学科,主要关注如何在不安全的环境中实现安全通信。其核心是通过数学方法对信息进行变换,使得只有授权方能够理解信息内容。
|
||
|
||
### 1.2 核心目标
|
||
|
||
密码学追求以下四个主要安全目标:
|
||
|
||
- **机密性(Confidentiality)**:确保信息只能被授权的人访问
|
||
- **完整性(Integrity)**:确保信息在传输过程中不被篡改
|
||
- **认证性(Authentication)**:确认通信双方的身份真实性
|
||
- **不可否认性(Non-repudiation)**:防止发送方事后否认发送过信息
|
||
|
||
### 1.3 重要作用
|
||
|
||
密码学在现代信息安全中扮演着至关重要的角色:
|
||
|
||
- 保护个人隐私和商业机密
|
||
- 确保金融交易的安全性
|
||
- 维护国家安全和军事通信
|
||
- 支撑互联网基础设施的安全运行
|
||
|
||
### 1.4 主要应用场景
|
||
|
||
- **网络安全**:HTTPS、VPN、SSL/TLS协议
|
||
- **数字身份认证**:数字证书、数字签名、双因素认证
|
||
- **区块链技术**:加密货币、智能合约、分布式账本
|
||
- **移动通信**:SIM卡加密、移动支付安全
|
||
- **物联网安全**:设备身份认证、数据传输加密
|
||
|
||
## 2. 密码学历史简述
|
||
|
||
### 2.1 古代密码学(公元前-15世纪)
|
||
|
||
**凯撒密码(Caesar Cipher)**
|
||
- 时间:公元前1世纪
|
||
- 原理:字母移位加密
|
||
- 示例:将字母向后移动3位,A→D,B→E
|
||
|
||
**斯巴达密码棒(Scytale)**
|
||
- 时间:公元前5世纪
|
||
- 原理:缠绕在特定直径木棒上的皮条
|
||
|
||
### 2.2 文艺复兴时期(15-18世纪)
|
||
|
||
**维吉尼亚密码(Vigenère Cipher)**
|
||
- 时间:16世纪
|
||
- 原理:多表替换密码
|
||
- 特点:比单表替换更安全
|
||
|
||
**博福特密码(Beaufort Cipher)**
|
||
- 时间:18世纪
|
||
- 原理:改进的维吉尼亚密码
|
||
|
||
### 2.3 近代密码学(19-20世纪中期)
|
||
|
||
**恩尼格玛密码机(Enigma)**
|
||
- 时间:二战时期
|
||
- 原理:机械转子密码机
|
||
- 重要性:推动了现代密码分析的发展
|
||
|
||
**香农的信息论**
|
||
- 时间:1949年
|
||
- 贡献:为密码学奠定了数学理论基础
|
||
|
||
### 2.4 现代密码学(1970年代至今)
|
||
|
||
**DES算法**
|
||
- 时间:1977年
|
||
- 意义:第一个公开的加密标准
|
||
|
||
**RSA算法**
|
||
- 时间:1977年
|
||
- 意义:第一个实用的公钥密码系统
|
||
|
||
**AES算法**
|
||
- 时间:2001年
|
||
- 意义:取代DES的新一代加密标准
|
||
|
||
### 2.5 关键历史时间线
|
||
|
||
```
|
||
公元前5世纪:斯巴达密码棒
|
||
公元前1世纪:凯撒密码
|
||
16世纪:维吉尼亚密码
|
||
1918年:一次一密密码本
|
||
1949年:香农信息论
|
||
1977年:DES和RSA算法
|
||
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. 结合两种加密的优势
|
||
```
|
||
|
||
## 总结
|
||
|
||
密码学作为信息安全的基石,经历了从简单替换到复杂数学算法的漫长发展历程。现代密码学建立在严格的数学基础之上,通过对称加密、非对称加密等多种技术手段,为数字世界提供了可靠的安全保障。
|
||
|
||
理解密码学的基本原理和分类,有助于我们更好地应用这些技术来保护信息安全,同时也为深入学习更高级的密码学概念奠定基础。
|
||
|
||
本篇笔记的所有代码开源于:[https://gitea.simengweb.com/si-meng-spec/cryptography-example-code](https://gitea.simengweb.com/si-meng-spec/cryptography-example-code) |