发布于 2022-01-22 15:29:20
简短的回答是“是的,这个设置是脆弱的”。如果你想要一些数学,你可以阅读下面的解释。
在XTS中,两个键是独立的,因此它已经有512位安全性(目前没有攻击,这减少了这个数目*)。因此,我将解释为什么在XTS模式下使用双重加密不会增加安全性。
让我们仔细研究XTS模式下的加密方程:c_i = f(m_i, (K_1, K_2)) = T_i\oplus E_{K_1}(m_1\oplus T_i) \\ T_i=E_{K_2}(SN)\otimes\alpha^{i-1} ,其中SN是扇区号,(K_1,K_2) -加密密钥,m_i, c_i -明文块和密文块,\alpha是GF(2^l) (|m_i|=l)的基本元素。
现在让我们考虑一个分组密码加密函数:E_K=\pi_{q_{r+1}}\circ\varphi_{q_r}\circ... \circ\varphi_{q_1}\circ\delta_{q_0} ,其中r是多个圆环,q_i,i=\overline{1,r}是圆形密钥(从使用称为“密钥调度”的特殊函数集的加密密钥派生而来),\varphi_{q_i},i=\overline{1,r}是圆形函数,\pi_{q_{r+1}}, \delta_{q_0}分别是输出函数和输入函数及其密钥(这两个函数可能不依赖于密钥)。
这些输入和输出函数的存在是提出问题的关键。让我们考虑一个具有以下加密方程的分组密码:E_{K_1,K_2} = \underbrace{\pi'_{q_{r+1}}\circ \pi^{\varepsilon}_{q_{r+1}}}_{\pi_{q_{r+1}}} \circ\overbrace{\varphi^{\varepsilon}_{q_r}\circ... \circ\varphi^{\varepsilon}_{q_1}}^{\varphi_{q_r}\circ... \circ\varphi_{q_1}} \circ\underbrace{\delta^{\varepsilon}_{q_0}\circ \delta'_{q_0}}_{\delta_{q_0}},\ q_0=q_{r+1}=(K_2,SN) ,其中底层块密码\varepsilon的\varphi^{\varepsilon}_{q_i}=\varphi_{q_i}, i=\overline{1,r} -圆形函数(在您的例子中是AES),底层分组密码的\pi^{\varepsilon}_{q_{r+1}}, \delta^{\varepsilon}_{q_0} -输出和输入函数以及\pi'_{q_{r+1}}(x)=E_{K_2}(SN)\oplus x,\delta'_{q_0}(x)=E_{K_2}(SN)\oplus x。
当\pi^{\varepsilon}_{q_{r+1}}和\delta^{\varepsilon}_{q_0}实际依赖于它们的键(这是不同的)时,该方程存在一些问题,但通过适当选择密钥调度函数可以很容易地消除它们。我现在不会这么做,以防止过于复杂。
最后,通过修改分组密码的输出和输入函数,在现有密码的基础上得到了一个分组密码。
在中间相遇攻击的最简单情况下,您可以创建两个表:s_i = E_{K_1,K_2}(m_i) \\ s'_i = E^{-1}_{K'_1,K'_2}(c_i) 。
在此之后,您将寻找同等值的s_i=s'_i。这个算法适用于任何分组密码,也适用于我们的分组密码,所以现在构建的构造很容易受到这种攻击,仅仅是因为XTS没有添加任何特殊的分组密码,也就是说,当每个块都用自己的密钥加密时,您可以将XTS模式下的加密视为分组加密。
了解扇区号和块位置,您将为这个特定块构建两个表,并查找加密密钥。在最坏的情况下,您需要枚举所有对键(K_1, K_2)两次。所以没有增加安全性。
*-有一种攻击,当同一扇区有两个不同的块时,你可以获得每一次调整,而密文和明文有一定的条件,但它不能恢复一个调整的密钥。您可以在XTS-AES上的公开评论中了解更多关于这一攻击的信息。
https://crypto.stackexchange.com/questions/98254
复制相似问题