曲线
知识点
映射
在代数几何中,如果存在一个映射将一条曲线上的点映射到另一条曲线上的点,且这个映射保持曲线上点的数量不变,那么我们称这个映射是一个保持曲线阶不变的映射。换句话说,如果有两条曲线
简单来说,这意味着两条曲线之间存在一种一一对应的关系,通过这个映射,我们可以保持曲线上的点的数量不变。这种性质在研究曲线的结构和性质时非常重要。
奇异椭圆曲线
相关学习论文 :
1、 Elliptic Curves: Number Theory and Cryptography第二章 2.10 Singular Curves,P59-P62
2、 The Arithmetic of Elliptic Curves, pp 55-58
在代数几何和椭圆曲线理论中,当椭圆曲线参数
在椭圆曲线上,奇异点可以分为几类,包括尖点、节点和无理点等。尖点是曲线上的一个奇异点,其坐标可以通过特定的模运算来表示,而节点是曲线上一个点与自身相交的点,这会导致曲线在该点处的切线不唯一。无理点则是曲线上的一个点,其坐标不是有理数。
奇异椭圆曲线在代数几何和数论中都具有重要的作用。尽管大多数情况下,我们处理的椭圆曲线都是光滑的(即没有奇异点),但有时需要考虑奇异椭圆曲线,特别是当我们研究椭圆曲线上的点的结构和性质时。
注:(奇异点可以理解为高数中的导数不存在的点)
- 尖点(Cusp)
尖点是曲线上的一个奇异点,在该点处曲线具有“尖锐”的转折。对于一个方程表示的曲线,如果在某个点处导数趋向于无穷大或者在该点处曲线无法定义一个明确的切线,则这个点可能是一个尖点。
几何上,尖点看起来像一个尖锐的角。例如,在曲线

- 节点(Node)
节点是曲线上另一种类型的奇异点,它通常是曲线在该点处相交的地方。节点可以认为是两个光滑分支在该点相交,且在该点处曲线具有两个不同的切线。
几何上,节点看起来像一个交叉点。例如,在曲线

超奇异椭圆曲线
1、超奇异椭圆曲线(Supersingular Elliptic Curve):在特征为
2、非超奇异椭圆曲线(Ordinary Elliptic Curve): 在特征为
超奇异椭圆曲线判别方法
Trace of Frobenius计算椭圆曲线的 Frobenius endomorphism(同态) 的 trace(迹),记作
- 如果
,则椭圆曲线是超奇异的。 - 如果
,则椭圆曲线是非超奇异的。
SageMath 提供了一些内置函数 trace_of_frobenius()
来计算椭圆曲线的 Frobenius trace
E = EllipticCurve(F, [a, b])
# 计算 Frobenius trace t
t = E.trace_of_frobenius()
SageMath 提供了查看 Frobenius 映射特征多项式的函数 frobenius_polynomial()
E = EllipticCurve(F, [a, b])
# 获取 Frobenius 映射的特征多项式
frobenius_poly = E.frobenius_polynomial()
Frobenius迹的具体含义
在有限域
具体来说,Frobenius 迹
其中
genus 0 curves(亏格为0的曲线)
在代数几何中,曲线的“genus”(亦称为“维数”或“种数”)是一个重要的概念,它描述了曲线的几何形状。在这个背景下,genus 0 曲线指的是代数曲线,其genus为0。
对于实数域上的曲线,genus 0 意味着曲线可以视为是一个连通的不可约曲线,没有“洞”或“孔”。换句话说,它可以在平面上连续变形成一个球面(即球面的genus也是0)。
代数曲线的genus可以解释为“洞”的数量。Genus为0表示曲线没有洞,Genus为1表示有一个洞,以此类推。
在曲面理论中,"genus" 通常被翻译为 "亏格" 或 "缺失"。亏格是描述曲面的一种拓扑不变量,表示曲面的拓扑性质中“缺失”的部分。对于一般的曲面,亏格可以理解为“孔”的数量,比如球面的亏格为0(因为没有孔),环面的亏格为1(因为有一个孔),双环面的亏格为2,以此类推。
1. 曲线
注
相关论文:关于循环群、有限域和离散对数问题的说明
曲线
引理:
设
现在我们可以确定
定理:
将曲线上的离散对数问题简化为
中的离散对数问题
情况1:当 时
有:
设
代码写法为:
R.<w> = GF(q^2, modulus=w**2 - D)
modulus
(模数)在这个函数中的作用是指定一个多项式,它定义了在 GF(p)中进行加法和乘法运算时所使用的模数。通常,这个多项式是 GF(p)上的一个不可约多项式,这意味着它不能被分解为两个或更多次数更低的多项式的乘积。使用模数的好处之一是它可以限制结果的大小,使得它们保持在一个有限的范围内。
因此,我们可以定义一个(bijective map)双射映射,代表着将椭圆曲线上的点映射到另一个椭圆曲线上的点是一一对应的。
映射公式为:
注:其中
例题:例题:[2022 SEETF] The True ECC
情况2:当 时
设
设
然后有:
因此,我们可以定义一个(bijective map)双射映射,映射公式为:
例题:Ellipse Curve Cryptography(椭圆曲线加密)
常见曲线
Weierstrass curves(魏尔斯特拉斯曲线)
我们在椭圆曲线加密中使用的曲线方程一般都是Weierstrass曲线方程,下面我们来看一下椭圆曲线的定义。
设
Weierstrass曲线方程的标准形式:
,
一般方程形式:
,曲线参数都是在有限域 上的, 且满足 ,即在密码学中我们选取的曲线要求是非奇异椭圆曲线。
我们在 sagemath 中能构建椭圆曲线方程的函数 EllipticCurve()
构建的是 Weierstrass curves 。
在椭圆曲线
(1)
(2)若
(3)当
如果
一般地,我们将
Montgomery curves(蒙哥马利曲线)
曲线方程:
点加:
其中:
倍乘:
其中:
映射:
- 映射为Weierstrass 曲线:
其中:
Edwards Curves(爱德华兹曲线)
曲线方程的形式1:
,
曲线方程的形式2:
点加:
点的取反:
曲线上任意点
映射:
- 映射为 Weierstrass 曲线:
其中:
相关论文 Edwards Elliptic Curves 理论在第 22—23 页
- 将
映射为:
相关论文 Faster addition and doubling on elliptic curves 理论在第 5 页
映射的实现基于有限域p,令
则有:
代码实现:
assert P[0] ^ 2 + P[1] ^ 2 - c ^ 2 * (1 + d * P[0] ^ 2 * P[1] ^ 2) == 0
# https://eprint.iacr.org/2007/286.pdf page 5
F = GF(p)
d = F(d) * F(c) ^ 4
def phi(P):
return (P[0] / c, P[1] / c)
P = phi(P)
Q = phi(Q)
assert P[0] ^ 2 + P[1] ^ 2 - (1 + d * P[0] ^ 2 * P[1] ^ 2) == 0
Twisted Edwards Curves(扭曲的爱德华兹曲线)
曲线方程:
点加:
倍乘:
其中:
点的取反:
曲线上任意点
映射:
- 映射为 Montgomery 曲线
其中:
相关论文 Twisted Edwards Curves 理论在第 4 页
这篇论文中还提到了,将扭曲的爱德华兹曲线双有理等价于另一种扭曲的爱德华兹曲线的方法。(mark⭐)
Hessian Curves(海森曲线)
曲线方程:
, 有限域 ,
点加:
倍乘:
点的取反:
曲线上任意点
映射:
- 将 Hessian Curves(海森曲线)映射为 Weierstrass 曲线:
(其中 ,令 )
坐标的映射为:
其中
参考wiki介绍:Hessian form of an elliptic curve
另一篇参考论文:Hessian Elliptic Curves and Side-Channel Attacks
例题: https://blog.maple3142.net/2023/07/09/cryptoctf-2023-writeups/#barak
Twisted Hessian Curves(扭曲的海森曲线)
当 a = 1 时,即为海森曲线;所以海森曲线是扭曲的海森曲线的一个特例
曲线方程:
,
点加:
倍乘:
点取反:
点
映射:
- 将 Twisted Hessian Curves(扭曲的海森曲线)映射为 Weierstrass 曲线:
其中:
def THessian_to_Weierstrass(P):
x, y = P
A = (d ** 3 - 27 * a) * pow(3 + 3 * y + d * x, -1, p)
u = (x * A) * pow(3, -1, p) - (d ** 2) * pow(4, -1, p)
v = A * (1 - y) * pow(2, -1, p)
return (u, v)
a4 = -(d ** 4 + 216 * d * a) * pow(48, -1, p)
a6 = (d ** 6 - 540 * d ** 3 * a - 5832 * a ** 2) * pow(864, -1, p)
相关论文 Elliptic Curves, Group Law, and Efficient Computation 第 40页
参考 wiki:https://en.wikipedia.org/wiki/Twisted_Hessian_curves
Huff Curves(哈夫曲线)
曲线方程:
点加:
倍乘:
点取反:
-G = mul(G.order - 1, G)
映射:
- 映射为 Weierstrass 曲线形式:
其中:
例题:
extended Jacobi quartic curve(扩展的雅可比四次曲线)
曲线的一般方程:
点加:
映射:
- 映射为 Weierstrass 曲线:
相关论文 Elliptic Curves, Group Law, and Efficient Computation 第 38-39 页