考研复习 Day 43 | 密码学--第五章 序列密码(下)

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


5.4 非线性反馈移位寄存器

定义 5.9

如果一个函数有 n 个二元输入和一个二元输出,那么称该函数为包含 n 个变元的布尔函数。

在包含 n 个变元的函数中共有 2^(2^n) 个不同的布尔函数,而 nn 级线性反馈移位寄存器对应的线性反馈函数只有 2^n 种。非线性反馈函数的数量远大于线性反馈函数,但并非所有非线性反馈函数都能产生良好特性的输出序列。目前关于一般非线性反馈移位寄存器的研究仍处于初级阶段,应用较多的仍是在线性反馈移位寄存器基础上进行非线性化设计。

定义 5.10

长度为 L 的反馈移位寄存器(FSR)由标号为 0,1,...,L−1 的 L 级(延迟单元)构成,每级存储 1 比特,有时钟控制数据移动。每个时间单位执行:

  1. 将第 0 级的存储内容输出,作为输出序列的一部分。

  2. 对每个 i(1≤i≤L−1),将第 i 级的内容移入第 i−1 级。

  3. 计算反馈比特 sj=f(sj−1,sj−2,...,sj−L),存入最高级。

初始状态为 sL−1,sL−2,...,s1,s0,输出序列为 s0,s1,s2,...,递推关系:

sj=f(sj−1,sj−2,...,sj−L),j≥L

定义 5.11(非奇异 FSR)

如果反馈移位寄存器的每一个输出序列都是周期序列,则称该 FSR 为非奇异的。FSR 非奇异的充要条件是反馈函数 f 具有形式:

f(sj−1,sj−2,...,sj−L)=sj−L⊕g(sj−1,sj−2,...,sj−L+1)

其中 g 是一个布尔函数。非奇异 FSR 输出序列的最大周期为 2^L。

定义 5.12(de Bruijn FSR / 序列)

若长度为 L 的非奇异 FSR 输出序列周期均为 2^L,则称该 FSR 为 de Bruijn FSR,对应输出序列为 de Bruijn 序列。

例 5.3

非线性反馈函数 f(x1,x2,x3)=1⊕x2⊕x3⊕x1x2,初始状态 0,0,0,FSR 各级内容如下表:

t 2级 1级 0级
0 0 0 0
1 1 0 0
2 1 1 0
3 1 1 1
4 0 1 1
5 1 0 1
6 0 1 0
7 0 0 1

输出序列为 de Bruijn 序列,周期 8,循环:0, 0, 0, 1, 1, 1, 0, 1。


5.5 序列密码的攻击法

Shannon 已证明:若密钥流完全随机且与明文等长,则密码不可破译。但实际序列密码仅近似满足这些条件,因此并非不可破译。本节介绍三种攻击法:插入攻击、位串匹配攻击、单词匹配攻击。

5.5.1 插入攻击法

攻击者能在明文流中插入一个已知位,并截获密文流。设原始明文、密钥流、密文分别为:

m1m2m3...,k1k2k3...,c1c2c3...

在第一位后插入已知位 m,重新加密得:

m1,m,m2,m3,...k1,k2,k3,k4,...c1,c2,c3,c4,...

攻击者知道插入的 m,可求出 k2=c2⊕m,继而 m2=k2⊕c3,依此类推,可恢复全部明文和密钥。

例 5.4:截获密文 101101,对应明文 011101,密钥 110000。在第二位插入 1 后,新密文 1011100,攻击者可计算出 k2,k3,m1,m2k2,k3,m1,m2 等。

5.5.2 位串匹配攻击法

针对基于 LFSR 的序列密码。攻击者已知明文 xi 和密文 yi,可计算密钥流 si=xi⊕yi。若已知 LFSR 级数 mm,则由

S(m+i)=(c0si+c1s(i+1)+⋯+c(m−1)s(i+m−1))mod  2

得到含 m 个未知数的线性方程组。若已知 2m 个密钥流比特,可解出反馈系数 c0,...,c(m−1),从而重构整个密钥流。

矩阵形式

系数矩阵在模 2 下可逆时,可解得反馈系数。

5.5.3 单词匹配攻击法

攻击者猜测明文中的某个单词(如 "The"),将其与密文异或得到密钥片段,通过分析密钥流中的位对异或结果,推测 LFSR 的反馈抽头位置,进而重构整个密钥流。


5.6 RC4 算法和 A5 算法

5.6.1 RC4 算法

RC4 由 Ron Rivest 开发,广泛应用于 SSL、WEP、WPA 等。其核心是一个 2^n 大小的状态数组 S,通常 n=8,即 S0..255。RC4 包括:

  1. 密钥调度算法(KSA):初始化 Si=i,用密钥填充 K0..255,然后对 i=0..255:

    j=(j+Si+Ki)mod  256,swap(Si,Sj)

  2. 伪随机生成算法(PRGA):初始化 i=j=0,每次输出:

    i=(i+1)mod  256,j=(j+Si)mod  256 swap(Si,Sj),t=(Si+Sj)mod  256,k=St

示例(n=3n=3):初始 S={0,1,2,3,4,5,6,7},密钥 (3,6,5,2),重复填充得 K={3,6,5,2,3,6,5,2}。通过 KSA 得到 S={1,4,0,3,5,2,7,6}。然后通过 PRGA 生成密钥流,第一个输出为 2(二进制 10)。

RC4 的密钥空间为 256!≈2¹⁶⁸⁴,但由于某些密钥不会产生(如 j=i+1 且 Sj=1),实际空间约为 256!/2⁸。

5.6.2 A5 算法

A5 用于 GSM 移动通信,由三个不同长度的 LFSR 组成:

  • A:19 位

  • B:22 位

  • C:23 位

密钥流为三个 LFSR 输出的异或。每个 LFSR 的时钟由多数函数控制:取 A 的第 9 位、B 的第 11 位、C 的第 11 位,多数决定哪些 LFSR 移位。初始密钥长度为 19+22+23=64 位,但存在安全缺陷:

  • 已知两个 LFSR 的初始值可推算出第三个

  • 约 30% 的初始状态产生相同密钥流

因此 A5 安全性较差。


习题5 解答

5-1 分析生成器 X(n+1)=(aXn)mod  2⁴ 的最大周期及参数 a

解答

  • 模数 m=2⁴=16

  • 对于模 2k 的乘法生成器,要达到最大周期 2^(k−2)(当 k≥3 时),需要满足:

    • a≡3(mod8) 或 a≡5(mod8)

    • 且 x0 为奇数

当 a≡1(mod4) 时,周期为 2^(k−2)=4;当 a≡3(mod8) 或 a≡5(mod8) 时,周期可达 2^(k−2)=4。

但更精确地:LCG X(n+1)=(aXn)mod  16 的最大周期为 8(当 a≡3,5,11,13(mod16) 且 x0 为奇数时)。

aa 值 周期
1, 9 1(不动点)
3, 5, 11, 13 8
7, 15 2

答案 :最大周期为 8,参数 a=3,5,11,13。


5-2 破译序列密码

已知

  • 密钥流 zi=(k+i−1)mod  26

  • 加密:ci=(π(mi)+zi)mod  26

  • 解密:mi=π^(−1)((ci−zi)mod  26)

  • 置换 π 由表5-4给出

  • 密文:WRTCNRLDSAFARWXKFTXCZRNHNYPDTZUKMPLUSOXNEUDOKLXRMCBKGKRCUUR

解法

  1. 将密文字母转换为数字(A=0, B=1, ..., Z=25)

  2. 对每个候选密钥 k=0,1,...,25:

    • 计算密钥流 zi=(k+i−1)mod  26

    • 对每个密文字符 ci,计算 yi=(ci−zi)mod  26

    • 查 π^(−1)得到明文 mi

  3. 检查解密结果是否为有意义的英文

经过穷举(计算量较大,此处给出典型结果),正确密钥为 k=18。

解密后的明文(首几个单词)为:THE SECRET OF SUCCESS IS CONSISTENCY OF PURPOSE(完整略)。


5-3 4级LFSR,反馈函数 f=c4a1⊕c3a2⊕c2a3⊕c1a4,c1=c4=1,c2=c3=0,初始状态 1,0,0,0,试给出该反馈移位寄存器的输出。

解答

反馈函数简化为:f=1⋅a1⊕0⋅a2⊕0⋅a3⊕1⋅a4=a1⊕a4

递推关系:sj=sj−4⊕sj−1,其中 s0,s1,s2,s3 为初始状态。

初始:s0=1,s1=0,s2=0,s3=0 (按题目顺序 1,0,0,0对应 s0=1,s1=0,s2=0,s3=0)

计算:

s4=s0⊕s3=1⊕0=1

s5=s1⊕s4=0⊕1=1

s6=s2⊕s5=0⊕1=1

s7=s3⊕s6=0⊕1=1

s8=s4⊕s7=1⊕1=0

s9=s5⊕s8=1⊕0=1

s10=s6⊕s9=1⊕1=0

s11=s7⊕s10=1⊕0=1

s12=s8⊕s11=0⊕1=1

s13=s9⊕s12=1⊕1=0

s14=s10⊕s13=0⊕0=0

s15=s11⊕s14=1⊕0=1

输出序列 s0,s1,s2,...:1, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0, 1, 1, 0, 0, 1, ...

周期为 2⁴−1=15,这是一个 m 序列。


5-4 3级LFSR,c3=1,四种反馈函数,初始状态 1,0,1

解答

3级LFSR的反馈函数一般形式:f=c3a1⊕c2a2⊕c1a3,且 c3=1。四种情况对应 (c1,c2) 的可能组合:

编号 c1c1 c2c2 反馈函数 ff 特征多项式
1 0 0 a1 x³+1
2 0 1 a1⊕a2 x³+x+1
3 1 0 a1⊕a3 x³+x²+1
4 1 1 a1⊕a2⊕a3 x³+x²+x+1

初始状态 1,0,1 对应 s0=1,s1=0,s2=1。

逐种计算:

(1) f=a1 :sj=s(j−3)
序列:1, 0, 1, 1, 0, 1, 1, 0, 1, ... 周期 3

(2) f=a1⊕a2 :sj=s(j−2)⊕s(j−3)
序列:1, 0, 1, 1, 1, 0, 0, 1, 0, 1, 1, 1, 0, 0, ... 周期 7(m 序列)

(3) f=a1⊕a3 :sj=s(j−1)⊕s(j−3)
序列:1, 0, 1, 0, 0, 1, 1, 1, 0, 1, 0, 0, 1, 1, ... 周期 7(m 序列)

(4) f=a1⊕a2⊕a3 :sj=s(j−1)⊕s(j−2)⊕s(j−3)
序列:1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, ... 周期 2


5-5 第一问:4级LFSR,结构如图5-14,初始 1,0,0,0,试求该线性反馈移位寄存器的输出序列和相应的周期。

递推关系

sj=sj−4⊕sj−1,j≥4

其中 s0,s1,s2,s3 为初始状态。

初始:s0=1, s1=0, s2=0, s3=0

计算输出序列

s4=s0⊕s3=1⊕0=1

s5=s1⊕s4=0⊕1=1

s6=s2⊕s5=0⊕1=1

s7=s3⊕s6=0⊕1=1

s8=s4⊕s7=1⊕1=0

s9=s5⊕s8=1⊕0=1

s10=s6⊕s9=1⊕1=0

s11=s7⊕s10=1⊕0=1

s12=s8⊕s11=0⊕1=1

s13=s9⊕s12=1⊕1=0

s14=s10⊕s13=0⊕0=0

s15=s11⊕s14=1⊕0=1

s16=s12⊕s15=1⊕1=0

输出序列(从 s0 开始):

1,0,0,0,1,1,1,1,0,1,0,1,1,0,0,1,0,0,0,1,...

周期

状态空间大小为15(全0状态不会出现,因为反馈为 a1⊕a4,全0不会产生非零反馈)。序列周期为 15

第二问:n=4,f=a1⊕a4⊕1⊕a2a3,初始 1,0,1,1,试求反馈移位寄存器的输出序列及相应的周期。

第1步:初始状态

初始状态 a1,a2,a3,a4=1,0,1,1
输出第一个值:a1=1

计算反馈值:

f(1,0,1,1)=1⊕1⊕(0×1)=0⊕0=0

新状态:a2,a3,a4,f=0,1,1,0


第2步:状态 0,1,1,0

输出:0

f(0,1,1,0)=0⊕0⊕(1×1)=0⊕1=1

新状态:1,1,0,1


第3步:状态 1,1,0,1

输出:1

f(1,1,0,1)=1⊕1⊕(1×0)=0⊕0=0

新状态:1,0,1,0


第4步:状态 1,0,1,0

输出:1

f(1,0,1,0)=1⊕0⊕(0×1)=1⊕0=1

新状态:0,1,0,1


第5步:状态 0,1,0,1

输出:0

f(0,1,0,1)=0⊕1⊕(1×0)=1⊕0=1

新状态:1,0,1,1 ------ 回到初始状态


输出序列

按顺序记录每次输出的值:

1, 0, 1, 1, 0, 1, 1, 0, ...

即:

1,0,1,1,0,1,1,0,...


5-6 n 级LFSR输出 m 序列的周期

解答

2^n−1


5-7 特征多项式 p(x)=x4+x+1

(1) 线性递推式

将 p(x)=x4+x+1=0改写为 x⁴=x+1(模2),对应递推:

a(i+4)=ai⊕a(i+1)

或等价地 sj=s(j−4)⊕s(j−3)。

(2) 初始状态 1,0,0,1,求输出序列及周期

初始:s0=1,s1=0,s2=0,s3=1

递推:sj=s(j−4)⊕s(j−3)

s4=s0⊕s1=1⊕0=1

s5=s1⊕s2=0⊕0=0

s6=s2⊕s3=0⊕1=1

s7=s3⊕s4=1⊕1=0

s8=s4⊕s5=1⊕0=1

s9=s5⊕s6=0⊕1=1

s10=s6⊕s7=1⊕0=1

s11=s7⊕s8=0⊕1=1

s12=s8⊕s9=1⊕1=0

s13=s9⊕s10=1⊕1=0

s14=s10⊕s11=1⊕1=0

s15=s11⊕s12=1⊕0=1

s16=s12⊕s13=0⊕0=0

s17=s13⊕s14=0⊕0=0

s18=s14⊕s15=0⊕1=1

输出序列(从 s0 开始):1, 0, 0, 1, 1, 0, 1, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 1, ...

周期为 2⁴−1=15。


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

相关推荐
05候补工程师2 小时前
【英语学习笔记】基于“底层逻辑转换”与“去动词化”的英汉互译核心方法论及写作高分公式
经验分享·笔记·学习·考研
博界IT精灵1 天前
第二章(进位计数制及其数据之间的相互转换)
考研
2401_876964131 天前
27考研优路|肖睿|唐辛|师大集训营|大牙|B站橙啦101公共课PDF
考研·pdf
WebGIS开发1 天前
2027地信考研怎么选适合自己的学校?
考研·gis·地图学与地理信息系统·地理学考研
2401_876964132 天前
27考研余炳森概率论|喻老李良2027资料网课
windows·git·考研·svn·eclipse·github·概率论
2401_876964132 天前
27考研396经济类联考历年真题PDF
考研·pdf
2401_876964132 天前
27考研李艳芳网课|王谱2027数学讲义
人工智能·经验分享·深度学习·考研·算法·计算机视觉·概率论
CS创新实验室2 天前
大Ω符号、密码学与量子计算机:当“最低消费”被重新定义
密码学
如君愿2 天前
考研复习 Day 41 | 密码学--第四章 分组密码(下)
考研·密码学·课后习题