NCUT 密码学 – 习题与答案 2010
( 声 明:非 标 准 答 案,仅 供 参 考 )
一、古典密码 (1,2,4)
字母 A B C D E F G H I J K
L
数字 0 1 2 3 4 5 6 7 8 9 10 11
M
12
N
13
O
14
P
15
Q
16
R
17
S
18
V
W
U
T
X
19 20 21 22 23
Y
24
Z
25
1. 设仿射变换的加密是 E11,23(m)≡11m+23 (mod 26),对明文“THE NATIONAL SECURITY
AGENCY”加密,并使用解密变换 D11,23(c)≡11-1(c-23) (mod 26) 验证你的加密结果。
解:明文用数字表示:M=[19 7 4 13 0 19 8 14 13 0 11 18 4 2 20 17 8 19 24 0 6 4 13 2 24]
密文 C= E11,23(M)≡11*M+23 (mod 26)
=[24 22 15 10 23 24 7 21 10 23 14 13 15 19 9 2 7 24 1 23 11 15 10 19 1]
= YWPKXYHVKXONPTJCHYBXLPKTB
∵ 11*19 ≡ 1 mod 26 (说明:求模逆可采用第4章的“4.1.6 欧几里得算法”,或者直接穷举1~25)
∴ 解密变换为 D(c)≡19*(c-23)≡19c+5 (mod 26)
对密文 C 进行解密:
M’=D(C)≡19C+5 (mod 26)
=[19 7 4 13 0 19 8 14 13 0 11 18 4 2 20 17 8 19 24 0 6 4 13 2 24]
= THE NATIONAL SECURITY AGENCY
2. 设由仿射变换对一个明文加密得到的密文为 edsgickxhuklzveqzvkxwkzukvcuh,又已知明文
的前两个字符是“if”。对该密文解密。
解: 设解密变换为 m=D(c)≡a*c+b (mod 26)
由题目可知 密文 ed 解密后为 if,即有:
D(e)=i : 8≡4a+b (mod 26) D(d)=f : 5≡3a+b (mod 26)
由上述两式,可求得 a=3,b=22。
因此,解密变换为 m=D(c)≡3c+22 (mod 26)
密文用数字表示为:
c=[4 3 18 6 8 2 10 23 7 20 10 11 25 21 4 16 25 21 10 23 22 10 25 20 10 21 2 20 7]
则明文为 m=3*c+22 (mod 26)
=[8 5 24 14 20 2 0 13 17 4 0 3 19 7 8 18 19 7 0 13 10 0 19 4 0 7 2 4 17]
= ifyoucanreadthisthankateahcer
4. 设多表代换密码 Ci ≡ AMi + B (mod 26) 中,A 是 2×2 矩阵,B 是 0 矩阵,又知明文“dont”
被加密为“elni”,求矩阵 A。
解: dont = (3,14,13,19) => elni = (4,11,13,8)
设
A
a
b
c d
⎡
= ⎢
⎣
⎤
⎥
⎦
,
则有:
4
⎡
⎤
⎢
⎥
11
⎣
⎦
=
a
b
c d
⎡
⎢
⎣
3
14
⎤ ⎡
⎥ ⎢
⎦ ⎣
⎤
⎥
⎦
(mod 26)
,
13
⎡
⎤
⎢
⎥
8
⎣
⎦
=
a
b
c d
⎡
⎢
⎣
13
19
⎤ ⎡
⎥ ⎢
⎦ ⎣
⎤
⎥
⎦
(mod 26)
可求得
10 13
A ⎡
⎤
= ⎢
⎥
23
9
⎣
⎦
第 1 页
NCUT 密码学 – 习题与答案 2010
二、流密码 (1,3,4)
1. 3 级 线 性 反 馈 移 位 寄 存 器 在 c3=1 时 可 有 4 种 线 性 反 馈 函 数 , 设 其 初 始 状 态 为
(a1,a2,a3)=(1,0,1),求各线性反馈函数的输出序列及周期。
解:设反馈函数为 f(a1,a2,a3) = a1⊕c2a2⊕c1a3
当 c1=0,c2=0 时,f(a1,a2,a3) = a1,输出序列为 101101…,周期为 3。
当 c1=0,c2=1 时,f(a1,a2,a3) = a1⊕a2,输出序列如下 10111001011100…,周期为 7。
当 c1=1,c2=0 时,f(a1,a2,a3) = a1⊕a3,输出序列为 10100111010011…,周期为 7。
当 c1=1,c2=1 时,f(a1,a2,a3) = a1⊕a2⊕a3,输出序列为 10101010…,周期为 2。
3. 设 n=4,f(a1,a2,a3,a4)=a1⊕a4⊕1⊕a2a3,初始状态为(a1,a2,a3,a4)=(1,1,0,1),求此非线性
反馈移位寄存器的输出序列及周期。
解:列出该非线性反馈移位寄存器的状态列表和输出列表:
状态(a1,a2,a3,a4)
f(a1,a2,a3,a4)
输出
(1,1,0,1)
(1,0,1,1)
(0,1,1,1)
(1,1,1,1)
(1,1,1,0)
(1,1,0,1)
…
1
1
1
0
1
1
…
1
1
0
1
1
1
…
因此,输出序列为 11011 11011 …,周期为 5。
4. 密钥流由 m=2s 级的 LFSR 产生,前 m+2 个比特是(01)s+1,即 s+1 个 01,请问第 m+3 个
比特有无可能是 1,为什么?
解: 根据题目条件,可知初始状态 s0 为:
a−
,
m
1
(0,1,...,0,1)
注: 个01
a a
,
1
s
0
=
a
s
)
(
,
,
=
设该 LFSR 的输出序列满足如下递推关系:
+
c a
1
则第 m+1, m+2 个比特为:
c a
2
L
1
+ −
m k
+
m k
=
+
a
1
−
m
m
2
c a
m k
L
,
k
≥
1
a
m
1
+
=
c a
m
1
+
c a
m
2
1
−
+
c a
m
1
=
L
a
m
+
2
=
c a
m
1
1
+
+
c a
m
2
+
c a
m
2
=
L
s
∑
j
1
=
s
∑
j
1
=
c
2
j
1
−
=
0
c
2
j
=
1
而第 m+3 比特应为:
a
m
+
3
=
c a
1
m
+
2
+
c a
2
m
1
+
+
c a
3
m
+
c a
4
m
1
−
+
=
c
1
1
⋅ +
c
2
0
⋅ +
c
3
1
⋅ +
c
4
0
⋅ +
LL
1
=
即第 m+3 比特为 0,因此不可能为 1. M 的散列值相同。
j
+
L
c
m
+
c
m
a
1 4
−
+
c a
m
3
1
⋅ +
c
m
1
−
⋅
0
=
s
=∑
c
2
1
−
j
第 2 页
0
NCUT 密码学 – 习题与答案 2010
三、分组密码 (1,2,3,4)
1. (1) 设 M’是 M 的逐比特取补,证明在 DES 中,如果对明文分组和密文分组都逐比特取补,
那么得到的密文也是原密文的逐比特取补,即
如果 Y = DESK(X),那么 Y’=DESK’(X’)
提示:对任意两个长度相等的比特串 A 和 B,证明(A⊕B)’=A’⊕B。
证:
(i) 容易验证,在 DES 中所有的置换操作,包括初始置换 IP、逆初始置换 IP-1、选择扩展算
法 E、置换运算 P 以及置换选择 PC1、置换选择 PC2,都满足如下性质:
如果 N=PO(M),则 N’=PO(M’),其中 PO 是某种置换操作
即有 (PO(M))’= PO(M’)
(ii) 容易验证,密钥生成过程中的左循环移位 LS 满足如下性质:
如果 N=LS (M),那么 N’=LS(M’),
即有 (LS (M))’=LS(M’)
结合(1)可知,如果记子密钥为(K1,…,K16),K 为初始密钥,KG 为密钥生成算法,则有
如下性质:
如果 (K1,…,K16)=KG(K),那么 (K1',…,K16')=KG(K’)
(iii) 对于任意两个比特 a 和 b,有 (a⊕b)’= a⊕b⊕1=(a⊕1)⊕b=a’⊕b(= a⊕(b⊕1)=a⊕b’),
因此对任意两个长度相等的比特串 A 和 B,有(A⊕B)’=A’⊕B=A⊕B’成立。
(iv) DES 的轮变换为
L
=⎧⎪
i
⎨
R
=
⎪⎩
i
R
i
L
i
1
−
1
−
⊕
F R K
1,
−
i
(
,其中轮函数 F 可写为
)
i
F R K
,
(
)
=
P S E R
( (
(
)
⊕ 。 因此有如下推理:
K
))
'
(
1
−
1
−
1
−
'
i
1
−
'
i
)
⊕
,
Y DES X
Y DES X
)
'
(
(
')
=
⇒ =
K
K
L
R
F R K
L
R
)
(
(
,
'
'
⇔ =
⇒ =
⊕
i
i
i
i
i
i
1
1
−
−
(
(
)
L
L
F R K
F R K
(
) '
(
,
'
⊕
⇔
=
⊕
i
i
i
i
i
1
−
F R K
F R K
,
(
)
(
)
,
'
'
⇔
=
i
i
i
i
1
1
−
−
P S E R
P S E R
K
( (
)
(
)
)
( (
'
=
⇔
⊕
i
i
i
1
−
K
E R
K
E R
)
)
(
(
'
'
⇔
⊕ =
⊕
i
i
i
i
1
−
E R
K
E R
iii
(
(
)
(
(
)
⊕ =
根据 可知
i
i
1
−
K
E R
K
E R
(
(
)
'
'
⊕ =
⇔
⊕
i
i
i
i
1
−
E R
E R
(
(i)
)
(
'
'
⇔
=
由 知此式成立
i
i
))
))
(
(
⊕
⊕
K
K
))
'
)
'
i
)
1
−
)
1
−
=
i
1
−
1
−
1
−
1
−
'
F R K
'
i
,
)
1
−
'
)
根据
根据
(i)(ii)
(iii)
'
i
(
E R
(
i
1
−
'
))
⊕
K
i
(2) 对 DES 进行穷举搜索攻击时,需要在由 256 个密钥构成的密钥空间进行。能否根据(1)
的结论减少进行穷搜索攻击时所用的密钥空间。
解:(1) 根据取补的性质,密钥空间 K 可分成两部分 K1/2 和 K’1/2,即 K= K1/2∪K’1/2
对于任意一个 k∈K1/2,它的取补 k’∈K’1/2;对于任意一个 k∈K’1/2,它的取补 k’∈
K1/2。即,K1/2 和 K’1/2 是一一对应的;它们的空间大小都是 256/2=255。
(2) 选择明文攻击时,假设有 Ek0(x)=y,其中 x、y 分别为明文和密文,E 为 DES 加密算法,
k0 为真实的密钥。
第 3 页
NCUT 密码学 – 习题与答案 2010
穷举搜索密钥空间 K1/2,对于某个 k∈K1/2,假设
(i) Ek(x)=y1,如果 y1=y,则说明 k0=k 而且 k0∈K1/2。
(ii) Ek(x’)=y2,如果 y2=y’,则说明 k= k0’,即 k0= k’ 而且 k0∈K’1/2。
综上可知:对于选定的明文密文对(x,y),只需遍历 K1/2 中的所有密钥即可,此时密钥空间
大小少为 255。
2. 证明 DES 的解密变换是加密变换的逆。
证明:定义 T 是把 64 位数据左右两半交换位置的操作,即 T(L,R)=(R,L),则 T2(L,R)=(L,R),
即 T2=I,其中 I 为恒等变换。
定义 DES 中第 i 轮的主要运算为 fi,即
(
L
i
f L R
(
i
i
=
)
1
−
1
−
,
i
⊕
1
−
F R K R
i
),
(
1
−
,
i
i
)
1
−
则有,
即
2
if
I= 。
(
,
,
),
=
(
L
F R K R
f L R
)
(
(
2
⊕
i
i
i
i
i
i
1
1
1
1
−
−
−
−
F R K R
f L
)
,
),
(
⊕
=
i
i
i
i
1
1
−
−
(
F R K R
F R K
L
(
(
))
(
=
⊕
⊕
i
i
L R
)
(
=
i
i
1
−
,
1
−
,
),
1
−
1
−
1
−
1
−
1
−
,
i
i
i
i
i
)
)
1
−
i
DES 的加密为:
1
−
解密为:
DES
1
−
f
16
=
=
c DES m IP
=
(
T f
c
( )
⋅
1(
−
(
T f
(
⋅
⋅
15
(
T f
f
⋅
⋅
⋅
L
16
1
m
DES DES m
))
(
= ,由此可知 DES 的解密变换是加密变换
(
T f
⋅
⋅
L
1
IP c
( )
… (#)
… (*)
IP m
⋅
)
IP
)
⋅
)
)
⋅
⋅
)
1
−
(
)
⋅
⋅
2
把(*)式代入(#)式,可得
的逆。
3. 在 DES 的 ECB 模式中,如果在密文分组中有一个错误,解密后仅相应的明文分组受到影响。
然而在 CBC 模式中,将有错误传播。例如在图 3-11 中 C1 中的一个错误明显地将影响到 P1
和 P2 的结果。
(1) P2 后的分组是否受到影响?
(2) 设加密前的明文分组 P1 中有 1 比特的错误,问这一错误将在多少个密文分组中传播?
对接收者产生什么影响?
解: CBC 的加密: C0=IV, Ci=DESK[Pi⊕Ci-1], i≥2
解密: Pi=DESK
-1[Ci]⊕Ci-1 , i≥1
(1) 如果解密过程中 C1 有错误,由于
-1[C2]⊕C1,所以 P2 将受到影响;但
-1[Ci]⊕Ci-1,与 C1 无
P2=DESK
是当 i≥3 时,Pi=DESK
关,因此 Pi≥3 不会受到影响。
(2) 加密前 P1 有错误,则加密后 C1 也是错误的;
由于 Ci=DESK[Pi⊕Ci-1], i≥2,因此 Ci≥2 也都
是错误的,即 P1 中这一个比特的错误会在加
密过程中传递到每一个密文分组。
由加密和解密的方式可知,如果密文 Ci
在从发送者到接收者的传递过程中没有改
变(出错),那么密文解密后必然等于加密
时输入的明文。因此对于接收者来说,由于
加密前的明文分组 P1 中有 l 比特的错误,那
第 4 页
CBC 模式示意图
NCUT 密码学 – 习题与答案 2010
么解密后的 P1 跟加密前一样,同样有一个比特的错误,而对于 Ci≥2 能够解密得到无
错误的明文。
4. 在 8 比特 CFB 模式中,如果在密文字符中出现 1 比特的错误,问该错误能传播多远。
解: 该错误将传播到后面的 (64+8-1)/8 = 8
⎢
⎣
⎦ 个单元, 共 9 个单元解密得到错误的明文。
⎥
CFB 模式示意
第 5 页
NCUT 密码学 – 习题与答案 2010
四、公钥密码
1. 3. 用 Fermat 定理求 3201 mod 11 。
解:对于模运算,有结论 (a×b) mod n = [ (a mod n)×(b mod n)] mod n
由 Fermat 定理,可知 310≡1 mod 11,因此有 (310)k ≡1 mod 11
所以 3201 mod 11= [(310)20×3] mod 11 = [( (310)20 mod 11)×(3 mod 11)] mod 11 = 3。
Fermat 定理:若 p 是素数,a 是正整数且 gcd(a, p)=1,则 ap-1≡1 mod p。
若 gcd(a, p)=1,则 aϕ(p)≡1 mod p。
4. 用推广的 Euclid 算法求 67 mod 119 的逆元。
解: q g u v
~ 119 1 0
~ 67 0 1
1 52 1 -1
1 15 -1 2
3 7 4 -7
2 1 -9 16 ( 注: 1 = 119×(-9) + 67×16 )
所以 67-1 mod 119 = 16
5. 求 gcd(4655, 12075) 。
解:12075 = 2×4655 + 2765
4655 = 1×2765 + 1890
2765 = 1×1890 + 875
1890 = 2×875 + 140
875 = 6×140 + 35
140 = 4×35+0 所以 gcd(4655, 12075)=35。
6. 求解下列同余方程组
x
≡⎧
⎪ ≡⎨
x
⎪ ≡⎩
x
2mod3
1mod 5
1mod 7
。
解:根据中国剩余定理求解该同余方程组,
记 a1=2, a2=1, a3=1, m1=3, m2=5, m3=7, M=m1×m2×m3=105,
M1=M/m1=35, M1
M2=M/m2=21, M2
M3=M/m3=15, M3
-1 mod m1 = 35-1 mod 3 = 2,
-1 mod m2 = 21-1 mod 5 = 1,
-1 mod m3 = 15-1 mod 7 = 1
-1a2 + M3M3
-1a1 + M2M2
-1a3) mod M
所以方程组的解为 x≡(M1M1
≡(35×2×2+21×1×1+15×1×1) mod 105
≡176 mod 105≡71 mod 105
10. 设通信双方使用 RSA 加密体制,接收方的公开钥是(e,n)=(5,35),接收到的密文是 C=10,
求明文 M
第 6 页
NCUT 密码学 – 习题与答案 2010
解: n=35 -> p=5, q=7
ϕ(n)=(p-1)(q-1)=24
d≡e-1 mod ϕ(n)≡5-1 mod 24≡5 mod 24 .... (因为 5×5≡1 mod 24)
所以,明文 M ≡ Cd mod n ≡ 105 mod 35 ≡ 5
快速指数算法求模幂 105 mod 35:
5 = 4 + 1 = (101)2 bi=0, d <- d*d
bi - 1 0 1 bi=0, d <- d*d*底
d 1 10 30 5
12. 设 RSA 加密体制的公开钥是(e,n)=(77, 221)。
(1) 用重复平方法加密明文 160,得中间结果为:
k
160k mod 221
2
185
4
191
8
16
16
35
32
120
64
35
72
118
76
217
77
23
若敌手得到以上中间结果就很容易分解 n,问敌手如何分解 n?
(2) 求解密密钥 d。
解:(1) 由 16016 ≡16064 mod 221,可知 (16064 - 16016) mod 221 = 0
即 16016(16048 – 1) mod 221 = 0,从而有 16048 = 1 mod 221。
由 Euler 定理及定理 4-7,猜测:
ordn(160) | 48 且 48 | ϕ(n),即存在整数 k 满足ϕ(n)=48k
由 ϕ(n) 的定义可知, ϕ(n) 比 n 略小。
而当取 k=4 时,ϕ(n)=192 为<221 且与 221 最接近,因此猜测 ϕ(n)=192。
由ϕ(n)=(p-1)(q-1), n=pq,可知 p+q = n - ϕ(n) + 1 = 221 - 192 + 1 = 30
所以 p、q 为一元二次方程 X2 - 30X + 221 = 0 的两个根,求得为 13、17。
或: p-q = sqrt((p+q)2- 4n), 从而 p = ((p+q) + (p-q) )/2, q =((p+q) - (p-q) )/2
所以,可得 n 的分解为: n = 221 = 13×17
(2) 解密密钥 d 为:d≡e-1 mod ϕ(n) = 77-1 mod 192 = 5
(∵ 77×5 - 192×2 = 1 )
13. 在 ElGamal 加密体制中,设素数 p=71,本原根 g=7,
(1)如果接收方 B 的公开钥是 yB=3,发送方 A 选择的随机整数 k=2,求明文 M=30 所对应的密
文。
(2)如果 A 选择另一个随机整数 k,使得明文 M=30 加密后的密文是 C=(59, C2),求 C2。
解: (1) C1≡gk mod p = 72 mod 71 = 49, C2≡yB
所以密文为 C=(C1, C2)=(49, 57)。
(2)由 7k mod 71 = 59 ,穷举 k 可得 k=3 。
所以 C2 = (3k×30) mod 71 = (33×30) mod 71 = 29。
k M mod p = (32×30) mod 71= 57
18. 椭圆曲线 E11(1,6)表示 y2≡x3+x+6 mod 11,求其上的所有点。
第 7 页
NCUT 密码学 – 习题与答案 2010
解:
x
x3+x+6 mod 11
是否为 mod 11 的
平方剩余
y
0
6
1
8
No
No
2
5
yes
4, 7
3
3
yes
5, 6
4
8
No
5
4
yes
2, 9
6
8
7
4
8
9
9
7
No
yes
yes
No
10
4
yes
2, 9
3, 8
2, 9
所以,E11(1, 6)上点为 { O, (2, 4), (2, 7), (3, 5), (3, 6), (5, 2), (5, 9), (7,2), (7, 9), (8, 3), (8, 8), (10, 2), (10, 9) }
x2 ≡ c mod p
要确定 c 是否是一个模 p 的平方剩余,可以用 Euler 准则来判断,即
如果 p 是一个奇素数,则 c 是模 p 的平方剩余当且仅当 c(p-1)/2≡1 mod p.
当 p≡3 mod 4 时,如果 c 是一个模 p 的平方剩余,则±c(p+1)/2 mod p,
即 c(p+1)/2 和 p- c(p+1)/2,就是 c 的两个模 p 的平方根。
19. 已知点 G=(2, 7) 在椭圆曲线 E11(1,6)上,求 2G 和 3G。
解: a=1, b=6, p=11, y2≡x3+x+6 mod 11
∵ 2G = G + G,
λ=(3×22+1)/(2×7) mod 11=13/14 mod 11 = 2/3 mod 11 = 8 (∵ 3-1 mod 11 = 4)
x3=(82-2-2) mod 11=5, y3= [8(2-5)-7] mod 11=2
∴ 2G = (5, 2)
∵ 3G = 2G + G = (5, 2) + (2, 7),
λ=(7−2)/(2−5) mod 11=5/(-3) mod 11=5/8 mod 11=5*7 mod 11= 2 (∵ 8*7=1 mod 11)
x3=(22-5-2) mod 11 = (-3) mod 11 = 8
y3=[2(5-8)-2] mod 11 = (-8) mod 11 = 3
∴ 3G = (8, 3)
20. 利用椭圆曲线实现 ElGamal 密码体制,设椭圆曲线是 E11(1,6),生成元 G=(2,7),接收方 A
的秘密钥 nA=7。
(1) 求 A 的公开钥 PA。
(2) 发送方 B 欲发送消息 Pm=(10,9),选择随机数 k=3,求密文 Cm。
(3) 显示接收方 A 从密文 Cm 恢复消息 Pm 的过程。
解: (1) A 的公开钥 PA = nAG = 7G = (7, 2)
(2) C1=kG = 3G = (8, 3)
C2=Pm + kPA=(10,9) + 3(7, 2) = (10,9) + (3, 5) = (10, 2)
所以密文 Cm={C1, C2} = { (8,3), (10, 2) }
(3) 解密过程为
C2 - nAC1= (Pm + kPA) – nA (kG) = (10, 2) – 7(8,3) = (10, 9) = Pm
第 8 页