椭圆曲线密码点乘运算的方法和装置的制造方法
【技术领域】
[0001]本发明涉及数据加密领域,特别涉及一种椭圆曲线密码点乘运算的方法和装置。
【背景技术】
[0002]椭圆曲线密码学(Elliptic Curve Cryptography,ECC)是基于椭圆曲线数学的一种公钥密码的方法,ECC是目前公认的每比特安全性最高的密码体制,具有安全性高、速度快、密钥短、实现时所需占用资源少等优点。ECC—般基于两种有限域:二元扩域和素数域,目前常用的是素数域ECC算法。素数域ECC的实现基于大数运算。
[0003]素数域ECC算法的核心运算是点乘运算,点乘运算是由一系列的倍点和点加循环操作构成,倍点和点加是由一系列的大数模加、模减、模乘构成。现有点乘运算装置中,由控制器和运算器共同实现点乘运算,其中运算器采用硬件电路来实现大数的模加、模减和模乘。点乘运算的实现过程可描述如下:控制器选取需要处理的二进制数据流,取数据流第一个数据位,控制器对数据位的值进行判断,若数据位的值为1,运算器调用RAM中倍点运算的结果,对倍点运算的结果进行点加运算,并将点加运算的结果存储到预设的目的RAM中;若当前数据位的值为0,对数据位进行倍点运算,将倍点运算的结果存储到预先设定的目的RAM中。再采用上述方案依次对其他数据位进行判断和运算,并对目的RAM中存储的运算结果进行调度,从而实现点乘运算。
[0004]从上述方案中可以得知,对二进制数据流中的每一个数据位,控制器需要对数据位的值进行判断,根据不同的值调度运算器进行相应的运算,整个点乘运算的实现有大量的大数计算,需要大量的RAM搬运过程,导致点乘运算装置的功耗较大。
【发明内容】
[0005]本发明实施例解决的问题是椭圆曲线密码点乘运算过程中,点乘运算装置功耗较大的问题。
[0006]为解决上述问题,本发明实施例提供一种椭圆曲线密码点乘运算的方法,包括:控制器选择需要处理的数据流,并将所述数据流存储到第一存储器中;点乘运算器依次读取第一存储器中的数据位,当所述数据位的值为I时,对所述数据位进行第一运算,并将第一运算的结果存储到第二存储器;当所述数据位的值为O时,对所述数据位进行第二运算,并将第二运算的结果存储到第二存储器。
[0007]可选的,所述第一存储器是寄存器,所述第二存储器是RAM或寄存器。
[0008]可选的,所述第二存储器是RAM,将所述第一运算的结果和第二运算的结果存储到所述RAM中预设的RAM块中,所述RAM块的个数N等于所述RAM的存储空间容量除以椭圆曲线密码运算的运算长度。
[0009]可选的,所述对数据位进行第一运算,包括:对所述数据位进行倍点运算,并对所述倍点运算的结果进行点加运算。
[0010]可选的,所述倍点运算采用雅克比投影坐标系的倍点公式进行运算,所述倍点公式的运算参数预先存储在所述第二存储器中。
[0011]可选的,所述点加运算采用雅克比投影一仿射混合坐标系下的点加公式进行运算,所述点加公式的运算参数预先存储在所述第二存储器中。
[0012]可选的,所述进行第二运算包括:对所述数据位进行倍点运算。
[0013]可选的,所述进行第二运算还包括:对所述数据位进行倍点运算的结果进行冗余运算,并将所述倍点运算的结果作为所述第二运算的结果。
[0014]可选的,执行所述冗余运算的时长与执行所述点加运算的时长相等。
[0015]可选的,所述冗余运算是点加运算。
[0016]为解决上述问题,本发明实施例还提供了一种椭圆曲线密码点乘运算的装置,包括:控制单元,用于选择需要处理的数据流,并将所述数据流存储到第一存储器中;点乘运算单元,用于依次读取第一存储器中的数据位,对当前数据位的值进行判断,点乘运算器依次读取第一存储器中的数据位,当所述数据位的值为I时,对所述数据位进行第一运算,并将第一运算的结果存储到第二存储器;当所述数据位的值为O时,对所述数据位进行第二运算,并将第二运算的结果存储到第二存储器。
[0017]可选的,所述第一存储器是寄存器,所述第二存储器是RAM或寄存器。
[0018]可选的,所述第二存储器是RAM,所述RAM中预设的RAM块用于存储第一运算的结果和第二运算的结果,所述RAM块的个数N等于所述RAM的存储空间容量除以椭圆曲线密码运算的运算长度。
[0019]可选的,所述点乘运算单元包括第一运算器,所述第一运算器用于进行第一运算,包括:对所述数据位进行倍点运算,并对所述倍点运算的结果进行点加运算。
[0020]可选的,所述点乘运算单元包括第二运算器,所述第二运算器用于进行第二运算,包括:对所述数据位进行倍点运算。
[0021]可选的,所述点乘运算单元还包括第三运算器,所述第三运算器用于对所述数据位进行倍点运算的结果进行冗余运算,并将所述倍点运算的结果作为所述第二运算的结果O
[0022]可选的,所述第三运算器执行一次冗余运算的时长与所述第二运算器执行一次点加运算的时长相等。
[0023]可选的,所述第三运算器还用于对所述倍点运算的结果进行点加运算。
[0024]与现有技术相比,本发明实施例的技术方案具有以下优点:
[0025]对于一个待处理的数据流,控制器只需要调度一次,将所述需要处理的数据流存储到第一存储器中,采用点乘运算器完成对第一存储器中的每一个数据位进行点乘运算,而不需要控制器对每一个数据位都进行调度,因此可以减少控制器参与调度的次数,减少RAM搬运的过程,从而可以减少点乘运算装置的功耗。
[0026]进一步,将现有的处理器中的RAM空间拆分成与预设ECC的运算长度相匹配的RAM±夹,由于相比于其他密码体制,ECC的运算长度较小,因此使用ECC运算时,现有的RAM空间能够拆分成更多个RAM块。除了必要的用来存储运算结果的RAM块,多出的RAM块用来存储点乘运算时的临时数据或存储其他数据,使得现有的处理器中的RAM得到充分利用,提高RAM的利用率。
[0027]进一步,当数据位的值为O时,通过增加一个不影响运算结果的冗余的点加运算,使得数据位的值为O时的运算执行时长与数据位的值为I时的运算执行时长完全一致,从而使得数据运算流程实现完全对称,能够有效的防止功耗分析。
【附图说明】
[0028]图1是本发明实施例一中的椭圆密码曲线点乘运算流程图;
[0029]图2是本发明实施例二中的椭圆密码曲线点乘运算流程图;
[0030]图3是本发明实施例三中的椭圆密码曲线点乘运算流程图;
[0031]图4是本发明实施例四中的椭圆密码曲线点乘运算装置结构示意图。
【具体实施方式】
[0032]为使本发明的上述目的、特征和优点能够更为明显易懂,下面结合附图对本发明的具体实施例做详细的说明。
[0033]实施例一
[0034]本实施例提供了一种椭圆曲线密码点乘运算方法,参照图1,以下通过具体步骤进行详细说明。
[0035]步骤S101,控制器选择需要处理的数据流,并将所述数据流存储到第一存储器中。
[0036]在具体实施中,需要处理的数据流可以是二进制比特流,第一存储器可以是寄存器,用于存储需要处理的数据流,也可以是其他类型的存储器。
[0037]步骤S102,点乘运算器可以依次读取第一存储器中的数据位,当所述数据位的值为I时,对所述数据位进行第一运算,并将第一运算的结果存储到第二存储器;当所述数据位的值为O时,对所述数据位进行第二运算,并将第二运算的结果存储到第二存储器。
[0038]在具体实施中,点乘运算器对数据位的读取可以按照从高位到低位的顺序进行读取,并依此对读取到的当前数据位的值进行判断,根据当前数据位的值进行对应的运算。
[0039]在具体实施中,第一运算可以包括如下运算:对数据位进行倍点运算,并对倍点运算的结果进行点加运算。第二运算可以包括如下运算:对数据位进行倍点运算。无论是执行第一运算还是执行第二运算,运算的结果都可以保存到第二存储器中。
[0040]在具体实施中,第二存储器可以是寄存器,也可