Montgomery Powering Ladder算法笔记

算法出处

Koc C K, Paar C. The Montgomery Powering Ladder[C]. CHES 2002, LNCS 2523, pp. 291–302, 2003.

1. 目的

计算y=g^k, 其中k=(k_{t-1},k_{t-2},...,k_1,k_0)

2. 思路

关于k,用到了四个记号——从左到右(高位到低位)的截断

L_j=(k_{t-1},k_{t-2},...,k_j)就是取k的最高位到第j位】

L_{j+1}=(k_{t-1},k_{t-2},...,k_{j+1})就是取k的最高位到第j+1位,比L_j短一个比特

H_j=L_j+1

H_{j+1}=L_{j+1}+1

简单对比,这四个值有如下关系:

                            如果k_j=0,则  L_j=2L_{j+1}H_{j}=L_{j+1}+H_{j+1}

                            如果k_j=1,则  L_{j}=L_{j+1}+H_{j+1}H_{j}=2H_{j+1}

根据此公式,在计算y=g^k时,可设两个寄存器R0和R1,迭代时这两个寄存器按如下规则更新。

如果k_j=0,则  R_0=R_0^2R_1=R_0R_1

如果k_j=1,则  R_0=R_0R_1R_1=R_1^2

3. 算法

根据上述想法,Montgomery Powering Ladder算法描述如下。

 

 

可并行性:R0和R1的乘法和平方可以交给两个不同的乘法器来并行。

 

发布了211 篇原创文章 · 获赞 241 · 访问量 148万+

猜你喜欢

转载自blog.csdn.net/samsho2/article/details/103824824
今日推荐