MITM variant No.TwO (3 subset)
从经典的 MITM 考虑,如果子密钥不能独立,那么建表和穷举部分都无法独立进行,参考文章A 3-Subset Meet-in-the-Middle Attack: Cryptanalysis of the Lightweight Block Cipher KTANTAN 和文章Three-Subset Meet-in-the-Middle Attack on Reduced XTEA 了解使用 3 子集来构造具有独立性的子密钥集合,并结合穷举和经典 MITM 来进行中间相遇攻击。
术语解释:
K=kℓ−1kℓ−2…k1k0 be the ℓ-bit key.
K1={ki:ki used by φ1,α}
K2={ki:ki used by φR−β+1,R}
A0=K1∩K2是在前向 α 和后向 β 都使用的密钥 比特
K=K1∪K2
NOTE:明确一点:K,Ki 是以密钥个为单位,Ai 以比特为单位;
A1=K1\K1∩K2 and A2=K2\K1∩K2 就比较好理解,这里 \ 表示除去而非经典数学的除法。例如:
密钥总位数为 32 bits;相关部分为 ∣A0∣=21 bits 那么 ∣A1∣=∣A2∣=11 bits
3-subset MITM:
有迭代的分组密码,分组长度为 n ,子密钥不独立的分为 K1,K2,有 A0 bits 为公用密钥,A1=K1\K1∩K2 bits and A2=K2\K1∩K2 bits
MITM stage
对任意一个明密文对 (P,C)
- 穷举所有 A0 bits ,并对每一种 A0 情况,进行步骤 2. 3.;
- 将 A0 与 A1 拼接获得 K1,前向加密得到中间值 U,将所有 U 存入表 T;
- 将 A0 与 A2 拼接获得 K2,向后解密得到中间值 V,将所有 V 与表 T 中所有值进行匹配(不一定匹配中间值的全部比特),匹配到的值存入候选密钥表 Tvc 中;
Testing Stage
和经典 MITM 相同,再任选不同的明密文对,对表 Tvc 进行筛查,直到仅留下 1 个密钥。这里使用的明密文对数量和 ∣A0∣ 有关,显然是成反比的。
复杂度分析
不考虑并行明密文对,这里的 A0,A1,A2 表示密钥的长度(bits):
时间复杂度:建表时间 2A0∗2A1 ,匹配时间 2A0∗2A2 ,总时间:
T=2A0∗(2A1+2A2)
空间复杂度:
M=2A0∗min(2A1+2A2)
数据复杂度:假设中间值匹配的位数为 m : 1<=m<=n ,则留下的候选密钥为 A0(A1+A2)−m bits,所以测试需要的明密文对为:
D=nA0(A1+A2)−m