由于当前国税、地税、各省、各税种发票不同,辨别难度较大,因此给造假者可乘之机。本文设计的基于fpga的税控算法加密卡可有效地解决上述问题,提供了高效的防伪措施。该加密卡通过pci总线内置于税控加密机中,将发票上的数据加密成一组防伪码,打印在相应的区域上,由于采用国家密码管理局的高安全性税控密码算法芯片,因此发票难以被篡改,从而可满足税务机关对发票管理和身份认证的要求。
1 系统总体架构设计
图1是基于fpga税控算法加密卡的系统架构图。其中包括fpga芯片、8片税控密码算法芯片ssx12-b、fpga配置芯片epcs4、存储器eeprom和电源芯片。
fpga是整个加密卡的控制核心,在其内部利用嵌入式pci—ip核实现与物理32位pci总线的通信;设计算法状态机模块实现了fpga与8片税控密码算法芯片的数据交互;另外,设计了dma控制器和双端口ram实现了数据的传输及存储。pci总线的时钟信号33 mhz作为fpga的主时钟。此外,33 mhz时钟也作为ssx12-b芯片的工作时钟,整个系统采用了时钟完全同步的设计方式。epcs4芯片与fpga相连,每次上电后fpga需读取epcs4内的程序进行加密卡的配置与初始化。eeprom用于存储系统密钥等关键参数。
数据运算的过程如下:
(1)通过上位机软件设置好运算命令字和待运算的数据包,fpga根据命令字可指定一片ssx12-b工作或多片ssx12-b同时工作。
(2)启动数据传输,将数据包通过pci总线传入fpga的双端口ram。ram由8个1 kb的ram单元构成,每个ram单元对应一个ssx12-b的数据缓冲区,ram单元和ssx12-b的数据总线宽度均为8 bit,整个ram的容量为8 kb,数据总线宽度为64 bit。
(3)待所有数据包传输到对应的ram单元后,fpga设置相关进程,启动算法状态机,将数据包并行传送给ram单元对应的ssx12-b芯片。
(4)各ssx12-b芯片同时开始工作,此时fpga等待运算的完成。
(5)各ssx12-b芯片运算完成后在算法状态机的控制下将数据包传回到对应的ram单元。待所有数据包传完后状态机产生中断信号,之后fpga通过pci总线将数据包传回到上位机,至此完成了一次数据运算过程。
2 主要芯片选型
(1)fpga芯片。选用美国altera公司cycloneⅲ系列的ep3c16f484c8器件,该芯片总引脚数为484,其中i/o引脚为346,ram总量为63 kb,逻辑单元(le)15 408个,可满足加密卡的设计要求。fpga的开发工具采用altera公司的eda软件quartus ii9.1,其可实现综合、仿真、布局布线、系统调试等功能。
(2)税控密码算法芯片。采用国家密码管理局的税控密码算法芯片ssx12-b,该芯片专用于税控等信息安全领域,功能主要有数据加密、解密、生成票据防伪码等,有效保证了用户进行交易时数据的安全性。
其主要特点为:每片算法芯片均有各自独立的id,所有加密运算均在片内完成,运算速度快且安全性高。
(3)fpga配置芯片。采用altera公司的epcs4芯片,该芯片用以存储加密卡的配置程序。加密卡每次上电后,fpga首先从epcs4里加载程序。
(4)eeprom。采用microchip公司的24lc512i2c串行总线eeprom,容量为64×8 kbit,8脚soic封装。100万次的擦写周期,数据保持时间》200年,最大5 ms的写入周期。此芯片主要用于存储加密卡的密钥等关键数据。
3 数据传输模块
设计了fpga的dma控制器和双端口ram作为数据传输模块。dma传输对于高效能嵌入式系统算法和网络是关键,其允许不同速度的硬件装置进行沟通,而无需依赖cpu的大量中断负载。否则,cpu需要从来源将每一片段的资料复制到暂存器,再写回到新的地方,在这段时间中cpu无法参与其他工作。dma传输的重要作用是将一个内存区从一个装置复制到另一个。当cpu初始化dma传输后,传输动作本身由dma控制器执行。
如图2所示,dma控制器包括master read逻辑、master write逻辑、dma控制逻辑和dma寄存器。master read逻辑实现数据由上位机到加密卡的传输;master write逻辑实现数据由加密卡到上位机的传输;dma控制逻辑实现传输的控制功能;dma寄存器包括控制状态寄存器csr、地址计数寄存器acr、字节计数寄存器bcr、中断状态寄存器isr和本地地址计数寄存器lar。在实现dma传输时,由dma控制器直接掌管总线。因此,存在一个总线控制权转移的问题。即dma传输前,cpu要将总线控制权交给dma控制器,而在结束dma传输后,dma控制器应立即将总线控制权再交回给cpu。一个完整的dma传输过程包括dma请求、dma响应、dma传输和dma结束4个步骤。
dma控制器实现数据传输的具体步骤如下:
(1)上位机设置待传输的数据包,并依次设置csr、lar、bcr和acr寄存器,并对dma控制器初始化。
(2)上位机启动dma读(master read)的过程,将数据包一次性传入税控加密卡的双端口ram。
(3)dma控制器启动算法状态机模块,控制密码算法芯片ssx12-b同时工作。
(4)密码算法芯片ssx12-b结束工作后,将运算完成的数据传回到相应的双端口ram存储单元。
(5)dma控制器设置isr和csr寄存器,启动dma写(master write)的过程,将运算完成的数据包传回到上位机。
双端口ram的作用是缓存数据,其提供2组独立的数据读写端口。因此,上位机和fpga可对ram进行独立的访问,使设计更加灵活。
4 密码算法状态机模块
状态机是数字时序逻辑中重要的设计内容,通过状态转移图设计手段可将复杂的控制时序图形化表示,分解为状态之间的转换关系,将问题简化。算法状态机模块实现对ssx12-b芯片的时序控制。状态机的状态转移图如图3所示,由上位机软件通过设置csr寄存器相应位的值启动对应的密码芯片工作,fpga根据csr寄存器可启动多片ssx12-b同时并行工作。单个芯片的状态转移图如图4所示,由空闲状态、启动状态、写命令状态、写数据状态、等待状态、读数据状态及结束状态组成。对各状态的编码采用格雷码的方式,可有效地防止毛刺的产生,使系统稳定。
算法状态机的设计是通过fpga的硬件描述语言vhdl完成的,单个芯片的状态机具体工作过程如下:
(1)算法开始信号sf_start=‘0’时状态机始终处于空闲状态。(2)上位机设置csr寄存器相应的位后,fpga使sf_start=‘1’,状态机进入启动状态。(3)当状态机检测到芯片处于不忙的状态时,即ssx12-b芯片的busy_nrdy引脚为低电平,状态机进入写命令状态。(4)在写命令状态,fpga将相应的命令字写入ssx12-b芯片,busy_nrdy=‘0’时进入写数据状态。(5)在写数据状态,fpga将待运算的数据包依次写入ssx12-b芯片。(6)状态机进入等待状态,等待ssx12-b芯片的运算完成。(7)当检测到busy_nrdy引脚为低电平时,状态机进入读数据状态,并将运算完成的数据传回到对应的ram单元。(8)待本次运算的数据读取完毕,状态机进入结束状态,至此完成了一次数据运算过程。(9)之后状态机返回空闲状态,等待下一次数据运算请求的到来。
5 系统工作过程
税控加密卡的一次业务通常包括多次运算过程的组合。例如生成一次票据防伪码的业务包括自检、生成非对称密钥对、读入签名密钥密文、读入账户密钥密文等运算过程。图5是税控加密卡的业务流程图,具体工作过程如下:
(1)税控加密卡上电、复位及初始化结束后,上位机对dma控制器初始化,其中包括设置待传送的数据包,设置dma相关的寄存器,提供要传送数据的起始位置和数据长度。
(2)dma控制器对dma请求判别优先级及屏蔽,向总线裁决逻辑提出总线请求。当上位机cpu执行完当前总线周期即可释放总线控制权。此时,总线裁决逻辑输出总线应答,表示dma已响应,通过dma控制器通知加密卡开始dma传输。
(3)dma控制器获得总线控制权后,上位机cpu即刻挂起或只执行内部操作,由dma控制器输出读命令,直接控制内存区与加密卡的双端口ram进行dma读操作(master read)。此时,数据包通过pci总线依次传入到双端口ram的相应地址单元。
(4)master read完成后,dma控制器向算法控制模块产生中断。算法控制模块收到中断后将其清除,之后启动算法状态机进程。状态机进程读取双端口ram中的数据,再将数据传送到外部的算法芯片ssx12-b。
(5)ssx12-b芯片开始并行工作,此时fpga等待运算完成。
(6)ssx12-b芯片将运算完成后的数据包传回到相应的ram地址单元,之后算法控制模块产生结束信号,dma控制器收到此信号后设置相应的进程,并启动dma写操作(master wr ite),将数据包通过pci总线传回到上位机。
(7)当完成dma写操作后,dma控制器释放总线控制权,上位机cpu重新取得总线的控制权并执行一段检查本次dma传输操作正确性的代码,至此完成一次运算。
(8)根据上位机的命令依次处理多次运算,如生成非对称密钥对、读入签名密钥密文、读入账户密钥密文等,直至完成生成票据防伪码或数据加解密的业务。
6 实验结果分析
整个设计在quartus ii 9.1软件中先后完成综合、功能仿真、布局布线后,通过逻辑分析仪signaltap并结合上位机软件进行了调试。除去signaltap,fpga的最终编译结果是:占用存储单元15.75 kb,逻辑单元4 950个。加入signaltap编译后占用fpga的存储单元为37.8 kb,占用率为60%,由于资源富余较大,所以加入signaltap调试对系统的数据结果不会造成影响。fpga各模块的时钟信号同步于33 mhz时钟,采用了完全同步的方式进行设计,从理论上通过优化fpga的电路结构可满足信号的建立、保持时间要求。
最终利用quanus ii的时序分析工具timequest对系统的时序进行了分析,测得最高时钟频率》46.01 mhz,所有信号的建立、保持时间无违规路径。
图6是在signaltap中调试通过的波形图,图中显示了单芯片生成票据防伪码及将数据写到双端口ram的过程。busy_nrdy信号是ssx12-b芯片的状态引脚,高电平表示芯片正在运算中,低电平表示输出数据有效;fpga_i_nd[0]信号是ssx12-b的指令/数据引脚,高电平表示数据总线上是命令,低电平表示数据总线上是数据;fpga_nle[0]是ssx12-b的数据总线状态引脚,低电平表示总线上的数据有效,高电平表示总线为三态;data_in信号是ssx12-b输出的数据:73h是应答字,09h是返回的有效数据长度,00h表示无错误,44 h,e7h,33h,feh……是生成的8 byte防伪码;ram_wr是双端口ram的写信号,wr_addr是双端口ram的写地址线,ram_in0是ram的数据输入端口,dma_write_len表示写入的数据长度,图中显示了ssx12-b在输出票据防伪码数据的同时状态机将数据写入到了双端口ram,wr_addr地址依次递增,state_port是状态机的状态变化信号。
表1是在不带有signaltap的加密卡上测得的8片ssx12-b芯片生成的防伪码数据,其与带有signaltap的加密卡测得的数据相一致,且生成的防伪码经核验服务器核验后均是正确的防伪码数据。
加密卡的驱动程序基于linux2.6内核开发,api接口程序和上位机软件是在redhat linux as4.6环境下开发完成的的。最后对加密卡生成票据防伪码的性能进行了测试,在程序中设置8片密码算法芯片ssx12-b同时并行工作,通过10 000次循环测试,测得生成票据防伪码的速度为827次/s。通过压力测试加密卡工作稳定,且生成数据正确。
7 结束语
设计了一种基于fpga的税控算法加密卡,介绍了各模块的设计,通过fpga实现了对税控密码算法芯片的高效控制。该加密卡具有加密速度快、效率高、功耗小的优点,通过pci总线内置于税控加密机中,可保证发票数据的正确加解密及生成发票数据防伪码,满足了税务部门对发票管理的要求。
在没有散热器的情况下,SA310 3相SiC模块能做什么?
三菱PLC采用RS485控制变频器实例
iPhone11成上半年最畅销手机,iPhone手机无线充电宝推荐
振动和冲击试验
诺基亚3310无愧于一代神机_全球首款4G功能机芯片
一种基于FPGA的税控算法加密卡各模块设计
Broadcom推出InConcert Maestro软件平
工业机器人在PCB行业的3大应用案例
芯片设计企业紫光面临债务危机
MATLAB用户在GPU上实现具有GPU计算特色的代码加速
手持机充电底座的设计特点是什么
泰克P6139A和P6139B示波器无源探头有什么区别?
Beeline和华为联手在俄罗斯展示了5G全息通话
摩雷三分频汽车音响改造案例(18款霸道/福特锐界/大众帕萨特改装)
智慧公安人脸识别平台开发重点人员管控系统搭建
中国移动将与百度联合推出“百度圣卡”,“5元30M”流量将不存在?
redis数据会自动清除吗
2021年2月全球半导体行业销售额为396亿美元
高压开关柜为什么要进行无线测温呢?
朗迅科技成功入选教育部第二期供需对接就业育人项目