[发明专利]椭圆曲线点乘硬件快速实现方法有效
申请号: | 201110191950.3 | 申请日: | 2011-07-08 |
公开(公告)号: | CN102306091A | 公开(公告)日: | 2012-01-04 |
发明(设计)人: | 李小平;刘彦明;董庆宽;陈峙屹;张志强 | 申请(专利权)人: | 西安电子科技大学 |
主分类号: | G06F7/72 | 分类号: | G06F7/72 |
代理公司: | 陕西电子工业专利中心 61205 | 代理人: | 田文英;王品华 |
地址: | 710071*** | 国省代码: | 陕西;61 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 椭圆 曲线 硬件 快速 实现 方法 | ||
技术领域
本发明涉及通信技术领域,更进一步涉及密码学领域中的椭圆曲线点乘硬件快速实现方法。该方法可以用于固定点与非固定点的点乘运算,从而提高椭圆曲线数字签名(ECDSA),椭圆曲线加解密(ECIES),椭圆曲线密钥分配(ECDH)和椭圆曲线密钥对生成的运算速度。
背景技术
目前,国内外在对于基于椭圆曲线点乘运算上主要有两种方法,梳法和蒙哥马利点乘方法。
微软公司在其专利申请文件“椭圆曲线点乘法”(公开号CN 101507176A,申请号200680031543.3,申请日2006.6.29)中提出一种新的用梳法表示k的点乘计算方法,通过将奇整数k转换成二进制,然后再将该二进制配置成梳比特列,并且提出了一种更高效的比已知的梳法保存更少点的梳法变形,梳法变形在抗简单能量分析攻击上具体比较好的表现。这种方法存在的明显不足是,只能适合于固定点的点乘运算,应用范围窄。而且该方法在运算时还需要进行预计算,从而增加在系统外的开销,使得其应用范围有一定的限度。
清华大学在其专利申请文件“椭圆曲线密码系统的倍点系统”(公开号CN101262345A,申请号200810055618.2,申请日20081.4)与“椭圆曲线密码系统的点加系统”(公开号CN 101221491A,申请号200810055610.6,申请日2008.1.4)中公开了一种新型的倍点和点加系统,将点乘运算分解为点加和倍点运算,分别投影到仿射坐标系和雅格比投影坐标系,然后在不增加面积的情况下,以流水线结构将点加和倍点组合在一起,从而达到在一个基本层面优化椭圆曲线的点乘性能。该方法存在的不足是,这种点乘运算的组合方法在进行点乘运算时,其复杂度将随k值的增加而增加,而且在点乘运算速度过慢的问题上没有很大的改进。
发明内容
本发明的目的在于克服上述现有技术的不足,提出了一种适用于硬件实现的快速点乘方法。该方法可以使点乘运算在满足通用性的前提下能够以较小的面积和较快的 速度来完成运算,从而提高了ECDSA,ECIES,椭圆曲线密钥对的生成和ECDH的运算速度。
本发明实现的思路是,基于Lopez和Dahab两位学者提出的基于蒙哥马利算法的椭圆曲线点乘算法,利用硬件并行运算的特点,在资源消耗量没有明显的增加的情况下,将点乘运算中比较耗时的步骤进行拆分,重新组合形成一个新的比较节省时间的点乘硬件实现方法。
本发明的具体实现步骤如下:
(1)数据输入:通过数据输入端接收来自外部一个随机数和一个二进制域椭圆曲线基点;
(2)获取随机数;
(3)获取两倍基点的x坐标值:通过乘法组合运算获取两倍基点的x坐标值,在标准投影坐标下将基点、两倍基点的X坐标值、Z坐标值分别存放在寄存器X1、Z1、X2、Z2中;
(4)调用寄存器中的值:主状态机调用上一次运算结束后存放在寄存器X1、Z1、X2、Z2中的值;
(5)判断位操作:主状态机从随机数的最高位开始往低位进行逐位判断,若随机数当前判断位的值为1,则执行步骤(6),若为0,则执行步骤(7);
(6)基点乘法1运算
6a)主状态机同时做以下四个乘法运算:
调用乘法模块求寄存器X1、Z1中值的乘积,其结果存放在寄存器Z3中;调用乘法模块求寄存器X2、Z2中值的乘积,其结果存放在寄存器Z4中;调用乘法模块求寄存器X1、Z2中值的乘积,其结果存放在寄存器Z5中;调用乘法模块求寄存器X2、Z1中值的乘积;其结果存放在寄存器Z6中;
6b)主状态机同时做以下五个运算:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于西安电子科技大学,未经西安电子科技大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201110191950.3/2.html,转载请声明来源钻瓜专利网。