173 2438 5004
KEROS加密芯片——品牌直销 | 免费样品 | 技术支持
当前位置:网站首页 > 资讯中心 正文 资讯中心

ecc加密算法

keros@mark 2022-10-22 资讯中心

很高兴和大家一起分享ecc加密算法的知识,希望对各位有所帮助。

本文目录一览

SSL证书是选择ECC算法加密好还是RSA算法好呢?

ECC算法更安全一些。

RSA算法相比,ECC算法拥有哪些优势:

 更适合于移动互联网:ECC加密算法的密钥长度很短(256位),意味着占用更少的存储空间,更低的CPU开销和占用更少的带宽。随着越来越多的用户使用移动设备来完成各种网上活动,ECC加密算法为移动互联网安全提供更好的客户体验。

更好的安全性:ECC加密算法提供更强的保护,比目前的其他加密算法能更好的防止攻击,使你的网站和基础设施比用传统的加密方法更安全,为移动互联网安全提供更好的保障。

更好的性能: ECC加密算法需要较短的密钥长度来提供更好的安全,例如,256位的ECC密钥加密强度等同于3072位RSA密钥的水平(目前普通使用的RSA密钥长度是2048位)。其结果是你以更低的计算能力代价得到了更高的安全性。经国外有关权威机构测试,在Apache和IIS服务器采用ECC算法,Web服务器响应时间比RSA快十几倍。

更大的IT投资回报:ECC可帮助保护您的基础设施的投资,提供更高的安全性,并快速处理爆炸增长的移动设备的安全连接。 ECC的密钥长度增加速度比其他的加密方法都慢(一般按128位增长,而 RSA则是倍数增长,如:1024 –2048--4096),将延长您现有硬件的使用寿命,让您的投资带来更大的回报。

应用说明:如果对浏览器信任没有要求,可以选择ECC证书,如果存在较低的浏览器使用那么必须采用RSA证书。

什么是ECC加密算法?

ECC(Elliptic Curve Cryptosystems )椭圆曲线密码体制,美国SUN公司开发的,它的体制根据其所依据的难题一般分为三类:大整数分解问题类、离散对数问题类、椭圆曲线类。有时也把椭圆曲线类归为离散对数类,是目前已知的公钥体制中,对每比特所提供加密强度最高的一种体制,如果你能理解RSA算法,也算是对ECC有大概的了解,建议你去买些相关书籍看看。

什么是RSA和ECC算法?

RSA(Rivest-Shamir-Adleman)加密算法:它是第 一个既能用于数据加密也能用于数字签名的算法。比较易于理解和操作,是高强度非对称加密系统,密钥长度少则512位,多则2048位,非常难破解,安全系数是非常高的。ECC(Elliptic Curve Cryptosystems )加密算法:椭圆曲线密码体制,它同样也是在数据位上额外的位存储一个用数据加密的代码。椭圆曲线其实可能比RSA更复杂。国内的老品牌CA机构-天威诚信,旗下的vTrus SSL证书,该证书支持 SHA256 with RSA 2048 算法/ECC 256 算法。

ECC 算法简介

与 RSA(Ron Rivest,Adi Shamir,Len Adleman 三位天才的名字)一样,ECC(Elliptic Curves Cryptography,椭圆曲线加密)也属于公开密钥算法。

一、从平行线谈起

平行线,永不相交。没有人怀疑把:)不过到了近代这个结论遭到了质疑。平行线会不会在很远很远的地方相交了?事实上没有人见到过。所以“平行线,永不相交”只是假设(大家想想初中学习的平行公理,是没有证明的)。

既然可以假设平行线永不相交,也可以假设平行线在很远很远的地方相交了。即平行线相交于无穷远点P∞(请大家闭上眼睛,想象一下那个无穷远点P∞,P∞是不是很虚幻,其实与其说数学锻炼人的抽象能力,还不如说是锻炼人的想象力)。

给个图帮助理解一下:

直线上出现P∞点,所带来的好处是所有的直线都相交了,且只有一个交点。这就把直线的平行与相交统一了。为与无穷远点相区别把原来平面上的点叫做平常点。

以下是无穷远点的几个性质。

直线 L 上的无穷远点只能有一个。(从定义可直接得出)

平面上一组相互平行的直线有公共的无穷远点。(从定义可直接得出)

平面上任何相交的两直线 L1、L2 有不同的无穷远点。(否则 L1 和 L2 有公共的无穷远点 P ,则 L1 和 L2 有两个交点 A、P,故假设错误。)

平面上全体无穷远点构成一条无穷远直线。(自己想象一下这条直线吧)

平面上全体无穷远点与全体平常点构成射影平面。

二、射影平面坐标系

射影平面坐标系是对普通平面直角坐标系(就是我们初中学到的那个笛卡儿平面直角坐标系)的扩展。我们知道普通平面直角坐标系没有为无穷远点设计坐标,不能表示无穷远点。为了表示无穷远点,产生了射影平面坐标系,当然射影平面坐标系同样能很好的表示旧有的平常点(数学也是“向下兼容”的)。

我们对普通平面直角坐标系上的点A的坐标(x, y)做如下改造:

令 x=X/Z ,y=Y/Z(Z≠0);则 A 点可以表示为(X:Y:Z)。

变成了有三个参量的坐标点,这就对平面上的点建立了一个新的坐标体系。

例 2.1:求点(1,2)在新的坐标体系下的坐标。

解:

∵X/Z=1 ,Y/Z=2(Z≠0)

∴X=Z,Y=2Z

∴坐标为(Z:2Z:Z),Z≠0。

即(1:2:1)(2:4:2)(1.2:2.4:1.2)等形如(Z:2Z:Z),Z≠0 的坐标,都是(1,2)在新的坐标体系下的坐标。

我们也可以得到直线的方程 aX+bY+cZ=0(想想为什么?提示:普通平面直角坐标系下直线一般方程是 ax+by+c=0)。

新的坐标体系能够表示无穷远点么?那要让我们先想想无穷远点在哪里。根据上一节的知识,我们知道无穷远点是两条平行直线的交点。那么,如何求两条直线的交点坐标?这是初中的知识,就是将两条直线对应的方程联立求解。

平行直线的方程是:

aX+bY+c1Z =0;

aX+bY+c2Z =0  (c1≠c2); (为什么?提示:可以从斜率考虑,因为平行线斜率相同);

将二方程联立,求解。有

c2Z= c1Z= -(aX+bY)

∵c1≠c2

∴Z=0 

∴aX+bY=0

所以无穷远点就是这种形式(X:Y:0)表示。注意,平常点 Z≠0,无穷远点 Z=0,因此无穷远直线对应的方程是 Z=0。

例 2.2:求平行线 L1:X+2Y+3Z=0 与 L2:X+2Y+Z=0 相交的无穷远点。

解:

因为 L1∥L2

所以有 Z=0, X+2Y=0

所以坐标为(-2Y:Y:0),Y≠0。

即(-2:1:0)(-4:2:0)(-2.4:1.2:0)等形如(-2Y:Y:0),Y≠0 的坐标,都表示这个无穷远点。

看来这个新的坐标体系能够表示射影平面上所有的点,我们就把这个能够表示射影平面上所有点的坐标体系叫做射影平面坐标系。

练习:

1、求点A(2,4) 在射影平面坐标系下的坐标。

2、求射影平面坐标系下点(4.5:3:0.5),在普通平面直角坐标系下的坐标。

3、求直线X+Y+Z=0上无穷远点的坐标。

4、判断:直线aX+bY+cZ=0上的无穷远点 和 无穷远直线与直线aX+bY=0的交点,是否是同一个点?

三、椭圆曲线

上一节,我们建立了射影平面坐标系,这一节我们将在这个坐标系下建立椭圆曲线方程。因为我们知道,坐标中的曲线是可以用方程来表示的(比如:单位圆方程是 x2+y2=1)。椭圆曲线是曲线,自然椭圆曲线也有方程。

椭圆曲线的定义:

一条椭圆曲线是在射影平面上满足如下方程的所有点的集合,且曲线上的每个点都是非奇异(或光滑)的。

Y2Z+a1XYZ+a3YZ2=X3+a2X2Z+a4XZ2+a6Z3                 [3-1]

定义详解:

Y2Z+a1XYZ+a3YZ2 = X3+a2X2Z+a4XZ2+a6Z3 是 Weierstrass 方程(维尔斯特拉斯,Karl Theodor Wilhelm Weierstrass,1815-1897),是一个齐次方程。

椭圆曲线的形状,并不是椭圆的。只是因为椭圆曲线的描述方程,类似于计算一个椭圆周长的方程(计算椭圆周长的方程,我没有见过,而对椭圆线 积分 (设密度为1)是求不出来的),故得名。

我们来看看椭圆曲线是什么样的。

所谓“非奇异”或“光滑”的,在数学中是指曲线上任意一点的偏导数 Fx(x,y,z),Fy(x,y,z),Fz(x,y,z) 不能同时为0。如果你没有学过高等数学,可以这样理解这个词,即满足方程的任意一点都存在切线。下面两个方程都不是椭圆曲线,尽管他们是方程 [3-1] 的形式,因为他们在(0:0:1)点处(即原点)没有切线。

椭圆曲线上有一个无穷远点O∞(0:1:0),因为这个点满足方程[3-1]。

知道了椭圆曲线上的无穷远点。我们就可以把椭圆曲线放到普通平面直角坐标系上了。因为普通平面直角坐标系只比射影平面坐标系少无穷远点。我们在普通平面直角坐标系上,求出椭圆曲线上所有平常点组成的曲线方程,再加上无穷远点O∞(0:1:0),不就构成椭圆曲线了么?

我们设 x=X/Z,y=Y/Z 代入方程 [3-1] 得到:

y2+a1xy+a3y = x3+a2x2+a4x+a6                            [3-2]

也就是说满足方程 [3-2] 的光滑曲线加上一个无穷远点O∞,组成了椭圆曲线。为了方便运算,表述,以及理解,今后论述椭圆曲线将主要使用 [3-2] 的形式。

本节的最后,我们谈一下求椭圆曲线一点的切线斜率问题。由椭圆曲线的定义可以知道,椭圆曲线是光滑的,所以椭圆曲线上的平常点都有切线。而切线最重要的一个参数就是斜率 k 。

例 3.1:求椭圆曲线方程 y2+a1xy+a3y=x3+a2x2+a4x+a6上,平常点 A(x,y) 的切线的斜率 k 。

解:

F(x,y)= y2+a1xy+a3y-x3-a2x2-a4x-a6

求偏导数

Fx(x,y)= a1y-3x2-2a2x-a4

Fy(x,y)= 2y+a1x+a3

则导数为:

f'(x)=- Fx(x,y)/ Fy(x,y)=-( a1y-3x2-2a2x-a4)/(2y+a1x +a3) = (3x2+2a2x+a4-a1y) /(2y+a1x +a3)

所以

k=(3x2+2a2x+a4-a1y) /(2y+a1x +a3)             [3-3]

看不懂解题过程没有关系,记住结论[3-3]就可以了。

练习:      

1、将给出图例的椭圆曲线方程Y2Z=X3-XZ2 和Y2Z=X3+XZ2+Z3转换成普通平面直角坐标系上的方程。

四、椭圆曲线上的加法

上一节,我们已经看到了椭圆曲线的图象,但点与点之间好象没有什么联系。我们能不能建立一个类似于在实数轴上加法的运算法则呢?天才的数学家找到了这一运算法则

自从近世纪代数学引入了群、环、域的概念,使得代数运算达到了高度的统一。比如数学家总结了普通加法的主要特征,提出了加群(也叫交换群,或 Abel(阿贝尔)群),在加群的眼中。实数的加法和椭圆曲线的上的加法没有什么区别。这也许就是数学抽象把。关于群以及加群的具体概念请参考近世代数方面的数学书。

运算法则:任意取椭圆曲线上两点 P、Q (若 P、Q两点重合,则做 P 点的切线)做直线交于椭圆曲线的另一点 R’,过 R’ 做 y 轴的平行线交于 R。我们规定 P+Q=R。(如图)

法则详解:

这里的 + 不是实数中普通的加法,而是从普通加法中抽象出来的加法,他具备普通加法的一些性质,但具体的运算法则显然与普通加法不同。

根据这个法则,可以知道椭圆曲线无穷远点 O∞ 与椭圆曲线上一点 P 的连线交于 P’,过 P’ 作 y 轴的平行线交于 P,所以有 无穷远点 O∞ + P = P 。这样,无穷远点 O∞ 的作用与普通加法中零的作用相当(0+2=2),我们把无穷远点 O∞ 称为零元。同时我们把 P’ 称为 P 的负元(简称,负P;记作,-P)。(参见下图)

根据这个法则,可以得到如下结论 :如果椭圆曲线上的三个点 A、B、C,处于同一条直线上,那么他们的和等于零元,即 A+B+C= O∞

k 个相同的点 P 相加,我们记作 kP。如下图:P+P+P = 2P+P = 3P。

下面,我们利用 P、Q点的坐标 (x1,y1),(x2,y2),求出 R=P+Q 的坐标 (x4,y4)。

例 4.1:求椭圆曲线方程 y2+a1xy+a3y=x3+a2x2+a4x+a6 上,平常点 P(x1,y1),Q(x2,y2) 的和 R(x4,y4) 的坐标。

解:

(1)先求点 -R(x3,y3)

因为 P, Q, -R 三点共线,故设共线方程为

y=kx+b

其中,若 P≠Q (P,Q两点不重合),则直线斜率

k=(y1-y2)/(x1-x2)

若 P=Q (P,Q两点重合),则直线为椭圆曲线的切线,

故由例 3.1 可知:

k=(3x2+2a2x+a4 -a1y) /(2y+a1x+a3)

因此 P, Q, -R 三点的坐标值就是以下方程组的解:

y2+a1xy+a3y=x3+a2x2+a4x+a6                                   [1]

y=(kx+b)                                                                      [2]

将 [2] 代入[1] 有

(kx+b)2+a1x(kx+b)+a3(kx+b) =x3+a2x2+a4x+a6        [3]

对 [3] 化为一般方程,根据三次方程根与系数关系(若方程x³+ax²+bx+c=0 的三个根是 x1、x2、x3,则: x1+x2+x3=-a,x1x2+x2x3+x3x1=b,x1x2x2=-c)

所以

-(x1+x2+x3)=a2-ka1-k2

x3=k2+ka1+a2+x1+x2    --------------------- 求出点 -R 的横坐标

因为

k=(y1-y3)/(x1-x3)

y3=y1-k(x1-x3)    ------------------------------ 求出点 -R 的纵坐标

(2)利用 -R 求 R

显然有

x4=x3=k2+ka1+a2+x1+x2   -------------- 求出点 R 的横坐标

而 y3 y4 为 x=x4 时 方程 y2+a1xy+a3y=x3+a2x2+a4x+a6 的解化为一般方程 y2+(a1x+a3)y-(x3+a2x2+a4x+a6)=0 , 根据二次方程根与系数关系(如果方程 ax²+bx+c=0 的两根为 x1、x2,那么 x1+x2=-b/a,x1x2=c/a)

得:

-(a1x+a3)=y3+y4

y4=-y3-(a1x+a3)=k(x1-x4)-y1-(a1x4+a3)   ----- 求出点 R 的纵坐标

即:

x4=k2+ka1+a2+x1+x2

y4=k(x1-x4)-y1-a1x4-a3

本节的最后,提醒大家注意一点,以前提供的图像可能会给大家产生一种错觉,即椭圆曲线是关于 x 轴对称的。事实上,椭圆曲线并不一定关于 x 轴对称。如下图的 y2-xy=x3+1

五、密码学中的椭圆曲线

我们现在基本上对椭圆曲线有了初步的认识,这是值得高兴的。但请大家注意,前面学到的椭圆曲线是连续的,并不适合用于加密。所以,我们必须把椭圆曲线变成离散的点。

让我们想一想,为什么椭圆曲线为什么连续?是因为椭圆曲线上点的坐标,是实数的(也就是说前面讲到的椭圆曲线是定义在实数域上的),实数是连续的,导致了曲线的连续。因此,我们要把椭圆曲线定义在有限域上(顾名思义,有限域是一种只有由有限个元素组成的域)。

域的概念是从我们的有理数,实数的运算中抽象出来的,严格的定义请参考近世代数方面的数。简单的说,域中的元素同有理数一样,有自己得加法、乘法、除法、单位元(1),零元(0),并满足交换率、分配率。

下面,我们给出一个有限域 Fp,这个域只有有限个元素。

Fp 中只有 p(p为素数)个元素 0, 1, 2 …… p-2, p-1

Fp 的加法(a+b)法则是 a+b≡c (mod p) ,即 (a+c)÷p 的余数和 c÷p 的余数相同。

Fp 的乘法(a×b)法则是 a×b≡c (mod p)

Fp 的除法(a÷b)法则是 a/b≡c (mod p),即 a×b-1≡c  (mod p) ,b-1 也是一个 0 到 p-1 之间的整数,但满足 b×b-1≡1 (mod p);具体求法可以参考初等数论。

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

同时,并不是所有的椭圆曲线都适合加密。y2=x3+ax+b是一类可以用来加密的椭圆曲线,也是最为简单的一类。下面我们就把 y2=x3+ax+b 这条曲线定义在 Fp 上:

选择两个满足下列条件的小于 p ( p 为素数) 的非负整数 a、b

4a3+27b2≠0  (mod p)

则满足下列方程的所有点 (x,y),再加上 无穷远点 O∞ ,构成一条椭圆曲线。

y2=x3+ax+b  (mod p)

其中 x,y 属于 0 到 p-1 间的整数,并将这条椭圆曲线记为 Ep(a,b)。

我们看一下 y2=x3+x+1  (mod 23) 的图像

是不是觉得不可思议?椭圆曲线,怎么变成了这般模样,成了一个一个离散的点?椭圆曲线在不同的数域中会呈现出不同的样子,但其本质仍是一条椭圆曲线。举一个不太恰当的例子,好比是水,在常温下,是液体;到了零下,水就变成冰,成了固体;而温度上升到一百度,水又变成了水蒸气。但其本质仍是 H2O。

Fp上的椭圆曲线同样有加法,但已经不能给以几何意义的解释。不过,加法法则和实数域上的差不多,请读者自行对比。

1. 无穷远点 O∞ 是零元,有 O∞ + O∞ = O∞,O∞ + P = P

2. P(x,y) 的负元是 (x,-y),有 P + (-P) = O∞

3. P(x1,y1), Q(x2,y2) 的和 R(x3,y3) 有如下关系:

x3≡k2-x1-x2(mod p) 

y3≡k(x1-x3)-y1(mod p)

    其中

若 P=Q 则 k=(3x2+a)/2y1 

若 P≠Q 则 k=(y2-y1)/(x2-x1)

例 5.1:已知 E23(1,1) 上两点 P(3,10),Q(9,7),求 (1)-P,(2)P+Q,(3) 2P。

解:

(1)  –P的值为(3,-10)

(2)  k=(7-10)/(9-3)=-1/2

2 的乘法逆元为 12, 因为 2*12≡1 (mod 23)

k≡-1*12 (mod 23)

故 k=11

x=112-3-9=109≡17 (mod 23)

y=11[3-(-6)]-10=89≡20 (mod 23)

故 P+Q 的坐标为 (17,20)

3)  k=[3(32)+1]/(2*10)=1/4≡6 (mod 23)

x=62-3-3=30≡20 (mod 23)

y=6(3-7)-10=-34≡12 (mod 23)

故 2P 的坐标为 (7,12)

最后,我们讲一下椭圆曲线上的点的阶。如果椭圆曲线上一点 P,存在最小的正整数 n,使得数乘 nP=O∞,则将 n 称为 P 的阶,若 n 不存在,我们说 P 是无限阶的。 事实上,在有限域上定义的椭圆曲线上所有的点的阶 n 都是存在的(证明,请参考近世代数方面的书)

练习:

1. 求出 E11(1,6) 上所有的点。

2.已知 E11(1,6) 上一点 G(2,7),求 2G 到 13G 所有的值。

六、椭圆曲线上简单的加密/解密

公开密钥算法总是要基于一个数学上的难题。比如 RSA 依据的是:给定两个素数 p、q 很容易相乘得到 n,而对 n 进行因式分解却相对困难。那椭圆曲线上有什么难题呢?

考虑如下等式:

K=kG     [其中 K, G为 Ep(a,b) 上的点,k 为小于 n(n 是点 G 的阶)的整数]

不难发现,给定 k 和 G,根据加法法则,计算 K 很容易;但给定 K 和 G,求 k 就相对困难了。这就是椭圆曲线加密算法采用的难题。我们把点 G 称为基点(base point),k(key point)就是私有密钥。

现在我们描述一个利用椭圆曲线进行加密通信的过程:

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(random)。

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 进行解码就可以得到明文。

在这个加密通信中,如果有一个偷窥者 H ,他只能看到 Ep(a,b)、K、G、C1、C2 而通过 K、G 求 k 或通过 C2、G 求 r 都是相对困难的。因此,H 无法得到 A、B 间传送的明文信息。

密码学中,描述一条 Fp 上的椭圆曲线,常用到六个参量:

T=(p,a,b,G,n,h)

p 、a 、b 用来确定一条椭圆曲线,G 为基点,n 为点 G 的阶,h 是椭圆曲线上所有点的个数 m 与 n 相除的整数部分。这几个参量取值的选择,直接影响了加密的安全性。参量值一般要求满足以下几个条件:

1、p 当然越大越安全,但越大,计算速度会变慢,200 位左右可以满足一般安全要求;

2、p≠n×h;

3、pt≠1 (mod n),1≤t20;

4、4a3+27b2≠0 (mod p);

5、n 为素数;

6、h≤4。

七、椭圆曲线签名在软件保护的应用

我们知道将公开密钥算法作为软件注册算法的好处是:黑客很难通过跟踪验证算法得到注册机。下面,将简介一种利用 Fp(a,b) 椭圆曲线进行软件注册的方法。

软件作者按如下方法制作注册机(也可称为签名过程)

1、选择一条椭圆曲线 Ep(a,b) 和基点 G;

2、选择私有密钥 k;

3、产生一个随机整数 r ;

4、将用户名和点 R 的坐标值 x,y 作为参数,计算 SHA(Secure Hash Algorithm 安全散列算法,类似于 MD5)值,即 Hash=SHA(username,x,y);

5、计算 sn≡r - Hash * k (mod n)

6、将 sn 和 Hash 作为用户名 username 的序列号

软件验证过程如下:(软件中存有椭圆曲线 Ep(a,b) 和基点 G 以及公开密钥 K)

1、从用户输入的序列号中,提取 sn 以及 Hash;

2、计算点 R≡sn*G+Hash*K ( mod p ),如果 sn、Hash 正确,其值等于软件作者签名过程中点 R(x,y) 的坐标,

因为 sn≡r-Hash*k (mod n)

所以 sn*G+Hash*K=(r-Hash*k)*G+Hash*K=rG-Hash*kG+Hash*K=rG-Hash*K+Hash*K=rG=R;

3、将用户名和点 R 的坐标值 x,y 作为参数,计算 H=SHA(username,x,y);

4、如果 H=Hash 则注册成功,如果 H≠Hash ,则注册失败(为什么?提示注意点 R 与 Hash 的关联性)。

简单对比一下两个过程:

作者签名用到了:椭圆曲线 Ep(a,b),基点 G,私有密钥 k,及随机数 r。

软件验证用到了:椭圆曲线 Ep(a,b),基点 G,公开密钥 K。

黑客要想制作注册机,只能通过软件中的 Ep(a,b),点 G,公开密钥 K ,并利用 K=kG 这个关系获得 k 才可以,而求 k 是很困难的。

练习:

下面也是一种常于软件保护的注册算法,请认真阅读,并试回答签名过程与验证过程都用到了那些参数,黑客想制作注册机,应该如何做。

软件作者按如下方法制作注册机(也可称为签名过程)

1、选择一条椭圆曲线 Ep(a,b),和基点 G;

2、选择私有密钥 k;

3、产生一个随机整数 r;

4、将用户名作为参数,计算 Hash=SHA(username);

5、计算 x’=x  (mod n)

6、计算 sn≡(Hash+x’*k)/r (mod n)

7、将 sn 和 x’ 作为用户名 username 的序列号

软件验证过程如下:(软件中存有椭圆曲线 Ep(a,b) 和基点 G 以及公开密钥 K)

1、从用户输入的序列号中,提取 sn 以及 x’;

2、将用户名作为参数,计算 Hash=SHA(username);

3、计算 R=(Hash*G+x’*K)/sn,如果 sn、Hash 正确,其值等于软件作者签名过程中点 R(x,y)

因为 sn≡(Hash+x’*k)/r (mod n)

所以 (Hash*G+x’*K)/sn=(Hash*G+x’*K)/[(Hash+x’*k)/r]=(Hash*G+x’*K)/[(Hash*G+x’*k*G)/(rG)]=rG*[(Hash*G+x’*K)/(Hash*G+x’*K)]=rG=R (mod p)

4、v≡x (mod n)

5、如果 v=x’ 则注册成功。如果 v≠x’ ,则注册失败。

主要参考文献

张禾瑞,《近世代数基础》,高等 教育 出版社,1978

闵嗣鹤 严士健,《初等数论》,高等教育出版社,1982

段云所,《网络信息安全》第三讲,北大计算机系

Michael Rosing ,chapter5《Implementing Elliptic Curve Cryptography》,Softbound,1998

《SEC 1: Elliptic Curve Cryptography》,Certicom Corp.,2000

《IEEE P1363a / D9》,2001

随着社会的发展,产品的更新速度也是越来越快,算法是方案的核心,保护开发者和消费者的权益刻不容缓,那么加密芯片在其中就扮演了重要的角色,如何选择加密芯片呢?
1.市面上加密芯片种类繁多,算法多种,加密芯片强度参差不齐,加密性能与算法、秘钥密切相关。常见的加密算法有对称算法,非对称算法,国密算法,大部分都是基于I2C、SPI或1-wire协议进行通信。加密芯片还是需要项目实际需求选择,比如对称加密算法的特点是计算量小、加密速度快、加密效率高等。
2.因为单片机软加密性能较弱且非常容易被复制,所以有了加密芯片的产生,大大增加了破解难度和生产成本。目前加密芯片广泛应用于车载电子、消费电子、美容医疗、工业控制、AI智能等行业。
3.韩国KEROS加密芯片专注加密领域十多年,高安全性、低成本,在加密保护领域受到了众多客户的高度赞扬及认可。KEROS采用先进的内置aes256安全引擎和加密功能,通过真动态数据交互并为系统中敏感信息的存储提供了安全的场所,有了它的保护电路,即使受到攻击,这些信息也可以保持安全。其封装SOP8,SOT23-6,TDFN-6集成I2C与1-wire协议满足不同应用需求。CK02AT、CK22AT、CK02AP、CK22AP支持1.8V-3.6V,256bit位秘钥长度,5bytes SN序列号,支持定制化免烧录,加密行业首选。关于ecc加密算法的介绍到此就结束了,感谢大家耐心阅读。

本文标签:ecc加密算法

产品列表
产品封装
友情链接