非对称加密算法(三):ECC

ECC 基于控制有限域上椭圆曲线代数结构的数学算法。它提供与 RSA 和 DSA 同等级别的加密强度,但密钥长度更短;ECC 是三者中最新开发的加密方法,椭圆曲线数字签名算法 (ECDSA) 于 1999 年获得认可,使用椭圆曲线加密的密钥协议和密钥传输于 2001 年紧随其后;与 DSA 一样,ECC 已通过 FIPS 认证,并且还得到了美国国家安全局 (NSA) 的认可

1 数学基础

1.1 实数域上的椭圆曲线

1.相关概念

射影平面:二维射影空间,可以视为普通平面上追加一条无穷远点组成的无穷远直线

是代数几何、射影几何里最基本的对象,简单说来,可以理解为普通欧式平面加上无穷远点和由无穷远点组成的无穷远直线

代数中的群:简单来说就是一组元素集合和定义在元素上的运算,比如说全体整数构成了一个群,运算包括加法等,这里集合用 G(group)表示,集合要变成群,一般要满足以下性质:

  1. 封闭性:如果 a 和 b 都属于G集合,那么a+b 也属于G

  2. 结合律:(a+b)+c=a+(b+c)

  3. 存在单位元(在二元运算中,单位元指与任意元素运算不改变其值的元素,以实数为例,乘法单元为1,加法单位元为0) O使得a+O=O+a=a

  4. 每个元素都存在逆元素,就是说对于任意元素a必存在b使得a+b=O(O是单位元)

集合满足以上四个性质就是称为群

阿贝尔群(Abelian Group)除了满足群的基本性质,还满足交换律即:a+b=b+a,故阿贝尔群又称交换群

根据这些性质,可以知道整数集Z是一个阿贝尔群,自然数集 N 却并不是一个群,因为它不满足第四条性质

2.实数椭圆曲线

标准的椭圆曲线方程是在射影平面上定义的三元齐次方程,即:

一条椭圆曲线是在射影平面上满足威尔斯特拉斯方程(Weierstrass)所有点的集合

Y^2Z+a_1XYZ+a_3YZ^2=X^3+a_2X^2Z+a_4XZ^2+a_6Z^3

对普通平面上点(x,y),令

x=X/Z,y=Y/Z,Z\neq 0

得到如下方程

y^2Z^3+a_1xyZ^3+a_3yZ^3=x^3Z^3+a_2x^2Z^3+a_4xZ^3+a_6Z^3

可以得到

y^2+a_1xy+a_3y=x^3+a_2x^2+a_4x+a_6

简化版的Weierstrass方程:

E :y^2 = x^3+ax+b

其中

\Delta = -16(4a^3+27b^2)\neq 0是用来保证曲线是光滑的,即曲线的所有点都没有两个或两个以上不同的切线

a,b\in K,K为E的基础域

O_\infty点是曲线的唯一无穷远点

上述威尔斯特拉斯方程(Weierstrass),满足:

  • 椭圆曲线方程是一个齐次方程

  • 曲线上的每个点都必须是非奇异的(光滑的),偏导数F_X(X,Y,Z)、F_Y(X,Y,Z)、F_Z(X,Y,Z)不同为0

  • 圆曲线的形状,并不是椭圆的,只是因为椭圆曲线的描述方程,类似于计算一个椭圆周长的方程故得名

举例: 1.以下是椭圆曲线:

2.以下不是椭圆曲线,我们可以注意到下述曲线上的点在零点处不光滑

3.椭圆曲线上的群

群中的集合元素,可以是数,也可以是其他类型元素,比如解析集合中的点(坐标形式)等

那么椭圆曲线上的群元素就是椭圆曲线上的点,则:

  • 单位元是无穷远点记为O

  • 任意点P的逆元素是该点关于X轴的对称点

椭圆曲线群的加法定义:

  • 可以描述为: 给定三个共线非零的点 P ,Q,R ,它们的和为 P+Q+R=O

  • 几何意义是:过𝑃、𝑄两点做直线𝐿,与椭圆曲线相交于第三点,该点关于X轴的对称点𝑅点即为P+Q所得的点(R’点与R点互逆),故该群具有封闭性

椭圆曲线的加法运算有比较明确的几何含义,如图所示:

下面处理一些特殊情况:

  1. 𝑂+𝑂=𝑂,对任意的𝑃,有𝑃+𝑂=𝑃(𝑂看做零点)

  2. 𝑃=(𝑥,𝑦) 的逆元素是关于X轴对称的点−𝑃=(𝑥,−𝑦)(而不是关于原点对称),𝑃+(−𝑃)=𝑂,可以看做P与-P连线与椭圆曲线相交于无穷远点

  3. 计算𝑃点(𝑃≠𝑂)的两倍时,是做该点的切线,再取切线与椭圆曲线的交点𝑆,找出𝑆点关于X轴的对称点−𝑆点,也即是2𝑃=𝑃+𝑃=−𝑆,得出2倍值可以递推到若干倍

可以看出,椭圆曲线的点集(包含无穷远点O)和上述定义的加法运算构成了一个阿贝尔群:单位元是𝑂点,𝑃(𝑥,𝑦)的逆元是𝑃’(𝑥,−𝑦),封闭性,结合性以及交换性也是满足的

椭圆曲线群的代数运算上述几何意义,用代数描述就是求以下方程组:

\begin{cases} y^2=x^3+ax+b,\quad (1)\\ y-y_p=k(x-x_p),\quad (2) \end{cases}

其中斜率

k=\frac{y_q-y_p}{x_q-x_p}

将 (2)代入(1)再利用次数对齐的方式容易求得第三个交点的对称点,也即P,Q之和R为:

x_r=k^2-x_p-x_q\\ y_r=-y_p+k(x_p-x_r)

如果P=Q,则两者相加就是计算倍乘,可以让多个点自身重复相加得到

例如P+P=2P=R

\Delta \neq 0时,代数描述为:

x_r=(\frac {3x_p^2+a}{2y_p})^2-2x_p\\ y_r=\frac {3x_p^2+a}{2y_p}(x_p-x_r)-y_p

以上是椭圆曲线群元素在实数域上的运算

1.2 有限域上的椭圆曲线

实数域上加法运算不能满足实际安全需要,因为实数是连续的,知道结果就可以使用逆运算求解,不适合用来加密,所以必须把椭圆曲线变成离散的点

1.模素数P运算

密码学采用有限域上的椭圆曲线,即椭圆方程系数和变量取值均在一个有限的范围内,使用模素数𝑝的有限域Fp,将模运算引入到椭圆曲线算术中,变量和系数从集合[0,𝑝−1]中取值而非是在实数上取值

  • 其中有限域Fp中有p(p为质数)个元素0,1,2,…, p-2,p-1

  • Fp的加法:a+b =c (mod p)

  • Fp的乘法:a x b=c (mod p)

  • Fp的除法:a /b =c (mod p),即

a\times b^{-1}= c\mod p,\quad b^{-1}也是一个0到p-1之间的整数,但满足

b\times b^{-1} =1\mod p

  • Fp的单位元是1,零元是0

  • Fp域内运算满足交换律、结合律、分配律

椭圆曲线Ep(a,b),p为质数

x,y \in [0,p-1]

y^2=x^3+ax+b \mod p

判别式

(4a^3+27b^2)\neq 0\mod p

满足上式所有正整数解和无穷远点O,数学符号记为Ep(a,b),这是一个有限的离散(非连续)的点集

由此可知,集合中的点分布在(0,0)到(𝑝−1,𝑝−1)的象限中

实际上,集合𝐸𝑝(𝑎,𝑏)与模𝑝的加法运算构成循环阿贝尔群

2.有限域模素数上的加法

Fp(a,b)上的加法规则和实数域上的加法基本一致,但是多了模运算,模𝑝的加法没有直观上的几何解释,只有代数描述

O_\infty点是零元,有

O_\infty +O_\infty=O_\infty,O_\infty+P=P

P(x,y)的负元是

(x,-y\mod p)=(x,p-y),有

P+(-P)=O_\infty

P(x1,y1),Q(x2,y2)与R(x3,y3)有如下关系:

x_3 = k^2-x_1-x_2\mod p\\ y_3=k(x_1-x_3)-y_1 \mod p\\ if \quad P=Q,then \quad k=\frac{3x_1^2+a}{2y_1}\mod p\\ if \quad P \neq Q,then \quad k=\frac{y_2-y_1}{x_2-x_1}\mod p

3.有限域椭圆曲线上的点的阶

如果椭圆曲线上一点P,存在最小的正整数n使得数乘

nP = O_\infty

则将n称为P的阶;若n不存在,则P是无限阶的

计算可得27P=-P=(3,13),所以

28P = O_\infty

即P的阶为28

这些点构成了一个循环阿贝尔群

1.3 椭圆曲线中的离散对数问题

考虑𝑄=𝑘𝑃,其中𝑄, 𝑃∈𝐸𝑝(𝑎,𝑏),𝑘<𝑝

对于给定的𝑘, 𝑝计算𝑄是很容易的;反过来给定𝑄,𝑃,计算𝑘是相当困难的,这就是椭圆曲线的离散对数问题

因此,可以将𝑄作为公钥,公开出去;𝑘作为私钥,秘密保管,通过公钥来破解私钥十分困难

2 加密原理和流程

私钥是一个不公开的数字,公钥是椭圆曲线上的一个点

A与B加密通信加密流程

  1. A选定一条椭圆曲线Ep(a,b),并取椭圆曲线上一点,作为基点G

  2. A选择一个私有密钥k,并生成公开密钥K=kG

  3. A将Ep(a,b)和点K,G传给B

  4. B接到信息后,将待传输的明文编码到Ep(a,b)上一点M,并产生一个随机整数r

  5. B计算点C1=M+rK;C2=rG

  6. B将C1、C2传给A

  7. A接到信息后,计算C1-kC2,结果就是点M

因为C1-kC2=M+rK-k(rG)=M+rK-r(kG)=M再对点M进行解码就可以得到明文

举例:

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

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

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

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

  5. Bob计算点C1和C2

C1=M+rK=M+6K=M+6G=(3,28)+6×(14,6)=(3,28)+(27,27)=(6,12)\\ C2=rG=6G=(5,7)

     6. Bob将C1、C2传给Alice

     7. Alicel收到信息后,计算C1-kC2,结果就是

M=C1-kC2=(6,12)-25C2=(6,12)-25×(5,7)=(6,12)-(27,27)=(6,12)+(27,2)\\=(3,28)

3 优缺点对比

ECC与RSA、DSA进行对比:

优点

缺点

安全性能更高:160位ECC与1024位RSA、DSA有相同的安全强度

设计困难、实现复杂

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

如果序列号设计过短,那么安全性并没有想象中的完善

带宽要求更低

存储空间更小:ECC的密钥尺寸和系统参数与RSA、DSA相比小得多

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值