利用动态立方体攻击破解 Grain - 128 密码系统
1. 攻击 Grain - 128 的具体细节
1.1 第二次攻击
为了攻击具有 250 轮初始化(共 256 轮)的几乎完整版本的 Grain - 128,我们将 $b_{251 - 21} = b_{230}$ 置零。攻击参数如下表所示:
|参数|详情|
| ---- | ---- |
|大立方体维度|37|
|动态变量数量|24|
|数据和内存复杂度|$2^{37 + 24} = 2^{61}$|
|初始需猜测表达式数量|84|
|去除线性相关后需猜测表达式数量|59|
|立方体求和总复杂度|约 $37×2^{37 + 59} < 2^{101}$|
在这 59 个需猜测的表达式中,有 29 个仅包含单个密钥位,用于通用密钥恢复。在部分模拟阶段,我们对大立方体中维度至少为 35 的所有子立方体求和,并分别计算每个维度子立方体中值为 1 的百分比。
- 约 60%的密钥:正确猜测的子立方体和在维度为 36 和 37 的子立方体中仅包含 0 值,在 666 个维度为 35 的子立方体中 1 的值少于 200 个。未优化版本的攻击复杂度约为 $2^{100}$ 次密码评估,且很可能进一步优化。
- 约 30%的密钥:子立方体和的非随机性不如前 60%显著,但仍比穷举搜索快得多。
- 约 10%的密钥:子立方体和的非随机性不显著,攻击失败,但可通过选择不同参数来破解这些密钥。
1.2 第三次攻击
为了攻击具有 256 轮初始化的完整版本的 Grain - 128,