Chapter1 密码学概述
1.1 安全服务
- 保密性服务:加密
- 认证鉴别服务:密钥,数字签名
- 访问控制服务:密钥,权限管理
- 完整性服务:加密,数字摘要
- 抗否认性服务:数字签名
1.2 基本攻击类型
- 唯密文攻击
- 已知明文攻击:攻击者知道一些明文密文对
- 选择明文攻击:攻击者可以选择明文密文对
- 针对密钥的攻击:主要是针对公钥密码系统
1.3 密码算法分类
对称密码机制:(DES,AES,SM4,RC4)
- 密钥:加密和解密密钥相同或相互推导出
- 特点:加密速度快,密钥管理复杂
公钥密码机制:(RSA,ECC,SM2,DH)
- 密钥:公钥和私钥不同且很难从公钥推导出私钥
- 特点:密钥管理简单,加密速度慢
密钥管理简单的原因:
只需要将公钥分发给需要加密通信的人,而私钥则仅由接收者持有,不需要在通信中共享私钥,可以避免对密钥进行传输和管理
1.4 古典密码算法
1.4.1 代替密码
- 移位密码
- 仿射密码
- 加密算法:y=Ea,b(x)=(ax+b)
- 解密算法:x=Da,b(y)=(a−1y−a−1b)
Vignere
密码- 将明文消息中的每个字母移动 ki 位, ki 为密钥,是长度为 m 的序列 k=(k0,k1,…,km−1)
- y_i = (x_i+k_{i%m}%26),密钥空间为 26m
- 存在周期性弱点。破译方法:重合指数攻击,通过重合指数找到密钥长度,获取移位密码
OTP
密码原理相似,是一种多表代替算法,密钥空间为 26n
1.4.2 换位密码
- 列换位密码
- 矩阵换位密码
- image-20230429230434345
1.5 密码学相关数学知识
1.5.1 Euclid算法
x
和 y
为不同时为 0 的整数,则 x
和 y
的最大公因子 (x,y)
是以 ax+by
表示的最小正整数:
计算 (100,23) 的过程:
100−4×23=8
23−2×8=7
8−1×7=1
7−7×1=0

乘法逆元:
−13×23
(*)23−1
3×100
(*)100−1
1.5.2 欧拉函数
对于正整数 n,与其互素的小于等于 n 的正整数的个数表示为 φ(n),有以下定理:
- 若正整数 m,n 满足 (m,n)=1,则有 φ(mn)=φ(m)φ(n);特别地,当p为素数时,φ(p)=p−1
- 正整数 n=pe11pe22…pemm 的欧拉函数 φ(n) 值为 φ(n)=(p1−1)pe1−11(p2−1)pe2−12…(pm−1)pem−1m
- 欧拉定理:对 n>1,如果 (x,n)=1,则有 xφ(n)≡1(mod;n)
应用:由于2φ(89)=1,21000;mod;89=(288)11∗232;mod;89=232;mod;89,可以采用快速指数算法计算答案为 64.
快速指数算法
计算 xe,设置三元组 (X,E,Y),其初始值为 (X,E,Y)=(x,e,1)
- 若 E 是奇数,则 Y=X∗Y,E=E−1
- 若 E 为偶数,则 X=X∗X,E=E/2
- 当 E=0 时,Y 的值即为 xe
image-20230429232000262
Chapter2 现代密码算法
2.1 对称密码算法
2.1.1 DES算法
DES
算法是一种对称密码算法,分组加密,包括三个步骤:
- 初始置换 IP
- 16 轮迭代的乘积变换
- 逆初始变换 IP−1

2.1.2 IDEA算法
分组长度为 64 位,分 4 子组进行操作,密钥长度为 128 位,使用异或、模 216 加、模 216+1 乘三个混合运算,在 16 位子分组上进行。

2.1.3 AES算法
128比特的明文分组被分成4×4的字节矩阵
字节替换SubBytes:非线性置换,独立作用于状态中的每一个字节
行移位运算ShiftRows:字节的循环移位运算,第1行至第4行字节分别向左移动0~3列
列混合运算MixColumns:由一个线性变换对状态的每一列进行变换
none02 03 01 01 01 02 03 01 01 01 02 03 03 01 01 02
轮密钥加AddRoundKey:与相应的密钥进行异或.

2.2 序列密码算法
- RC4:基于字节流
- LFSR:基于位流
序列密码算法的密钥流不能重复使用,防止重合指数攻击、插入攻击。
2.3 数字摘要算法
MD5
SHA
附加填充比特 → 附加长度 → 初始化缓冲区 → $64(416)次(MD5)/80(420)次(SHA)迭代\rightarrow$ 输出

