椭圆曲线点乘运算的硬件实现方法及其系统与流程

文档序号:14993328发布日期:2018-07-20 22:56阅读:1697来源:国知局

本发明涉及数据硬件加密处理技术领域,特别是涉及一种椭圆曲线点乘运算的硬件实现方法及其系统。



背景技术:

在信息安全领域中,最重要的环节就是信息加密技术,加密技术在应用中又主要用在软件加密和硬件加密方面。在现有的常用加密方法(包括对称加密方法和非对称加密方法)中,由于算法的复杂度以及硬件方面较难实现,非对称加密方法被作为安全系数较高的加密方法使用。在现有的非对称加密方法中,椭圆曲线加密安全性高但较难实现,而在椭圆曲线加密运算中点乘运算的速度又决定了整体加密运算的速度,因此点乘模块可以算是加解密算法硬件实现时最重要模块之一。

在当前基于有限域的椭圆曲线加密设计中,椭圆曲线指的是由韦尔斯特拉斯(weierstrass)方程确定的平面曲线。现有技术中,椭圆曲线加密点乘模块的硬件实现大多使用基于素域的常规点乘运算方法,维数也相对较小,一般使用163、191、233;同时,由于常规点乘运算使用的算法较复杂,故导致硬件实现时设计的模块较多,功能实现较繁琐,且需要提前做预处理,会消耗大量时间。



技术实现要素:

本发明的主要目的在于提供一种椭圆曲线点乘运算的硬件实现方法及其系统,旨在简化椭圆曲线加密算法、节约运算时间。

为实现上述目的,本发明提供一种椭圆曲线点乘运算的硬件实现方法,包括以下步骤:

获取椭圆曲线上的曲线点横坐标和点乘系数;

根据所述曲线点横坐标与所述点乘系数设置射影坐标下的坐标参数;

计算所述坐标参数以得到所述射影坐标下的横坐标;

转换所述射影坐标下的横坐标以得到点乘结果。

优选地,所述根据所述曲线点横坐标与所述点乘系数设置射影坐标下的坐标参数还包括:

设置所述坐标参数x1、z1、x2、z2的值:令x1等于所述曲线点横坐标px、x2等于px4+b、z1等于1、z2等于px2,其中b为预设参数。

优选地,所述计算所述坐标参数以得到所述射影坐标下的横坐标还包括:所述射影坐标下的横坐标通过等式x=x/z计算;

根据所述点乘系数k的位数n对坐标参数(x1,z1)、(x2,z2)分别依次进行n-1次点加运算和倍加运算,以得到x、z的值。

优选地,所述转换所述射影坐标下的横坐标以得到点乘结果还包括:通过等式qx=x/z计算点乘结果,其中,x和z为通过点加运算和倍加运算的计算所述坐标参数后输出的运算结果。

优选地,所述获取椭圆曲线上的曲线点横坐标和点乘系数还包括:输入所述点乘系数k的值,并将其转换为二进制数。

本发明还提供一种椭圆曲线点乘运算系统,包括:

用于存储椭圆曲线上的曲线点横坐标和点乘系数的寄存器;

连接于所述寄存器并获取所述曲线点横坐标和所述点乘系数的控制器;

所述控制器包括计算模块,用于计算所述曲线点横坐标和所述点乘系数的点乘结果。

优选地,所述控制器还包括转换模块,用于将所述点乘系数转换为二进制数,以及将曲线点横坐标转换为射影坐标下的坐标参数。

优选地,所述计算模块包括点加运算模块、倍加运算模块和坐标转换模块;

所述点加运算模块和所述倍加运算模块获取所述点乘系数以及所述坐标参数进行计算;

所述点加运算模块和所述倍加运算模块将计算后的结果发送至所述坐标转换模块以得到点乘结果。

优选地,所述点加运算模块和所述倍加运算模块为有限域内的乘法模块。

优选地,所述坐标转换模块为求逆计算模块。

本发明技术方案通过基于射影坐标的表示方法,将椭圆曲线上的曲线点横坐标和点乘系数在射影坐标模式下进行计算,无需对输入数据做预处理,同时由于只采用了点的横坐标做点乘运算,所以简化了算法、节约了运算时间。

附图说明

图1为本发明椭圆曲线点乘运算的硬件实现方法流程示意图;

图2为本发明椭圆曲线点乘运算系统原理示意图。

本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。

具体实施方式

应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

下面结合附图对本发明进一步说明。

本发明是基于蒙哥马利(montgomery)点乘算法,该算法中,点的表示方法摒弃传统的(x,y)表示方式,改用射影坐标模式(x,z)的表示方法,在硬件实现上减少了设计模块,从而减少了资源的占用。本发明椭圆曲线点乘运算的硬件实现方法及其系统采用特征为2的有限域gf(2n)的椭圆曲线作为硬件的实现方案,其中维数n=283,相比于现有技术中使用的维数163、191、233,可以大大提高加密安全系数,

如图1所示,本实施例提供一种椭圆曲线点乘运算的硬件实现方法,包括以下步骤:

获取椭圆曲线上的曲线点横坐标和点乘系数;根据所述曲线点横坐标与所述点乘系数设置射影坐标下的坐标参数;计算所述坐标参数以得到所述射影坐标下的横坐标;转换所述射影坐标下的横坐标以得到点乘结果。

在椭圆曲线加密过程中,椭圆曲线公式为:y2+xy=x3+ax2+b,加密过程即为求椭圆曲线点乘q=k*px=qx,其中,px的值为椭圆曲线上任意一点(x,y)的横坐标x的值;k为用户在加密前自定义的参数,表示需要做点乘运算的次数,一般是随机生成的不为0的数字;a和b为固定参数,在实际运算过程中,一般取值为1,这样点乘运算的速度可达最快。

设置所述坐标参数x1、z1、x2、z2的值:令x1等于所述曲线点横坐标px、x2等于px4+b、z1等于1、z2等于px2,其中b为预设参数。输入所述点乘系数k的值,并将其转换为二进制数。将整数k转换成计算机能识别的二进制数;将椭圆曲线点横坐标px转换成射影坐标(x,z)模式。

优选地,所述计算所述坐标参数以得到所述射影坐标下的横坐标还包括:所述射影坐标下的横坐标通过等式x=x/z计算;根据所述点乘系数k的位数n对坐标参数(x1,z1)、(x2,z2)分别依次进行n-1次点加运算和倍加运算,以得到x、z的值。计算二进制数k和射影坐标(x,z)的点乘运算结果,以得到相乘后射影坐标模式下椭圆曲线上另一点的横坐标x。

优选地,所述转换所述射影坐标下的横坐标以得到点乘结果还包括:通过等式qx=x/z计算点乘结果,其中,x和z为通过点加运算和倍加运算的计算所述坐标参数后输出的运算结果。将计算得到的射影坐标模式下另一点横坐标x转换成仿射坐标模式下的点的横坐标qx,即得到点乘的结果。

本实施例的点乘运算过程如下:

s1、判断k和px是否为0,若为0则输出qx=0并结束;

s2、将整数k转换为二进制数(kn-1kn-2…k1k0),n表示二进制的k的位数;

s3、设置所述坐标参数x1、z1、x2、z2的值:令x1=px,x2=px4+b,z1=1、z2=px2,其中b为1;其中x1、z1、x2、z2为在椭圆曲线上的点px射影坐标下的值;

s4、依次从k的次高位开始判断其值为1或0分别进行不同的点加运算和倍加运算,以计算射影坐标下的横坐标x(x,z),即依次从kn-2至k0判断该位的值为1还是为0:

当ki=1时(i的取值范围为n-2至0),通过madd(x1,z1,x2,z2),mdouble(x2,z2)计算的x值;其中madd和mdouble分别表示射影坐标下的点加运算和倍加运算;

当ki=0时(i的取值范围为n-2至0),通过madd(x2,z2,x1,z1),mdouble(x1,z1)计算的x值;

具体地,当ki=1时,madd(x1,z1,x2,z2)通过等式x=(x1*z2+x2*z1)2,z=x*z3+(x1*z2)*(x2*z1)计算得到x、z;令x1=x,z1=z,带入等式x=x24+b·z24,z=z22·x22以计算mdouble(x2,z2),再将计算得到的x、z分别赋予下一循环计算中的x2、z2;

当n=0时,保存计算结果x、z,即得到射影坐标下的横坐标x=(x,z);

s5、输出点乘运算计算结果qx=x=x/z。

在本发明实施例中,p点的纵坐标并不参与点乘算法运算过程,在不影响加解密过程的前提下,大大减少了运算所消耗的时间,也节约了点乘算法涉及的硬件资源。

本发明技术方案通过基于射影坐标的表示方法,将输入的椭圆曲线上的曲线点横坐标和点乘系数在射影坐标模式下进行计算,无需对输入数据做预处理,简化了算法、节约了运算时间。

如图2所示,本发明还提供一种椭圆曲线点乘运算系统,包括:

用于存储椭圆曲线上的曲线点横坐标和点乘系数的寄存器;连接于所述寄存器并获取所述曲线点横坐标和所述点乘系数的控制器;所述控制器包括计算模块,用于计算所述曲线点横坐标和所述点乘系数的点乘结果。

优选地,所述控制器还包括转换模块,用于将所述点乘系数转换为二进制数,以及将曲线点横坐标转换为射影坐标下的坐标参数。在一些实施例中,点乘系数k在输入寄存器时即可自动转换为二进制数,则不需要额外的转换模块进行转换。

优选地,所述计算模块包括点加运算模块、倍加运算模块和坐标转换模块;所述点加运算模块和所述倍加运算模块获取所述点乘系数以及所述坐标参数进行计算;所述点加运算模块和所述倍加运算模块将计算后的结果发送至所述坐标转换模块以得到点乘结果。

优选地,所述点加运算模块和所述倍加运算模块为有限域内的乘法模块。所述坐标转换模块为求逆计算模块。

根据上述实施例可知,计算模块需要计算的等式包括点加运算和倍加运算,而点加运算和倍加运算主要是由乘法、加法实现,在具体实施例中,计算模块则只需要乘法模块即可实现:点加运算和倍加运算中的加法可通过简单的异或即可实现,不需要另外增加加法模块;点加运算和倍加运算中的乘法通过控制模块分别调用乘法模块即可。而完成点加运算、倍加运算计算得到x、z后,将射影坐标下的横坐标通过转换模块转换为放射模式下的坐标,即计算qx=x/z还需使用求逆计算模块计算得到点乘结果。本发明通过更少的模块即可实现椭圆曲线加密算法中的点乘运算,减少了硬件实现时的端口个数,增加运算速度。

在另一些实施例中,上述乘法模块包括第一乘法模块和第二乘法模块,为了使上述实施例中等式内的同等级乘法运算可同时进行,可以增加乘法模块,以加快点乘运算的速度。

应当理解的是,以上仅为本发明的优选实施例,不能因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1