Files
SiMengWebSite_Notes/docs/notes/theory/cryptography/README.md
祀梦 566b6cd385 feat(docs): 添加密码学基础文档和mermaid支持
新增密码学基础文档,包含古典加密算法和现代密码学介绍
添加mermaid图表支持以展示密码学概念
在导航栏新增技术理论分类
更新package.json添加mermaid依赖
2025-10-27 19:29:40 +08:00

309 lines
7.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
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→DB→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)其中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. 结合两种加密的优势
```
## 总结
密码学作为信息安全的基石经历了从简单替换到复杂数学算法的漫长发展历程现代密码学建立在严格的数学基础之上通过对称加密非对称加密等多种技术手段为数字世界提供了可靠的安全保障
理解密码学的基本原理和分类有助于我们更好地应用这些技术来保护信息安全同时也为深入学习更高级的密码学概念奠定基础
本篇笔记的所有代码开源于[https://gitea.simengweb.com/si-meng-spec/cryptography-example-code](https://gitea.simengweb.com/si-meng-spec/cryptography-example-code)