众所周知,在域
sagemath证明方法
sagemath是一款强大的开源数学运算软件,基于Python,因此基础语法上和Python几乎一模一样,可以在Jupyter Notebook上运行sagemath环境,也可以在CoCalc上运行实验。通过使用程序语言定义曲线点的加法可以省略大量的繁琐的运算步骤。为了证明椭圆曲线群的结合律,首先需要定义椭圆曲线:
这里我们使用Weierstrass形式的椭圆曲线,其他形式比如Edwards可以类似进行编写。PolynomialRing代表新建一个多元多项式环,里面的参数QQ代表有理数域,即这个多项式环中的多项式系数都是有理数,8代表接下来要用到的变元数量即左边的Px、Py、Qx、Qy、Rx、Ry、A、B,RR代表这8个变元是实数域上的变元。P、Q、R都是椭圆曲线上的点,O是椭圆曲线群中的单位元,从几何图形上看就是无穷远点,因此为了方便定义单位元,这儿四个点统一用射影坐标来表示。I是实数域上通过括 里的多项式生成的理想,可以看到里面的三个多项式正好是椭圆曲线的Weierstrass表示形式,SS就是实数域关于这个理想的商环。
接着需要定义椭圆曲线上点的计算:
这些运算就是直接将椭圆曲线上点的计算步骤转化为程序,需要注意的是加法运算中的计算步骤为了方便是按照仿射坐标的计算步骤来计算的。注意这里的判断点是否在曲线上的方法on_curve使用了椭圆曲线的齐次形式
到现在为止,所有必要的定义都已经定义完毕,即现在椭圆曲线群已经建立,剩下的工作很简单,直接通过上面定义的函数即可验证结合律:
第一行代表三个点互不相同的情况,第二行代表有两个点相同的情况,第三行代表三个点相同的情况,执行以后我们会发现其所有的结果都是True,证明完毕。
几何证明方法
这种证明方法通过几何图像避开了繁琐的代数运算,算是一种证明普通加法计算结合律的比较精巧的证明方法。设椭圆曲线所在的域是代数封闭的(这个假设不影响证明,因为代数闭域上的结合律限制到子域上依然是成立的),P、Q、R、O是四个不同的曲线上的点,其中O是单位元,根据椭圆曲线上的操作,P、Q、-(P+Q)交于一条直线,其他点也是如此,画成一张 格图如下:
其中T、S是余下的两个未知的交点,显然有T=-(Q+(P+R)),S=-((Q+P)+R),那么证明结合律就等价于证明T=S。用反证法来证明,假设
参考资料:
MIT 18.783 Elliptic Curves by Andrew Sutherland
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!