椭圆曲线难题
EC ElGamal 算法的安全性依赖于椭圆曲线上离散对数求解的困难
全称 Elliptic Curve Discrete Logarithm Problem,简称 ECDLP
前置知识
阿贝尔群
在普通群的定义性质上增加了一个交换律性质,也称为交换群,也就是说阿贝尔群要满足以下五个性质
封闭性
结合律
单位元
逆元
交换律
有限域
域 F 只包含有限个元素阶
有限域中元素的个数称为有限域的阶
每个有限域的阶必为素数的幂,即有限域的阶可表示为 pn (p 为素数, n 是正整数),记为 GF(pn)
椭圆曲线
椭圆曲线方程的一般形式
y2+axy+by=x3+cx2+dx+eECC 最常用的椭圆曲线方程是
y2=x3+ax+b,(a,b∈GF(p),4a3+27b2=0)密码学中普遍采用的是有限域上的椭圆曲线
椭圆曲线上的点集 Ep(a,b)
- 该点集就是一个阿贝尔群,群中的每一个元素就是一个个的点 (x,y)
椭圆曲线上的点集的运算
加法法则: P+Q,其中 P,Q∈Ep(a,b)
- 由于 Ep(a,b) 是一个群,所以 P+Q 的结果也属于 Ep(a,b)
倍乘法则: nP,其中 P∈Ep(a,b), n 是一个随机正整数
- 当 P=Q 时,P+Q=2P
椭圆曲线上的离散对数问题
在椭圆曲线构成的阿贝尔群(点集) Ep(a,b) 上考虑方程 Q=kP,其中 P,Q∈Ep(a,b),k<p,则由 k 和 P 易求 Q,但由 P 和 Q 求 k 则是困难的,这就是椭圆曲线上的离散对数问题(ECDLP)
EC ElGamal 算法
EC ElGamal 是 ECC(Elliptic Curve Cryptography) 的一种,该算法就是把 ElGamal 移植到椭圆曲线上来实现
步骤
生成密钥对
取 Ep(a,b) 的一个生成元 PA(对应 ECDLP Q=kP 中的 P),Ep(a,b) 和 PA 作为公开参数
用户 A 选 kA 作为私钥(对应 ECDLP Q=kP 中的 k),并以 QA=kAPA 作为公钥(对应 ECDLP Q=kP 中的 Q)
加密过程,使用公钥 QA
- 已知明文数据 Pm,可选取一个随机正整数 r,产生以下点对作为密文
Cm={rPA,Pm+rQA}解密过程,使用私钥 kA
- 以密文点对 Cm 中的第二个点 Pm+rQA 减去用自己的私钥 kA 与第一个点 rPA 的倍乘,即
Pm+rQA−kArPA=Pm+r(kAPA)−kArPA=Pm 证明
为什么私钥 kA 很难破解?
攻击者可以获得的数据是 Ep(a,b),PA 和 QA
又因为 QA=kAPA,所以只要求得 kA 私钥就可以
但是由 QA 和 PA 求解 kA 属于椭圆曲线上的离散对数问题,这非常困难
所以理论上任何人都不能推导出私钥 kA
参考资料