椭圆曲线密码学:原理、应用与曲线选择
1. 椭圆曲线群
椭圆曲线上的点可以相加,这些点的集合构成一个群。根据群的定义,如果点P和Q属于某条给定曲线,那么P + Q也属于该曲线。此外,加法满足结合律,即对于任意点P、Q和R,有(P + Q) + R = P + (Q + R)。
在椭圆曲线点群中,单位元是无穷远点,记为O,对于任意点P,有P + O = P。每个点P = (xP, yP)都有一个逆元 -P = (xP, -yP),使得P + (-P) = O。
在实际应用中,大多数基于椭圆曲线的密码系统使用的x和y坐标是模素数p的数(即在有限域Zp中的数)。椭圆曲线密码系统的安全性取决于曲线上的点数。虽然有一个经验法则是曲线上大约有p个点,但可以使用Schoof算法来计算精确的点数。例如,以下代码展示了如何使用SageMath计算曲线y² = x³ - 4x在Z191上的点数:
sage: Z = Zmod(191)
sage: E = EllipticCurve(Z, (-4,0))
sage: E.cardinality()
192
在上述代码中,首先定义变量Z为模191的整数集合,然后定义变量E为Z上系数为 -4和0的椭圆曲线,最后计算曲线上的点数(即基数、群阶或简称为阶),这个计数包括无穷远点O。
2. 椭圆曲线离散对数问题(ECDLP)
之前提到过离散对数问题(DLP),即给定基数g和x = gy mod p(p为大素数),求y。椭圆曲线密码学中有一个类似的问题:给定基点P和点Q = kP,求k,这就是椭圆曲线离散对数问题
椭圆曲线密码学:原理、应用与选择
超级会员免费看
订阅专栏 解锁全文
620

被折叠的 条评论
为什么被折叠?



