一、高阶 DPA 攻击
-
一个 n 阶 DPA 攻击利用能量迹中 n 个对应于不同中间值的点
-
攻击背景:对随机掩码异或(B 操作)后的明文或密文再进行白化(C 操作),则一阶 DPA 攻击无法成功
![image-20201212190410230](/i/l/?n=22&i=blog/2324160/202211/2324160-20221110202141978-1051408342.png)
1 一阶 DPA
-
对于 N 位处理器的每一位,分别设定第 i 位值为 b = 0 或 1,计算平均能量信号 \(A_b[j]\)
- 将输入 PTI 第 i 位设为 b
- 输入 PTI 其它位设为随机值
- 采集能量迹
-
计算 DPA 差值 \(T[j] = A_0[j]-A_1[j]\),若产生正尖峰则该位为 0,否则为 1(汉明重量模型下)
-
汉明重量模型下 \(P=dε+L+n\),其中 d 为汉明重量,L 为常量,n 为噪声
\(E[d|k_i\oplus p_i=0]=\frac{N-1}{2}\)
\(E[d|k_i\oplus p_i=1]=\frac{N+1}{2}\)-
\(k_i=0\) 时
\(A_0[j]=E[P|k_i=0,p_i=0]=E[dε+L+n|k_i=0,p_i=0]=\frac{N-1}{2}ε+L\)
\(A_1[j]=E[P|k_i=0,p_i=1]=E[dε+L+n|k_i=0,p_i=1]=\frac{N+1}{2}ε+L\)
此时 \(T[j]=A_0[j]-A_1[j]=-ε\)
-
\(k_i=1\) 时
\(A_0[j]=E[P|k_i=1,p_i=0]=E[dε+L+n|k_i=1,p_i=0]=\frac{N+1}{2}ε+L\)
\(A_1[j]=E[P|k_i=1,p_i=1]=E[dε+L+n|k_i=1,p_i=1]=\frac{N-1}{2}ε+L\)
此时 \(T[j]=A_0[j]-A_1[j]=ε\)
-
2 二阶 DPA
-
对于 N 位处理器的每一位,分别设定第 i 位值为 b = 0 或 1,计算 \(S_b=|P_B-P_C|\)
- 将输入第 i 位设为 b
- 输入其它位设为随机值
- 采集运行到与两个中间值相关代码 B 和 C 时的能量消耗值 \(P_B\) 和 \(P_C\)
-
计算 DPA 差值 \(T = S_0-S_1\),若 T < 0 则该位为 0,否则为 1(汉明重量模型下)
-
汉明重量模型下 \(P_B=d_Bε_C+L_B\),\(P_C=d_Cε_C+L_C\),假定 \(L_B=L_C\) 以及 \(ε_B=ε_C\)
\(|P_B-P_C|=ε|d_B-d_C|\)
\(E[d_B|r_i=1]=E[d_C|r_i\oplus k_i\oplus p_i=1]=\frac{N+1}{2}\) \(E[d_B|r_i=0]=E[d_C|r_i\oplus k_i\oplus p_i=0]=\frac{N-1}{2}\)
-
\(k_i=0\) 时
\(S_0=\frac{1}{2}E(|d_B-d_C|·ε|r_i=k_i=p_i=0)+\frac{1}{2}E(|d_B-d_C|·ε|r_i=1,k_i=p_i=0)=0\)
/i/l/?n=22&i=blog/2324160/202211/2324160-20221110202141978-1051408342.png
\(S_1=\frac{1}{2}E(|d_B-d_C|·ε|p_i=1,r_i=k_i=0)+\frac{1}{2}E(|d_B-d_C|·ε|r_i=p_i=1,k_i=0)=ε\)\(T=S_0-S_1=-ε\)
-
\(k_i=0\) 时 \(T=S_0-S_1=ε\)
-