椭圆曲线密码系统与智能卡加密应用解析
1. 椭圆曲线密码系统基础
椭圆曲线可用于定义一个群,记为 E(K),其元素包含椭圆曲线上的所有点以及 0。在该群中,加法运算定义为:过两个点作直线(若两点相同,则直线为曲线的切线),此直线与曲线必有第三个交点,该交点关于 x 轴的对称点即为两点相加的结果,其中 0 的对称点仍是 0,且对于椭圆曲线上的任意点 P,都有 P + 0 = 0 + P = P。求一个点的逆元时,过该点作平行于 y 轴的直线,若此直线为切线,则该点自身就是逆元;若不是切线,则直线与曲线的另一个交点就是逆元。
在密码学中,主要使用 E(GF(m)) 形式的椭圆曲线,即 E(GF(p)) 和 E(GF(2n))。
1.1 椭圆曲线密码系统原理
对于群 E(GF(m)),由于历史原因其运算被称为加法,但乘法运算也是可行的,因此多次点相加可表示为指数函数,其逆运算则可表示为对数。E(GF(m)) 有一个重要特性:存在有效的指数函数计算算法,但对数计算却缺乏有效算法。这使得基于离散对数的所有密码算法都能借助 E(GF(m)) 实现。椭圆曲线密码系统(ECC)就是一种基于离散对数的非对称算法,它用 E(GF(m)) 中的计算替代了 GF(p) 中的计算。在 ECC 中,指定了群 GF(m) 以及由其构建的群 E(GF(m)) ,指数的参数为自然数,指数函数的底数是 E(GF(m)) 的元素。
1.2 为何使用 ECC
- 计算效率 :E(GF(m)) 中两点相加涉及 GF(m) 中的多次计算。虽然 GF(m) 中的幂运算比 E(GF(m)) 中的幂运算轻松,但已知