原文教材 与 参考资料:
Boneh Dan , Shoup Victor . A Graduate Course in Applied Cryptography[J].
该书项目地址(可以免费获取):http://toc.cryptobook.us/
博客为对该书的学习笔记,并非原创知识,仅帮助理解,整理思路。
15.0 Elliptic curve
针对在模素数的整数群上DL问题被逐步降低计算难度的缺陷(general number field sieve, FNFS),椭圆曲线上的离散对数问题进入密码学家的视野,椭圆曲线(简称EC)上的离散对数问题相对于模素数整数群上的离散对数问题更加的困难,整数群上计算破解DL的算法复杂度约为O((logp)^1/3), EC上计算破解DL 的算法复杂度约为O(p ^ 1/2)。并且EC上的计算效率也比较高远远比类似安全程度的RSA要快的多。
另外,椭圆曲线上还有一个重要的代数操作,Pairing。 由于配对运算(Pairing)的精巧属性,催生出了大量使用该属性的密码学方案,这些方案被统称为pairing-based cryptography。
15.1 The group of points of an elliptic curve
椭圆曲线的一种函数表示法实例如下:
其图像表示法如下:
在这个曲线上,定义两种代数操作,称之为“chord method” 弦方法,“tangent method”切线法。这两种计算方法定义了两种点的加法,如果存在两个点P,Q。
如果P 不等于 Q ,那么P+Q使用弦方法,如果 P 等于 Q ,那么P+Q使用切线法,如下图所示:
图一为弦方法,图二为切线法。
15.2 Elliptic curves over finite fields
定义一个域在椭圆曲线上,定义如下:
椭圆曲线的阶数(椭圆曲线域上的点集数):
根据Hasse定理,得到一个椭圆曲线有限域上的点集个数为:
椭圆曲线上加法规则:
Weierstrass , Montgomery, Edwards curves
椭圆曲线有多种函数表达形式,其中常见的主要包括Weierstrass , Montgomery, Edwards curves三种。三种形式的关系如下图所示:
上述标准的椭圆曲线表达式为Weierstrass形式,但是这种形式的计算效率可能并不高,所以就有了Montgomery, Edwards形式。值得注意的是,如果Weierstrass 曲线的阶数为奇数,那么存在m蒙哥马利的表达式形式,那么该曲线就不能获得蒙哥马利表达式的加速益处。爱德华兹表达形式的便利之处在于,在加法运算上,不需要按照两种规则来计算,不论P是否等于Q,P+Q的算法都是一样的。
15.3 Elliptic curve cryptography
椭圆曲线密码学使用的参数现在有两个一个是P256 一个是Curve25519.
P256 是美国标准技术局(NIST)开发的,但是关于选择该参数的原因,NIST没有给出全部的原因与设计细节,针对该参数设计不透明的问题,Curve25519被设计提出,这个参数的设计与选择是完全公开透明的,所以被认为是足够安全的。
Curve25519 主要描述的是这样的一种安全性:
TwIst security 安全性,每一个域上的曲线E都存在一个孪生曲线域E1。如果E的阶数为奇数,那么该域上的每个X坐标要么是属于曲线E的,要么是属于孪生曲线域E1的。特别是,很多椭圆曲线密码学方案中仅仅将一个坐标x发送给其他参与者,而其他参与者需要进行该点是否是群上点的验证。考虑这样一种情况,如果敌手提供一个在孪生素数上的生成元,而诚实参与者没有进行群元素的验证,那么敌手将会获得一个带有私钥的孪生曲线上的点,P = s*G。如果在孪生曲线上DL问题不是困难的,那么敌手将会轻易获得秘密值s。
pairing 对运算是椭圆曲线上另一个非常重要的属性,特别是在对称群下,DDH假设是简单的。但是在非对称群下DDH仍然是成立的。