EC(Elliptic Curve)椭圆曲线
三种椭圆曲线
一般资料会以维尔斯特拉斯曲线(Weierstrass Curve)为例介绍椭圆曲线的基本概念和运算原理,这是因为任意椭圆曲线都可以写为维尔斯特拉斯曲线形式。实际上,椭圆曲线还包括多种其他的类型,如蒙哥马利曲线(Montgomery Curve)、扭曲爱德华曲线(Twisted Edwards Curve)等。Curve25519就是在蒙哥马利曲线上定义的椭圆曲线,而Ed25519是在扭曲爱德华曲线上定义的椭圆曲线。
1.维尔斯特拉斯曲线
椭圆曲线的一般形式可表示为:
其中\(A,B∈\mathbb{F}_p\),\(4A^3+27B^2≠0\)。一般称上式为维尔斯特拉斯形式的椭圆曲线方程。
2.蒙哥马利曲线
蒙哥马利形式的椭圆曲线方程定义为:
3.扭曲爱德华曲线
扭曲爱德华形式的椭圆曲线方程定义为:
椭圆曲线间的转换
维尔斯特拉斯曲线、蒙哥马利曲线、扭曲爱德华曲线这三类椭圆曲线之间可以相互转换。
蒙哥马利曲线 ⇔ 维尔斯特拉斯曲线
任何椭圆曲线都可以写为维尔斯特拉斯形式。反之,当满足特定条件时,维尔斯特拉斯椭圆曲线可以转换为蒙哥马利椭圆曲线。具体转换条件参见《Montgomery Curve》的Equivalence with Weierstrass curves部分。
蒙哥马利曲线\(Kt^2=s^3+Js^2+s\)转换为等价维尔斯特拉斯曲线\(y^2=x^3+Ax+B\)的方法为:
蒙哥马利曲线点\((s,t)\)转换为等价维尔斯特拉斯曲线点\((x,y)\)的方法为:
反之,维尔斯特拉斯曲线点\((x,y)\)转换为等价蒙哥马利曲线点\((s,t)\)的方法为:
蒙哥马利曲线 ⇔ 维尔斯特拉斯曲线
所有扭曲爱德华曲线都与蒙哥马利曲线双向有理等价(Birationally Equivalent),反之亦然。所谓双向有理等价,可以理解为除了个别点外,扭曲爱德华曲线的点和蒙哥马利曲线的点存在相互映射关系。
扭曲爱德华曲线\(av^2+w^3=1+dv^2 w^2\)转换为等价蒙哥马利曲线\(Kt^2=s^3+Js^2+s\)的方法为:
扭曲爱德华曲线点\((v,w)\)转换为等价蒙哥马利曲线点\((s,t)\)的方法为:
蒙哥马利曲线点\((s,t)\)转换为扭曲爱德华曲线点\((v,w)\)的方法为:
当\(t=0\)或\(s=-1\)时,映射方法为\((v,w)=(0,-1)\)。
椭圆曲线上的运算
1.有限域的负元
\(P(x,y)\)的负元是\((x,-y\pmod{p})=(x,p-y)\)
2.有限域的加法
\(P(x_1,y_1 )\),\(Q(x_2,y_2 )\)和\(R(x_3,y_3 )\)三点(其中\(R\)是直线\(PQ\)与曲线交点关于\(x\)轴的对称点,即有\(R=P+Q\))有如下关系:
3.斜率计算
ECC-ElGamal公钥加密算法
- 设\(p>3\)是一个大素数,\(E\)是有限域\(\mathbb{F}_p\)上的椭圆曲线,\(G∈E\)是椭圆曲线上的一个点,并且\(G\)的阶足够大。\(p\)和\(E\)以及\(G\)都公开。
- 随机选取整数\(x\),\(1≤x≤\mbox{ord}(G)-1\),其中\(\mbox{ord}(G)\)表示以基点\(G\)在曲线\(E\)上生成群的阶。计算\(Y=xG\)。\(Y\)是公开的加密密钥(公钥),\(x\)是保密的解密密钥(私钥)。
- 加密变换:明文消息映射到椭圆曲线上的点\(M=(m_1,m_2 )\),随机选取一个整数\(k\),满足\(1≤k≤\mbox{ord}(G)-1\),密文为\(C=(c_1,c_2 )\),其中\(c_1=kG\),\(c_2=M+kY\)。
- 解密变换:对任意密文\(C=(c_1,c_2 )\),明文为\(M=c_2-xc_1\)。
证明:
根据加密变换有\(c_1=kG\),\(c_2=M+kY=M+kxG\),故\(c_2-xc_1=M+kxG-xkG=M\)。
证毕。
例:
设\(p=11\),\(E\)是由\(y^2≡x^3+x+6\pmod{11}\)所确定的有限域\(\mathbb{F}_{11}\)上的椭圆曲线,基点\(G=(2,7)\)。选定的私钥为\(x=7\),明文映射到曲线的点\(M=(10,9)\)。
因选择的私钥为\(x=7\),那么对应公钥为
计算过程示例:
首先计算\(2G\),\(2G=G+G\),
所以\(2G=(5,2)\)。
然后计算\(3G\),\(3G=2G+G\),
所以\(3G=(8,3)\)。
类似计算可得\(4G=(10,2)\),\(6G=(7,9)\),\(7G=(7,2)\),\(8G=(3,5)\),\(14G=(2,7)\)。可以注意到有\(14G=G⇒13G=0\),所以对于基点\(G=(2,7)\)有\(\mbox{ord}(G)=13\)。由此计算公钥\(Y\)为
假设随机选取\(k=3\),有
因此,明文\(M=(10,9)\)对应的密文为\(C=(c_1,c_2 )=((8,3),(10,2))\)。
对于解密过程而言,已知私钥\(x=3\),收到密文\(C=(c_1,c_2 )=((8,3),(10,2))\),于是明文恢复过程为
至此,ECC-ElGamal公钥加密算法加解密过程完毕。
参考
ISO/IEC 18033-2:2006 Information technology – Security techniques – Encryption algorithms – Part 2: Asymmetric ciphers
RFC 7748 Elliptic Curves for Security
曹天杰. 密码学引论[M].
Ed25519与Curve25519:概念与相互转换 - 知乎 (zhihu.com)
椭圆曲线加密算法(ECC) - 知乎 (zhihu.com)
辅因子(cofactor)解释:揭开椭圆曲线不为人知的秘密 - 知乎 (zhihu.com)
信息论与编码:有限域 - gxzzz - 博客园 (cnblogs.com)