ECC椭圆曲线加解密原理详解(配图)

ECC椭圆曲线加解密原理详解(配图)

本文主要参照:ECC加密算法入门介绍ECC椭圆曲线详解(有具体实例)

前言: 椭圆曲线(ECC)加密原理跟RSA加解密原理比起来,可真是晦涩难懂。拜读了Kalafinaian的文章“ECC椭圆曲线详解(有具体实例)”,终于看到了参透的曙光。 由于原文中有微小的瑕疵,也为了便于阅读起来更加流畅,我重新整理了一下这篇文章。

为什么使用椭圆曲线加密算法?

RSA的解决分解整数问题需要亚指数时间复杂度的算法,而目前已知计算椭圆曲线离散对数问题(ECDLP)的最好方法都需要全指数时间复杂度。这意味着在椭圆曲线系统中我们只需要使用相对于RSA 短得多的密钥就可以达到与其相同的安全强度。例如,一般认为160比特的椭圆曲线密钥提供的安全强度与1024比特RSA密钥相当。使用短的密钥的好处在于加解密速度快、节省能源、节省带宽、存储空间。
比特币以及中国的二代身份证都使用了256 比特的椭圆曲线密码算法。

实数椭圆曲线

什么是椭圆曲线,想必大家都会首先想到的是高中时学到的标准椭圆曲线方程。
x 2 a 2 + y 2 b 2 = 1 ( a > b , 焦 点 在 x 轴 , a < b , 焦 点 在 y 轴 ) \frac{x^2}{a^2} + \frac{y^2}{b^2} = 1 (a>b,焦点在x轴,a<b,焦点在y轴) a2x2+b2y2=1(a>bxa<by)

其实本文提到的椭圆曲线,跟这个高中时代的椭圆曲线方程基本无关。椭圆曲线的椭圆一词来源于椭圆周长积分公式。(这个命名深究起来比较复杂,了解一下就可以了1)

一条椭圆曲线是在射影平面上满足威尔斯特拉斯方程(Weierstrass)所有点的集合,
Y 2 Z + a 1 X Y Z + a 3 Y Z 2 = X 3 + a 2 X 2 Z + a 4 X Z 2 + a 6 Z 3 Y^2Z+a_1XYZ+a_3YZ^2=X^3+a_2X^2Z+a_4XZ^2+a_6Z^3 Y2Z+a1XYZ+a3YZ2=X3+a2X2Z+a4XZ2+a6Z3
对普通平面上点(x,y),令x=X/Z,y=Y/Z,Z≠0,得到如下方程
y 2 Z 3 + a 1 x y Z 3 + a 3 y Z 3 = x 3 Z 3 + a 2 x 2 Z 3 + a 4 x Z 3 + a 6 Z 3 y^2Z^3+a_1xyZ^3+a_3yZ^3=x^3Z^3+a_2x^2Z^3+a_4xZ^3+a_6Z^3 y2Z3+a1xyZ3+a3yZ3=x3Z3+a2x2Z3+a4xZ3+a6Z3
约掉 Z 3 Z^3 Z3可以得到: y 2 + a 1 x y + a 3 y = x 3 + a 2 x 2 + a 4 x + a 6 y^2+a_1xy+a_3y=x^3+a_2x^2+a_4x+a_6 y2+a1xy+a3y=x3+a2x2+a4x+a6

简化版的Weierstrass方程:
E : y 2 = x 3 + a x + b E: y^2= x^3+ax+b E:y2=x3+ax+b
其中,
(1) Δ = − 16 ( 4 a 3 + 27 b ) ≠ 0 \Delta= -16(4a^3+27b) \neq 0 Δ=16(4a3+27b)=0 ,用来保证曲线是光滑的,即曲线的所有点都没有两个或者两个以上的不同的切线。
(2) a , b ∈ K , K 为 E 的 基 础 域 。 a,b\in K, K为E的基础域。

  • 134
    点赞
  • 794
    收藏
    觉得还不错? 一键收藏
  • 36
    评论
评论 36
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值