基于NLFSR的密码系统的条件差分密码分析
一、引言
Grain v1 流密码对高阶导数表现出令人惊讶的脆弱性。我们能针对其 256 轮中的多达 215 轮构建实用区分器,并对略少轮数的情况实施部分密钥恢复攻击。例如,对于 197 轮变体,我们能以高达 0.87 的概率恢复 8 个密钥位;对于 213 轮变体,能以高达 0.59 的概率恢复 2 个密钥位。
接下来我们将详细介绍布尔函数高阶导数的定义,频率测试在这些导数上的应用,以及基于非线性反馈移位寄存器(NLFSR)的密码系统的条件差分密码分析方法。
二、符号与预备知识
-
布尔函数的导数
- 设 (f: F_{2}^{n} \to F_{2}) 是一个布尔函数,(f) 关于 (a \in F_{2}^{n}) 的导数定义为 (\Delta_{a}f(x) = f(x \oplus a) + f(x)),其导数本身也是一个布尔函数。
- 若 (\sigma = {a_{1}, \ldots, a_{i}}) 是 (F_{2}^{n}) 中的一组向量,(L(\sigma)) 表示 (\sigma) 中元素的所有 (2^{i}) 个线性组合的集合。(f) 关于 (\sigma) 的 (i) 阶导数定义为 (\Delta_{\sigma}^{(i)}f(x) = \sum_{c \in L(\sigma)}f(x \oplus c))。
- 计算 (f) 的 (i) 阶导数需要对 (f) 进行 (2^{i}) 次求值。我们始终假设 (a_{1}, \ldots, a_{