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(ε λ ) 表示 ε λ 的汉明重量.