对KATAN系列分组密码的代数、AIDA/立方体及侧信道分析
1. 立方体攻击原理
立方体攻击分为预处理(离线)和在线两个阶段:
- 预处理阶段 :目标是找到能产生线性超多项式的单项式 (t_I)。最大项与密钥无关,对于固定轮数的主多项式,每个最大项只需计算一次。通过线性测试来重构每个 (t_I) 超多项式的代数正规型(ANF)。此阶段的主要问题是找到合适的 (|I|) 个公共变量 (x_i) 的组合以得到线性超多项式,由于主多项式的确切形式未知,这一步是启发式的,通过随机选择立方体变量并使用线性测试来检查超多项式。此外,还有“常数”测试用于确定超多项式中的常数项(0 或 1)。非最大项中的公共变量在两个阶段都应设置为相同的固定值。
- 在线阶段 :在找到足够数量的线性独立(LI)超多项式后开始。通过对相应最大项的所有值求和 ( \sum_{x_i, i \in I} p ) 来计算超多项式,从而推导出秘密 (v_j) 比特的线性组合值。如果 (t_I) 的次数为 (d),每个异或和需要 (2^d) 次对 (p) 的求值,这意味着需要选择明文设置。时间和数据复杂度与所有最大项中的最大次数 (d) 成正比。在线复杂度与 (2^{d_i}) 次加密成正比,其中 (d_i) 是超多项式最大项中的变量数。如果有 (t) 个线性独立的超多项式,则需要 ( \sum_{i = 1}^{t} 2^{d_i} ) 次加密来恢复每个超多项式。若密钥大小为 (k) 比特,则 (2^{k - t}) 次加密足以恢复密钥的其余未知部分。总的时间复杂度为 (2^{k - t} + \sum_{i = 1}^{t} 2^{d_i})。
超级会员免费看
订阅专栏 解锁全文
14

被折叠的 条评论
为什么被折叠?



