椭圆曲线密码体制(Elliptic Curve Cryptography, ECC)是一种基于椭圆曲线数学特性的公钥密码系统。在介绍椭圆曲线之前,我们先来了解一下椭圆曲线的基本概念。
一、椭圆曲线是什么?
(1)椭圆曲线的数学定义
椭圆曲线是一条由方程 给定的曲线,其中a和b是常数,并满足,以确保曲线没有奇点(即曲线是平滑的)。在无限域(如实数域)上,椭圆曲线看起来像是一条平滑的、不自交的曲线。
椭圆曲线的图像如下:
椭圆曲线图1
椭圆曲线图2
【注】椭圆曲线并不是椭圆,只因为该方程与计算椭圆周长的方程相似。
可以证明如果 没有重复因子,或者满足 那么椭圆曲线上的点集 可构成一个Abel群(阿贝尔群)。椭圆曲线包括所有曲线上的点以及一个特殊的点,我们称为无限远点
(2)椭圆曲线上的算术运算
椭圆曲线上定义了加法运算,这使得椭圆曲线成为一个群。具体来说,对于椭圆曲线上任意两点 P 和 Q,可以定义它们的和 R=P+Q,其计算方法遵循以下规则:
① 加法运算
加法运算(两点不重合)
加法 :如果 P 和 Q 不重合,那么通过连接这两点的直线与椭圆曲线的第三个交点,然后在 y 轴上找到这个点的反射点作为 R
加法运算(两点重合)
二倍点 :如果 P=Q,则使用切线代替直线,找到切线与椭圆的交点,再找到该点关于 y 轴的反射点作为 2P
加法运算(两点是相反数)
无穷远点:椭圆曲线上的加法还定义了一个特殊点,称为无穷远点,它与任何其他点相加都保持不变
② 点乘运算
**点乘:**将一个给定点沿着椭圆曲线进行多次加法操作。点乘运算通常被记作 kP,其中 k 是一个整数,P 是椭圆曲线上的一点。
如上图3P的计算过程,先计算出2P也就是Q,然后再将Q和P连接在一起,找到和椭圆曲线的交点,这个交点关于X轴的对称点就是3P。
二、椭圆曲线密码体制
有限域上的椭圆曲线是椭圆曲线的一个变体,它定义在一个有限域(finite field)上,而不是在实数域或复数域上。有限域上的椭圆曲线在密码学中有重要的应用,特别是用于构建椭圆曲线密码体制(ECC)
(1)有限域上的椭圆曲线
有限域是一个具有有限个元素的域。域意味着在这个集合中定义了加法和乘法操作,并且这些操作满足特定的代数性质,比如加法和乘法的封闭性、结合律、交换律、单位元的存在性、逆元的存在性等。
有限域的一个重要例子是模 p 的剩余类,这个有限域通常记作,当椭圆曲线定义在一个有限域上时,我们考虑的是所有 ,其中 和 都是 中的元素,并且满足上述椭圆曲线方程。这样的点集构成了有限域上的椭圆曲线。
定义在有限域上的椭圆曲线图像
(2)有限域上的椭圆曲线结论
在有限域上的椭圆曲线上定义的加法运算构成了一个阿贝尔群,这是因为加法运算满足群的四个基本性质:封闭性、结合律、存在单位元、存在逆元,同时加法运算还满足交换律。
- 封闭性:
对于椭圆曲线 E 上的任意两点 P 和 Q,它们的和 R=P+Q 也是一个椭圆曲线上的点。这意味着加法运算的结果仍然属于椭圆曲线 E。
- 结合律:
对于椭圆曲线 E 上的任意三点 P、Q 和 R,有 (P+Q)+R=P+(Q+R)。这意味着加法运算的顺序不影响结果。
- 单位元:
椭圆曲线 E 上定义了一个特殊点 O,称为无穷远点,它是加法的单位元。这意味着对于椭圆曲线上的任意点 P,都有 P+O=P。
- 逆元:
对于椭圆曲线 E 上的每一个点 P,存在一个唯一的点 −P,使得 P+(−P)=O。这里的 −P 称为 P 的加法逆元。
- 交换律:
对于椭圆曲线 E 上的任意两点 P 和 Q,有 P+Q=Q+P。这意味着加法运算满足交换律。
(3)椭圆曲线上的离散对数问题(ECDLP)
椭圆曲线上的离散对数问题 (ECDLP) 是椭圆曲线密码学 (ECC) 安全性的基础。ECDLP 是指在给定的椭圆曲线上,找到一个点的倍数所需的秘密倍数的问题。它的定义如下:
ECDLP 的难度在于,虽然给定一个点 P 和一个整数 k,很容易计算出 Q=kP,但是反过来,给定 Q 和 P,找到 k 是非常困难的。这种问题的难解性是椭圆曲线密码学安全性的核心。
正向计算简单
ECDLP 的难度确保了椭圆曲线密码系统的安全性。由于目前没有已知的有效算法可以在多项式时间内解决 ECDLP,因此只要选择合适的椭圆曲线和密钥长度,就可以实现高度的安全性。
反向计算困难
三、椭圆曲线密码学体制的应用
椭圆曲线密码学利用 ECDLP 的难解性来构建安全的密码协议,例如:
- 椭圆曲线数字签名算法 (ECDSA):用于创建数字签名。
- 椭圆曲线密钥交换协议 (ECDH):用于安全地交换密钥。
- 椭圆曲线集成加密方案 (ECIES):用于加密数据。
(1)椭圆曲线上的DH密钥交换算法(ECDH)举例说明
① 准备阶段
第一步: 首先取一个素数 ,以及参数,则椭圆曲线上的点构成Abel群
第二步: 取上的一个生成元,要求的阶是一个非常大的数,的阶是满足的最小正整数。
第三步: 将和生成元作为公钥密码体制的公开参数对外公布,不保密。
② 密钥交换阶段
通过上面密钥交换算法,A和B共同拥有密钥K,攻击者如果想获得密钥K,他就必须由和求出,或者由和求出,而这等价于求椭圆曲线上的离散对数问题ECDLP,因此是不可行的,所以确保了安全。