本发明涉及信息安全、加解密芯片技术、数字签名和验签领域,特别是指一种椭圆曲线密码芯片装置、系统及数据缓存控制方法。
背景技术:
目前,比较流行的公钥密码算法有三类:基于大数分解困难的方案,如公钥加密算法(RSA)等;基于有限域上求离散对数困难的方案,如ElGamal算法等;基于求椭圆曲线离散对数困难的方案,如椭圆曲线数字签名等,数字签名也是公钥密码最典型的应用。其中:
椭圆曲线密码体制的优势体现在三方面:首先,在同等密钥长度的情况下,其加密的安全性要高于RSA等算法,也即求解椭圆曲线离散对数问题的难度相当大,以RSA、ElGamal、椭圆曲线密码(ECC)为代表的三种公钥体制,其中椭圆曲线密码体制的160位密钥加密的安全强度相当于前两者用1024位密钥加密的安全强度,所以椭圆曲线密码可以节省带宽和存储空间;其次,其加密速度快;第三,有限域中有大量的椭圆曲线资源可供选择,并且可以很方便地计算出相关参数以供使用。由于具备以上的这些优势,椭圆曲线密码被看做是21世纪最具潜力的公钥加密算法,可广泛应用在网络传输、数字签名等领域。
2005年,美国国家安全局(NSA)宣布将椭圆曲线密码的战略列为政府标准的一部分。2010年12月,我国国家密码管理局对外公开发布了《SM2椭圆曲线公钥密码算法》标准。另外,WAPI(中国无线局域网安全标准)也采用了国密局批准的椭圆曲线公钥密码算法作为无线局域网中双向实体认证所需的加密算法。
目前,在对数据加密过程中,很少采用基于椭圆曲线密码算法的安全芯片,对其进行控制的方案更少,因此对如何实现椭圆曲线密码芯片的大批量数据传输并提高数据的吞吐效率的研究很有必要。
技术实现要素:
本发明要解决的技术问题是提供一种能够实现大批量数据传输和提高数据吞吐率的椭圆曲线密码芯片装置、系统及数据缓存控制方法。
为解决上述技术问题,本发明提供技术方案如下:
一种椭圆曲线密码芯片装置,包括椭圆曲线密码芯片和与所述椭圆曲线密码芯片连接的FPGA,所述FPGA内部的寄存器设置有读取同步比特位寄存器组和写入同步比特位寄存器组,所述FPGA包括用作读取缓存的第一双口SRAM和用作写入缓存的第二双口SRAM,所述读取同步比特位寄存器组和写入同步比特位寄存器组分别同步标记读取缓存和写入缓存,所述FPGA还连接有用于与PC连接的PCI接口。
一种椭圆曲线密码芯片系统,包括PC机和上述的椭圆曲线密码芯片装置。
上述的椭圆曲线密码芯片系统的数据缓存控制方法,包括:
步骤101:PC机将数据写入到读取缓存中;
步骤102:椭圆曲线密码芯片把数据从读取缓存中读取到椭圆曲线密码芯片的内部单元进行处理;
步骤103:FPGA把椭圆曲线密码芯片的处理结果写入到写入缓存中;
步骤104:PC机把写入缓存中的数据读取到PC机中。
进一步的,所述步骤102和步骤103由第一状态机控制,所述步骤101和步骤104由第二状态机控制,所述第一状态机和第二状态机互为独立。
进一步的,所述步骤101包括:
PC机检测到读取同步比特位寄存器组中与PC机写入指针对应的标记位为空,则PC机将数据写入到读取缓存中,再将读取同步比特位寄存器组中与PC机写入指针对应的标记位置为有效;
所述步骤102包括:
FPGA检测到读取同步比特位寄存器组中与椭圆曲线密码芯片读取指针对应的标记位有效,则FPGA把数据从读取缓存中读取到椭圆曲线密码芯片的内部单元进行处理,再将读取同步比特位寄存器组中与椭圆曲线密码芯片读取指针对应的标记位置空。
进一步的,所述步骤103包括:
FPGA检测到写入同步比特位寄存器组中与椭圆曲线密码芯片写入指针对应的标记位为空,则FPGA把椭圆曲线密码芯片的处理结果写入到写入缓存中,再将写入同步比特位寄存器组中与椭圆曲线密码芯片写入指针对应的标记位置为有效;
所述步骤104包括:
PC机检测到写入同步比特位寄存器组中与PC机读取指针对应的标记位有效,则PC机把写入缓存中的数据读取到PC机,再将写入同步比特位寄存器组中与PC机读取指针对应的标记位置空。
进一步的,PC机的数据写入和数据读取中传输的数据形式为PCIe协议的TLP。
进一步的,所述步骤102还包括:
当FPGA检测到读取缓存中有可读取的数据时,椭圆曲线密码芯片就会把读取缓存中的数据读取到椭圆曲线密码芯片的内部单元进行处理;
所述步骤103还包括:
当FPGA检测到椭圆曲线密码芯片每处理完一笔数据时,FPGA就会把椭圆曲线密码芯片的处理结果写入到写入缓存中;
所述步骤104还包括:
当PC机检测到写入缓存中有可读取的数据时,PC机就会把写入缓存中的数据读取到PC机。
进一步的,所述步骤101还包括:
PC机每完成一次写入数据操作,PC机写入指针下移一位,若达到读取同步比特位寄存器组中缓存的总长度,则PC机写入指针指回初始位置;
所述步骤102还包括:
椭圆曲线密码芯片每完成一次读取数据操作,椭圆曲线密码芯片读取指针下移一位,若达到读取同步比特位寄存器组中缓存的总长度,则椭圆曲线密码芯片读取指针指回初始位置;
所述步骤103还包括:
椭圆曲线密码芯片每完成一次写入数据操作,椭圆曲线密码芯片写入指针下移一位,若达到写入同步比特位寄存器组中缓存的总长度,则椭圆曲线密码芯片写入指针指回初始位置。
所述步骤104还包括:
PC机每完成一次读取数据操作,PC机读取指针下移一位,若达到写入同步比特位寄存器组中缓存的总长度,则PC机读取指针指回初始位置。
本发明具有以下有益效果:
本发明中,采用双口随机存储器SRAM,并提出一种同步比特位控制方案,旨在有效的控制整个系统的数据缓存,有效的提高数据的吞吐率。同步比特位方案也即设置有读取同步比特位寄存器组和写入同步比特位寄存器组,分别同步标记FPGA芯片里的用作读取缓存的第一双口SRAM和用作写入缓存的第二双口SRAM,同步比特位的另一个重要作用就是确定读写SRAM地址线的具体值;
本发明中,PC机和FPGA芯片之间采用PCIe协议进行数据通信,数据的传输率高,PC机和FPGA芯片各使用一对指针来控制同步比特位寄存器中缓存数据对应的SRAM;
本发明采用两个双口随机存储器SRAM,包括用作读取缓存的第一双口SRAM和用作写入缓存的第二双口SRAM,应用时,烧写进FPGA芯片里的控制逻辑,可以采用两个独立的有限状态机来分别控制PC机和椭圆曲线密码芯片的数据的读写。这样就实现了PC端收发数据和椭圆曲线密码芯片读写数据相互独立,从而实现同步工作,使得整个装置高效有序的运行。因此,与现有技术相比,本发明实现了大批量数据传输,提高数据吞吐率。
附图说明
图1为本发明的椭圆曲线密码芯片装置的结构示意图;
图2为本发明的数据缓存控制方法的流程示意图;
图3为本发明的数据缓存控制方法的数据传输流程示意图;
图4为本发明的数据缓存控制方法的控制逻辑的两个相互独立的状态机控制示意图;
图5为本发明的数据缓存控制方法的同步比特位控制方法原理示意图;
图6为本发明的数据缓存控制方法的同步比特位控制方法结构示意图。
具体实施方式
为使本发明要解决的技术问题、技术方案和优点更加清楚,下面将结合附图及具体实施例进行详细描述。
一方面,本发明提供一种椭圆曲线密码芯片1装置,如图1所示,包括椭圆曲线密码芯片1(图1中ECC chip)和与椭圆曲线密码芯片1连接的FPGA2,FPGA2内部的寄存器设置有读取同步比特位寄存器组和写入同步比特位寄存器组,FPGA2包括用作读取缓存的第一双口SRAM和用作写入缓存的第二双口SRAM,读取同步比特位寄存器组和写入同步比特位寄存器组分别同步标记读取缓存和写入缓存,FPGA2还连接有用于与PC4连接的PC4I接口3。
本发明中,并提出一种同步比特位控制方案,旨在有效的控制整个系统的数据缓存,有效的提高数据的吞吐率。同步比特位方案也即设置有读取同步比特位寄存器组和写入同步比特位寄存器组,分别同步标记FPGA2芯片里的用作读取缓存的第一双口SRAM和用作写入缓存的第二双口SRAM,同步比特位的另一个重要作用就是确定读写SRAM地址线的具体值;
本发明中,PC4机和FPGA2芯片之间采用PC4Ie协议进行数据通信,数据的传输率高,PC4机和FPGA2芯片各使用一对指针来控制同步比特位寄存器中缓存数据对应的SRAM;
本发明采用两个双口随机存储器SRAM,包括用作读取缓存的第一双口SRAM和用作写入缓存的第二双口SRAM,应用时,烧写进FPGA2芯片里的控制逻辑,可以采用两个独立的有限状态机来分别控制PC4机和椭圆曲线密码芯片1的数据的读写。这样就实现了PC4端收发数据和椭圆曲线密码芯片1读写数据相互独立,从而实现同步工作,使得整个装置高效有序的运行。因此,与现有技术相比,本发明实现了大批量数据传输,并提高数据吞吐率。
目前,现有技术中大多数研究都着眼于椭圆曲线密码芯片1本身,就椭圆曲线密码芯片1内部如何快速做一些运算展开研究,而没有涉及椭圆曲线密码芯片1的外部控制逻辑或者系统,也即对于已知的椭圆曲线密码芯片1如何设计其外部控制很少研究。本发明针对已经经过验证的椭圆曲线密码芯片1,就如何提高椭圆曲线密码芯片1外部接口的数据吞吐率和批量数据进行缓存进行研究,有效地实现大批量数据传输,提高数据吞吐率。另外,本发明中采用数据缓存的目的就是提高传输速度。目前,FIFO(先入先出队列,First In First Out)和双口随机存储器SRAM都可以完成数据缓存的工作,而FIFO一般用于不同时钟域之间的数据传输,而且软件开销较大,控制繁琐,因此,本发明中采用双口随机存储器SRAM作为数据缓存。
另一方面,本发明提供一种椭圆曲线密码芯片1系统,如图1所示,包括PC4机和权利要求1的椭圆曲线密码芯片1装置。
本发明的椭圆曲线密码芯片1系统,大方框为PC4B板,PC4通过PC4I接口3与PC4B板连接。PC4B板上设置有椭圆曲线密码芯片1(ECC芯片)和FPGA2,优选的,椭圆曲线密码芯片1与FPGA2通过可以转接子板连接。本发明以PC4机为主导,以PC4I总线为PC4机与FPGA2的连接桥梁,SRAM为缓存、FPGA2为控制中枢,本发明的椭圆曲线密码芯片1通过与其他硬件协调配合来实现大批量数据的传输。
本发明应用时,从PC4机持续输入大量数据,经过FPGA2的SRAM缓存后传输给椭圆曲线密码芯片1进行加密运算,待椭圆曲线密码芯片1将数据加密后,FPGA2将加密结果经SRAM缓存后读取到PC4机中,在PC4机上能够显示出计算结果和计算时间。
与现有技术相比,本发明具有实现大批量数据传输和提高数据吞吐率的特点。
再一方面,本发明还提供一种上述椭圆曲线密码芯片系统进行的数据缓存控制方法,如图2所示,包括:
S101:PC机将数据写入到读取缓存中;
S102:椭圆曲线密码芯片把数据从读取缓存中读取到椭圆曲线密码芯片的内部单元进行处理;
S103:FPGA把椭圆曲线密码芯片的处理结果写入到写入缓存中;
S104:PC机把写入缓存中的数据读取到PC机中。
本发明中,如图3所示,PC机软件通过PCIe协议向FPGA发送椭圆曲线密码芯片所需输入数据,经FPGA内部数据流通接口协议处理,将数据写入到读取缓存(本发明中的读取缓存即为第一双口SRAM)中,图3中读取缓存定义为rd_buf;FPGA将读取缓存中的数据读出,经过与椭圆曲线密码芯片的接口协议后写入椭圆曲线密码芯片内部存储空间进行加密处理,图3中椭圆曲线密码芯片为ECC chip;FPGA将椭圆曲线密码芯片运算结果读出并且打包后写入到写入缓存(本发明中的写入缓存即为第二双口SRAM)中,图3中写入缓存定义为wt_buf;PC机软件将写入缓存中的运算结果数据经过PCIe协议读回到PC机中,并可以以文本形式保存。
本发明的数据缓存控制方法,采用上述的椭圆曲线密码芯片系统实现,属于上述的椭圆曲线密码芯片系统的一种应用的实施例,因此,与现有技术相比,本发明同样具有实现大批量数据传输和提高数据吞吐率的特点。
进一步的,S102和S103由第一状态机控制,S101和S104由第二状态机控制,第一状态机和第二状态机互为独立。
本发明在应用时,通过烧写到FPGA芯片中的控制逻辑进行,本发明的控制逻辑可以分为两个相互独立的状态机,即state_1和state_2,如图4所示。PC机通过PCIe协议将椭圆曲线密码芯片所需要的输入数据写入读取缓存中,以及PC机将椭圆曲线密码芯片处理后的结果从写入缓存中读取回PC机的过程,由状态机state_2控制;而椭圆曲线密码芯片从读取缓存中读取数据写入到椭圆曲线密码芯片内部单元中,以及FPGA将经过加密之后的计算结果写入到写入缓存中的过程,由状态机state_1控制。状态机state_1和state_2相互独立,同时进行,从而实现了大批量数据传输和提高数据吞吐率。
作为本发明的一种改进,S101包括:
PC机检测到读取同步比特位寄存器组中与PC机写入指针对应的标记位为空,则PC机将数据写入到读取缓存中,再将读取同步比特位寄存器组中与PC机写入指针对应的标记位置为有效;
S102包括:
FPGA检测到读取同步比特位寄存器组中与椭圆曲线密码芯片读取指针对应的标记位有效,则椭圆曲线密码芯片把数据从读取缓存中读取到椭圆曲线密码芯片的内部单元进行处理,再将读取同步比特位寄存器组中与椭圆曲线密码芯片读取指针对应的标记位置空。
本发明的具体实施例如下:
本实施例中,读取缓存定义为rd_buf,PC机写入指针为h_p,椭圆曲线密码芯片读取指针为h_ptr,读取同步比特位寄存器组采用synch_bit_up寄存器组,synch_bit_up寄存器组以一组数据长度为单位划分,synch_bit_up寄存器组同步标记rd_buf:
如图5-6所示,PC端每次发送数据前,首先查看h_p指针对应的synch_bit_up寄存器组的标记位是否为空,如果是,则PC机传递一组数据到rd_buf的相应位置,再将h_p指针对应的synch_bit_up寄存器组的标记位置为有效;
当FPGA检测到h_ptr指针对应的synch_bit_up寄存器组的标记位为有效,则FPGA把数据从rd_buf中读取到椭圆曲线密码芯片的内部单元进行处理,再将h_ptr指针对应的synch_bit_up寄存器组的标记位置空。
作为本发明的另一种改进,S103包括:
FPGA检测到写入同步比特位寄存器组中与椭圆曲线密码芯片写入指针对应的标记位为空,则FPGA把椭圆曲线密码芯片的处理结果写入到写入缓存中,再将写入同步比特位寄存器组中与椭圆曲线密码芯片写入指针对应的标记位置为有效;
S104包括:
PC机检测到写入同步比特位寄存器组中与PC机读取指针对应的标记位有效,则PC机把写入缓存中的数据读取到PC机,再将写入同步比特位寄存器组中与PC机读取指针对应的标记位置空。
本发明的具体实施例如下:
本实施例中,写入缓存定义为wt_buf,PC机读取指针为s_p,椭圆曲线密码芯片写入指针为s_ptr,写入同步比特位寄存器组采用synch_bit_down寄存器组,synch_bit_down寄存器组以一组数据长度为单位划分,synch_bit_down寄存器组同步标记wt_buf:
如图5-6所示,FPGA检测到s_ptr指针对应的synch_bit_down寄存器组的标记位为空,则FPGA把椭圆曲线密码芯片的处理结果写入到wt_buf中,再将s_ptr指针对应的synch_bit_down寄存器组的标记位置为有效;
当PC机检测到s_ptr指针对应的synch_bit_down寄存器组的标记位有效,则PC机把wt_buf中的数据读取到PC机中,再将s_ptr指针对应的synch_bit_down寄存器组的标记位置空。
上述的两种改进实施例中,PC机维护h_p和s_p两个指针,FPGA维护h_ptr和s_ptr两个指针。
本发明中,PC机的数据写入和数据读取中传输的数据形式为PCIe协议的TLP。PC机与FPGA之间采用PCIe协议进行数据通信,FPGA将PC机通过PCIe协议传过来的TLP(Transaction Layer Package)解析成地址和数据,并执行相应操作;在椭圆曲线密码芯片完成密码相关运算之后将数据打包成TLP再通过PCIe总线返回给主机。
作为本发明的进一步改进,S102还包括:
当FPGA检测到读取缓存中有可读取的数据时,椭圆曲线密码芯片就会把读取缓存中的数据读取到椭圆曲线密码芯片的内部单元进行处理;
S103还包括:
当FPGA检测到椭圆曲线密码芯片每处理完一笔数据时,FPGA就会把椭圆曲线密码芯片的处理结果写入到写入缓存中;
S104还包括:
当PC机检测到写入缓存中有可读取的数据时,PC机就会把写入缓存中的数据读取到PC机。
本发明中,椭圆曲线密码芯片数据缓存系统启动后,FPGA的椭圆曲线密码芯片的控制逻辑(ECC_ctrl)部分开始运行。PC机可以持续输入批量需要处理的数据,PC机输入椭圆曲线密码芯片所需要的数据,ECC_ctrl将PC机传输的要处理的数据缓存到FPGA的rd_buf存储器单元,椭圆曲线密码芯片检测到rd_buf有数据可读,把数据从rd_buf里读出写入到芯片的内部单元进行处理。椭圆曲线密码芯片能够一直读取数据进行处理。椭圆曲线密码芯片始终满负荷工作。ECC_ctrl检测到芯片每处理完一笔数据,就会把椭圆曲线密码芯片的处理结果写入到FPGA的wt_buf存储器,当PC机检测到wt_buf存储器有可以读取的处理数据,则把wt_buf存储器里的数据返回到PC机,并以文本的方式进行保存。本发明的整个过程持续进行,使得大批量数据能够清晰、有序、高效的写入和读出。
作为本发明的更进一步改进,S101还包括:
PC机每完成一次写入数据操作,PC机写入指针下移一位,若达到读取同步比特位寄存器组中缓存的总长度,则PC机写入指针指回初始位置;
S102还包括:
椭圆曲线密码芯片每完成一次读取数据操作,椭圆曲线密码芯片读取指针下移一位,若达到读取同步比特位寄存器组中缓存的总长度,则椭圆曲线密码芯片读取指针指回初始位置;
S103还包括:
椭圆曲线密码芯片每完成一次写入数据操作,椭圆曲线密码芯片写入指针下移一位,若达到写入同步比特位寄存器组中缓存的总长度,则椭圆曲线密码芯片写入指针指回初始位置。
S104还包括:
PC机每完成一次读取数据操作,PC机读取指针下移一位,若达到写入同步比特位寄存器组中缓存的总长度,则PC机读取指针指回初始位置。
本发明中,PC机和FPGA每完成一次数据读写,相应位置指针都要下移一位,若达到缓存总长度则指针指回初始位置,缓存大小可在调试时灵活改变。
本发明中,烧写到FPGA芯片中的控制逻辑可以用来实现以下功能:
1)PCIe协议的通信
将PC机通过PCIe总线传过来的TLP(Transaction Layer Package)解析成地址和数据,并执行相应操作;在椭圆曲线加密芯片完成密码相关运算之后将数据打包成TLP通过PCIe总线返回给主机。
2)椭圆曲线密码芯片的控制逻辑
包括将由TLP解析的数据和指令做相应的存储和执行,对椭圆曲线密码芯片的初始化、参数配置、操作数配置、功能模式配置等功能的实现,检测椭圆曲线密码芯片运算的完成等。
3)RAM及内部寄存器的读写控制
将由TLP解析的数据和指令做相应的存储和执行,写入到双口SRAM或者内部寄存器中,将椭圆曲线密码芯片的运算结果写入SRAM。
本发明中,以FPGA作为控制中枢,其内部包含烧写进去的控制逻辑,同时控制PC机数据的读写和椭圆曲线密码芯片数据的读写,因此,PC机读写数据和椭圆曲线密码芯片读写数据相互独立,能够实现同步工作,使得整个系统高效有序的运行,能够有序高效的控制两个双口SRAM的读写和椭圆曲线密码芯片的数据读写。因此,与现有技术相比,本发明实现了大批量数据传输,并提高数据吞吐率。
本发明提出一种椭圆曲线密码芯片装置、系统及数据缓存控制方法,也即同步比特位方案。本发明在进行加解密数据运算时,PC机写数据和读取加密结果的过程与椭圆曲线密码芯片读写数据的过程相互独立,从而实现椭圆曲线密码芯片的大批量数据传输,并提高椭圆曲线密码芯片的数据吞吐率(有效提高芯片接口速率),并且,数据在传输过程中能够清晰、有序地进行。通过本发明数据缓存控制方法能使椭圆曲线密码芯片的全部运算引擎同时工作,发挥芯片的最大性能。
以上所述是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明所述原理的前提下,还可以作出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。