一个虚拟密码如下图所示。明文为16位($X_1$和$X_2$各为8位)。密文是在两轮使用$K_1$和$K_2$两轮后计算出来的。通过求解含有异或和模加法的方程组,可以找到圆键$K_1$和$K_2$吗?

$\boxplus $=加法模$2^8$
$\oplus$ = XOR
$X_1$,$X_2$,$Y_1$,$Y_2$是8位.$i=1,2$。
对于如何求解这种包含异或和模加法的方程组,我感到困惑。解这样的方程组需要多少个PT-CT对?方程组中将有多少个线性、非线性/二次项?
发布于 2018-04-06 14:53:56
好的,这似乎是家庭作业,所以我不会给出完整的答案,我会让你开始。
第一件事(使用这种攻击方法)是写出系统的全部方程,如下所示:
$$T_0 = P_0 \oplus K_0$$
$$T_1 = P_1 \boxplus T_0$$
$$T_2 = T_0 \oplus T_1$$
$$T_3 = T_2 \oplus K_1$$
$$C_1 = T_3 \boxplus T_1$$
$$C_0 = T_3 \oplus C_1$$
您知道$P_0、P_1$ (明文)、$C_0、C_1$ (密文),而不知道$K_0、K_1$ (密钥)或$T_0、T_1、T_2、T_3$ (密码在各个点的内部状态)。并且,我们假设我们有一个明文/密文对(对于这个密码来说,这是足够的)。
从这里往哪里走?好的,第一个明显的步骤是注意最后一个关系$C_0 = T_3 \oplus C_1$;我们知道$C_0,C_1$,所以我们可以推断出$T_3 = C_0 \oplus C_1$的值。然后,我们注意到$C_1 = T_3 \boxplus T_1$的关系,我们知道$C_1$和$T_3$,因此我们可以推导出$T_1 = C_1 \box减号T_3 = C_1 \box减号(C_0 \oplus C_1)$的值。接下来我们要去哪里?
现在,这种方法很好地分解了这个两轮密码;然而,它不是很好地扩展;在这个玩具密码中增加第三轮密码将打破这个依赖的关系。另一方面,我认为这可能是学习如何思考如何攻击密码的一个开始,尽管您需要找到其他方法来攻击不那么简单的密码。fgrieu关于先看低阶位的建议是一种更普遍的方法,在这种情况下行不通。
https://crypto.stackexchange.com/questions/58136
复制相似问题