乘法与平方运算的区分及相关攻击与防护
1. 实践中展示差异
在标准的32位微处理器上实现了某些乘法算法。这里主要介绍了两种乘法算法的实践情况,以及它们在乘法和平方运算时的功耗差异。
- 长整数乘法
- 实现与采集 :在微处理器上实现了使用长整数乘法算法的128位乘法,并对随机、均匀分布输入的乘法和平方运算进行了3000次采集。其实现基于特定描述,算法如下:
Algorithm 1. Long Integer Multiplication
Input: X = (xz−1, ..., x1, x0)b, Y = (yz−1, ..., y1, y0)b
Output: W = (w2z−1, ..., w1, w0)b = X · Y
W ←0
for i = 0 to z −1 do
c ←0
for j = 0 to z −1 do
(uv)b ←wi+j + xj · yi + c
wi+j ←v ; c ←u
end
w2z−1 ←u
end
return W
- **差异分析**:两条平均轨迹的差异如图3所示。轨迹中有四个峰值,对应芯片为计算输入的平方而进行的四次平方运算。即对于\(X = (x_3, x_2, x_1, x_0)_b\)(其中\(b = 2^{32}\)),在16次乘法中,当计算\(x_i · x_j\)时,会有四次\(i = j\)的情况。如果将对应相同操作的平均轨迹相减,则不会产生明显的峰值。