Compare commits

...

2 Commits

Author SHA1 Message Date
祀梦
7e1131844f Merge branch 'main' of https://gitea.simengweb.com/si-meng-spec/SiMengWebSite_Notes 2025-10-27 19:29:43 +08:00
祀梦
566b6cd385 feat(docs): 添加密码学基础文档和mermaid支持
新增密码学基础文档,包含古典加密算法和现代密码学介绍
添加mermaid图表支持以展示密码学概念
在导航栏新增技术理论分类
更新package.json添加mermaid依赖
2025-10-27 19:29:40 +08:00
7 changed files with 1599 additions and 31 deletions

View File

@@ -22,6 +22,13 @@ export default defineUserConfig({
/* 博客文章页面链接前缀 */
article: '/article/',
/* 启用数学公式支持和Mermaid图表 */
markdown: {
math: {
type: 'katex',
},
mermaid: true
},
/**
* 编译缓存,加快编译速度
*/

View File

@@ -35,6 +35,15 @@ export default defineNavbarConfig([
},
],
},
{
text:"技术理论",
items:[
{
text: '密码学基础',
link: '/theory/cryptography/',
},
]
},
{
text: '运维',
items: [

View File

@@ -97,6 +97,18 @@ const solidity = defineNoteConfig({
}
]
})
const cryptography = defineNoteConfig({
dir: 'theory',
link: '/theory/cryptography/',
sidebar: [
{ text: "密码学基础", link: "/theory/cryptography/" },
{
text: "古典加密算法", prefix: "/theory", items: [
{ text: "替换密码", link: "/theory/cryptography/substitution-ciphers/" }
]
},
]
})
const blockchain = defineNoteConfig({
dir: 'ops',
link: '/ops/blockchain',
@@ -135,5 +147,5 @@ const linux = defineNoteConfig({
export default defineNotesConfig({
dir: 'notes',
link: '/',
notes: [LeetCode, english, cPlusPlus, solidity, blockchain, linux],
notes: [LeetCode, english, cPlusPlus, solidity, blockchain, linux, cryptography],
})

View File

@@ -0,0 +1,309 @@
---
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)

View File

@@ -0,0 +1,170 @@
---
title: 替换密码
createTime: 2025/10/27 10:47:42
permalink: /theory/cryptography/substitution-ciphers/
---
# 替换密码Substitution Ciphers
我们一起来系统梳理古典加密算法Classical Ciphers。这些算法虽然在现代已不再安全但它们是密码学发展的基石蕴含了替换、置换、密钥等核心思想非常适合理解密码学的基本原理。
替换密码的核心思想是“一对一”或“多对一”的字符映射:把明文中的每一个字母(或符号)按照事先约定好的规则,替换成另一个字母(或符号)。
这种映射可以是固定不变的(如凯撒密码的“统一移位”),也可以是依赖密钥动态变化的(如维吉尼亚密码的“周期移位”)。
由于密文保留了原始字母的出现频率,只是“换了一张皮”,所以替换密码在本质上没有改变字母的统计特性,这也为频率分析攻击留下了突破口。
替换操作可以手工完成,也可以通过查表、转盘、甚至机械电路实现,是后续更复杂多表替换与乘积密码的雏形。
## 一、凯撒密码Caesar Cipher
**工作原理**
凯撒密码是一种循环移位密码,将字母表视为一个环形结构。加密时每个字母向后移动固定位置 $k$,解密时向前移动相同位置。
**数学表示**
设字母 A-Z 对应数字 0-25
加密公式:
$$E(x) = (x + k) \mod 26$$
解密公式:
$$D(x) = (x - k) \mod 26$$
其中 $x$ 是明文字母编号,$k$ 是密钥0 ≤ k ≤ 25
**特点**
- 实现简单,易于理解
- 密钥空间仅 $26$ 种可能,安全性极低
- 易受频率分析攻击
- 主要具有教学价值
## 二、单表替换密码Simple Substitution Cipher
**工作原理**
单表替换密码是凯撒密码的泛化形式,它使用一个随机的字母替换表,而不是固定的移位。每个明文字母都被唯一地映射到一个密文字母,形成一对一的替换关系。
```mermaid
graph LR
A[明文字母] --> B{替换表}
B --> C[密文字母]
```
**数学表示**
设字母表 $\Sigma = \{A,B,C,...,Z\}$,替换函数 $f: \Sigma \rightarrow \Sigma$ 是一个双射(一一对应),则:
加密公式:
$$E(x) = f(x)$$
解密公式:
$$D(y) = f^{-1}(y)$$
其中 $f^{-1}$ 是 $f$ 的逆函数。
**密钥空间**
单表替换密码的密钥空间是所有可能的字母排列,大小为:
$$|K| = 26! \approx 4.03 \times 10^{26}$$
这个巨大的密钥空间使得暴力破解在计算上不可行。
**示例**
假设替换表为:
```
A→Q, B→W, C→E, D→R, E→T, F→Y, G→U, H→I, I→O, J→P,
K→A, L→S, M→D, N→F, O→G, P→H, Q→J, R→K, S→L, T→Z,
U→X, V→C, W→V, X→B, Y→N, Z→M
```
```mermaid
flowchart LR
A[明文: HELLO] --> B[替换加密]
B --> C[密文: ITSSG]
C --> D[逆替换解密]
D --> E[明文: HELLO]
```
**安全性分析**
虽然单表替换密码的密钥空间巨大,但它仍然易受**频率分析攻击**。因为:
1. **字母频率保留**高频字母如E、T、A在密文中仍然是高频
2. **单词模式保留**:常见单词模式(如"THE"、"ING")在密文中保持相同模式
3. **双字母频率**:常见字母对(如"TH"、"ER")的频率特征仍然存在
**攻击方法**
- 单字母频率分析
- 双字母频率分析
- 单词长度和模式分析
- 已知明文攻击
**特点**
- 密钥空间巨大($26!$),理论上难以暴力破解
- 仍然易受统计攻击
- 是密码学历史上重要的里程碑
- 为现代密码学提供了重要启示
## 三、维吉尼亚密码Vigenère Cipher
**工作原理**
维吉尼亚密码是一种多表替换密码,它使用一个关键词来决定每次替换的凯撒密码移位量。关键词的每个字母对应一个移位量,明文的每个字母根据关键词的循环使用进行替换。
```mermaid
graph LR
A[明文] --> B{关键词循环扩展}
B --> C[明文与关键词按位组合]
C --> D{多表替换}
D --> E[密文]
```
**数学表示**
设字母 A-Z 对应数字 0-25。
明文 $P = p_0 p_1 ... p_{n-1}$
关键词 $K = k_0 k_1 ... k_{m-1}$ (长度为 $m$)
加密公式:
$$E(p_i) = (p_i + k_{i \pmod m}) \mod 26$$
解密公式:
$$D(c_i) = (c_i - k_{i \pmod m}) \mod 26$$
其中 $p_i$ 是明文第 $i$ 个字母的数字表示,$k_{i \pmod m}$ 是关键词循环后对应第 $i$ 个字母的数字表示,$c_i$ 是密文第 $i$ 个字母的数字表示。
**示例**
明文:`ATTACKATDAWN`
关键词:`LEMON`
1. **关键词循环扩展**
将关键词 `LEMON` 循环扩展至与明文等长:`LEMONLEMONLE`
2. **明文与关键词按位组合(数字表示)**
将明文和扩展后的关键词转换为数字 (A=0, B=1, ..., Z=25)。
明文数字: `0 19 19 0 2 10 0 19 3 0 22 13`
关键词数字: `11 4 12 14 13 11 4 12 14 13 11 4`
3. **加密运算**
对每对明文数字 $p_i$ 和关键词数字 $k_{i \pmod m}$ 执行 $(p_i + k_{i \pmod m}) \mod 26$ 运算。
例如:
- 第一个字母:明文 A (0) + 关键词 L (11) = $(0 + 11) \mod 26 = 11 \rightarrow L$
- 第二个字母:明文 T (19) + 关键词 E (4) = $(19 + 4) \mod 26 = 23 \rightarrow X$
- 第三个字母:明文 T (19) + 关键词 M (12) = $(19 + 12) \mod 26 = 5 \rightarrow F$
...
最终密文:`LXFOPVEFRNHR`
**安全性分析**
维吉尼亚密码比单表替换密码更安全,因为它引入了**多表替换**,使得密文的字母频率分布趋于平坦,从而抵抗了简单的频率分析攻击。
然而,它并非绝对安全,主要弱点在于**关键词的周期性**
1. **Kasiski 测试**:通过分析密文中重复出现的字母组,可以推断出关键词的长度。
2. **频率分析(针对子密码)**:一旦关键词长度确定,密文可以被分成若干个凯撒密码,然后对每个子密码进行频率分析。
**特点**
- 多表替换,比单表替换密码更安全
- 引入了关键词的概念,增强了密钥的复杂性
- 易受Kasiski测试和频率分析的组合攻击
- 在历史上曾被认为是“牢不可破的密码”
## 附件:
具体的使用样例代码请参考:[https://gitea.simengweb.com/si-meng-spec/cryptography-example-code](https://gitea.simengweb.com/si-meng-spec/cryptography-example-code)

1116
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -25,6 +25,7 @@
"vuepress-theme-plume": "1.0.0-rc.164"
},
"dependencies": {
"@waline/client": "^3.6.0"
"@waline/client": "^3.6.0",
"mermaid": "^11.12.0"
}
}