首先是加法,请看下图。过曲线上两点 A 画一条直线,找到直线与椭圆曲线的交点,我们将该交点关于 x 轴对称位置的点定义为 A + B。在这里,由两个点 A,B 按上述过程求得的点,就被定义为椭圆曲线上的点
A + B。这样的运算称为“椭圆曲线上的加法运算”。
当两点重合时,“过两点的直线”就应该是“曲线在点 A 的切线”,然后找到该切线与椭圆曲线的交点,将该交点关于 x 轴对称位置的点定义为 A + A,也就是 2A。这样的运算称为“椭圆曲线上的二倍运算”。
此外,我们将点 4 关于 x 轴对称位置的点定义为 -A。这样的运算称为“椭圆曲线上的正负取反运算”。过 A 和 -A 的直线与椭圆曲线之间只有 A 和 -A 这两个交点,于是我们认为这条直线与椭圆曲线在“无限远点”
的位置相交。这个无限远点在图像上画不出来,我们将其记作 O。可以发现,无限远点 O 的作用和数字 0 相近,A + (-A) = 0 是永远成立的。
基于上述“运算” 规则,给定椭圆曲线上的某一点 G,我们就可以求出 2G,3G,…等点的坐标。2G 相当于 G 的二倍,而 3G 则相当于 G + 2G。也就是说,当给定点 G 时,“已知数 x 求点 xG 的问题”并不困难。
但反过来,“已知点 xG 求数 x 的问题”则非常困难。这就是椭圆曲线密码中所利用的“椭圆曲线上的离散对数问题”。
有限域上的椭圆曲线上运算
椭圆曲线的图像要形成一条光滑的曲线。其坐标 x,y 必须都是实数。即“实数域 R 上的椭圆曲线”。
椭圆曲线密码所使用的椭圆曲线并非在实数域 R 上,而是在有限域 Fp 上。有限域 Fp 是指对于某个给定的质数P,由 0,1,…,p-1 共 p 个元素所组成的整数集合中定义的加减乘除运算。