ECC

7/14/2023 crypto

# 椭圆曲线难题

EC ElGamal 算法的安全性依赖于椭圆曲线上离散对数求解的困难

全称 Elliptic Curve Discrete Logarithm Problem,简称 ECDLP

# 前置知识

# 阿贝尔群

在普通群的定义性质上增加了一个交换律性质,也称为交换群,也就是说阿贝尔群要满足以下五个性质

  1. 封闭性

  2. 结合律

  3. 单位元

  4. 逆元

  5. 交换律

# 有限域

  1. FF 只包含有限个元素阶

  2. 有限域中元素的个数称为有限域的阶

  3. 每个有限域的阶必为素数的幂,即有限域的阶可表示为 pnp^{n} (pp 为素数, nn 是正整数),记为 GF(pn)GF(p^{n})

# 椭圆曲线

椭圆曲线方程的一般形式

y2+axy+by=x3+cx2+dx+ey^2 + axy + by = x^3 + cx^2 + dx + e

ECC 最常用的椭圆曲线方程是

y2=x3+ax+b,(a,bGF(p),4a3+27b20)y^2 = x^3 + ax + b, (a, b \in GF(p), 4a^3+27b^2 \neq 0)

密码学中普遍采用的是有限域上的椭圆曲线

  1. 椭圆曲线上的点集 Ep(a,b)E_p(a,b)

    1. 该点集就是一个阿贝尔群,群中的每一个元素就是一个个的点 (x,y)(x, y)
  2. 椭圆曲线上的点集的运算

    1. 加法法则: P+QP+Q,其中 P,QEp(a,b)P,Q \in E_p(a, b)

      1. 由于 Ep(a,b)E_p(a, b) 是一个群,所以 P+QP+Q 的结果也属于 Ep(a,b)E_p(a, b)
    2. 倍乘法则: nPnP,其中 PEp(a,b)P \in E_p(a, b)nn 是一个随机正整数

      1. P=QP=Q 时,P+Q=2PP+Q=2P

# 椭圆曲线上的离散对数问题

在椭圆曲线构成的阿贝尔群(点集) Ep(a,b)\mathbf{\color{orange} E_p(a,b)} 上考虑方程 Q=kP\mathbf{\color{orange} Q=kP},其中 P,QEp(a,b),k<p\mathbf{ \color{orange} P,Q \in E_p(a,b), k<p},则由 k\mathbf{ \color{orange} k}P\mathbf{\color{orange}P} 易求 Q\mathbf{\color{orange}Q},但由 P\mathbf{\color{orange}P}Q\mathbf{\color{orange}Q}k\mathbf{ \color{orange} k} 则是困难的,这就是椭圆曲线上的离散对数问题(ECDLP)

# EC ElGamal 算法

EC ElGamal 是 ECC(Elliptic Curve Cryptography) 的一种,该算法就是把 ElGamal 移植到椭圆曲线上来实现

# 步骤

  1. 生成密钥对

    1. Ep(a,b)E_p(a,b) 的一个生成元 PAP_A(对应 ECDLP Q=kPQ=kP 中的 PP),Ep(a,b)E_p(a,b)PAP_A 作为公开参数

    2. 用户 A 选 kAk_A 作为私钥(对应 ECDLP Q=kPQ=kP 中的 kk),并以 QA=kAPAQ_A = k_A P_A 作为公钥(对应 ECDLP Q=kPQ=kP 中的 QQ

  2. 加密过程,使用公钥 QAQ_A

    1. 已知明文数据 PmP_m,可选取一个随机正整数 rr,产生以下点对作为密文
Cm={rPA,Pm+rQA}C_m = \{rP_A, P_m + rQ_A\}
  1. 解密过程,使用私钥 kAk_A

    1. 以密文点对 CmC_m 中的第二个点 Pm+rQAP_m + rQ_A 减去用自己的私钥 kAk_A 与第一个点 rPArP_A 的倍乘,即
Pm+rQAkArPA=Pm+r(kAPA)kArPA=PmP_m + rQ_A - k_A rP_A = P_m + r(k_AP_A)-k_A r P_A = P_m

# 证明

为什么私钥 kAk_A 很难破解?

攻击者可以获得的数据是 Ep(a,b)E_p(a,b)PAP_AQAQ_A

又因为 QA=kAPAQ_A = k_A P_A,所以只要求得 kAk_A 私钥就可以

但是由 QAQ_APAP_A 求解 kAk_A 属于椭圆曲线上的离散对数问题,这非常困难

所以理论上任何人都不能推导出私钥 kAk_A

# 参考资料

Last Updated: 7/14/2023, 4:58:23 PM