您当前的位置: 首页 >  ar

mutourend

暂无认证

  • 1浏览

    0关注

    661博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

edwards25519 double算法

mutourend 发布时间:2019-08-07 12:27:27 ,浏览量:1

edwards25519 curve表示为:

− x 2 + y 2 = 1 + d x 2 y 2 , d = − ( 121665 / 121666 ) , q = 2 255 − 19 -x^2+y^2=1+dx^2y^2,d=-(121665/121666),q=2^{255}-19 −x2+y2=1+dx2y2,d=−(121665/121666),q=2255−19

根据博客Extended twisted Edwards curve坐标系中提及:

注意,在Extended坐标系下,可提供更快的加法运算,在Projective坐标系下,可提供更快的double运算!!!实际使用时,可根据不同的计算选择不同的坐标系。

所以,double运算采用论文《Twisted Edwards Curves》中的Doubling in Projective Twisted Coordinates算法: 在这里插入图片描述 对于edwards25519 curve, a = − 1 a=-1 a=−1。同时根据https://doc-internal.dalek.rs/curve25519_dalek/backend/serial/curve_models/index.html 中定义,对应的Projective坐标为 ( W 1 : W 2 : W 3 ) (W_1:W_2:W_3) (W1​:W2​:W3​),详细的计算过程为: B = ( X 1 + Y 1 ) 2 ; C = X 1 2 ; D = Y 1 2 ; E = a C = − X 1 2 ; F : = E + D = Y 1 2 − X 1 2 ; H = Z 1 2 ; J = F − 2 H = Y 1 2 − X 1 2 − 2 Z 1 2 B=(X_1+Y_1)^2; C=X_1^2;D=Y_1^2;E=aC=-X_1^2;F:=E+D=Y_1^2-X_1^2; H=Z_1^2;J=F-2H=Y_1^2-X_1^2-2Z_1^2 B=(X1​+Y1​)2;C=X12​;D=Y12​;E=aC=−X12​;F:=E+D=Y12​−X12​;H=Z12​;J=F−2H=Y12​−X12​−2Z12​ ⇒ W 1 = X 3 = ( B − C − D ) ∗ J = [ ( X 1 + Y 1 ) 2 − ( X 1 2 + Y 1 2 ) ] ∗ ( Y 1 2 − X 1 2 − 2 Z 1 2 ) \Rightarrow W_1=X_3=(B-C-D)*J=[(X_1+Y_1)^2-(X_1^2+Y_1^2)]*(Y_1^2-X_1^2-2Z_1^2) ⇒W1​=X3​=(B−C−D)∗J=[(X1​+Y1​)2−(X12​+Y12​)]∗(Y12​−X12​−2Z12​) ⇒ W 2 = Y 3 = F ∗ ( E − D ) = ( Y 1 2 − X 1 2 ) ∗ ( − X 1 2 − Y 1 2 ) \Rightarrow W_2=Y_3=F*(E-D)=(Y_1^2-X_1^2)*(-X_1^2-Y_1^2) ⇒W2​=Y3​=F∗(E−D)=(Y12​−X12​)∗(−X12​−Y12​) ⇒ W 3 = Z 3 = F ∗ J = ( Y 1 2 − X 1 2 ) ∗ ( Y 1 2 − X 1 2 − 2 Z 1 2 ) \Rightarrow W_3=Z_3=F*J=(Y_1^2-X_1^2)*(Y_1^2-X_1^2-2Z_1^2) ⇒W3​=Z3​=F∗J=(Y12​−X12​)∗(Y12​−X12​−2Z12​)

∵ W 1 W 3 = X T Z T = X Z = x = ( X 1 + Y 1 ) 2 − ( X 1 2 + Y 1 2 ) Y 1 2 − X 1 2 \because \frac{W_1}{W_3}=\frac{XT}{ZT}=\frac{X}{Z}=x=\frac{(X_1+Y_1)^2-(X_1^2+Y_1^2)}{Y_1^2-X_1^2} ∵W3​W1​​=ZTXT​=ZX​=x=Y12​−X12​(X1​+Y1​)2−(X12​+Y12​)​ ∵ W 2 W 3 = Y Z Z T = Y T = y = X 1 2 + Y 1 2 2 Z 1 2 − ( Y 1 2 − X 1 2 ) \because \frac{W_2}{W_3}=\frac{YZ}{ZT}=\frac{Y}{T}=y=\frac{X_1^2+Y_1^2}{2Z_1^2-(Y_1^2-X_1^2)} ∵W3​W2​​=ZTYZ​=TY​=y=2Z12​−(Y12​−X12​)X12​+Y12​​ ∴ X = ( X 1 + Y 1 ) 2 − ( X 1 2 + Y 1 2 ) ; Y = X 1 2 + Y 1 2 ; Z = Y 1 2 − X 1 2 ; T = 2 Z 1 2 − ( Y 1 2 − X 1 2 ) \therefore X=(X_1+Y_1)^2-(X_1^2+Y_1^2); Y=X_1^2+Y_1^2; Z=Y_1^2-X_1^2; T=2Z_1^2-(Y_1^2-X_1^2) ∴X=(X1​+Y1​)2−(X12​+Y12​);Y=X12​+Y12​;Z=Y12​−X12​;T=2Z12​−(Y12​−X12​)

以上得到的即为 σ : ( ( X : Z ) , ( Y : T ) ) \sigma :((X:Z),(Y:T)) σ:((X:Z),(Y:T))。相应的代码实现为:

// ------------------------------------------------------------------------
// Doubling
// ------------------------------------------------------------------------

impl ProjectivePoint {
    /// Double this point: return self + self
    pub fn double(&self) -> CompletedPoint { // Double()
        let XX          = self.X.square();
        let YY          = self.Y.square();
        let ZZ2         = self.Z.square2();
        let X_plus_Y    = &self.X + &self.Y;
        let X_plus_Y_sq = X_plus_Y.square();
        let YY_plus_XX  = &YY + &XX;
        let YY_minus_XX = &YY - &XX;

        CompletedPoint{
            X: &X_plus_Y_sq - &YY_plus_XX,
            Y: YY_plus_XX,
            Z: YY_minus_XX,
            T: &ZZ2 - &YY_minus_XX
        }
    }
}

由于有: σ : ( ( X : Z ) , ( Y : T ) ) ↦ ( X Y : X T : Z Y : Z T ) ↦ ( T ′ : X ′ : Y ′ : Z ′ ) \sigma :((X:Z),(Y:T))\mapsto(XY:XT:ZY:ZT)\mapsto(T':X':Y':Z') σ:((X:Z),(Y:T))↦(XY:XT:ZY:ZT)↦(T′:X′:Y′:Z′) 对应的 ( X ′ : Y ′ : Z ′ : T ′ ) (X':Y':Z':T') (X′:Y′:Z′:T′)即为extended坐标系表示,有: X ′ = X T ; Y ′ = Z Y ; Z ′ = Z T ; T ′ = X Y X'=XT; Y'=ZY; Z'=ZT; T'=XY X′=XT;Y′=ZY;Z′=ZT;T′=XY

对应的代码实现为:

/// Convert this point from the \\( \mathbb P\^1 \times \mathbb P\^1
    /// \\) model to the \\( \mathbb P\^3 \\) model.
    ///
    /// This costs \\(4 \mathrm M \\).
    pub fn to_extended(&self) -> EdwardsPoint {
        EdwardsPoint {
            X: &self.X * &self.T,
            Y: &self.Y * &self.Z,
            Z: &self.Z * &self.T,
            T: &self.X * &self.Y,
        }
    }

参考资料: [1] Extended twisted Edwards curve坐标系 [2] 论文《Twisted Edwards Curves》 [3] https://doc-internal.dalek.rs/curve25519_dalek/backend/serial/curve_models/index.html

关注
打赏
1664532908
查看更多评论
立即登录/注册

微信扫码登录

0.0453s