密码算法中的功率分析与密钥恢复攻击
1. 基础算法介绍
1.1 Montgomery 模乘算法
给定模数 $n$ 和两个整数 $x$、$y$,它们在基 $b$ 下的大小为 $v$,且 $\gcd(n, b) = 1$,$r = b^{\lceil\log_b(n)\rceil}$,MontMul 算法用于计算 $MontMul(x, y, n) = x \times y \times r^{-1} \bmod n$。
Algorithm 2.1. MontMul: Montgomery modular multiplication algorithm
Input: n, 0 ≤x = (xv−1xv−2... x1x0)b, y = (yv−1yv−2... y1y0)b ≤n −1,
n′ = −n−1 mod b
Output: x × y × r−1 mod n
Step 1. a = (av−1av−2... a1a0) ←0
Step 2. for i from 0 to v −1 do
ui ←(a0 + xi × y0) × n′ mod b
a ←(a + xi × y + ui × n)/b
Step 3. if a ≥n then a ←a −n
Step 4. Return(a)
1.2 RSA 算法
RSA 对消息 $m$ 的签名通过计算 $s = m^d \bmod n$ 得到,签名验证则通过计算 $m = s^e \bmod n$。其中,$e$ 是公钥指数,$d$ 是私钥指数,$n$ 是模数。