密码学学习记录(一)
密码学学习记录(一)
《图解密码技术》[1]学习记录
概述
密码学(Cryptography)是将可理解的明文通过特定算法转换为难以理解的密文的技术和科学。
密码学分类与应用
核心分类
- 对称密码:使用相同密钥进行加密和解密
- 公钥密码(非对称密码):使用密钥对(公钥和私钥)进行加密和解密
安全保障机制
| 机制 | 作用 | 保障内容 |
|---|---|---|
| 对称/公钥密码 | 加密解密 | 消息的机密性 |
| 单向散列值(哈希值) | 数据完整性检验 | 消息的完整性 |
| 数字签名 | 身份验证与完整性 | 消息完整性和身份认证 |
| 消息认证码(MAC) | 身份验证 | 发送者身份真实性 |
密码学四大基本原则
- 公开性原则:不要使用保密的密码算法(算法应当公开,安全性依赖于密钥)
- 强度原则:使用弱密码比不使用密码更危险(弱密码会给人虚假的安全感)
- 时效性原则:任何密码总有一天会被破解(技术发展和计算能力提升)
- 整体性原则:密码只是信息安全的一部分(需要综合安全策略)
经典密码算法
1. 恺撒密码(Caesar Cipher)
历史背景:最古老、最简单的替换密码之一,据传由古罗马皇帝恺撒使用。
加密原理:
- 加密:将明文中每个字母在字母表中向后移动固定位数
- 解密:将密文中每个字母向前移动相同位数
- 密钥:位移数量(通常为1-25)
示例:
明文:HELLO
密钥:3
密文:KHOOR
H → K (H+3)
E → H (E+3)
L → O (L+3)
L → O (L+3)
O → R (O+3)
安全性分析:
- 优点:简单易懂,易于实现
- 缺点:密钥空间极小(只有25种可能),易被暴力破解
2. 简单替换密码(Simple Substitution Cipher)
加密原理:
- 加密:根据替换表将明文中每个字符替换为对应的密文字符
- 解密:使用反向替换表进行逆向操作
- 密钥:完整的字符替换对照表
示例替换表:
明文字母:A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
密文字母:Z Y X W V U T S R Q P O N M L K J I H G F E D C B A
安全性分析:
- 优点:密钥空间较大(26! ≈ 4×10²⁶种可能)
- 缺点:保持了语言的统计特性,可通过频率分析破解
3. 恩尼格玛密码机(Enigma Machine)
历史背景:德国在二战期间使用的机械加密设备,具有重要的历史意义。
工作原理:
- 使用多个转子进行多重替换
- 每次加密后转子位置会改变,实现动态加密
- 通过反射器实现加密和解密使用相同设置
技术特点:
- 多层加密:通过多个转子实现复杂的替换模式
- 动态性:转子的旋转使得相同字母在不同位置产生不同密文
- 可逆性:相同设置可用于加密和解密
历史意义:
- 二战期间德军的主要通信加密工具
- 破解恩尼格玛密码对盟军胜利具有重要意义
- 推动了现代计算机和密码学的发展
对称密码概述
对称密码(Symmetric Cryptography)是使用相同密钥进行加密和解密的密码系统。其核心特点是加密方和解密方共享同一个密钥。
主要算法分类
- 流密码:比特序列运算、XOR运算、一次性密码本
- 分组密码:DES、三重DES、AES等
流密码基础
XOR运算(异或运算)
基本原理:
0 ⊕ 0 = 0
0 ⊕ 1 = 1
1 ⊕ 0 = 1
1 ⊕ 1 = 0
重要性质:
- 可逆性:A ⊕ B ⊕ B = A
- 交换律:A ⊕ B = B ⊕ A
- 结合律:(A ⊕ B) ⊕ C = A ⊕ (B ⊕ C)
加密解密过程:
加密:明文 ⊕ 密钥 = 密文
解密:密文 ⊕ 密钥 = 明文
比特序列XOR
将明文转换为二进制序列,与密钥序列进行逐位异或运算。
示例:
明文: 01001000 01100101 01101100 01101100 01101111 (Hello)
密钥: 11010110 10011001 01010101 11110000 10101010
密文: 10011110 11111100 00111001 10011100 11000101
一次性密码本(One-Time Pad)
核心概念:
- 随机性:密钥必须是真正的随机序列
- 一次性:每个密钥只能使用一次
- 等长性:密钥长度必须等于或大于明文长度
安全性分析:
- 理论优势:具有信息论意义上的完善保密性(Perfect Secrecy)
- 实践困难:密钥分发、存储和管理困难
- 应用场景:主要用于极高安全要求的通信(如军事、外交)
graph LR
A[明文] --> B["加法运算"]
C[随机密钥] --> B
B --> D[密文]
D --> E["减法运算"]
C --> E
E --> F[明文]
style C fill:#ffcccc
style B fill:#ccffcc
style E fill:#ccffcc
理论上,该加密算法在密码学上是无法破解的,因为任意解密结果都可能是目标明文,无法确定哪一个才是真实内容。然而,该算法如今已不再使用,主要原因在于其要求密钥长度至少与明文相等。例如,若要加密100MB的数据,就需要100MB的密钥。于是,安全挑战从“如何加密明文”转变为“如何安全保管和传输密钥”。如果能确保密钥本身不被泄露,则明文内容就是安全的——换言之,该算法将保密的核心难题转移到了密钥管理层面。
分组密码
DES(Data Encryption Standard)
基本信息:
- 分组长度:64位
- 密钥长度:56位(实际64位,其中8位用作奇偶校验)
- 轮数:16轮
- 结构:Feistel网络
Feistel网络结构:
graph TD
A[64位明文] --> B[初始置换IP]
B --> C[左32位 L₀]
B --> D[右32位 R₀]
C --> E[L₁ = R₀]
D --> F[轮函数f]
G[子密钥K₁] --> F
F --> H[L₀ ⊕ f]
H --> I[R₁]
E --> J[...]
I --> J
J --> K[L₁₆, R₁₆]
K --> L[交换]
L --> M[逆初始置换IP⁻¹]
M --> N[64位密文]
style F fill:#ffcccc
style G fill:#ccccff
轮函数详细步骤:
- 扩展置换(E):将32位数据扩展为48位
- 密钥加:与48位子密钥进行XOR运算
- S盒替换:通过8个S盒进行非线性替换
- 置换P:对32位结果进行置换
安全性问题:
- 密钥长度较短(56位),存在暴力破解风险
- 部分S盒设计存在争议
- 已被AES取代作为标准
三重DES(3DES)
设计目的:在保持与DES兼容的前提下提高安全性
加密过程(EDE模式):
加密:C = E_K₃(D_K₂(E_K₁(P)))
解密:P = D_K₁(E_K₂(D_K₃(C)))
其中:E表示加密,D表示解密,K₁、K₂、K₃为三个子密钥
密钥方案:
- 3DES-EEE:三个独立密钥(168位有效密钥长度)
- 3DES-EDE:两个独立密钥(112位有效密钥长度)
- 向下兼容:当K₁=K₂=K₃时,等同于单DES
AES(Advanced Encryption Standard)
标准化过程:
- 竞赛选拔:美国NIST于1997年发起AES竞赛
- 最终胜出:Rijndael算法(由比利时密码学家设计)
- 标准发布:2001年正式成为美国联邦标准
技术参数:
- 分组长度:128位
- 密钥长度:128位、192位、256位
- 轮数:10轮(AES-128)、12轮(AES-192)、14轮(AES-256)
核心操作:
graph TD
A[128位明文] --> B[初始轮密钥加]
B --> C[第1轮]
C --> D[字节替换 SubBytes]
D --> E[行移位 ShiftRows]
E --> F[列混合 MixColumns]
F --> G[轮密钥加 AddRoundKey]
G --> H[第2-9轮]
H --> I[重复上述4个操作]
I --> J[第10轮]
J --> K[字节替换 SubBytes]
K --> L[行移位 ShiftRows]
L --> M[轮密钥加 AddRoundKey]
M --> N[128位密文]
style D fill:#ffcccc
style E fill:#ccffcc
style F fill:#ccccff
style G fill:#ffffcc
AES vs DES 比较:
| 特性 | DES | AES |
|---|---|---|
| 分组长度 | 64位 | 128位 |
| 密钥长度 | 56位 | 128/192/256位 |
| 轮数 | 16轮 | 10/12/14轮 |
| 安全性 | 已不安全 | 目前安全 |
| 性能 | 较慢 | 较快 |
| 硬件实现 | 复杂 | 简洁 |
Rijndael算法特点
设计原则:
- 简洁性:算法结构清晰,易于理解和实现
- 高效性:在软件和硬件上都有良好的性能表现
- 安全性:抗差分分析和线性分析
- 灵活性:支持多种密钥和分组长度
创新之处:
- 使用字节为基本操作单位
- 采用代换-置换网络(SPN)结构
- 所有操作都基于有限域GF(2⁸)的数学理论
参考文献:
[1] 结城浩. 图解密码技术[M]. 周自恒,译. 第2版. 北京:人民邮电出版社, 2014.

浙公网安备 33010602011771号