椭圆曲线的数学定义
椭圆曲线是一个在平面上的曲线,定义为所有满足以下方程的点(x, y)所组成的集合:
其中a, b为常数,同时这个方程必须满足 威尔斯定理:
- 这个曲线必须是光滑的,也就是说,不允许出现尖点或者被角。
- 这个曲线必须是非奇异的,也就是不存在重复的点。
- 所有曲线上的点必须在一条直线上有限的集合,即曲线不能无限延伸。
椭圆曲线的定义中,我们要特别注意的是参数 a 和 b,它们决定了曲线的形态。需要注意的是,一旦确定了 a 和 b 的取值,这个椭圆曲线就完全固定了下来。
椭圆曲线上的点加法运算
在椭圆曲线上有两种运算:点加(point addition)和标量乘法(scalar multiplication)。我们首先来介绍点加运算。
假设有两个点 P 和 Q, P = (x1, y1), Q = (x2, y2), 为了求出它们的和 P + Q,我们需要通过一条直线求出它们的交点 R。关于如何通过两个点来求出一条直线,我们可以使用中点公式:
当点 P 和 Q 相同时,我们需要使用切线来求出它们的和。
当椭圆曲线上的点比较多时,点加运算会相对麻烦,而且存在基于中心点的不对称问题。因此,我们可以通过使用雅可比坐标系来解决这个问题,使用雅可比坐标系可以将点加速为常数时间。
在雅可比坐标系下,我们定义一个点 (x,y,z) 表示为 (x/z^2,y/z^3)。 对于一个椭圆曲线上的点 P1 和 P2,我们通过以下公式来计算它们的和:
这就是在雅可比坐标系下,计算椭圆曲线上两个点的加法。
示例
以下是一个简单的双曲线椭圆曲线的图示,箭头表示点加运算。两个点 P 和 Q 的和为 R。
![]()
结论
椭圆曲线是许多密码学算法的基础,例如椭圆曲线密钥交换(ECDH)和数字签名算法(ECDSA)。了解如何在椭圆曲线上进行点加运算是深入学习这些算法的基础。