Elliptic-Curves

Edwards / Montgomery ECC 與 Weierstrass 實施?

  • January 16, 2017

因此,假設我想要執行 Ed448 或 Ed25519 數字簽名,或者想要執行 DH 密鑰交換。進一步假設這些曲線(Curve448 或 Curve25519)是必需的。

但問題是,我只給出了一個受約束的設備,它只允許 Weierstrass-Computations。或者,我有一個可以執行 Weierstrass-Operations 但不能執行 Montgomery / Edwards 操作的軟體庫。這裡的“運算”表示點加法和標量乘法。進一步注意,兩個設備/庫都支持任意(Weierstrass)曲線。

所以這引發了一個問題:

是否可以使用 Weierstrass 引擎執行 Edwards / Montgomery 操作?如果可以,如何操作?

如果我正確理解您的問題,那麼您實質上是在詢問 Edwards 和 Montgomery 曲線中的點是否可以用 Weierstrass 座標表示。這是真實的; 實際上,特徵域上的任何橢圓曲線 $ \neq2,3 $ 可以用 Weierstrass 形式表示 $ \mathcal{E}_{w}^{a, b} : y^2 = x^3 + ax + b $ ,並且通過擴展它的點也可以。

那麼,問題就變成了“轉換有多容易”?

對於形式的蒙哥馬利曲線 $ \mathcal{E}_m^{A, B}: By^2 = x^3 + Ax^2 + x $ ,它出奇的簡單。你可以映射點 $ (x, y) \in \mathcal{E}_m^A $ 到 Weierstrass 曲線 $ \mathcal{E}_w^{1/B^2-A^2/3B^2,A(2A^2 - 9)/27B^3} $ 通過地圖 $ ((x + A/3)/B, y/B) $ . 逆映射很明顯, $ (Bx - A/3, By) $ . 如果 $ B=1 $ ,這是實踐中使用的每條蒙哥馬利曲線的情況,這大大簡化了。

對於扭曲的 Edwards 曲線 $ \mathcal{E}_{e}^{a, d} : ax^2 + y^2 = 1 + dx^2y^2 $ (其中愛德華茲曲線是子集,其中 $ a = 1 $ )還有一個指向 Weierstrass 曲線的簡單映射,它首先將曲線轉換為 Montgomery 格式。特別是,我們可以映射 $ \mathcal{E}_e^{a, d} $ 至 $ \mathcal{E}_m^{2(a + d)/(a - d), 4/(a - d)} $ 通過 $ (x, y) \mapsto \left(\frac{1 + y}{1 - y}, \frac{1 + y}{x - xy}\right) $ , 逆 $ (x, y) \mapsto \left(\frac{x}{y}, \frac{x-1}{x+1}\right) $ . 將這些映射與上述組合,我們得到適當的 Weierstrass 曲線的映射 $ \mathcal{E}_w^{a, b} $ . 與標量乘法的成本相比,這些轉換都不是非常昂貴。

引用自:https://crypto.stackexchange.com/questions/27842