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

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


                                                  32((i+4−i/4) mod 4)+i mod 4+4(i/16)  i
                                                 b t               ⊕c = 0                            (12)
                                                                     t
                           i
                       i  c  分别表示密钥编排算法中第           t+1  轮比特置换输入状态和输出状态的第
                 其中,    b  和    t                                                      i 比特, 并且   t ∈ [0,3]  ,
                       t
                 i ∈ [0,127]  .
                    (3) 轮常数加
                    密钥编排算法的轮常数加运算仅在密钥第               127  位异或“1”, 则轮常数加的代数方程为:

                                                      c 127  ⊕d 127  ⊕1 = 0                          (13)
                                                       t   t
                      c 127  d  127  分别表示密钥编排算法中第   t+1  轮常数加输入状态和输出状态的第          127         t ∈ [0,3] .
                 其中,    t   和   t                                                    比特, 并且
                                   (RK 1 ,RK 2 ,RK 3 ) 才会满足上述方程组, 当代数方程建立后, 每组等价密钥可代入方程并判
                    只有正确的轮密钥
                 断方程是否成立, 从而对等价密钥进行筛选, 利用不断缩小的密钥候选空间, 筛选出正确轮密钥                              (RK 1 ,RK 2 ,RK 3 ) .
                 最后, 攻击者通过密钥编排算法, 恢复原始密钥             K  为:

                                               −1
                                       −1
                                  −1
                                                       −1
                                                           −1
                                                                            −1
                                                                        −1
                                                   −1
                                                                                −1
                                                                    −1
                                           −1
                                                                −1
                             K = SC (PB (AC (SC (PB (AC (SC (PB (AC (SC (PB (AC (RK 1 ))))))))))))   (14)
                                  L        L   L       L   L        L   L       L
                 3.4   区分器
                    本文使用了平方欧氏距离、极大似然估计、汉明重量等经典区分器, 并且基于安德森达林拟合度检验
                 (Anderson Darling test), 提出了  3  种新型组合区分器  AD  检验-平方欧氏距离、AD    检验-极大似然估计和       AD  检验-
                 汉明重量.

                 3.4.1    经典区分器
                    (1) 平方欧氏距离    (square Euclidean imbalance, SEI)
                    欧氏距离又称欧几里得距离, 用于描述空间中两点的距离, 其平方值为平方欧氏距离, 由数学家                              Euclid  提出.
                 2013  年, Fuhr 等人  [18] 在  AES  密码的唯密文故障分析中首次使用该区分器. SEI 区分器表达式为:

                                                         w−1 (     ) 2
                                                         ∑   n(φ)  1
                                                    E SEI =     −                                    (15)
                                                              m   w
                                                         φ=0
                 其中,   φ 为故障注入后所有可能的中间状态值, w           表示半字节所有可能取值的个数, m           为注入故障数量,      n(φ) 表示
                 中间状态值为     φ 的个数. SEI 区分器用于计算实际统计的样本值分布与理论均匀分布之间的距离, 在故障注入后,
                 实际中间状态的分布会偏离均匀分布, 所以正确密钥对应的                   SEI 统计量值应为最大值.
                    (2) 极大似然估计    (maximum likelihood estimate, MLE)
                    极大似然估计于       1821  年提出, 并最早被   Fuhr 等人  [18] 应用于唯密文故障分析中. 该区分器通过似然函数计算
                 每一组样本值理论应该出现的概率. MLE            区分器表示为:

                                                             m ∏
                                                       E MLE =  p(ε λ )                              (16)
                                                            λ=1
                 其中, m  为注入故障数量,    ε λ  表示第   λ 个故障推导出来的中间状态值,      p(ε λ ) 表示中间状态值为   ε λ  的理论概率. 当  MLE
                 取最大值时, 表示使用该密钥倒推回的中间状态样本值的出现概率最大, 所以最大值情况下对应的候选密钥即为
                 正确密钥.
                    (3) 汉明重量   (Hamming weight, HW)
                    汉明重量由     Reed  于  1954  年提出, 用于计算二进制字符串中“1”的个数        [42] . 2013  年, Fuhr 等人  [18] 将其应用于
                 AES  算法的统计故障分析中. 正常情况下, 中间状态值中“0”和“1”是均匀分布的, 故障通过按位“与”的方式注入后,
                 会导致中间状态值中“0”的个数比“1”的个数多, 所以由正确密钥推导的中间状态值中“1”的个数较少, 则正确密钥
                 对应的汉明重量值应为最小值. HW          表达式为:

                                                            m ∑
                                                      E HW =  hw(ε λ )                               (17)
                                                            λ=1
                 其中, m  为注入故障数量,     ε λ  表示由第  λ 个故障推导出来的中间状态值,        hw(ε λ ) 表示  ε λ  的汉明重量.
   374   375   376   377   378   379   380   381   382   383   384