0

我正在读一本关于密码学的书,我陷入了一个问题。我真的想解决它好几个星期。但我认为问题是我无法理解整个画面。问题是这样的:

我们对基于 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。

4

2 回答 2

6

您指的是 Paar 和 Pelzi 的《理解密码学》,对吧?第二章可以在 Springer 网站上在线找到,考虑到 Springer 是出版商,这应该是合法的。

我会说第二个列表是密文,即与密钥流异或的明文。密钥流将是

    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=1p_2=0

于 2014-04-13T15:40:19.157 回答
4

该问题提供的信息不足。有多种解决方案。

第一步是确定密钥流。既然你知道明文和密文,那应该很容易。只是对两者进行异或。

LFSR 的标准方法是在字段上使用 m 次原始多项式,只有两个元素 0 和 1。在这种情况下,重复自身之前的序列长度为 2^m -1。这里有 28 位。因此,预期的解决方案是让 m = 3。实际上,您可以将密钥流的 28 位分解为前 7 位的 3 个重复实例。

在 m = 3 的假设下,密钥流的前 3 位是初始化向量。由此您应该能够确定 LFSR 中的抽头。您可以通过以下事实来检查您的答案:场上只有两个 3 次原始多项式,其中包含两个元素 x^3 + x^2 + 1 和 x^3 + x + 1。

信息不足的原因是因为密钥流可能是 5 级或 6 级或 7 级 LFSR 的前 28 位,......你明白了。

添加假设您有 m 度的 LFSR,初始化向量为 0000...01。我在做左移。现在执行 LFSR 的一步。最左边的位被丢弃,剩下的 m-1 位左移,新的最右边位是所有抽头的异或。因此,给定初始化向量,当且仅当在最右边的单元格上有一个抽头时,新的最右边位为 1。现在做另一个班次。新的最右边位是两个最右边单元格的异或的组合。从上一步中,您知道最后一个单元格上是否有点击。因此,经过两次轮班后,您就知道最右边的两个单元格上是否有任何水龙头。继续这种方式,您可以确定所有的水龙头。

于 2014-04-13T15:41:40.583 回答