Page 377 - 《软件学报》2025年第5期
P. 377

李玮 等: 基于代数关系的轻量级密码          DEFAULT  统计故障分析                                     2277



                               Y = AC L (PB(SC L (AC L (PB(SC L (C 77 ⊕RK 77 ⊕∆in)⊕∆out))⊕RK 78 )))⊕RK 79
                                                                                                      (7)
                                 = AC L (PB(SC L (AC L (PB(SC L (C 77 ⊕RK 77 ⊕∆in)))⊕(RK 78 ⊕ PB(∆out)))))⊕RK 79
                    若利用特殊差分输入输出求解方程, 会得到              7  组密钥解, 如表   5  所示. 对于全部的   32  个  S  盒, 等价密钥数量会
                       32
                 增加到   7 ≈ 2 89.84  个. 在对  DEFAULT  密码进行统计故障分析时, 只能得到一个包含大量等价密钥的候选空间, 无
                 法找到正确的原始密钥, 也难以对候选密钥空间进行穷尽搜索.
                    鉴于多轮密钥之间存在变换关系, 譬如, 第               r  轮密钥经密钥编排算法可以推导得到第              r+1  轮密钥, 其中
                 r ∈ [0,79] . 攻击者可以先利用统计故障分析恢复全部的等价密钥集合, 再依据密钥编排算法中不同轮密钥的关系
                 建立代数方程, 利用代数关系分析并筛选多轮密钥, 从而缩小候选密钥空间.
                    分析过程由统计故障分析获取全部等价密钥和利用代数分析筛选密钥两部分组成. 若故障导入轮数位置较
                 浅, 在实际实施时易被硬件防护, 且涉及密钥较少, 代数方程相应数量变少, 难以进行有效筛选. 但是, 若故障位置
                 导入较深, 则故障路径较长, 统计故障分析的复杂度将被大幅提升. 本文采用故障注入的位置为算法倒数第                                3  轮的
                 比特置换之后, 达到代数方程求解和计算攻击复杂度之间的平衡.

                 3.3   攻击步骤
                    攻击过程包括有以下        5  个步骤.
                    步骤  1. 攻击者利用搭载      DEFAULT  密码的设备使用同一密钥进行加密, 并在加密运算的倒数第                    3  轮注入故
                 障, 收集被故障影响后的密文, 故障注入后的扩散路径如图                 3  所示.


                  S  S  S  S  S  S  S  S  S  S  S  S  S  S  S  S  S  S  S  S  S  S  S  S  S  S  S  S  S  S  S  S











                  S  S  S  S  S  S  S  S  S  S  S  S  S  S  S  S  S  S  S  S  S  S  S  S  S  S  S  S  S  S  S  S













                                    图 3 DEFAULT  密码最后两轮加密时的半字节故障扩散路径图

                    步骤  2. 攻击者获得导入故障后输出的故障密文后, 结合最后                 3  轮的轮密钥, 可以推导倒数第       3  轮比特置换运
                 算的输出   B 77  . 其中, 每次枚举参与计算的最后      3  轮部分密钥有    24  比特, 包括  RK 79  的  16  比特、  RK 78  的  4  比特和
                 RK 77  的  4  比特. 表达式为:

                                        −1
                                             −1
                                  B 77 = AC (AK (D 77 )
                                        L
                                                 −1
                                                      −1
                                             −1
                                                                −1
                                        −1
                                                           −1
                                    = AC ( AK ( SC ( PB ( AC ( AK (D 78 ))))))
                                        L         L        L
                                                             −1
                                                                          −1
                                                                              −1
                                                                 −1
                                                                      −1
                                                 −1
                                             −1
                                        −1
                                                         −1
                                                     −1
                                    = AC (AK (SC (PB (AC (AK (SC (PB (AC (AK (Y))))))))))             (8)
                                        L        L       L        L       L
                    步骤  3. 攻击者选择第    4.4  节中合适的区分器, 对于每个中间状态值, 均可获得其对应的区分器值, 利用该区分
   372   373   374   375   376   377   378   379   380   381   382