使用 Strauss-Shamir 方法的 EC 标量乘法

EC scalar multiplication with Strauss-Shamir method

我正在搜索关于椭圆曲线标量乘法的所谓 "Strauss-Shamir method" 的信息。这是一种在 log2(k) 次加法和加倍运算中计算 k1 · P + k2 · Q 的方法,其中 k1, k2 < k

不幸的是,虽然该算法被左右和居中引用,但 实际 算法(我敢希望,它的分析)没有在任何地方被引用。有没有人可以向我解释一下,或者至少在 pseudocode/analysis 上给我一个 link?

非常感谢!

要将数字 P 乘以 n 位标量 k,您可以根据k的二进制展开使用加倍和加法。假设 k=9。在二进制中,即 1001,您可以这样计算 9P

R=0
R=R*2+P  //the most significant '1' bit
R=R*2    //next bit is 0
R=R*2    //next bit is 0
R=R*2+P  //next bit is 1

Strauss-Shamir 技巧只是通过在链内而不是外部进行加法来计算 aP + bQ。比方说,在二进制中,a=1001 和 b=0011`。然后我们就这样做:

R=0
R=R*2+P   //bits from a,b = 1,0
R=R*2     //bits from a,b = 0,0
R=R*2+Q   //bits from a,b = 0,1
R=R*2+P+Q //bits from a,b = 1,1

如果您预先计算 P+Q,那么这不会比一次乘法花费更长的时间。