双倍攻击:为何向上算法优于向下算法
1. 双加算法的两种版本
双加算法通常有两种版本,这取决于之前求和项的顺序:
- 从最高有效位向下计算(Left-to-Right) :
S = 0
for i from n down to 0
S = 2.S
if di = 1 then S = S + P
return S
- 从最低有效位向上计算(Right-to-Left) :
S = 0
T = P
for i from 0 to n
if di = 1 then S = S + T
T = 2.T
return S
第一种实现方式使用更为频繁,因为它所需的内存更少。到目前为止,这两种算法在安全性上没有明显区别,因为所有已知的攻击都能同时适用于这两种实现。不过,后续会发现向下计算的版本可能比向上计算的版本更容易受到攻击。
2. 功耗分析攻击
简单双加算法容易受到Kocher等人提出的功耗攻击,主要有以下两种类型:
2.1 简单功耗分析(SPA)
这种攻击通过观察功耗来猜测执行的指令。例如,在之前的算法中,可以通过区分加倍和加法指令来恢复指数 ( d = \sum_{i=0}^{n} d_{i}2^{i} )。为了避免这种攻击,向下的双加算法通常会使用所谓的“伪指
超级会员免费看
订阅专栏 解锁全文
2859

被折叠的 条评论
为什么被折叠?



