我正在读一本关于密码学的书,我陷入了一个问题。我真的试图解决它几个星期。但我认为问题是我无法理解整体情况。问题是这样的:
我们对基于LFSR的流密码进行已知明文攻击。我们知道发送的明文是:
1001 0010 0110 1101 1001 0010 0110
通过点击频道,我们会观察以下信息流:
1011 1100 0011 0001 0010 1011 0001
1- What is the degree m of the key stream generator?
2- What is the initialization vector?
3- Determine the feedback coefficients of the LFSR.
4- Draw a circuit diagram and verify the output sequence of the LFSR.
非常感谢您帮助我理解密码学和LFSR。
答案 0 :(得分:5)
你指的是Understanding Cryptography by Paar and Pelzi,对吗?鉴于Springer是出版商,second chapter can be found online on the Springer site应该是合法的。
我说第二个列表是密文,即与密钥流进行异或的明文。然后密钥流将是
1001 0010 0110 1101 1001 0010 0110
XOR 1011 1100 0011 0001 0010 1011 0001
= 0010 1110 0101 1100 1011 1001 0111
或
0010111 0010111 0010111 0010111
以7位的块分组。给定定理2.3.1"由m度的LSFR产生的最大序列长度是(2 ^ m)-1"你可以猜测度数可能是3,因为LSFR的序列长度看起来是7.注意,度数计算LSFR的内部状态,而不是指多项式的次数。根据公式(2.1),它的程度要少一个。
所以你想要计算的是方程的解决方案
p(0,0,1)=0
p(0,1,0)=1
p(1,0,1)=1
表示p(s_0,s_1,s2)=p_0*s_0+p_1*s_1+p_2+s_2
并检查其余的密钥流是否与此公式匹配。这样做最终得到以下矩阵:
0 0 1 | 0
0 1 0 | 1
1 0 1 | 1
所以p_0=1
,p_1=1
和p_2=0
。哪个与密钥流的其余部分匹配。
答案 1 :(得分:4)
该问题提供的信息不足。有多种解决方案。
第一步是确定密钥流。既然您知道明文和密文,那应该很容易。只是两个。
LFSR的标准方法是在场上使用度为m的本原多项式,只有两个元素0和1.在这种情况下,序列的长度在重复之前是2 ^ m -1。这里有28位。因此,预期的解决方案是使m = 3.实际上,您可以将密钥流的28位分解为前7位的3个重复实例。
在m = 3的假设下,密钥流的前3位是初始化向量。从这里你应该能够确定LFSR中的水龙头。您可以通过以下事实检查您的答案:在场上只有两个原始多项式,其中包含两个元素,x ^ 3 + x ^ 2 + 1和x ^ 3 + x + 1.
信息不足的原因是因为密钥流可能是5级或6级或7级LFSR的前28位,....你明白了。
ADDED 假设您具有度数为m的LFSR,其初始化向量为0000 ... 01。我做左移。现在做LFSR的一步。最左边的位被丢弃,剩余的m-1位向左移位,新的最右位是所有抽头的xor。因此,给定初始化向量,当且仅当在最右边的单元上存在抽头时,新的最右位是1。现在做另一个转变。新的最右边位是两个最右边单元格的xors的组合。从上一步开始,您可以了解最后一个单元格是否有点击。因此,在两个班次之后,您知道两个最右边的单元格上是否有任何点击。继续这种方式,你可以确定所有的水龙头。