本文是Dan Boneh 和Victor Shoup所写书籍A Graduate Course in Applied Cryptography的笔记。

The group of points of an elliptic curve

最早由Diophantus提出了一个问题:已知二元多项式方程f(x,y)=0f(x,y)=0f(x,y)=0,如何找到满足方程的有理数点(x∈Q,y∈Q)(x\in Q,y\in Q)(x∈Q,y∈Q)?该问题可以等价于找到满足y2=x3−x+9y^2=x^3-x+9y2=x3−x+9的有理数点。

首先可以通过尝试法得到曲线上的几个点P=(−1,−3),Q=(1,3)P=(-1,-3),Q=(1,3)P=(−1,−3),Q=(1,3),注意二元方程是根据xxx轴对称的,所以令−P=(−1,3),−Q=(1,−3)-P=(-1,3),-Q=(1,-3)−P=(−1,3),−Q=(1,−3),它们也是曲线上的点。

Chord method 弦方法

已知曲线上不重合且不对称的两点P≠Q,P≠−QP\ne Q,P\ne-QP​=Q,P​=−Q,作一条直线y=3xy=3xy=3x。将y=3xy=3xy=3x带入原方程得到一元三次方程(3x)2=x3−x+9(3x)^2=x^3-x+9(3x)2=x3−x+9,可简单证明有两个不等实根且系数为有理数的一元三次方程,一定有另外一个不等实根,即得曲线上另一点−R=(9,27)-R=(9,27)−R=(9,27)。Poincare将该计算与群内加法操作联系起来为,定义为P⊞Q=−RP\boxplus Q=-RP⊞Q=−R。

一元三次方程的根

ax3+bx2+cx+d=0ax^3+bx^2+cx+d=0ax3+bx2+cx+d=0称为一元三次方程,可化为x3+px+q=0x^3+px+q=0x3+px+q=0。判别式Δ=(q2)2+(p3)3\Delta=(\frac q 2)^2+(\frac p 3)^3Δ=(2q​)2+(3p​)3,分为以下情况:

  • Δ>0\Delta>0Δ>0,一个实根两个复根
  • Δ=0\Delta=0Δ=0
    • p=q=0p=q=0p=q=0,三重零根
    • p,q≠0p,q\ne 0p,q​=0,二重根
  • Δ<0\Delta<0Δ<0,三个不等实根

上述两个不等根且系数为有理数的一元三次方程即满足Δ<0\Delta<0Δ<0的情况,定有第三个不等实根。

Tangent method 切线法

已知不在x轴上的一点,P=(x,y)=(−1,−3),y≠0P=(x,y)=(-1,-3),y\ne 0P=(x,y)=(−1,−3),y​=0,作该点与曲线的切线,可得切点T=(19/9,−109/27)T=(19/9,-109/27)T=(19/9,−109/27),定义这种操作为P⊞P=TP\boxplus P=TP⊞P=T。

Elliptic curves over finite field

Finite field

Fpe={0,1,...,pe−1}\mathbb F_{p^e}=\{0,1,...,p^e-1\}Fpe​={0,1,...,pe−1}:阶为pep^epe的有限域,ppp为素数,eee为一个正整数。当e=1e=1e=1时,Fp={0,1,...,p−1}\mathbb F_{p}=\{0,1,...,p-1\}Fp​={0,1,...,p−1}称为素域。

Elliptic curves over finite field

令OOO为曲线上的无穷远点,定义E(Fpe)E(\mathbb F_{p^e})E(Fpe​)为定义在Fpe\mathbb F_{p^e}Fpe​上且在曲线EEE上的所有点,包括无穷远点OOO。例如:曲线E:y2=x3+1E:y^2=x^3+1E:y2=x3+1和F11\mathbb F_{11}F11​,则E(F11)={O,(−1,0),(0,±1),(9,±2),(6,±3),(8,±4),(3,±5)}E(\mathbb F_{11})=\{O,(-1,0),(0,\pm 1),(9,\pm 2),(6,\pm 3),(8,\pm 4),(3,\pm 5)\}E(F11​)={O,(−1,0),(0,±1),(9,±2),(6,±3),(8,±4),(3,±5)},∣E(Fpe)∣=12|E(\mathbb F_{p^e})|=12∣E(Fpe​)∣=12。Hasse结论:∣E(Fpe)∣=pe+1−t|E(\mathbb F_{p^e})|=p^e+1-t∣E(Fpe​)∣=pe+1−t,∣t∣≤2pe|t|\le 2\sqrt{p^e}∣t∣≤2pe​且为整数。所以∣E(Fpe)∣|E(\mathbb F_{p^e})|∣E(Fpe​)∣约等于pe+1p^e+1pe+1。

Addition law and group

正式定义之前通过已知点求解曲线上其他点的操作⊞\boxplus⊞为加法律,令P=(x1,y1),Q=(x2,y2)P=(x_1,y_1),Q=(x_2,y_2)P=(x1​,y1​),Q=(x2​,y2​):

  • 如果x1≠x2x_1\ne x_2x1​​=x2​,用chord method。
  • 如果P=QP=QP=Q,用tangent method。
  • 如果x1=x2,y1=−y2x_1=x_2,y_1=-y_2x1​=x2​,y1​=−y2​,则定义P⊞Q=OP\boxplus Q=OP⊞Q=O

通过定义加法律,集合E(Fpe)E(\mathbb F_{p^e})E(Fpe​)和操作⊞\boxplus⊞可以构成一个群,满足:

  1. 单位元:O⊞P=PO\boxplus P=PO⊞P=P
  2. 逆:−P=(x,−y)-P=(x,-y)−P=(x,−y)
  3. 结合律:(P⊞Q)⊞R=P⊞(Q⊞R)(P\boxplus Q)\boxplus R=P\boxplus (Q\boxplus R)(P⊞Q)⊞R=P⊞(Q⊞R)
  4. 封闭性:$ P\boxplus Q\in E(\mathbb F_{p^e})$
  5. 交换律(Abelian群):P⊞Q=Q⊞PP\boxplus Q=Q\boxplus PP⊞Q=Q⊞P

我们定义αP=(α−1)P⊞P\alpha P=(\alpha -1)P\boxplus PαP=(α−1)P⊞P,可以通过repeated squaring算法在2log⁡2α2\log_2 \alpha2log2​α个群操作内计算得到。

Forms of elliptic curves

Weierstrass form

标准Weierstrass form
y2=x3+ax+b,4a3+17b2≠0y^2=x^3+ax+b,4a^3+17b^2\ne 0 y2=x3+ax+b,4a3+17b2​=0
要求4a3+17b2≠04a^3+17b^2\ne 04a3+17b2​=0是为了保证方程与x3+ax+b=0x^3+ax+b=0x3+ax+b=0没有重根,即曲线与x轴只有一个交点。

Montgomery form

Bv2=u3+Au2+u,B(A2−4)≠0Bv^2=u^3+Au^2+u,\ B(A^2-4)\ne 0 Bv2=u3+Au2+u, B(A2−4)​=0

∣E(Fpe)∣mod4=0|E(\mathbb F_{p^e})|\mod 4=0∣E(Fpe​)∣mod4=0。Montgomery曲线可以通过u=Bx−A/3u=Bx-A/3u=Bx−A/3和v=Byv=Byv=By转换成Weierstrass曲线,但不是所有Weierstrass曲线都能转换成Montgomery曲线,例如P256曲线。

Edwards form

x2+y2=1+dx2y2,d≠0,1x^2+y^2=1+dx^2y^2,d\ne 0,1 x2+y2=1+dx2y2,d​=0,1

∣E(Fpe)∣mod4=0|E(\mathbb F_{p^e})|\mod 4=0∣E(Fpe​)∣mod4=0,同样可以通过变换系数转换成Weierstrass曲线。Edwards曲线的特点在于加法律不需要之前提及的chord、tangent三种形式,可以归结为一种:

Elliptic curve cryptography

P256曲线

P256曲线定义在质数p=2256−2224+2192+296−1p=2^{256}-2^{224}+2^{192}+2^{96}-1p=2256−2224+2192+296−1上,满足标准的Weierstrass形式y2=x3+ax+b,4a3+17b2≠0y^2=x^3+ax+b,4a^3+17b^2\ne 0y2=x3+ax+b,4a3+17b2​=0,其中
b:=5ac635d8aa3a93e7b3ebbd55769886bc651d06b0cc53b0f63bce3c3e27d2604bb := 5ac635d8\ aa3a93e7\ b3ebbd55\ 769886bc\ 651d06b0\ cc53b0f6\ 3bce3c3e\ 27d2604b b:=5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b
bbb是通过伪随机种子SSS产生的,标准指定了一个点GGG生成整个群。因为ppp接近22562^{256}2256,所以曲线上的点数量qqq也接近22562^{256}2256,那么在曲线上计算离散对数需要大约q=2128\sqrt q=2^{128}q​=2128个群操作,难度至少与AES-128相等。

25519曲线

Twist security

  1. Square root
    满足y2=xmodpy^2=x\mod py2=xmodp的y∈Zpy\in Z_py∈Zp​为x∈Zpx\in Z_px∈Zp​的square root
  2. Quadratic residue
    如果x∈Zp∗x\in Z_p^*x∈Zp∗​在ZpZ_pZp​中有square root,则称其为quadratic residue

设w∈Fpw\in F_pw∈Fp​为FpF_pFp​中的quadratic non-residue,E:y2=x3+ax+bE:y^2=x^3+ax+bE:y2=x3+ax+b,则曲线E的twist为E′:wy2=x3+ax+bE':wy^2=x^3+ax+bE′:wy2=x3+ax+b。Twist安全指离散对数问题在EEE和E′E'E′上均为困难问题,曲线P256无法满足Twist安全,而曲线25519可以。

25519曲线

25519曲线定义在质数p=2255−19p=2^{255}-19p=2255−19上,满足Montgomery形式y2=x3+486662x2+xy^2=x^3+486662x^2+xy2=x3+486662x2+x,也可转换为Edwards形式x2+y2=1+(121665/121666)x2y2x^2+y^2=1+(121665/121666)x^2y^2x2+y2=1+(121665/121666)x2y2。曲线上点的个数是8乘以一个质数,称曲线有余因子(cofactor)8。

Pairing based cryptography

Definition

由双线性(bilinear)可以推出一个重要结论:对于所有的α,β∈Zq\alpha,\beta\in \mathbb Z_qα,β∈Zq​,
e(g0α,g1β)=e(g0,g1)αβ=e(g0β,g1α)e(g_0^\alpha,g_1^\beta)=e(g_0,g_1)^{\alpha\beta}=e(g_0^\beta,g_1^\alpha) e(g0α​,g1β​)=e(g0​,g1​)αβ=e(g0β​,g1α​)

Consequences

  1. 当G0=G1G_0=G_1G0​=G1​,G0G_0G0​中的DDH问题变得简单。
    给定DDH对(u,v,w)=(g0α,g0β,g0γ)(u,v,w)=(g_0^\alpha,g_0^\beta,g_0^{\gamma})(u,v,w)=(g0α​,g0β​,g0γ​),则可以通过e(u,v)=e(g0,w)e(u,v)=e(g_0,w)e(u,v)=e(g0​,w)判断y=αβy=\alpha\betay=αβ是否成立。间接导致乘法ElGamal加密方案在对称双线性群里不再是语义安全的。
  2. 计算G0G_0G0​或G1G_1G1​内的离散对数问题不比计算GTG_TGT​中的难。
    令u0=g0α∈G0u_0=g_0^\alpha\in G_0u0​=g0α​∈G0​,我们想要计算离散对数α\alphaα。令u=e(u0,g1),gT=e(g0,g1)u=e(u_0,g_1),g_T=e(g_0,g_1)u=e(u0​,g1​),gT​=e(g0​,g1​),则u=e(g0α,g1)=e(g0,g1)α=gTαu=e(g_0^\alpha,g_1)=e(g_0,g_1)^\alpha=g_T^\alphau=e(g0α​,g1​)=e(g0​,g1​)α=gTα​,转换为GTG_TGT​中的离散对数问题。因此只要解决GTG_TGT​中的离散对数问题,就能够解决G0G_0G0​或G1G_1G1​中的离散对数问题。

Pairings from elliptic curves

由椭圆曲线E/FpE/\mathbb F_pE/Fp​构造的配对有以下性质,设qqq为一质数:

  • G0G_0G0​是阶为qqq的E(Fp)E(\mathbb F_{p})E(Fp​)的子群
  • G1G_1G1​是阶为qqq的E(Fpd)E(\mathbb F_{p^d})E(Fpd​)的子群,d>0d>0d>0为一整数,称为曲线嵌入度,且G0∩G1={O}G_0\cap G_1=\{O\}G0​∩G1​={O}
  • GTG_TGT​是阶为qqq的E(Fpd)E(\mathbb F_{p^d})E(Fpd​)的乘法子群

d≤16d\le 16d≤16时,称曲线为配对友好椭圆曲线。

椭圆曲线上的配对函数来自于一种称为Weil配对的代数配对。这个配对可以使用一种由Victor Miller提出的算法进行有效计算,称为Miller算法。在实践中,我们使用Weil配对的变体,称为Tate和Ate配对,此时Miller的算法更有效。

最常见的配对椭圆曲线是bn256和bls381,二者的嵌入度均为d=12d=12d=12且群的秩qqq为256-bits的质数。bn256定义在256-bits的质数域上,bls381定义在381-bits的质数域上。

Elliptic Curve Cryptography (ECC) and Pairings 椭圆曲线密码学与配对相关推荐

  1. 椭圆曲线加密(Elliptic Curve Cryptography, ECC)

    近年来,国内外的科研人员面向设备资源受到限制的多种场景提出了很多基于ECC的认证密钥协商协议.虽然各协议应用场景不尽相同,但解决的问题和最终的目标都较为类似,可以归纳为在性能开销尽可能小的前提下,安全 ...

  2. Guide to Elliptic Curve Cryptography (ECC椭圆曲线算法1)

    原文 http://andrea.corbellini.name/2015/05/17/elliptic-curve-cryptography-a-gentle-introduction/ Prefa ...

  3. 【转】Guide to Elliptic Curve Cryptography(ECC椭圆曲线算法1)

    Guide to Elliptic Curve Cryptography (ECC椭圆曲线算法1) 2017年06月03日 10:14:08 原文 http://andrea.corbellini.n ...

  4. Elliptic curve cryptography

    原文来自wiki 翻译参照Bing在线翻译 - - 部分翻译 Elliptic curve cryptography From Wikipedia, the free encyclopedia Jum ...

  5. Elliptic Curve Cryptography: 轻轻的学

    Elliptic Curve Cryptography: 轻轻的学 Elliptic curves Algebraic addition Scalar multiplication Multiplic ...

  6. 《A Graduate Course in Applied Cryptography》Chapter 15 Elliptic curve cryptography and pairings (1)

    原文教材 与 参考资料: Boneh Dan , Shoup Victor . A Graduate Course in Applied Cryptography[J]. 该书项目地址(可以免费获取) ...

  7. Elliptic Curve Cryptography: a gentle introduction

    转载自:https://www.jianshu.com/p/2e6031ac3d50?from=groupmessage 原文链接:https://andrea.corbellini.name/201 ...

  8. ECC(Elliptic Curve Cryptography)椭圆曲线密码详解

    椭圆曲线密码基于离散对数难题 公钥密码 ECC 非对称密钥功能:加密.签名.密钥交换 ECC是RSA的后继更短的密钥长度.更快的签名.更快的密钥协商 私钥长度为256bits, 32字节.大小在曲线的 ...

  9. Elliptic Curve Cryptography: finite fields and discrete logarithms

    转载自:https://andrea.corbellini.name/2015/05/23/elliptic-curve-cryptography-finite-fields-and-discrete ...

最新文章

  1. [Android] 给图像添加相框、圆形圆角显示图片、图像合成知识
  2. * 有1、2、3、4四个数字,能组成多少个互不相同且无重复数字的三位数? * 把这些数都输出出来,并且输出总共的个数。
  3. java catch自定义异常_java异常类-java自定义异常-嗨客网
  4. 蓝桥杯 ALGO-104 算法训练 阿尔法乘积
  5. Hadoop——Yarn(4)
  6. SQL书写规则30例
  7. Beta阶段第四次Scrum Meeting
  8. 部门开始做技术talk
  9. 14. CSS 列表
  10. 关于起点中文网字体反爬的解决方法——以阅读指数榜为例
  11. Selenium 批量执行url(附完整代码)
  12. React 中实现复制到剪切板功能
  13. matlab编写erf函数
  14. 最全,176个HFSS仿真实例模型文件分享
  15. 【计算机网络 (谢希仁) 习题题解】第5章 运输层 (5)——TCP的运输连接管理
  16. 银河系的神秘信号:也许我们正见证真实的科幻故事
  17. App前端及后端接口,模拟数据及返回值
  18. OpenGL学习——着色器
  19. java 模拟登录58同城,Java项目实战之同城信息网站(类似58同城)开发
  20. flutter 键盘挡住输入框问题

热门文章

  1. linux重启 envi服务,envi 4.3在ubuntu edgy下启动错误的解决
  2. Linkis和DSS本地和远程调试文档
  3. excel表格拆分成多个工作表的方法?
  4. 思维导图ubuntu_XMind for Linux - 思维导图 | linux软件
  5. html基本标记练习钱塘湖春行,实验1HTML基本标记的练习.doc
  6. python适合做网站吗_零基础学python—做网站
  7. iceberg Flink操作
  8. 自然语言处理(NLP)常用开源工具总结----不定期更新
  9. 1.7.10服务器物品编辑器,我的世界背包编辑器1.7.10
  10. NRF52832+DW1000通信系统架构设计