ECC椭圆曲线加密算法

简介

  • 1.ECC英文全称"Ellipese Curve Cryptography" 与传统的基于大质数因子分解困难性的加密方法不一样,ECC经过椭圆曲线方程式的性质产生密钥.
  • 2.ECC164位的密钥产生一个安全级,至关于RSA 1024位密钥提供的保密强度,并且计算量级较小,处理速度更快,存储空间和传输带宽占用较小.目前我国 居民二代身份证正在使用256位的椭圆曲线密码,虚拟货币比特币也选择ECC做为加密算法.
  • 3.椭圆曲线密码学,是一种创建公开密钥加密的算法,也就输非对称加密.相似的还有RSA,EIGamal算法等.ECC被公认为在给定密钥长度下最安全的加密算法.

公钥加密

公钥加密,也称非对称加密.是现代网络安全或者网络信任链的基础.公钥加密最大的特征就是通讯双方各有一对公私钥,每一个人保存本身的私钥,公开本身的公钥.这样作的好处是不怕通讯线路被窃听,由于攻击者拿到公钥是没法解出密文的.公私钥的基本使用场景有两种: 假设通讯双方叫Tom(公钥A,私钥a)和Bob(公钥B,私钥b).html

  • 1.公钥加密,私钥解密
  • Tom写了一封信,她不想让别人知道,因而她用Bob的公钥B对信的明文作了加密,密文为m.以后发给了Bob.
  • Bob收到密文m,用本身的私钥对密文解密,正确的读出了信的内容.

整个过程当中,即便窃听者拿到密文m,两我的的公钥A,B都没什么用,没法解密出任何东西.事实上,只有拥有私钥b的人,才能解密出这份信息.换个角度来讲,每一个人均可以拥有Bob的公钥B,也就是说,每一个人均可以创造一份只有Bob可使用或者说只对Bob有效的信息.算法

  • 2.私钥加密,公钥解密
  • Tom写了一份公开声明文件,她用本身的私钥a对文件加了密,生成加密文件m,公布在本身的网站中.
  • Bob下载了这份声明文件,并用Tom的公钥A进行解密,正确的读出文件内容.

这里主要的目的不是解密,而是对这份文件的来源验证,证实它确定是由Tom发出的声明.即便文件被恶意篡改,那么此时再拿公钥A解密,就是无效的,由此可证实信息被改动过了,并非Tom原来的文件.用这种方式使用公私钥能够证实信息的来源而且有不能否定的特性.安全

以上是使用公钥加密算法的基础场景,但事实上用上述方法进行通讯还远远不够,例如须要提升加密速度,须要先对文件进行hash;再如不能抵御中间人攻击,(即获取的公钥不必定是正确的)须要引入证书.网络

椭圆曲线

  • 1.一条椭圆曲线是在射影平面上知足威尔斯特拉斯方程(Weierstrass)全部点的集合:

威尔斯特拉斯方程

  • 椭圆曲线方程是一个齐次方程
  • 曲线上的每一个点都是非奇异的(光滑的),偏导数FX(X,Y,Z),FY(X,Y,Z),FZ(X,Y,Z)不一样为0.
  • 椭圆曲线的形状并非椭圆的.只是由于椭圆曲线的描述方程,相似于计算一个椭圆周长的方程故得名.

通常来讲,椭圆曲线能够用下列方程式表示,a,b,c,d为系数(a≠0,ax^3+bx^2+cx+d=0没有重根)post

E:y^2=ax^3+bx^2+cx+d 例如,当a=1,b=0,c=-2,d=4时,所获得的椭圆曲线为:性能

E_1:y^2=x^3-2x+4 椭圆曲线下图所示。网站

椭圆曲线的加法

群是一种代数结构,由一个集合以及一个二元运算所组成,已知集合和运算(G,*)若是是群则必须知足以下要求:编码

  • 封闭性: ∀a,b∈G,a * b ∈ G
  • 综合性: ∀a,b,c∈G ,有 (a * b) * c = a * (b * c)
  • 单位元: ョe∈G, ∀a ∈G,有e * a = a * e = a
  • 逆元: ∀a ∈G ,ョb∈G 使得 a * b = b * a = e 有一种特殊的群叫阿贝尔群,它除了上面的性质还知足交换律公理: a * b = b * a 在整数范围内的加法运算就是一个阿贝尔群(Z,+).
  • 封闭性: a和b是整数,那么a+b确定是整数.
  • 结合性: (a+b)+c = a + (b + c)
  • 单位元: 0即为单位元,由于对于全部整数a, a + 0 = 0 + a = a.
  • 逆元: a的逆元为-a,由于a + (-a)=0,即单位元. 因此(Z,+)是阿贝尔群.

定义椭圆曲线上的加法。 如今有椭圆曲线y^2 = x ^ 3 - x,曲线上的点P和Q。过P和Q作一条直线,交椭圆曲线为点R',再过R'点作垂直于X轴的直线,交曲线另外一点为R,定义P + Q = R。以下图所示。加密

若P=Q,则为过P点的切线交于椭圆曲线为R'。以下图所示。设计

这样,称R = 2P。相似的,3P = P + P + P = P + 2P = P + R。也就是说,当给定点P时,“已知数x求点xG的运算”不难,由于有加法的性质,运算起来能够比较快。但反过来,“已知点xG求x的问题”则很是困难,由于只能遍历每个x作运算。这就是椭圆曲线密码中所利用的“椭圆曲线上的离散对数问题”。

要想使这个运算知足阿贝尔群的性质,咱们还要引入一个无穷远点O,能够把它理解为平行直线的交点(若是感受难以理解,请参考无穷远点的定义),咱们把这个O点做为单位元。(方便理解,你能够当作全部平行于y轴的直线交于O点)。

椭圆曲线上的加法为一个阿贝尔群

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

椭圆曲线密码利用了上述“运算”中的“椭圆曲线上的离散对数问题”的复杂度,就像RSA利用了“大数质因数分解”的复杂度,以及EIGamal密码的Diffie-Hellman密钥交换利用了“有限域上的离散对数问题”的复杂度同样

椭圆曲线上的离散对数问题: 已知 椭圆曲线E 椭圆曲线E上一点G(基点) 椭圆曲线E上的一点xG(x倍的G) 求解 x 这个问题的难度保证了椭圆曲线密码的安全性。

有限域上的椭圆曲线

椭圆曲线加密

考虑K=kG ,其中K、G为椭圆曲线Ep(a,b)上的点,n为G的阶(nG=O∞ ),k为小于n的整数。则给定k和G,根据加法法则,计算K很容易但反过来,给定K和G,求k就很是困难。由于实际使用中的ECC原则上把p取得至关大,n也至关大,要把n个解点逐一算出来列成上表是不可能的。这就是椭圆曲线加密算法的数学依据点G称为基点(base point)k(k<n)为私有密钥(privte key)K为公开密钥(public key)

ECC保密通讯算法

1.Alice选定一条椭圆曲线E,并取椭圆曲线上一点做为基点G 假设选定E29(4,20),基点G(13,23) , 基点G的阶数n=37

2.Alice选择一个私有密钥k(k<n),并生成公开密钥K=kG 好比25, K= kG = 25G = (14,6)

3.Alice将E和点K、G传给Bob

4.Bob收到信息后,将待传输的明文编码到上的一点M(编码方法略),并产生一个随机整数r(r<n,n为G的阶数) 假设r=6 要加密的信息为3,由于M也要在E29(4,20) 因此M=(3,28)

5.Bob计算点C1=M+rK和C2=rG C1= M+6K= M+625G=M+2G=(3,28)+(27,27)=(6,12) C2=6G=(5,7)

6.Bob将C一、C2传给Alice

7.Alice收到信息后,计算C1-kC2,结果就应该是点M C1-kC2 =(6,12)-25C2 =(6,12)-25*6G =(6,12)-2G =(6,12)-(27,27) =(6,12)+(27,2) =(3,28)

数学原来上能解密是由于:C1-kC2=M+rK-krG=M+rkG-krG-M

ECC技术要求

一般将Fp上的一条椭圆曲线描述为T=(p,a,b,G,n,h)p、a、b肯定一条椭圆曲线(p为质数,(mod p)运算)G为基点,n为点G的阶,h是椭圆曲线上全部点的个数m与n相除的商的整数部分

参量选择要求:

p越大安全性越好,但会致使计算速度变慢 200-bit左右可知足通常安全要求 n应为质数 h≤4;p≠n×h ;pt≠1(mod n) (1≤t<20) 4a3+27b2≠0 (mod p)

ECC的应用

ECDSA
比特币系统选用的secp256k1中,参数为

p = 0xFFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFE FFFFFC2F = 2^256 − 2^32 − 2^9 − 2^8 − 2^7 − 2^6 − 2^4 − 1

a = 0, b = 7

G=(0x79BE667EF9DCBBAC55A06295CE870B07029BFCDB2DCE28D959F2815B16F81798, 0x483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8)

n = 0xFFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFE BAAEDCE6 AF48A03B BFD25E8C D0364141

h = 01

ECC vs. RSA - 优缺点

优势

安全性能更高

160位ECC与1024位RSA、DSA有相同的安全强度

处理速度更快

在私钥的处理速度上,ECC远 比RSA、DSA快得多

带宽要求更低

存储空间更小

ECC的密钥尺寸和系统参数与RSA、DSA相比要小得多

缺点

设计困难,实现复杂

若是序列号设计太短,那么安全性并无想象中的完善

参考资料:

椭圆曲线加密算法

ECC椭圆曲线详解(有具体实例)

相关文章
相关标签/搜索