基于LFSR的流密码的代数攻击

目录

前言

(1)布尔多项式环

(2)整环

(3)非线性多项式

一. 线性反馈移位寄存器

1.1 介绍

1.2 举例

二.流密码

2.1 介绍

2.2 基于LFSR的流密码

三. 非线性过滤函数

总结


前言

(1)布尔多项式环

设R是有单位元的环,若\forall x\in R,都有x^2=x,也就是R中的每一个元都是幂等元,则称R为布尔多项式环。其中多项式强调每一个环元素都是一个多项式。

(2)整环

整环满足封闭性,拥有单位元,满足交换性,不一定有逆元。

(3)非线性多项式

线性多项式指的就是一次多项式。非线性多项式则代表多项式的次数大于1。

因为布尔多项式环不是一个整环,所以可以利用此性质来降低非线性多项式的次数。由此可以用来设计密码学的攻击思想。

一. 线性反馈移位寄存器

1.1 介绍

线性反馈移位寄存器( Linear Feedback Shift Register, LFSR)一般是结合寄存器异或门用来生成二进制伪随机序列。它可以根据前一状态的移位寄存器输出,将该输出再用作输入再进行异或运算,循环往复。但不是所有移位寄存器都需要进行异或运算,根据移位寄存器的给定位进行异或操作后会产生一个结果,再将产生的结果作为输入放到最左边的移位寄存器中作为该寄存器的状态,相应的每个移位寄存器的状态都往右移位一格,实现寄存器中数据状态的整体位移,通常每移位一次将更新线性反馈移位寄存器的全部状态,可看如下图:

LFSE 的应用也领域非常广泛,一般用作生成伪随机序列用作加扰序列或者扩频码进行信息序列的伪随机化,有时还会用做为噪声序列。

1.2 举例

LFSR: Linear Feedback Shift Register 线性反馈移位寄存器。以一个12比特的线性反馈移位寄存器为例子,初始状态如下:

下一个clock,出去了一个数,则需要左边再进一个数,依据:s_0^,=s_4+s_6+s_8+s_{11}=0, s^,_1=s_0, s_2^,=s_1,\ldots,s_1^,=s_{10} 

可得如下:

反馈函数的通式为:

f(x)=c_0x^{12}+c_1x^{11}+\ldots+c_{11}x+1

在上图中反馈函数为:

f(x)=x^{12}+x^9+x^7+x^5+1

补充本原多项式:

如果多项式的系数满足:

gcd(a_0,a_1,\cdots,a_n)=1

也就是系数的最大公约数为1,则称该多项式为本原多项式。

将LFSR的长度表示为L,当LFSR的输出序列的周期为2^L-1时,反馈函数f(x)称为本原多项式。可以看到这是L长线性反馈移位寄存器所能输出的最大长度。

因为非零状态的个数为2^L-1,所以LFSR的最大周期只能到达2^L-1,这样的序列称为m-sequence。因其在同等阶数条件下的伪随机序列周期最大,所以 m 序列有较好的随机化能力,可以更好的实现基带信号的伪随机过程,提高初始信源序列在无线通信系统中数据传输的平稳能力,使得通信过程更加优化。

二.流密码

2.1 介绍

在保密系统中, 发送方发送的消息一般被称为明文, 明文依据某种规则变换成密文, 这种依据规则变换的过程被称为加密; 其逆过程被称为解密。 对明文进行加密时采用的规则被称为加密算法, 对密文进行解密时采用的规则被称为解密算法。根据加解密时所使用的密钥是否相同, 可以将密码算法分为非对称密码算法对称密码算法

对称密码体制一般又可以被分为分组密码流密码, 常见的分组密码包括 AES、 SM4、 ASCON-128 、 PRESENT等, 常见的流密码包括Trivium、 Grain-128、 Lizard、 Plantlet 等。

作为对称加密体系中的一种加密结构, 流密码算法一般逐字节或者逐比特处理信息。 大多数情况下, 流密码是通过一个相对较短的主密钥利用一些规则生成密钥流, 之后密钥流序列再对明文进行加密, 从而得到对应的密文。

流密码算法通常由异或运算与运算以及循环移位等基础操作组成, 这使得流密码算法具有加解密速度快, 软硬件实现简单等特点, 因此常被用于资源受限制的环境条件, 比如处理器性能较弱、 硬件资源有限。

对于流密码而言, 关键在于设计好的伪随机数生成器。一般来说, 密钥流发生器生成的序列随机性越强, 其明文中的统计特征就会被覆盖的更好。 密钥流发生器的基本构造模块为反馈移位寄存器, 其主要包含线性反馈移位寄存器非线性反馈移位寄存器

2.2 基于LFSR的流密码

模仿一次一密加密过程,利用有限的key,生成无限的keystream密钥流:

k_0,k_1,\ldots

密码学的攻击模型中,有一种叫做已知明文攻击。也就是,攻击者已知明密文对:

(p_1,c_1), (p_2,c_2), \ldots,(p_m,c_m)

这个过程就是简单的异或运算,所以可得:

k_1=p_1\bigoplus c_1, k_2=p_2\bigoplus c_2, \ldots, k_m=p_m\bigoplus c_m

此时便出现了两种解密方法。
方法一:

k_1,k_2,\ldots,k_m中恢复初始密钥

方法二

k_1,k_2,\ldots,k_m中恢复某一时刻的中间状态(s_0,s_1,\ldots,s_{L-1})。有了(s_0,s_1,\ldots,s_{L-1})可以得到同样的密钥流

 结论:只通过LFSR生成密钥流是不安全的。Berlekamp-Massy 算法可以利用2L长的输出序列,以O(L^3)的复杂度得到生成这个序列的线性反馈移位寄存器。

三. 非线性过滤函数

在线性反馈移位寄存器中加入非线性结构,如下图:

f(x_1,x_2,x_3,x_4,x_5,x_6)为例,每个clock,从当前状态s_0,s_1,\ldots,s_{L-1}中抽取出6个(s_{k_1},s_{k_2},s_{k_3},s_{k_4},s_{k_5},s_{k_6}),其中k_1,k_2,\ldots,k_6为抽头数。由此可得密钥流:

KS_i=f(s_{k_1},s_{k_2},s_{k_3},s_{k_4},s_{k_5},s_{k_6})

线性反馈移位寄存器的更新过程可以看成如下线性变换:

其中:

s_0^,=c_{L-1}s_0+c_{L-2}s_1+\ldots+c_0s_{L-1}

s_1^,=s_0,s^,_2=s_1,\ldots,s^,_{L-1}=s_{L-2}

假设x_1,x_2,\ldots,x_n为n比特线性反馈移位寄存器某一时刻的中间状态,密钥流可以写成布尔多项式如下:

以下为探讨中间状态恢复问题 :

此问题的本质相当于已知密钥流b_0,b_1,\ldots,b_{m-1},求解如下关于x_1,x_2,\ldots,x_n的方程组:

在求解此方程中,由于L为线性函数,因此每个单独方程的次数都等于过滤函数f的次数。从此角度出发,要求f的次数足够高,f的非线性度要高。

总结

代数密码分析的本质就是从求解多变元多项式方程组的角度来分析密码算法。密码系统、代数系统、破解密码系统、求解代数系统之间的关系可以表示为如下:

  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

唠嗑!

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值