Montgomery curve的运算(1)——add/double运算

1. Montgomery curve定义

Montgomery curve为椭圆曲线的一种,基于Fq的仿射方程表示为:
E ( A ; B ) : B y 2 = x ( x 2 + A x + 1 ) E(A;B) : By^2 = x(x^2 + Ax + 1) E(A;B):By2=x(x2+Ax+1)
其中参数A和B为在域Fq内的值,同时满足 B != 0, A2 != 4。

将上述方程转换为投影坐标系下(X : Y : Z),其中x = X/Z, y = Y/Z,则对应的投影模型:
E ( A ; B ) : B Y 2 Z = X ( X 2 + A X Z + Z 2 ) ⊆ P 2 E(A;B) : BY^2Z = X(X^2 + AXZ + Z^2) \subseteq P^2 E(A;B):BY2Z=X(X2+AXZ+Z2)P2

对于投影模型的表示下,E(A;B) 上有一个无穷远点 O = (0 : 1 : 0),该点位E(A;B) 上唯一的一个Z=0点。

2. P1上的快速微分运算

在投影坐标系下,quotient map(商映射关系) F : E ( A ; B ) ↦ E / &lt; ⊖ &gt; = P 1 F:E(A;B) \mapsto E/&lt;\ominus &gt;=P^1 F:E(A;B)E/<>=P1 为:
F : P ↦ { ( x p : 1 ) i f P = ( x p : y p : 1 ) ( 1 : 0 ) i f P = O = ( 0 : 1 : 0 ) F:P\mapsto\left\{\begin{matrix} (x_p:1) &amp; if &amp;P=(x_p:y_p:1) \\ (1:0)&amp; if &amp;P=O=(0:1:0) \end{matrix}\right. F:P{(xp:1)(1:0)ififP=(xp:yp:1)P=O=(0:1:0)

F ( ( X : Y : Z ) ) = ( X : Z ) F((X:Y:Z))=(X:Z) F((X:Y:Z))=(X:Z)仅对Z!=0的情况成立。对于无穷远点O=(0:1:0),(0:0)不是投影坐标点。
T=(0:0:1)。

2.1 P1上的伪运算

{ F ( P ) , F ( Q ) , F ( P ⊕ Q ) , F ( P ⊖ Q ) } \begin{Bmatrix} F(P),F(Q),F(P\oplus Q),F(P\ominus Q) \end{Bmatrix} {F(P),F(Q),F(PQ),F(PQ)}
上面集合中知道任意三个值,即可计算出第四个值。

  • 伪加法运算—— F A D D : ( F ( P ) , F ( Q ) , F ( P ⊖ Q ) ) ↦ F ( P ⊕ Q ) F_{ADD}:(F(P),F(Q),F(P\ominus Q)) \mapsto F(P\oplus Q) FADD:(F(P),F(Q),F(PQ))F(PQ)
  • 当P=Q时,即为伪double运算—— F D B L : F ( P ) ↦ F ( [ 2 ] P ) F_{DBL}:F(P) \mapsto F([2]P) FDBL:F(P)F([2]P)

以上的伪加法和伪double运算为高效伪乘法运算的基础。

假设 P = ( x p , y p ) , Q = ( x q , y q ) , 且 x p ! = 0 , x q ! = 0 P=(x_p,y_p), Q=(x_q,y_q), 且x_p!=0, x_q!=0 P=(xp,yp),Q=(xq,yq),xp!=0,xq!=0

  • 当P!=Q时,Montgomery发现 P , Q , P ⊕ Q , P ⊖ Q P, Q, P\oplus Q,P\ominus Q P,Q,PQ,PQ这四个点的x坐标值存在如下关系:
    x P ⊕ Q x P ⊖ Q ( x P − x Q ) 2 = ( x P x Q − 1 ) 2 x_{P\oplus Q}x_{P\ominus Q}(x_P-x_Q)^2=(x_Px_Q-1)^2 xPQxPQ(xPxQ)2=(xPxQ1)2

  • 当P=Q时,将[2]P表示为 [ 2 ] P = ( x [ 2 ] P , y [ 2 ] P ) [2]P=(x_{[2]P},y_{[2]P}) [2]P=(x[2]P,y[2]P),则有
    4 x [ 2 ] P x P ( x P 2 + A x P + 1 ) = ( x P 2 − 1 ) 2 4x_{[2]P}x_P(x_P^2+Ax_P+1)=(x_P^2-1)^2 4x[2]PxP(xP2+AxP+1)=(xP21)2

以上两个公式对于Weierstrass模型也成立,只是不如Montgomery curve直观。

具体计算细节参见论文《Speeding the Pollard and Elliptic Curve Methods of Factorization》
在这里插入图片描述
在这里插入图片描述

2.2 P1上的伪加法运算

实际运算时,更多关注已知 F ( P ) , F ( Q ) , F ( P ⊖ Q ) F(P),F(Q),F(P\ominus Q) F(P),F(Q),F(PQ)求解 F ( P ⊕ Q ) F(P\oplus Q) F(PQ),即对伪加法运算的获取。
假设P!=Q且 P ⊖ Q ! = T P\ominus Q != T PQ!=T,根据第2节公式定义有:
( X P : Z P ) : = F ( P ) , ( X Q : Z Q ) : = F ( Q ) , ( X ⊕ : Z ⊕ ) : = F ( P ⊕ Q ) , ( X ⊖ : Z ⊖ ) : = F ( P ⊖ Q ) (X_P:Z_P):=F(P) ,\quad (X_Q:Z_Q):=F(Q), \quad (X_{\oplus}:Z_{\oplus}):=F(P\oplus Q), \quad (X_{\ominus}:Z_{\ominus}):=F(P\ominus Q) (XP:ZP):=F(P),(XQ:ZQ):=F(Q),(X:Z):=F(PQ),(X:Z):=F(PQ)

根据假设,可知 P ⊖ Q ∉ { O , T } P\ominus Q \notin \{O,T\} PQ/{O,T},所以 X ⊖ ! = 0 , Z ⊖ ! = 0 X_{\ominus} != 0, Z_{\ominus} != 0 X!=0,Z!=0
在投影坐标系下(X:Y:Z)下计算,因为 x = X / Z , y = Y / Z , E ( A ; B ) : B Y 2 Z = X ( X 2 + A X Z + Z 2 ) ⊆ P 2 x = X/Z, y = Y/Z, E(A;B) : BY^2Z = X(X^2 + AXZ + Z^2) \subseteq P^2 x=X/Z,y=Y/Z,E(A;B):BY2Z=X(X2+AXZ+Z2)P2,对于:
x P ⊕ Q x P ⊖ Q ( x P − x Q ) 2 = ( x P x Q − 1 ) 2 x_{P\oplus Q}x_{P\ominus Q}(x_P-x_Q)^2=(x_Px_Q-1)^2 xPQxPQ(xPxQ)2=(xPxQ1)2
可转换为:
X ⊕ Z ⊕ X ⊖ Z ⊖ ( X P Z P − X Q Z Q ) 2 = ( X P Z P X Q Z Q − 1 ) 2 \frac{X_{\oplus}}{Z_{\oplus}}\frac{X_{\ominus}}{Z_{\ominus}}(\frac{X_P}{Z_P}-\frac{X_Q}{Z_Q})^2=(\frac{X_P}{Z_P}\frac{X_Q}{Z_Q}-1)^2 ZXZX(ZPXPZQXQ)2=(ZPXPZQXQ1)2
约简为:
X ⊕ Z ⊕ = Z ⊖ X ⊖ ( X P Z P − X Q Z Q ) 2 ( X P Z Q − X Q Z P ) 2 = Z ⊖ [ ( X P − Z P ) ( X Q + Z Q ) + ( X P + Z P ) ( X Q − Z Q ) ] 2 X ⊖ [ ( X P − Z P ) ( X Q + Z Q ) − ( X P + Z P ) ( X Q − Z Q ) ] 2 \frac{X_{\oplus}}{Z_{\oplus}} = \frac{Z_{\ominus}}{X_{\ominus}}\frac{({X_P}{Z_P}-{X_Q}{Z_Q})^2}{({X_P}{Z_Q}-{X_Q}{Z_P})^2}=\frac{Z_{\ominus}[(X_P-Z_P)(X_Q+Z_Q)+(X_P+Z_P)(X_Q-Z_Q)]^2}{X_{\ominus}[(X_P-Z_P)(X_Q+Z_Q)-(X_P+Z_P)(X_Q-Z_Q)]^2} ZX=XZ(XPZQXQZP)2(XPZPXQZQ)2=X[(XPZP)(XQ+ZQ)(XP+ZP)(XQZQ)]2Z[(XPZP)(XQ+ZQ)+(XP+ZP)(XQZQ)]2
相应地,可计算 ( X ⊕ , Z ⊕ ) (X_{\oplus}, Z_{\oplus}) (X,Z)
{ X ⊕ = Z ⊖ [ ( X P − Z P ) ( X Q + Z Q ) + ( X P + Z P ) ( X Q − Z Q ) ] 2 Z ⊕ = X ⊖ [ ( X P − Z P ) ( X Q + Z Q ) − ( X P + Z P ) ( X Q − Z Q ) ] 2 \left\{\begin{matrix} X_{\oplus}=Z_{\ominus}[(X_P-Z_P)(X_Q+Z_Q)+(X_P+Z_P)(X_Q-Z_Q)]^2\\ Z_{\oplus}=X_{\ominus}[(X_P-Z_P)(X_Q+Z_Q)-(X_P+Z_P)(X_Q-Z_Q)]^2 \end{matrix}\right. {X=Z[(XPZP)(XQ+ZQ)+(XP+ZP)(XQZQ)]2Z=X[(XPZP)(XQ+ZQ)(XP+ZP)(XQZQ)]2

F ( P ⊖ Q ) F(P\ominus Q) F(PQ)的“difference”为固定的,则可归一化为 ( X P : 1 ) (X_P:1) (XP:1)

伪加法运算中,与曲线参数A,B均无关。

具体的算法实现可如下:
在这里插入图片描述

2.3 P1上的伪double运算

可参见2.2节中类似的公式转换,可计算 ( X [ 2 ] P , Z [ 2 ] P ) (X_{[2]P},Z_{[2]P}) (X[2]P,Z[2]P)
{ X [ 2 ] P = ( X P + Z P ) 2 ( X P − Z P ) 2 Z [ 2 ] P = ( 4 X P Z P ) [ ( X P − Z P ) 2 + ( A + 2 ) 4 ( 4 X P Z P ) ] \left\{\begin{matrix} X_{[2]P}=(X_P+Z_P)^2(X_P-Z_P)^2\\ Z_{[2]P}=(4X_PZ_P)[(X_P-Z_P)^2+\frac{(A+2)}{4}(4X_PZ_P)] \end{matrix}\right. {X[2]P=(XP+ZP)2(XPZP)2Z[2]P=(4XPZP)[(XPZP)2+4(A+2)(4XPZP)]
其中:
4 X p Z P = ( X P + Z P ) 2 − ( X P − Z P ) 2 4X_pZ_P=(X_P+Z_P)^2-(X_P-Z_P)^2 4XpZP=(XP+ZP)2(XPZP)2

伪double运算中,X的值与曲线参数A,B均无关;Z的值仅使用了曲线的参数A,与曲线参数B无关。

相应的算法实现如下:
在这里插入图片描述
上面算法的步骤7中,做的是一个与常量 ( A + 2 ) / 4 (A+2)/4 (A+2)/4的乘积运算。因此实际A参数越小,越能减少该常量乘积运算的开销。

参考资料:
[1] 论文《Speeding the Pollard and Elliptic Curve Methods of Factorization》
[2] 论文《Montgomery curves and their arithmetic》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值