考研复习 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 各级内容如下表:

t2级1级0级
0000
1100
2110
3111
4011
5101
6010
7001

输出序列为 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,即 S[0..255]。RC4 包括:

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

    j=(j+S[i]+K[i])mod  256,swap(S[i],S[j])
  2. 伪随机生成算法(PRGA):初始化 i=j=0,每次输出:

    i=(i+1)mod  256,j=(j+S[i])mod  256  swap(S[i],S[j]),t=(S[i]+S[j])mod  256,k=S[t]

示例(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 且 S[j]=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, 91(不动点)
3, 5, 11, 138
7, 152

答案:最大周期为 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特征多项式
100a1x³+1
201a1⊕a2​x³+x+1
310a1⊕a3​x³+x²+1
411a1⊕a2⊕a3x³+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。


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

内容概要:本文提出了一种基于非合作博弈理论的居民负荷分层调度模型,并结合双层鲸鱼优化算法(Two-level Whale Optimization Algorithm)进行高效求解,模型与算法均通过Matlab代码实现。研究针对电力系统中居民侧用电负荷的复杂调度问题,引入非合作博弈机制刻画各用户之间的利益竞争关系,实现负荷的分层优化分配;同时设计双层优化架构,上层优化资源配置,下层模拟用户自主决策行为,提升了模型的实用性与合理性。通过智能优化算法求解多层级、非凸非线性的博弈模型,有效提高了调度方案的收敛性与全局寻优能力,适用于现代智能电网中的需求侧管理与能源优化场景。; 适合人群:具备电力系统基础理论知识和Matlab编程能力,从事智能电网、能源优化调度、需求侧管理、博弈论应用等方向的科研人员、高校研究生及工程技术人员。; 使用场景及目标:①应用于居民区电力负荷的分层优化调度系统设计与仿真分析;②为非合作博弈在多主体能源系统建模中的应用提供方法论支持;③利用双层鲸鱼算法解决具有嵌套结构的复杂双层优化问题,提升求解效率与调度方案的可行性。; 阅读建议:建议读者结合提供的Matlab代码深入理解模型构建逻辑与算法实现流程,重点关注博弈模型的效用函数设计、纳什均衡求解思路以及双层优化结构的迭代机制,宜配合实际用电数据开展复现实验以验证模型有效性与鲁棒性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值