椭圆曲线上的加法
椭圆曲线上的加法 免责声明:这对椭圆曲线这一丰富话题没有任何根据。它简化了很多。由于椭圆曲线最近在加密方面引起了媒体的广泛关注,我想提供一些小见识,以了解如何在椭圆曲线上进行“计算”实际上是如何工作的。 介绍 椭圆曲线是(x,y)表单平面中的点集y^2 = x^3+Ax+B。(此外,4A^3+27B^2 ≠ 0为了避免令人讨厌的奇异性。)您可以在任何字段中考虑这些曲线。如果使用实数字段,则曲线可以可视化,看起来像这样: 资源 这些曲线的特殊之处在于它们具有内置的算术运算,类似于加法运算。您可以添加和减去点,并且此操作既是关联的又是交换的(阿贝尔群)。 加法如何工作? 注意:在椭圆曲线上添加点并不直观。之所以定义这种加法,是因为它具有某些不错的属性。很奇怪,但是行得通。 当椭圆曲线形成一个组时,存在一个等于0 的加法标识。也就是说,添加0到任何点都不会改变结果。此加性标识是无穷大的“点”。平面上的所有线都在无穷远处包含此点,因此添加它没有区别。 假设任何给定的线在三个点处可能与曲线相交0,而这三个点的总和为0。牢记这一点,请看一下这张图片。 资源 现在,自然的问题是,什么是P+Q?好吧,如果是P+Q+R = 0,那么P+Q = -R(或者写成R')。哪里-R呢 它是其中R + (-R) = 0,这是在x轴的另一侧,从R使得通过它们的行是垂直的,只有相交R,-R以及0。您可以在此图像的第一部分看到这一点: 资源 您可以在这些图像中看到的另一件事是,一个点与自身的总和意味着该线与曲线相切。 如何找到直线和椭圆曲线的交点 在两个不同点的情况下 通常,只有一条直线穿过两点P=(x0,y0), Q=(x1,y1)。假设它不是垂直的并且两个点是不同的,我们可以将其写为y = m*x+q。当我们想找到与椭圆曲线的交点时,我们可以写成 0 = x^3+Ax+B-y^2 = x^3+Ax+B-(m*x+q)^2 这是三次多项式。这些通常不那么容易求解,但是我们已经知道该多项式的两个零:我们要相加的两个点的两个x坐标x0, x1! 这样,我们就可以分解出线性因子(x-x0),(x-x1)并且剩下第三个线性因子,其根是x点的-坐标R。(-R。因为太多的对称性,请注意,如果R = (x2,y2)随后-R = (x2,-y2)的。-从该组;它不是一个矢量负)。 如果P自己加一点 在这种情况下,我们必须计算处的曲线的切线P=(x0,y0)。我们可以直接写入m,并q在以下方面A,B,x0,y0: 3*x0^2 + …