考研复习 Day 38 | 密码学--第三章 古典密码

注:以下内容参考《新编密码学》范九伦 张雪锋 侯红霞 编著

第3章 古典密码

3.1 古典密码体制

3.1.1 棋盘密码

棋盘密码由古希腊作家Polybius于公元前2世纪提出。它将26个英文字母置于5×5的棋盘方格中(I和J共占一格),每个字母对应一个两位数(行号+列号),从而实现加密。密钥空间大小为25!,但因密文与明文字母频率一致,易受频率分析攻击。

【表3-1 棋盘密码示例】

标号 1 2 3 4 5
1 q w e r t
2 y u i/j o p
3 a s d f g
4 h k l z x
5 c v b n m

【例3.1】 明文"Information Security"加密后得到密文序列:

23 54 34 24 14 55 31 15 23 24 54
32 13 51 22 14 23 15 21

解密过程使用相同棋盘反查即可。


3.1.2 移位密码

移位密码将英文字母与 Z26={0,1,...,25} 一一对应,加密时对每个字母向前移动固定位数 key。凯撒密码是 key=3 的特例。

定义3.1 移位密码体制

  • 明文空间 M=C=K=Z26

  • 加密:ekey(x)=(x+key)mod  26

  • 解密:dkey(y)=(y−key)mod  26

密钥空间大小为26(含 key=0 弱密钥),无法抵抗频率分析。

【表3-2 字母与数字对应表】

【例3.2】 key=7,明文"ENCRYPTION"
数字序列:04 13 02 17 24 15 19 08 14 13
加密后:11 20 09 24 05 22 00 15 21 20 → 密文"LUJYFWAPVU"


3.1.3 仿射密码

仿射密码是移位密码的推广,引入乘法运算。

定义3.2 仿射密码体制

  • M=C=Z₂₆

  • 密钥空间 K={(k1,k2)∈Z₂₆×Z₂₆:gcd⁡(k1,26)=1}

  • 加密:ekey(x)=(k1x+k2)mod  26

  • 解密:dkey(y)=k1−1(y−k2)mod  26

当 k1=1 时退化为移位密码。与26互素的 k1 有12个,密钥空间大小为 12×26=312。

【例3.3】 密钥 k=(11,3),已知 11−1mod  26=19。
明文数字13加密:y=(11×13+3)mod  26=16
解密:x=19×(16−3)mod  26=13

常用乘法逆元(模26):

  • 1^(−1)=1,  3^(−1)=9,  5^(−1)=21,  7^(−1)=15

  • 11^(−1)=19,  17^(−1)=23,  25^(−1)=25

仿射密码可被已知明文攻击或频率分析破解。例如,若确定"e"(4)加密为"c"(2),"t"(19)加密为"f"(5),可列方程组解得 k1=21,k2=22。


3.1.4 代换密码

代换密码是26个英文字母上的一般置换。

定义3.3 代换密码体制

  • M=C=Z₂₆

  • KK 为所有置换的集合

  • 加密:eπ(x)=π(x)

  • 解密:dπ(y)=π^(−1)(y)

密钥空间大小为 26!,远大于仿射密码,但明密文字母一一对应,仍无法抵抗频率分析。

【例3.4】 给定置换 π(见表3-3),明文"ENCRYPTION"加密为"tfekhnzogf"。解密需先构造逆置换 π^(−1)(见表3-4)。


3.1.5 维吉尼亚密码

维吉尼亚密码是一种多表代换密码,使用一个长度为 mm 的密钥字,对明文分组逐字母进行移位加密。

定义3.4 维吉尼亚密码体制

  • m 为正整数,M=C=K=(Z26)m

  • 加密:ek(x1,...,xm)=(x1+k1,...,xm+km)mod  26

  • 解密:dk(y1,...,ym)=(y1−k1,...,ym−km)mod  26

密钥空间大小为 26m,相同明文字符在不同位置可能映射为不同密文字符,频率分析难度增加。但仍可通过Kasiski测试 和**重合指数(IC)**破解。单表代换的IC约0.066,均匀随机文本约0.038,多表代换的IC介于两者之间。


3.1.6 置换密码

置换密码不改变字母本身,只改变字母位置,体现分组加密思想。

定义3.5 置换密码体制

  • m≥2,M=C=(Z26)m

  • KK 为 {1,...,m}上所有置换的集合

  • 加密:eπ(x1,...,xm)=(xπ(1),...,xπ(m))

  • 解密:dπ(y1,...,ym)=(yπ−1(1),...,yπ−1(m))

密钥空间大小为 m!,对频率分析有一定抵抗能力,但易受已知明文攻击。

【例3.6】 m=4,π=(2,4,1,3),明文"Information security is important"
按4分组后置换得到密文:"Noifmtraosincruetiiyipsmraotnt"

解密需使用逆置换 π−1=(3,1,4,2)。


3.1.7 Hill密码

Hill密码将分组后的明文通过线性变换加密,密钥是一个 m×m 可逆矩阵。

定义3.6 Hill密码体制

  • m≥2,M=C=(Z₂₆)^m

  • K 为 Z₂₆ 上所有 m×m 可逆矩阵的集合

  • 加密:eA(x)=Ax mod  26

  • 解密:dA(y)=A^(−1)y mod  26

【例3.7】 m=4,密钥矩阵 A 及逆矩阵 A^(−1) 给出,明文"Hill"加密为"Jiiy"。

Hill密码能较好抵抗频率分析,但容易通过已知明文攻击破解。


3.2 密码分析技术

古典密码的破译大量依赖英文字母的统计规律。

  • E: 0.127(最高)

  • A, H, I, N, O, R, S, T: 0.06--0.09

  • D, L: 约0.04

  • B, C, F, G, M, P, U, W, Y: 0.015--0.023

  • J, K, Q, V, X, Z: <0.01

常见字母组合:TH, HE, IN, RE, DE, ST, EN, AT, OR, IS, ET, IT, AR, TE, HI, OF;常见三字母组合:THE, ING, ERE, ENT, FOR。

仿射密码唯密文攻击示例
截获密文:

FMXVEDKAPHFERBNDKXRRSREFMORUDSKDVSHVUFEDKAPRKDLYEVLRHHRH

统计密文字母频率,排序为 R, D, E, H, K, S, F, V。假设R→e,尝试不同配对,最终试出R→e、K→t时解得 k1=3,k2=5(合法)。解密后得到明文:"Algorithms are quite general definitions of arithmetic processes"。

更复杂的代换密码破译示例(涉及字母组合推断与逐步填充,最终恢复完整英语句子)。


3.3 密码体制安全性的评估原则

Shannon提出,一个好密码应具有:

  • 混淆性(Confusion):隐藏明文与密文、密钥与密文之间的关系,防止密钥推断。

  • 扩散性(Diffusion):将明文的统计结构扩散到密文的较长统计结构中,使每比特密文受多比特明文影响。

安全密码系统还应满足:

  1. 实际不可破译(不一定理论不可破译)。

  2. 安全性仅依赖于密钥,不依赖于算法保密(Kerckhoffs原则)。

  3. 加解密算法适用于所有密钥。

安全性衡量准则

  • 计算安全性:当前现实条件下,破解所需的计算能力与时间不可行。

  • 可证明安全性:破解难度等价于解决某个公认的数学难题。

  • 无条件安全性:即使无限计算能力也无法破解(一次一密是典型例子,但不可实用)。

除一次一密外,不存在绝对安全的密码体制。实际应用中,计算安全性是可接受的。


习题3

3-1 已知仿射密码的密钥为 (11, 3),应用该密钥对明文消息"Cryptography and network security"进行加密,试给出相应的密文消息。

解答:

建立字母与 Z₂₆ 的对应:A=0, B=1, ..., Z=25。

密钥 k=(11,3),加密函数 e(x)=(11x+3)mod  26。

去掉空格,将明文转换为数字并逐字母加密:

明文字母 数字x 11x+3 mod26 密文字母
C(2) 2 25 25 Z
r(17) 17 190 8 I
y(24) 24 267 7 H
p(15) 15 168 12 M
t(19) 19 212 4 E
o(14) 14 157 1 B
g(6) 6 69 17 R
r(17) 17 190 8 I
a(0) 0 3 3 D
p(15) 15 168 12 M
h(7) 7 80 2 C
y(24) 24 267 7 H
a(0) 0 3 3 D
n(13) 13 146 16 Q
d(3) 3 36 10 K
n(13) 13 146 16 Q
e(4) 4 47 21 V
t(19) 19 212 4 E
w(22) 22 245 11 L
o(14) 14 157 1 B
r(17) 17 190 8 I
k(10) 10 113 9 J
s(18) 18 201 19 T
e(4) 4 47 21 V
c(2) 2 25 25 Z
u(20) 20 223 15 P
r(17) 17 190 8 I
i(8) 8 91 13 N
t(19) 19 212 4 E
y(24) 24 267 7 H

整理得密文(空格位置与原文对应):

ZIHM EBRIDMCH D QKQV ELBIJ TVZPINEH

(或连续字符串:ZIHMEBRIDMCHDQKQVELBIJTVZPINEH)

3-2 在一个密码体制中,如果对应一个密钥 k 的加密函数 e 和解密函数 d 相同,则称 k 为对合密钥。试找出定义在 Z₂₆ 上的移位密码体制中所有对合密钥。

解答:

移位密码:ek(x)=x+k mod  26,dk(y)=y−k mod  26。

对合条件:ek=dk,即对任意 x,x+k≡x−k(mod26)。

化简得 2k≡0(mod26),即 26∣2k,13∣k。

在 Z26 中,满足条件的 k 为 0 和 13。

答案:k=0 和 k=13。

3-3 对于 n=6 和 n=9,分别给出在 Zn 上的 2×2 大小的所有可逆矩阵。

解答:

矩阵 A=[ab ;cd] 在 Zn 上可逆当且仅当 det⁡(A)=ad−bc 与 n 互素。

(1) n=6

总共有 6⁴=1296 种组合,逐一筛选。常用结论:GL(2,Z₆) 的阶为:

对于 n=6:

∣GL(2,Z6)∣=864

故有864个可逆矩阵。

(2) n=9

∣GL(2,Z9)∣=3888

故有3888个可逆矩阵。

(完整枚举过繁,此处只给出数量。)

3-4 计算以下定义在 Z₂₆ 上的矩阵的逆矩阵:

(1)

解答:

行列式:det⁡=11×7−8×3=77−24=53≡53−52=1(mod26)。

逆矩阵公式:A^(−1)=A*/|A|mod  26。

所以:

A^(−1)=[7 18 23 11]

验证:11×7+8×23=77+184=261≡1,11×18+8×11=198+88=286≡0,正确。

(2)

解答:

计算行列式(模26):
按第一行展开:
det⁡=10×(14×11−21×9)−5×(3×11−21×8)+12×(3×9−14×8)
=10×(154−189)−5×(33−168)+12×(27−112)=
=10×(−35)−5×(−135)+12×(−85)
模26:−35≡17,−135≡−135+130=−5≡21,−85≡−85+104=19
=10×17−5×21+12×19=170−105+228=293
293mod  26=293−260=33≡7(mod26)

求 7−1mod  26,7×15=105≡1,故逆元为15。

然后计算伴随矩阵(模26),再乘以15。计算过程较繁琐,结果如下:

B−1=[17 5 7; 9 4 21 ;1 14 1](经验证正确)

3-5 设置换密码体制中,m=6,给定的置换 π 如表3-9所示。试给出置换 π 的逆置换,并应用置换 π 对以下明文消息进行加密:"A model for network security"。

解答:

给定:π(1)=3,π(2)=5,π(3)=1,π(4)=6,π(5)=4,π(6)=2。

逆置换:π−1(1)=3,π−1(2)=6,π−1(3)=1,π−1(4)=5,π−1(5)=2,π−1(6)=4。

明文:"A model for network security"
去除空格并小写:amodelfornetworksecurity
长度26,补4个空格凑成30(6的倍数)。

分组(6个字符一组):
1: amodel
2: fornet
3: works
4: ecure
5: ty␣␣␣␣

加密:对每组应用 π,即新位置 = 原位置 π(新位置)?注意定义 e(x1..xm)=(xπ(1),...,xπ(m)),即新组第1位取原组第3位,新第2位取原第5位,新第3位取原第1位,新第4位取原第6位,新第5位取原第4位,新第6位取原第2位。

分组1: a(1) m(2) o(3) d(4) e(5) l(6) → 新组: o(3) e(5) a(1) l(6) d(4) m(2) → oealdm

分组2: f(1) o(2) r(3) n(4) e(5) t(6) → r(3) e(5) f(1) t(6) n(4) o(2) → reftno

分组3: w(1) o(2) r(3) k(4) s(5) ␣(6) → r(3) s(5) w(1) ␣(6) k(4) o(2) → rsw␣ko

分组4: e(1) c(2) u(3) r(4) e(5) ␣(6) → u(3) e(5) e(1) ␣(6) r(4) c(2) → uee␣rc

分组5: t(1) y(2) ␣(3) ␣(4) ␣(5) ␣(6) → ␣(3) ␣(5) t(1) ␣(6) ␣(4) y(2) → ␣␣t␣␣y

密文:oealdm reftno rsw ko uee rc t y (或连续字符串)

3-6 下面给出一种特殊的置换密码体制。设 m,n 为正整数,将明文消息写成一个 m×n 的矩阵形式,然后依次取矩阵的各列构成相应的密文消息。例如,设m=4,n=3,明文消息为

Cryptography

相应的矩阵为:

cryp

togr

aphy

则得到相应的密文消息为

Ctaropyghpry
(1) 当已知 m 和 n 时,试给出Bob的解密过程。
(2) 试通过解密给出以下密文相应的明文消息Myanmaruyiotentcorahroywdsoyecourrgerdenog

(1) 解密过程:将密文按 n 列写入m×n矩阵(按行填充),然后按列读出。

(2) 密文:Myanmaruyiotentcorahroywdsoyecourrgerdenogw
按列写入矩阵,按行读出,得明文(不一定正确 ):
"Myanmar you riot encounter a horrow day, so your courage end now."

3-7 试在 Z₂₆ 上对代换密码和置换密码的安全性进行分析。

代换密码

  • 优点:密钥空间大(26!)。

  • 缺点:明密文字母一一对应,保留单字母频率分布,易受频率分析攻击。

  • 安全性:弱。

置换密码

  • 优点:不改变字母本身,但打乱位置,可破坏字母组合频率。

  • 缺点:仍保留单字母频率,且容易通过已知明文攻击恢复置换。

  • 安全性:较弱,但比简单代换略强。

两者结合(先代换再置换)可提高安全性。

3-8 设多表代换密码 Ci=AMi+B(mod26),其中 A 是 2×2 矩阵,B 是零矩阵。已知明文"dont"被加密为"elnv",求矩阵 A。

**3-8 设多表代换密码C=AMi+B(mod26)中,A是2X2矩阵,B是0矩阵。已知明

文"dont"被加密为"elnv",求矩阵A。**

解答:
1.建立字母与数字的对应

"dont" → (3,14,13,19),"elnv" → (4,11,13,21)

将明文分成两个列向量(每组2个字母):

对应密文:

设:

2. 列方程组

{3a+14b≡4(mod26) (1) 3c+14d≡11(mod26) (2)

{13a+19b≡13(mod26) (3) 13c+19d≡21(mod26) (4)

求出:a=10 b=13 c=9 d=10

3-9 设由仿射变换对一个明文加密得到的密文是"edsgickxhuql",又已知明文的前两个字符是"if"(第二个字符未知)。请对以上密文进行解密。

解答:

1. 建立字母与数字的对应关系

A=0, B=1, ..., Z=25。

密文:e d s g i c k x h u q l
数字:4 3 18 6 8 2 10 23 7 20 16 11

明文前两个字符:i f → i=8, f=5


2. 假设加密方式为仿射密码

仿射密码加密公式:

c=(k₁×m+k₂)mod  26

其中 gcd⁡(k1,26)=1。

已知:

  • 明文字母 i(8) → 密文字母 e(4)

  • 明文字母 f(5) → 密文字母 d(3)

列出方程组:

8k₁+k₂≡4(mod26) (1) 5k₁+k₂≡3(mod26) (2)


3. 解方程组

(1) − (2):

(8k₁−5k₁)+(k₂−k₂)≡4−3(mod26) 3k₁≡1(mod26)

求 3−1mod  26:
3×9=27≡1(mod26),所以 3−1≡93−1≡9。

于是:

k₁≡1×9=9(mod26)

代入 (2):

5×9+k₂≡45+k₂≡3(mod26)

45mod  26=19,所以:

19+k₂≡3(mod26) k₂≡3−19=−16≡10(mod26)

因此密钥为:

k₁=9,k₂=10

验证 gcd⁡(9,26)=1,合法。


4. 解密变换

解密公式:

m=k₁−1×(c−k₂)mod  26

求 9−1mod  26:
9×3=27≡1,所以 9−1≡3。

解密函数:

m=3×(c−10)mod  26


5. 解密密文
密文字母 c c−10 ×3 mod26 明文字母
e(4) 4 -6 ≡ 20 60 8 i
d(3) 3 -7 ≡ 19 57 5 f
s(18) 18 8 24 24 y
g(6) 6 -4 ≡ 22 66 14 o
i(8) 8 -2 ≡ 24 72 20 u
c(2) 2 -8 ≡ 18 54 2 c
k(10) 10 0 0 0 a
x(23) 23 13 39 13 n
h(7) 7 -3 ≡ 23 69 17 r
u(20) 20 10 30 4 e
q(16) 16 6 18 18 s
l(11) 11 1 3 3 d

6. 解密结果

明文:if you can read

3-10 若仿射变换的加密为 c=7m+21(mod26),则相应的解密变换是什么?

解答:
k1=7,7^(−1)mod  26=15(因 7×15=105≡1)。

解密公式:m=k1^(−1)(c−k2)mod  26=15(c−21)mod  26。

化简:m=15c−315mod  26,315mod  26=315−312=3,所以 m=15c−3mod  26。

即:

m=15c+23(mod26)

(因为 −3≡23)

解密变换:m=(15c+23)mod  26


注:以上内容和习题解答的理解和计算,如果有任何错误,希望各位读者和大佬指出改正,非常感谢!!!

相关推荐
蒟蒻的贤1 天前
编译原理里的冲突到底是什么?
考研·算法
荒原之梦网1 天前
在不确定的命题环境中,如何建立稳定的考研数学备考体系
考研·考研数学·荒原之梦考研数学
05候补工程师1 天前
【线性代数】硬核复习笔记:核心定理推导、矩阵变换本质与自创高频题解
经验分享·笔记·线性代数·考研·矩阵
如君愿1 天前
考研复习 Day 37 | 密码学--第一章 绪论、第二章 相关的基础知识
考研·密码学
别或许1 天前
12、高数----一元函数积分学的应用(3)物理应用与经济应用
考研
lularible1 天前
HSM技术精讲(1.4):当信道不再可信——密码学的诞生
安全·开源·密码学·嵌入式
其实防守也摸鱼2 天前
ctfshow--Crypto(funnyrsa1-密码2)解题步骤
python·安全·web安全·网络安全·密码学·web·工具
05候补工程师2 天前
【考研线代笔记】相似对角化与实对称矩阵:判定法则、计算技巧与物理本质
笔记·线性代数·考研·矩阵
05候补工程师2 天前
【线性代数】核心考点:二次型、矩阵三大关系综合与正定矩阵判别法
笔记·线性代数·考研·算法·矩阵