适用于电池管理系统签名认证的椭圆曲线点乘加速协处理器的制作方法

文档序号:31833449发布日期:2022-10-18 19:55阅读:37来源:国知局
适用于电池管理系统签名认证的椭圆曲线点乘加速协处理器的制作方法

1.本发明涉及电池管理技术领域,具体地,涉及一种适用于电池管理系统签名认证的椭圆曲线点乘加速协处理器。


背景技术:

2.随着移动设备的兴起,锂电池的应用场景越来越多,为了保证锂电池的使用安全性、续航能力,各种电源保护产品应运而生。随着行业的兴起,有些厂商以次充好,使用劣质电池包。此举不仅会对设备造成不良影响、影响品牌公信力,甚至会危害消费者人生安全。因此对电池包正版验证的需求被适时提出。
3.椭圆曲线密码是neal koblitz和victor miller于1985年提出来,其安全性建立在椭圆曲线离散对数问题(ecdlp)的困难性之上。现在普遍认为160位的椭圆曲线密码可提供相当于1024位rsa密码的安全程度。因为密钥短,所以工程上实现加解密速度较快,而且可以节省资源消耗。
4.利用ecc进行签名的核心在于其点乘运算(q=kp)。而点乘运算会引入大数的计算,再加上点乘运算本身的算法实现,这使得软件实现点乘运算变得费时费力。在bms系统中,一般由mcu(微处理器)和上级设备进行签名认证。为了保证系统的低功耗、低成本,bms中的mcu一般不会使用高性能的微处理器。而低性能的微处理器又会造成软件资源消耗增加和验证时间增加等问题。因此为点乘运算设计加速电路是十分有必要且有挑战性的。
5.专利文献cn110599261a(申请号:cn201910895626.6)公开了一种基于能源区块链的电动汽车安全电力交易和激励系统,包括电动车辆、充电基础设施,以及车辆服务中心三个主要实体。当电动车辆与充电基础设施或其他电动汽车进行电力交易时,采用基于椭圆曲线上双线性配对性质的数字签名技术来保证车辆身份和发送信息的真实性和可靠性。
6.目前国内外,已有很多学者进行点乘加速电路的设计,然而大多是偏向点乘计算的速度优化和实现,没有考虑到实际的应用场景。比如点乘计算需要涉及大数的计算,在bms中此数据需要mcu不断从存储器中读取和写入,此时点乘计算的时间不全依赖于点乘计算模块本身的计算时间,更多的是数据传输的时间消耗。


技术实现要素:

7.针对现有技术中的缺陷,本发明的目的是提供一种适用于电池管理系统签名认证的椭圆曲线点乘加速协处理器。
8.根据本发明提供的适用于电池管理系统签名认证的椭圆曲线点乘加速协处理器,包括:soc主体和点乘加速协处理器;
9.所述soc主体使用32位risc-v内核,搭配数据存储区,所述数据存储区和risc-v内核通过总线连接;
10.所述点乘加速协处理器工作于risc-v内核的soc主体中,接收内核发送的拓展指令,协助完成椭圆曲线点乘计算。
11.优选的,所述点乘加速协处理器包括控制单元:解析通过risc-v内核派发的拓展指令,通过内部主状态机来控制数据的获取、计算以及写回操作。
12.优选的,所述点乘加速协处理器包括寄存器组:保存源数据、计算过程的临时数据和计算结果。
13.优选的,所述risc-v内核和控制单元通过自定义的拓展指令接口连接,soc主体的内部总线通过总线接口和寄存器组相连接,寄存器组通过soc的总线访问存储区域并进行读写。
14.优选的,所述点乘加速协处理器包括算术逻辑单元:从寄存器组获取源操作数进行二进制域算术。
15.优选的,所述控制单元包括数据流控制单元:接收控制信号,控制寄存器组从存储区域读写数据。
16.优选的,所述控制单元包括点乘控制单元:利用算术逻辑单元内的资源进行点乘操作,当接收到点乘指令时,根据内部逻辑控制算术逻辑单元进行一系列二进制算术操作,得到点乘结果并保存到寄存器组中。
17.优选的,所述控制单元包括主控制单元:包含整个设计的主状态机,根据解析的指令对数据流控制单元和点乘控制单元进行控制,接收数据流控制单元和点乘控制单元的状态信息以及和risc-v内核进行交互。
18.优选的,所述主控制单元分别与数据流控制单元和点乘控制单元通过内部接口连接。
19.优选的,所述算术逻辑单元包括:
20.二进制域加法模块,实现二进制域下的加法操作;
21.二进制域乘法模块,实现二进制域下的乘法操作;
22.二进制域求逆模块,实现二进制域下的求逆操作;
23.二进制域平方模块,实现二进制域下的平方操作。
24.与现有技术相比,本发明具有如下的有益效果:
25.(1)本发明基于risc-v指令集的优秀的指令拓展功能,提出一组精简的用于点乘加速的拓展指令以及使用该组指令的加速电路,可使用较少的硬件资源实现ecc的点乘运算加速,不仅提高签名认证的速度,而且节省软件资源消耗,降低系统功耗;
26.(2)本发明使用的risc-v是基于精简指令集计算原理建立的开源指令集架构,企业可以自由使用该指令集,同时risc-v也容许企业添加自有指令集拓展;risc-v体系结构开放,可拓展,模块化,易实现的特性,已经获得了学界的认可;基于其指令集拓展功能,允许设计者针对不同应用场景,实现差异化发展。
附图说明
27.通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:
28.图1为整体电路结构图;
29.图2为二进制域平方实现示意图;
30.图3为求逆算术状态机示意图;
31.图4为点乘控制流程图。
具体实施方式
32.下面结合具体实施例对本发明进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本发明,但不以任何形式限制本发明。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变化和改进。这些都属于本发明的保护范围。
33.实施例1:
34.本发明提供了一种适用于电池管理系统签名认证的椭圆曲线点乘加速协处理器,如图1,为整体电路结构图,包括:
35.101:搭配本发明的soc主体,使用32位risc-v内核,搭配数据存储区。数据存储区和risc-v内核通过总线连接。risc-v内核和201通过自定义的拓展指令接口连接。soc的内部总线通过总线接口和202相连接。202可以通过soc的总线访问memory区域
36.102:点乘加速协处理器,本发明的主体设计。内部包含201控制单元、202寄存器组、203算术逻辑单元(简称为alu)。本电路工作于risc-v内核的soc中,接收内核发送的拓展指令,协助完成椭圆曲线点乘计算。本发明在二进制有限域下实现点乘计算。
37.201:本发明的控制单元,内部包含301主控制单元、302数据流控制单元、303点乘控制单元。其中301分别与302和303通过内部接口连接。201和101通过拓展指令接口连接。201的主要功能为解析通过risc-v内核派发的拓展指令,通过内部主状态机来控制数据的获取、计算以及写回等操作。
38.202:寄存器组,用来保存源数据、计算过程的临时数据、计算结果。同时202也和101通过内部总线连接,允许202对101的memory通过内部总线进行读写访问。
39.203:算术逻辑单元(alu),内部包含401二进制域加法模块、402二进制域乘法模块、403二进制域求逆模块、404二进制域平方模块。该模块受303控制,从202处获取源操作数进行二进制域算术。
40.301:主控制模块,内部包含整个设计的主状态机,根据解析的指令对302和303进行控制,接收302和303的状态信息以及和risc-v内核进行交互。
41.302:数据流控制,接收301的控制信号,控制202从memory读写数据。
42.303:点乘控制模块,内部实现点乘算法的控制逻辑,利用203内的资源进行点乘操作。该模块受主控制模块控制,当接收到点乘指令时,303根据内部逻辑控制203进行一系列二进制算术操作,得到点乘结果并保存到寄存器组中。
43.401:二进制域加法模块,实现二进制域下的加法操作。
44.402:二进制域乘法模块,实现二进制域下的乘法操作。
45.403:二进制域求逆模块,实现二进制域下的求逆操作。
46.404:二进制域平方模块,实现二进制域下的平方操作。
47.拓展指令设计
48.risc-v指令集预留大量空间供设计者使用,根据risc-v的指令的opcode字段来区分指令的类型。如表1所示,risc-v预留custom-0、custom-1、custom-2、custom-3共四种自定义指令空间。
49.表格1risc-v的指令的opcode字段
[0050][0051]
本设计结合实际的应用,设计4条r型自定义指令,并将其归于custom-3类别下。具体的指令格式如表2所示。
[0052]
表格2自定义指令格式
[0053]
指令名funct7rs2rs1xdxs1xs2rdopcode说明fetch.k7’b0000001
‑‑1’
b11’b11’b0-7’b1111011取k的值fetch.x7’b0000010
‑‑1’
b11’b11’b0-7’b1111011取p点横坐标fetch.y7’b0000011
‑‑1’
b11’b11’b0-7’b1111011取p点纵坐标mult7’b0000100
‑‑1’
b11’b11’b1-7’b1111011点乘计算
[0054]
指令字段说明:
[0055]
opcode字段:用来指示指令的类别,所有custom-3类指令均为7’b1111011;
[0056]
rd字段:指令返回值寄存器索引值;
[0057]
xs2字段:来指示该指令是否需要源操作数寄存器2;
[0058]
xs1字段:来指示该指令是否需要源操作数寄存器1;
[0059]
xd字段:来指示该指令是否需要目的寄存器;
[0060]
rs1字段:源操作数据寄存器1索引值;
[0061]
rs2字段:源操作数据寄存器2索引值;
[0062]
funct7字段:指示指令的实际功能。
[0063]
fetch.k
[0064]
以后会以163位的椭圆曲线密码为例来描述本发明如何运行的。此拓展指令用于获取点乘q=kp的k的值,在163位的椭圆曲线系统中,k的值为163位的大数,这里使用单独一条指令来获取k的值,用于将k的值从处理器的存储中保存到协处理器的临时存储中。
[0065]
此指令发送后,处理器解析此指令,并判断其为拓展指令,于是取出指令中指示的操作取出源操作数1寄存器(rs1)的值(此时rs1里保存着大数k在数据存储区的物理地址),并将源操作数1和指令本身通过拓展指令接口发送给协处理器。协处理器根据接收的指令以及大数k的地址,直接接管内部总线,从数据存储器内直接获取k的内容并保存到协处理器的内部寄存器中。
[0066]
之后由协处理器返回此次执行的结果到目的寄存器(rd),处理器根据反馈继续执行剩下的代码。如果是163位数据需要存取则需要8拍执行完(6拍取数据,剩下2拍来自协处理器对拓展指令的处理上)。
[0067]
fetch.x和fetch.y
[0068]
这两条拓展指令分别用来获取点p的横纵坐标值,其工作流程和fetch.k指令类似。需要注意的是,在某些特定的应用中,p点的值是固定。所以设计者可以根据需要将其硬件固定,但本发明考虑到不同应用环境,因此保留这两条指令的实现。在执行时间上和fetch.k时间相同。
[0069]
mult
[0070]
该条指令用来执行点乘操作。当处理器接收到此指令,判断为拓展指令,处理器会获取用于保存计算结果的存储器区域的首地址(保存到源操作数1寄存器),并将源操作数1和该条指令一同通过拓展指令接口发送给协处理器。
[0071]
之后协处理器的内部状态机会利用临时寄存器的k值,点p的坐标值进行计算,并将计算结果写回到源操作数1指定的存储器区域中。
[0072]
拓展指令接口是自定义的接口类型,为risc-v内核与点乘加速协处理器交互的通道。向点乘加速协处理器发送自定义的指令、源操作数1的值、源操作数2的值(如果需要)以及接收点乘加速协处理器执行的结果即写回到目的寄存器的结果。此部分设计仅为本发明设计所自定义的接口,其功能和risc-v内核设计相关,不在本发明阐述内容之内。
[0073]
关于202和101之间访问memory的数据总线,其实现可以是通用的amba总线协议。当202访问memory时需要保证不会影响到其他指令之后对数据的访问,此设计难点在于内核设计,不在本发明阐述内容之内。
[0074]
本发明电路实现montgomery点乘算法来计算点乘的结果,该算法实现如下:
[0075][0076]
仅需实现二进制域下的加法、乘法、平方以及求逆运算即可完成点乘运算。
[0077]
二进制加法:域元素的加法是按位进行的,将域元素按位异或即可得到域加法结果。此计算最为简单,在数据确定的情况下,一个时钟周期即可计算完成。
[0078]
二进制乘法:域元素乘法可通过移位加的方式实现,其算法原理如下所示:
[0079][0080]
乘法模块拿到源操作数后,先检查操作数a的最低位的值,为1则将操作数b的值复制到临时寄存器c中,否则清零临时寄存器c。之后循环m-1次(m为多项式的次数),每次将b的值左移1位,低位补0;将a右移1位,高位补0,之后判断a的最低位的值,为1则将临时寄存
器c的值与b的值进行按位异或(二进制域加法)并写回临时寄存器c中,此次循环结束。否则直接结束此次循环。当完成所有循环后,最后临时寄存器c的值即为二进制域乘法的结果。
[0081]
利用此算法,在数据已经准备完成的情况下,仅需要163个周期即可计算完成。
[0082]
二进制域平方:可以使用二进制域乘法实现,但因为二进制多项式的平方是线性操作,单独设计此模块可以加快点乘计算速度。
[0083]
二进制多项式的平方可以通过向相邻位之间插入0来实现,之后再对插入后的二进制向量进行约减操作即可。这里使用快速约减的方式仅需1个周期即可完成数据的约减,加上平方的插0处理需要1个时钟周期。所以二进制域平方的处理仅需2个周期即可完成。
[0084]
二进制域求逆:求逆运算使用的算法如下:
[0085][0086]
deg()是对二进制向量进行求“度”操作,就是生成二进制串中1的个数。
[0087]
在求逆算法中,需要4组数据寄存器来保存临时数据(这里用u,v,g1,g2来表示),以及额外的寄存器保存两组二进制多项式的度以及两者的差值。首先由求逆算术的控制模块将4组数据寄存器初始化,之后进入循环。循环的终止条件就是u的值为1。在循环中,需要求出u和v的度并做差得j。如果差值为负则分别交换u和v的值,g1和g2值,并将差值取反。之后将v的值左移j位,低位取0,并和u做异或(二级制域加法),将结果写回u;将g2的值左移j位,低位取0,并和g1做异或(二级制域加法),将结果写回g1。直到退出循环,g1的值则为最终求逆的结果。
[0088]
因为求逆的复杂度,所以使用一个有限状态机来控制求逆的完成。在最差情况下求逆需要811拍计算完成。
[0089]
有益效果:
[0090]
(1)计算速度快
[0091]
在我们使用软件实现点乘时,在8m时钟下,使用risc-v内核来计算需要大于1s的时间。
[0092]
[0093]
一次点乘运算需要217911*125约为27.2ms,此时间消耗远远低于软件实现。可以完全满足电池管理系统ecc认证实时性的要求。
[0094]
(2)执行效率高
[0095]
相较于上海申迪电子科技责任有限公司的专利“一种新型的椭圆曲线密码协处理器”,其专利将点乘运算中的各个二进制算术运算均实现为不同的拓展指令,不仅指令繁琐,需要的硬件处理单元也较多,同时最主要的是由于每条指令执行时都需要软件控制整个计算过程,导致算法执行的效率比较低,整体运行时间过长。而我们设置的拓展指令仅有4条,其中3条为计算提供数据,一条指令直接指示点乘计算,拓展指令精简,最主要的是不需要软件控制计算过程,而是直接硬件控制算法计算的全过程,大大提高了执行的效率。
[0096]
再比较华中科技大学提出的“一种适用于rfid安全通信的椭圆曲线加密协处理器”专利,其协处理器获取数据的方式是由处理器不断搬运数据到协处理器中,而且数据宽度仅有8位,这在高位宽椭圆曲线密码中就需要处理器不断执行数据搬移指令并将数据截断后传输给协处理器,例如一个163位的大数就需要21次搬移数据,而且还需要处理器不断执行数据搬移的指令,执行效率也会大幅度下降。本发明中处理器只发送数据在存储中的基地址,之后由协处理器自行从存储器中获取数据,由于数据总线是32位宽,所以数据传输速率自然快于8位数据总线,而且取数期间,处理器不需要重复执行数据搬移指令,大幅提高了执行的效率。
[0097]
(3)资源消耗减少
[0098]
本发明使用拓展指令实现点乘使得原本复杂的软件算法实现变为四条汇编指令,优势在于减少了软件资源消耗,可以节省更多程序存储区用于实现其他功能。同时,因为在执行拓展指令时,处理器内核不需要频繁的工作,仅由协处理器计算点乘,也能大幅降低点乘运算时的系统功耗。
[0099]
实施例2:
[0100]
实施例2为实施例1的优选例。
[0101]
本发明提供了一种适用于电池管理系统签名认证的椭圆曲线点乘加速协处理器的实现方法,包括如下步骤:
[0102]
参数的获取:需要一定的软件流程配合,进行点乘运算前,需要用户提供点乘的源操作数,即基点p的坐标值以及k的值。对于固定的基点p,设计电路时可以将p的坐标值当作常数设置于硬件中。对于非固定基点p,需要软件发出fetch.x以及fetch.y指令来指示协处理器从存储空间中获取p的坐标值。无论哪种情况,都需要软件发fetch.k指令,指示协处理器从存储空间获取k的值。
[0103]
fetch.x、fetch.y、fetch.k的实际作用是将数组的起始地址传递给协处理器,协处理器根据此地址对存储区域进行读操作。并根据指令不同,将其保存到内部寄存器组的不同位置。实际的工作流程如下:
[0104]
risc-v内核解析3条fetch指令,在确认其为自定义指令后,将对应的数组的起始地址保存到源操寄存器1中,随后通过拓展指令接口,将指令以及源操作寄存器1的值发送给协处理器。当主控制模块解析此指令后,根据源寄存器1的内容驱动数据流控制模块。之后数据控制模块再去驱动总线,从memory中直接获取数组内容,并根据指令不同将获取数据保存到寄存器组的对应地址中。
[0105]
此过程中数据流控制模块会检查数据传输的有效性,并将相关信息传递给主控制模块,之后主控制模块再将此次拓展指令的执行情况返回给risc-v内核,具体信息在写回目的寄存器的内容中。在拓展指令执行过程中,整个内核的执行会处于暂停状态,直到协处理器返回相关执行状态。为保证协处理器的可靠性,还可选择加入拓展指令执行超时检查功能,防止协处理器因外界干扰而出现错误,造成系统死锁。
[0106]
点乘的计算:点乘指令的执行,当所有的参数均已设置完成,软件就可发出mult指令。mult指令会指示协处理器利用之前写入的参数进行点乘计算,并将计算结果分别写入预设的结果数组中。这里需要主要点乘的结果依旧是椭圆曲线上的点,所以会有两个结果数组,分别保存结果的坐标。
[0107]
risc-v内核解析mult指令,在确认其为自定义指令后,获取两个结果数组的初始地址,分别保存到源操作寄存器1和源操作寄存器2中,随后通过拓展指令接口,将指令以及源操作寄存器1的值发送给协处理器。当主控制模块解析此指令后,驱动点乘控制模块开始进行点乘操作。当点乘计算完成后,主状态模块,再次驱动数据流模块,将得到的结果分别写回到结果数组中。
[0108]
点乘控制流程:完整的点乘计算需要303点乘控制模块、202寄存器组模块以及203算术逻辑单元共同完成。其结构如图4所示。
[0109]
具体说明如下:
[0110]
当主控制模块解析发送过来的指令为点乘指令后,指示点乘控制模块开始工作。点乘控制模块内部状态机开始从寄存器组中取出操作数据利用alu中的运算单元进行运算。根据我们选择的点乘算法,仅需使用设计的4种域运算即可完成点乘运算。点乘运算中每次只能完成一种域运算,此时需要点乘控制模块根据所处阶段,选择域运算的结果保存到临时数据区。直到完成所有的域算法操作,将点乘结果写回到结果寄存器中。
[0111]
本领域技术人员知道,除了以纯计算机可读程序代码方式实现本发明提供的系统、装置及其各个模块以外,完全可以通过将方法步骤进行逻辑编程来使得本发明提供的系统、装置及其各个模块以逻辑门、开关、专用集成电路、可编程逻辑控制器以及嵌入式微控制器等的形式来实现相同程序。所以,本发明提供的系统、装置及其各个模块可以被认为是一种硬件部件,而对其内包括的用于实现各种程序的模块也可以视为硬件部件内的结构;也可以将用于实现各种功能的模块视为既可以是实现方法的软件程序又可以是硬件部件内的结构。
[0112]
以上对本发明的具体实施例进行了描述。需要理解的是,本发明并不局限于上述特定实施方式,本领域技术人员可以在权利要求的范围内做出各种变化或修改,这并不影响本发明的实质内容。在不冲突的情况下,本技术的实施例和实施例中的特征可以任意相互组合。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1