首页 > 其他分享 >Montgomery Curves and Weierstrass Curves

Montgomery Curves and Weierstrass Curves

时间:2024-10-16 15:44:15浏览次数:1  
标签:13 right frac pmod Curves Montgomery Weierstrass left

Weierstrass Curves
Weierstrass Curves形如

\(y^2=x^3+Ax+B\)

其中\(4A^3+27B^2≠0\),这种形式称为Weierstrass Form。

Weierstrass Curves上的运算
在椭圆曲线(此处即为Weierstrass Curves)上,可以定义点之间的加法运算,其满足:

  1. 单位元\(O\)为无穷远点
  2. 对于曲线上的两点\(P\)和\(Q\),取经过\(P\)和\(Q\)的直线,这条直线与椭圆曲线相较于最多三个点,其中两个点是\(P\)和\(Q\),如果第三个点存在且不与\(P\)和\(Q\)重合,记第三个点为\(-R\),那么满足\(P+Q-R=O\),即\(P+Q=R\)。
  3. 对一点\(R=(x_3,y_3)\),其加法逆元\(-R=(x_3,-y_3)\),也即点\(R\)沿\(x\)轴的对称点。
图片名称

那么,对于Weierstrass Curves在有限域上的运算便有:

  1. 有限域的加法逆元
    \(P⁡(x,y)\)的加法逆元是\((x,-y\pmod{p})=(x,p-y)\)
  2. 斜率的计算分为两种情况,分别为\(P=Q\)(也即\(P\)和\(Q\)为曲线上的切点)和\(P≠Q\),计算过程如下:
    \( k = \left\{ \begin{matrix} \frac{3x_{1}^{2} + a}{2y_{1}} & {P = Q} \\ \frac{y_{2} - y_{1}}{x_{2} - x_{1}} & {P \neq Q} \end{matrix} \right.\)
  3. 有限域的加法
    \(P⁡(x_1,y_1 ),Q⁡(x_2,y_2 )和R⁡(x_3,y_3 )\)三点(其中\(R\)是直线\(PQ\)与曲线交点关于\(x\)轴的对称点,即有\(R=P+Q\))有如下关系:
    \( \left\{ \begin{array}{l} {x_{3} \equiv k^{2} - x_{1} - x_{2}~\left( {\text{mod}~p} \right)} \\ {y_{3} \equiv k\left( {x_{1} - x_{3}} \right) - y_{1}~\left( {\text{mod}~p} \right)} \end{array} \right.\)



Weierstrass Curves上的基点运算
下面以曲线

$y^2≡x^3+2x+1 \pmod{13}$
在模$13$运算下为例,也即$A=2$,$B=1$,$p=13$,$\mathbb{F}_p=\mathbb{F}_13$。选取基点(base point)$G=(8,3)$,不妨可以验证基点$G$是否在曲线之上。通过计算有
$y^2=3^2≡9 \pmod{13}=529=8^3+2⋅8+1=x^3+2x+1$
可见选取的基点$G$位于曲线之上。

1.\(2G\)的计算
下面首先进行2G的计算,对于这种形如2^k G的运算可以认为是P=Q=2^(k⁄2) G的情况进行计算。对于此处,即有P=Q=(8,3)对应上节所述的切点情况,计算过程如下:

$k≡\frac{3⋅8^2+3}{2⋅3} \pmod{13}≡12⋅6^{-1} \pmod{13}≡12⋅11 \pmod{13}≡2 \pmod{13}$
$x≡2^2-8-8 \pmod{13}≡-12 \pmod{13}≡1 \pmod{13}$
$y≡2(8-1)-3 \pmod{13}≡11 \pmod{13}$
如此计算获得了$2G$对应的点坐标为$2G=(1,11)$。

2.\(3G\)的计算
对于\(3G\)的计算,可以认为\(P=2G=(1,11)\),\(Q=G=(8,3)\),\(3G=P+G\),也即上节所述的非切点的情况,计算过程如下:

$k≡\frac{3-11}{8-1} \pmod{13}≡-8⋅7^{-1} \pmod{13}≡5⋅2 \pmod{13}≡10 \pmod{13}$
$x≡10^2-8-1 \pmod{13}≡91 \pmod{13}≡0 \pmod{13}$
$y≡10(1-0)-11 \pmod{13}≡-1 \pmod{13}≡12 \pmod{13}$
如此计算获得了$3G$对应的点坐标为$3G=(0,12)$。

通过类似与上述过程的运算,可以依次获得\(4G=(2,0)\),\(5G=(0,1)\),\(6G=(1,2)\),\(7G=(8,10)\)。在计算\(8G\)时,若是通过\(P=Q=4G\)的方式进行计算会发现\(4G\)的\(y\)为\(0\),从而导致\(k\)指向无穷大,亦或是通过\(P=7G\),\(Q=G\)的方式进行计算会发现\(G\)和\(7G\)具有相同的\(x\),同样导致\(k\)指向无穷大。
事实上,此处有\(8G=O\),也即\(8G\)对应了椭圆曲线的无穷远点(类似于整数中的\(0\))。对于无穷远点,同样可以进行加法运算,如对\(P=O\),\(Q=G\)进行加法有

$P+Q=O+G=G$
此外,对于椭圆曲线而言其存在阶(Order)的概念。如上述的曲线,因$9G=8G+G=O+G=G⇒8G=0$,故对于基点$G=(8,3)$有$\mbox{ord}⁡(G)=8$。阶的概念描述了椭圆曲线在有限域$\mathbb{F}_p$中对于基点$G$生成元素的个数。需要注意,对于相同椭圆曲线的不同基点选择,可能对应了不同的阶,如对于基点$G=(1,2)$有$\mbox{ord}⁡(G)=4$,读者可自行计算验证。

Montgomery curve
对于椭圆曲线而言,Montgomery curve形式同样是较为常用表达形式,具体如下:

$Ky^2=x^3+Jx^2+x$
其中,$K(J^2-4)≠0$。 事实上,现阶段应用最为广泛的椭圆曲线之一——Curve25519,便是采用了这种形式的曲线,其具有如计算迅速等优点。对于Curve25519具有如下形式:
$y^2≡x^3+486662x^2+x\pmod{2^{255}-19}$

对于Montgomery curve,可以在一定条件下转换为Weierstrass Curves,转换过程可以通过如下过程:
1.消除等式左侧系数\(K\)
定义

$ \left\{ \begin{array}{l} {u = \frac{x}{K}} \\ {v = \frac{y}{K}} \end{array} \right.$

带入Montgomery curve表达式\(Ky^2=x^3+Jx^2+x\)有

$K\left( {Kv} \right)^{2} = \left( {Ku} \right)^{3} + J\left( {Ku} \right)^{2} + Ku$
$v^{2} = u^{3} + \frac{J}{K}u^{2} + \frac{1}{K^{2}}u$

2.消除等式右侧二次项
定义

$\left\{ \begin{array}{l} {u = a - \frac{J}{3K}} \\ {v = b} \end{array} \right.$

带入上述表达式有

$\begin{matrix} b^{2} & = & {\left( {a - \frac{J}{3K}} \right)^{3} + \frac{J}{K}\left( {a - \frac{J}{3K}} \right)^{2} + \frac{1}{K^{2}}\left( {a - \frac{J}{3K}} \right)} \\ & = & {\left( {a^{3} - \frac{J}{K}a^{2} + \frac{J^{2}}{3K^{2}}a - \frac{J^{3}}{27K^{3}}} \right) + \frac{J}{K}\left( {a^{2} - \frac{2J}{3K}a + \frac{J^{2}}{9K^{2}}} \right) + \frac{1}{K^{2}}\left( {a - \frac{J}{3K}} \right)} \\ & = & {a^{3} + \left( {- \frac{J}{K} + \frac{J}{K}} \right)a^{2} + \left( {\frac{J^{2}}{3K^{2}} - \frac{2J^{2}}{3K^{2}} + \frac{1}{K^{2}}} \right)a + \left( {- \frac{J^{3}}{27K^{3}} + \frac{J^{3}}{9K^{3}} - \frac{J}{3K^{3}}} \right)} \\ & = & {a^{3} + \frac{3 - J^{2}}{3K^{2}}a + \frac{2J^{3} - 9J}{27K^{2}}} \end{matrix}$

此时,\((a,b)\)即为Weierstrass Curves上的点。转换式为:

$\left\{ \begin{array}{l} {x = Ka - \frac{J}{3}} \\ {y = Kb} \end{array} \right.,\left\{ \begin{array}{l} {A = \frac{3 - J^{2}}{3K^{2}}} \\ {B = \frac{2J^{3} - 9J}{27K^{2}}} \end{array} \right.$

例如,就上节所述的Weierstrass Curves

$b^{2} \equiv a^{3} + 2a + 1~\left( {\text{mod}~13} \right)$

转换为Montgomery curve有

$y^{2} \equiv x^{3} + 6x^{2} + x~\left( {\text{mod}~13} \right)$
$\left\{ \begin{array}{l} {x \equiv a + 11~\left( {\text{mod}~13} \right)} \\ {y \equiv b~\left( {\text{mod}~13} \right)} \end{array} \right.$

此外Montgomery curve同样可以转换为Twisted Edwards curve(形式如\(ax^2+y^2=1+dx^2 y^2\)),此处不再赘述。





参考
椭圆曲线 - 杰哥的知识库 (jia.je)
密码学[3]:椭圆曲线-腾讯云开发者社区-腾讯云 (tencent.com)

标签:13,right,frac,pmod,Curves,Montgomery,Weierstrass,left
From: https://www.cnblogs.com/miro-cnblogs/p/18470114

相关文章

  • Montgomery 模乘
    Montgomery模乘将数字变换到Montgomery数域,使得在Montgomery数域计算\(ab\bmodN\)是容易的,最后从Montgomery数域将数字变换回来。由于需要两次变换,Montgomery乘法比Barrett乘法慢一点;但如果需要大量计算,由于中间过程可以全部在Montgomery数域完成,Montgomery乘法......
  • 52 Things: Number 42: Look at your C code for Montgomery multiplication above; c
    52Things:Number42:LookatyourCcodeforMontgomerymultiplicationabove;canyoudeterminewhereitcouldleaksidechannelinformation?52件事:数字42:看看上面蒙哥马利乘法的C码;你能确定它可能在哪里泄露侧通道信息吗? Thisisthelatestinaseriesofblog......
  • 52 Things: Number 23: Write a C program to implement Montgomery arithmetic.
    52Things:Number23:WriteaCprogramtoimplementMontgomeryarithmetic.52件事:第23件:写一个C程序来实现Montgomery算术。 Thisisthelatestinaseriesofblogpoststoaddressthelistof这是一系列博客文章中最新的一篇'52ThingsEveryPhDStudentShould......
  • 52 Things: Number 22: How do you represent a number and multiply numbers in Mont
    52Things:Number22:HowdoyourepresentanumberandmultiplynumbersinMontgomeryarithmetic?52件事:数字22:在蒙哥马利算术中,你如何表示一个数字并将其相乘? Thisisthelatestinaseriesofblogpoststoaddressthelistof '52ThingsEveryPhDStudentSh......
  • Lecture 11 Geometry 2 (Curves and Surfaces)
    Lecture11Geometry2(CurvesandSurfaces)Curves曲线BézierCurves贝塞尔曲线用一系列控制点定义摸一个曲线,这些控制点会定义曲线满足的一些性质图中通过三个控制点,可以定义曲线起始点和结束点一定在\(p_0\)和\(p_3\)上,并且起始的切线和结束的切线一定都是\(p_0p_1\)......
  • SciTech-Mathmatics-Real Analysis-Cantor Set Theory + Bolzono-Weierstrass Theorem
    CantorSet,Priciple:1-1bi-directionalmappingtodeterminewhethertwosets(infiniteorfinite)AandBhavethesamesize.false:[0,1]~(0,+∞):闭区间[0,1]上全部的点作成的集合是不对等于\(Z^{+}\)正整数集上全部的点作成的集合。true:(0,1)~(......
  • 样条曲线 spline curves
        所谓样条曲线是指给定一组控制点而得到一条曲线,曲线的大致形状由这些点予以控制,一般可分为插值样条和逼近样条两种,插值样条通常用于数字化绘图或动画的设计,逼近样条一般用来构造物体的表面。    样条曲线是经过一系列给定点的光滑曲线。最初,样条曲线都是借助于物理样......
  • 曲线艺术编程 coding curves 第十四章 其它曲线(Miscellaneous Curves)
    第十四章其它曲线(MiscellaneousCurves)原作:KeithPetershttps://www.bit-101.com/blog/2022/11/coding-curves/译者:池中物王二狗(sheldon)blog:http://cnblogs.com/willian/源码:github:https://github.com/willian12345/coding-curves曲线艺术编程系列第十四章这是......
  • 曲线艺术编程 coding curves 第十二章 超级椭圆与超级方程(Superellipses and Superfor
    第十三章超级椭圆与超级方程(SuperellipsesandSuperformulas)原作:KeithPetershttps://www.bit-101.com/blog/2022/11/coding-curves/译者:池中物王二狗(sheldon)源码:github:https://github.com/willian12345/coding-curves曲线艺术编程系列第十三章在这一章我们将讨论......
  • 曲线艺术编程 coding curves 第十二章 玑镂(扭索)纹
    第十二章玑镂(扭索)纹原作:KeithPetershttps://www.bit-101.com/blog/2022/11/coding-curves/译者:池中物王二狗(sheldon)源码:github:https://github.com/willian12345/coding-curves曲线艺术编程系列第12章玑镂纹是一种错综复杂且非常迷人的图案。它经常被绘制在银行钞......