基于USB接口的高速芯片实现数据加解密及读取的方法与流程

文档序号:30214429发布日期:2022-05-31 13:22阅读:180来源:国知局
基于USB接口的高速芯片实现数据加解密及读取的方法与流程
基于usb接口的高速芯片实现数据加解密及读取的方法
技术领域
1.本发明涉及加密芯片技术领域,尤其涉及基于usb接口的高速芯片实现数据加解密及读取的方法。


背景技术:

2.usb作为设备间传输数据的重要接口其加密性能应较高,现有技术中对usb数据加密的方法有多种:有的在安全芯片内部使用软件去加密或者外挂硬件加解密,前者加密算法灵活,但较耗时,固件复杂性较高,后者则会增加硬件成本。传统usb加密卡对称算法代码处理流程是将所有待运算的数据都接收完毕,然后开始对称算法运算,这样处理性能会较低。有的usb加密芯片使用的固件动态切换usb收发fifo的策略,固件尽量实现流水化处理,实际上加解密的性能也不高。为提高usb加密卡的数据传输速率,有的芯片设计在硬件上采用了一个专用于usb的直接内存存取模块(usb—dma),该专用usb—dma能够提高usb接口的数据传输速率,直接完成endpoint fifo与内存之间的数据传输;有的usb加密芯片使用多层ahb总线及ahb—lite总线来满足多处理器系统高带宽和低延时的要求;这些设计会在硬件设计复杂程度高,芯片面积较大,芯片成本较高,外围电路设计不简单,存在应用推广的小障碍。


技术实现要素:

3.本发明的目的在于提供一种基于usb接口的高速芯片实现数据加解密及读取的方法,从而解决现有技术中存在的前述问题。
4.为了实现上述目的,本发明采用的技术方案如下:一种基于usb接口的高速数据加解密芯片,包括32位risc安全cpu核、ahb总线以及连接在所述ahb总线上的直接存取模块dma、存储器管理单元emmu,密码算法模块和usb通信模块,所述usb通信模块通过utmi+level2接口内置usb highspeed phy,实现高速通信模式;所述32位risc安全cpu核集成cos操作系统,通过ahb总线接口,访问控制寄存器,从而调度各个ip完成特定的工作;提供中断和dma 服务,实现ip请求的快速响应和数据快速搬运,从usb通信模块中读取usb接口接收到的数据,同时负责应用协议数据单元命令的解析工作;所述存储器管理单元emmu用于对存放rom、ram、flash存储器进行保护管理;所述直接存取模块dma能够加速soc内不同地址区间的数据搬运过程,具体包括:dma控制器将usb通信模块接收数据缓冲区内的第一数据传输给密码算法模块,再经过密码算法模块解密或加密后传输给芯片emmu内部的sram控制器的20k字节的加解密数据缓冲区暂时存储下来;因为usb控制器会使用多个rxfifo,此时usb通信模块能够接收到第二数据,同时dma控制器将第二数据直接传输到密码算法模块,经过数据加解密模块加密或解密后传输给接芯片内部的sram控制器的20kb数据缓冲区中暂时存储下。
5.优选的,所述芯片还包括定时器、时钟管理模块和电源管理模块。
6.优选的,所述密码算法模块实现sm1/sm4/sm7/des/aes/pku/hash算法中的至少一
个。
7.优选的,所述usb通信模块包括usb串行接口控制器和usb数据收发器,所述usb 串行接口控制器设置有8k fifo ram,所述usb串行接口控制器与ahb总线接口完成数据的高速并行传输过程,所述usb数据收发器采用bulk-only传输协议接收和发送待加解密数据包以及指令数据。
8.本发明的另一个目的是提供一种高速数据加解密方法,基于所述的基于usb接口的高速数据加解密芯片,包括以下步骤:s1,芯片上电后,操作系统cos配置usb串行接口控制器使用“usb mass storage”协议进行盘符枚举过程;s2,usb通信模块下发apdu指令,所述apdu指令经usb数据收发器进入芯片系统,由usb串行接口控制器完成usb通信握手并将apdu指令搬移至usb rxfifo内存中;s3,芯片操作系统cos从usb rxfifo 内存中取得apdu指令,若是加解密数据指令,直接获取usb传输数据块数量,进入步骤s4;若不是加解密数据指令,则处于正常u盘状态;s4,操作系统cos配置usb串行接口控制器的out端点接收寄存器,使usb数据收发器开始接收待加解密数据包,当接收到第一包512b的数据时,解析并根据接收到的apdu指令中的选定目标算法,配置算法协处理器的寄存器及dma模块寄存器,并对usb下发的待加解密数据启动dma算法搬移操作;此时屏蔽usb通信模块中断,ahb总线由dma控制器管理;s5,dma控制器从cpu接管对密码算法模块的控制权,操控密码算法模块完成对usb rxfifo内存中所有待加解密数据的处理,当所述dma控制器对最后一包待加解密数据进行处理完成时,dma控制器会产生并进入dma完成中断服务程序,具体包括;dma-codec从dma源地址寄存器处读取第一组待加解密数据写入目标算法对应的数据寄存器中,启动算法运算,等待数据运算完成;待运算完成后,dma-codec从目标算法对应的数据寄存器中读取计算结果数据,写入到dma的目标地址寄存器,此时dma数据长度寄存器减少一组数据的长度,从而完成一组数据的算法操作;此时,usb串行接口控制器同时接收下一包明文数据并写入到usb rxfifo中,直到没有usb rxfifo没有空间了, usb停止接收待加解密数据包;当dma算法功能做完512b数据加密,就释放出512b 的usb rxfifo空间,芯片usb就自动从usb主机接收下一包的数据并写入到usb rxfifo中。
9.s6,所述dma控制器操作完成中断服务程序时,将13字节的csw填入到芯片的usb txfifo中,usb串行接口控制器将其返回给usb主机,完成当前加解密数据的apdu指令全过程。
10.优选的,步骤s2中的所述usb rxfifo内存为8k字节,步骤s4中所述操作系统cos配置usb串行接口控制器的out端点接收寄存器,具体包括:所述usb数据收发器接收待下发的数据包数量,随后使能out端点的接收功能;配置算法协处理器的寄存器具体包括:初始化加解密算法,配置目标算法的相关寄存器;配置dma模块寄存器具体包括:配置dma源地址寄存器是rxfifo,目标地址寄存器是加解密sram缓冲区的起始地址,dma操作数据长度寄存器是cbw中的传输数据包个数乘以512b。
11.本发明的最后一个目的在于提供了一种高速数据加解密结果的读取方法,基于所
述的基于usb接口的高速数据加解密芯片,包括以下步骤:a1,cos从cbw 31b中获取usb数据收发器要读取的数据包长度sendsize,将sendsize信息写入到usb串行接口控制器的目标端点in控制寄存器中并使能发送功能;a2,配置usb 目标端点in控制寄存器和dma控制器目标地址、源地址以及搬移长度,其中,所述目标地址是txfifo,所述源地址是加解密20k codec ram缓冲区的起始地址,所述搬移长度是当前txfifo的可用空间txfifocursize,启动dma控制器;a3,获取usb txfifo的当前可用空间txfifocursize1,若sendsize》txfifocursize,且已发送的数据包长度等于txfifo的当前可用空间,那么此时 usb控制器会产生txfifo半空中断,进入步骤a4;若sendsize《txfifocursize,则已发送的数据包长度等于要读取的数据包长度,直接进入步骤a5;a4,重新获取当前txfifo的可用空间txfifocursize2为x k,再次重新配置dma搬移长度等于x k,启动dma,修改当前待读取的数据为sendsize=sendsize-x;重复该步骤,直到sendsize数值为0,进入步骤a5;a5, 在最后的一次dma操作完成中断服务程序中,将13字节的csw填入到芯片的usb txfifo中,到此时就完成了当前的bulk协议传输,即读取加解密结果的apdu。
12.优选的,所述usb txfifo 配置的大小是4kb空间, 按512b一包数据,由dma 写入8个512b的usb数据包,当dma写入一包512b时, usb ip自动生成一个“端口号 事务”信息到tx in请求队列中;当usb主机请求读的数据包数多于8个时,应当使能usb txfifo半空中断, 当usb ip txfifo发送了4个512b数据包时,就会产生txfifo半空的usb中断通知cpu;在usb半空中断服务程序中,配置dma继续向usb txfifo中搬移待发送数据包。
13.优选的,所述dma包括普通dma、外设dma和算法dma,所述普通 dma在存储器和普通 ip 之间进行搬运;所述外设 dma即在usb和存储器之间进行搬运;所述算法 dma,即在存储器-算法-存储器之间进行搬运;所述算法dma的运行原理流程如下:第一步:初始化算法,配置目标算法的key、iv等相关寄存器;第二步:初始化dma,配置dma数据源地址rxfifo,dma数据目标地址和dma操作数据长度寄存器;第三步:根据算法类型,配置dma传输控制寄存器,启动算法dma进行算法操作;第四步:算法dma从dma的数据源地址处读取一组数据写入算法对应的数据寄存器中,启动算法运算,等待数据运算完成;然后算法dma再从算法对应的数据寄存器中读取计算结果数据,写入到dma的数据目标地址处并增加地址,dma数据长度寄存器减少一组数据的长度,从而完成一组数据的算法加解密和读取操作。
14.本发明的有益效果是:本发明提供了一种基于usb接口的高速芯片实现数据加解密及读取的方法,芯片操作系统将usb接口配置为大容量存储设备,采用usb mass storage协议进行传输,使用bulk-only传输和scsi命令集与主机cpu进行通信。本发明设计cos采用usb免驱设计,具有usb读写高性能,能够快速完成枚举过程,cos支持的apdu指令符合 gm/t 0017规范。该芯片具有高速加解密数据的能力,可以应用于视频流加解密系统及嵌入式信息安全等领域。
15.本设计芯片使用单层ahb总线结构,支持多种加密算法,包括sm1/sm4/sm7/des/aes/pku/hash。为快速加解密数据包,使用了代码remap机制关键固件代码在内存中执行,由中断事务驱动,算法硬件电路实现,dma与算法协处理器并行流水线设计,灵活的usb fifo机制设计等加速策略来提高usb接口加解密数据性能。
16.基于本芯片所实现的加解密方法,通过dma模块使用ahb总线从usb控制器rx fifo中读取等待加解密的数据,写入到算法硬件协处理器寄存器中,然后将算法计算加解密结果数据保存到系统的内存中。当usb主机要读取加解密结果数据时,dma模块配合usb控制器txfifo灵活设计,并行处理将结果数据传输给usb主机。与市场上的同类usb安全芯片相比,本设计芯片具有低成本,高性能的特点,在相同cpu频率下,具有更高的usb接口加解密性能,本文提出的usb加解密性能处于较领先的地位,具有广阔的市场前景。
附图说明
17.图1是实施例1中提供的基于usb接口的高速数据加解密芯片结构示意图;图2是实施例1中提供的基于usb接口的高速数据加解密芯片原理示意图;图3是实施例2中提供的高速数据加解密方法流程示意图;图4是实施例2中提供的高速数据加解密方法原理示意图;图5是实施例3中提供的加解密数据读取方法流程示意图;图6是实施例3中usb出现半空中断时isr流程示意图;图7是实施例3中dma出现中断时isr流程示意图;图8是实施例1中所采用的usb通信模块中fifo设计示意图。
具体实施方式
18.为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施方式仅仅用以解释本发明,并不用于限定本发明。
19.实施例1本实施例提供了一种基于usb接口的高速数据加解密芯片,该芯片结构如图1所示,包括32位risc安全cpu核、ahb总线以及连接在所述ahb总线上的直接存取模块dma、存储器管理单元emmu,密码算法模块和usb通信模块,其中所述usb通信模块通过utmi+level2接口内置usb highspeed phy,实现高速通信模式;所述usb通信模块包括usb串行接口控制器和usb数据收发器,所述usb 串行接口控制器设置有8k fifo ram,所述usb串行接口控制器与ahb总线接口完成数据的高速并行传输过程,所述usb数据收发器采用bulk-only传输协议接收和发送待加解密数据包以及指令数据。
20.所述32位risc安全cpu核集成cos操作系统,通过ahb总线接口,访问控制寄存器,从而调度各个ip完成特定的工作;提供中断和dma 服务,实现ip请求的快速响应和数据快速搬运,从usb通信模块中读取usb接口接收到的数据,同时负责应用协议数据单元命令的解析工作;所述存储器管理单元emmu用于对存放rom、ram、flash存储器进行保护管理;所述直接存取模块dma能够加速soc内不同地址区间的数据搬运过程,具体包括:dma控制器将usb通信模块接收数据缓冲区内的第一数据传输给密码算法模块,再经过密码算法模块解
密或加密后传输给芯片emmu内部的sram控制器的20k字节的加解密数据缓冲区暂时存储下来;因为usb控制器会使用多个rxfifo,此时usb通信模块能够接收到第二数据,同时dma控制器可以将第二数据直接传输到密码算法模块,经过数据加解密模块加密或解密后传输给芯片内部的sram控制器的20kb数据缓冲区中暂时存储下。
21.所述芯片还包括定时器、时钟管理模块和电源管理模块。
22.所述密码算法模块实现sm1/sm4/sm7/des/aes/pku/hash算法中的至少一个。
23.实施例2本实施例提供了一种高速数据加解密方法,采用实施例1中所述的基于usb接口的高速数据加解密芯片,如图3所示,包括以下步骤:s1,芯片上电后,usb操作系统cos配置usb串行接口控制器使用“usb mass storage”协议进行盘符枚举过程;s2,usb通信模块下发apdu指令,所述apdu指令经usb数据收发器进入芯片系统,由usb串行接口控制器完成usb通信握手并将apdu指令搬移至usb rxfifo内存中;s3,芯片操作系统cos从usb rxfifo 内存中取得apdu指令,若是加解密数据指令,直接获取usb传输数据块数量,进入步骤s4;若不是加解密数据指令,则处于正常u盘状态;s4,操作系统cos配置usb串行接口控制器的out端点接收寄存器,使usb数据收发器开始接收待加解密数据包,当接收到第一包512b的数据时,解析并根据接收到的apdu指令中的选定目标算法,配置算法协处理器(密码算法模块中的任意一种加密算法处理器)的寄存器及dma模块寄存器,并对usb下发的待加解密数据启动dma算法搬移操作;此时屏蔽usb通信模块中断,ahb总线由dma控制器管理,只负责usb数据的传输与加密过程;s5,dma控制器从cpu接管对密码算法模块的控制权,操控密码算法模块完成对usb rxfifo内存中所有待加解密数据的处理,当所述dma控制器对最后一包待加解密数据进行处理完成时,dma控制器会产生并进入dma完成中断服务程序,这个过程具体包括;dma-codec从dma源地址寄存器处读取一组待加解密数据写入目标算法对应的数据寄存器中,启动算法运算,等待数据运算完成;待运算完成后,dma-codec从目标算法对应的数据寄存器中读取计算结果数据,写入到dma的目标地址寄存器,此时dma数据长度寄存器减少一组数据的长度,从而完成一组数据的算法操作;此时,usb串行接口控制器同时接收下一包明文数据并写入到usb rxfifo中,直到没有usb rxfifo没有空间了, usb停止接收待加解密数据包;当dma算法功能做完512b数据加密,就可以释放出512b 的usb rxfifo空间,芯片usb就自动从usb主机接收下一包的数据并写入到usb rxfifo中。
24.s6,待dma数据长度寄存器的长度为0时,产生dma中断,所述dma控制器操作完成中断服务程序时,将13字节的csw填入到芯片的usb txfifo中,usb串行接口控制器将其返回给usb主机 ,完成当前加解密数据的apdu指令全过程。
25.本实施例中步骤s2中的所述usb rxfifo内存为8k字节,步骤s4中所述操作系统cos配置usb串行接口控制器的out端点接收寄存器,具体包括:所述usb数据收发器接收待下发的数据包数量,随后使能out端点的接收功能;配置算法协处理器的寄存器具体包括:初始化加解密算法,配置目标算法的相关寄存器;配置dma模块寄存器具体包括:配置dma源地址寄存器是rxfifo,目标地址寄存器
是加解密sram缓冲区的起始地址,dma操作数据长度寄存器是cbw中的传输数据包个数乘以512b。
26.具体举例:本实施方式中ram划分为ram0,ram1,ram2,ram3,以此为例说明usb 8kb 的rxfifo ram同时工作的操作流程:数据加密、或者解密的过程中,支持usb,dma,算法协处理器硬件ip同时工作,具体流程如下:1) usb 从 host 中接收out数据包并写入至 ram0 中, ram0 受 usb 控制,其它 ram此时空闲/ram3ram2ram1ram0000000usb
27.完成后,硬件置标志位 ram0_s =01(表示 usb 对 ram0 的操作完成)2)在第一个加解密数据包接收完成中断服务程序中, dma-codec 对 ram0 中的数据进行加解密操作,此时ram0 受 dma-codec 控制。
28.usb 继续从 host 中接收数据并写入至 ram1 中,ram1 受 usb 控制,其它2个 ram 此时空闲。ram3ram2ram1ram00000usbdma-codec
29.加密速度比接收数据的速度慢,因此当ram1接收完数据后ram0中的数据包还没有加解密完成, 所以还是dma-codec控制,usb 操作完成后,硬件置标志位 ram1_s =01。ram2 此时空闲,usb 从 host 中继续接收数据并写入至 ram2 中, ram2 受 usb 控制。ram3ram2ram1ram000usb01dma-codec
30.3)此时dma-codec 加解密完成后,硬件置标志位 ram0_s =00,因为ram1_s =01, 表示还有数据要做加解密操作,dma-codec 对 ram1 中的数据进行加密,ram1 受 dma-codec 控制。此时usb 操作完成后,硬件置标志位 ram2_s =01。ram3 此时空闲,usb 从 host 中继续接收数据并写入至 ram3 中, ram3 受 usb 控制。ram0 由于已经加密完成,此时处于空闲状态,因此可以再次开始接收数据。ram3ram2ram1ram0usb01dma-codec00
[0031] 由上可以知晓,usb和dma-codec控制器如此并行地操作,循环着,直到将apdu包头中的所有要加解密的数据包处理完毕。在这个过程中,是由硬件ip自动处理的,在这个中间没有任何中断,在待处理的数据包最后一包完成时,会产生dma完成中断将13字节的csw填入到芯片的usb txfifo中,usb串行接口控制器将其返回给usb主机 ,完成当前加解密数据的apdu指令全过程。
[0032]
实施例3本实施例提供了一种高速数据加解密结果的读取方法,基于实施例1中记载的基于usb接口的高速数据加解密芯片,如图5所示,包括以下步骤:a1,cos从cbw 31b中获取usb数据收发器要读取的数据包长度sendsize,将
sendsize信息写入到usb串行接口控制器的目标端点in控制寄存器中并使能发送功能;a2,配置usb 目标端点in控制寄存器in发送端点寄存器和dma控制器目标地址、源地址以及搬移长度,其中,所述目标地址是txfifo,所述源地址是加解密20k codec ram缓冲区的起始地址,所述搬移长度是当前txfifo的可用空间txfifocursize,启动dma控制器;a3,获取usb txfifo的当前可用空间txfifocursize1,若sendsize》txfifocursize,且已发送的数据包长度等于txfifo的当前可用空间,那么此时 usb控制器会产生txfifo半空中断,进入步骤a4;若sendsize《txfifocursize,则已发送的数据包长度等于要读取的数据包长度,直接进入步骤a5; 且已发送的数据包长度等于要读取的数据包长度,则打开dma完成中断;a4,重新获取当前txfifo的可用空间为x k,再次重新配置dma搬移长度等于x k,启动dma,修改当前待读取的数据为sendsize=sendsize-x;重复该步骤,直到sendsize数值为0,进入步骤a5;a5, 在最后的一次dma操作完成中断服务程序中,将13字节的csw填入到芯片的usb txfifo中,到此时就完成了当前的bulk协议传输,即读取加解密结果的apdu。
[0033]
具体实施过程:在本实施过程中,txfifo配置的总的大小是4k字节,按bulk协议,就是8个512b数据包,当usb主机要读取8k 加解密数据包时,下发的cbw 指令的传输长度就会是16, 即要求上传给usb主16个512b 数据包,那么处理流程如下:第一步:配置usb in发送端点寄存器为:发送(16+1)个数据包,发送(16*512 + 13)字节,随后使能in端点的发送功能,设置待发送包数sendpkt =16,此处的sendpkt与sendsize意义相同,只是采用了数据包的个数。
[0034]
第二步:配置dma目标地址是txfifo,源地址是加解密20k codec ram缓冲区的起始地址,dma搬移长度是当前txfifo的可用空间4k字节,即8包数据,此时启动dma。
[0035]
修改当前发送包数sendpkt =16
ꢀ–ꢀ
8 = 8,当usb主机发送in包时,芯片将dma搬移到usb txfifo中的512b数据包发送给usb主机。
[0036]
第三步:dma已完成4k字节数据包的搬移,同时usb向usb主机发送512b长度的数据包,当usb控制器发送完了2k字节即4个数据包时,usb控制器会产生txfifo半空中断,同时usb继续向usb主机发送512b长度的数据包。若要读取的数据小于4k,则直接发送即可,并不会产生半空中断过程。
[0037]
第四步:在usb半空中断服务程序中,重新获取当前txfifo的可用空间,假设是xk字节,由于此时txfifo已经被占用了,因此x应当是小于4, 比如2k字节。此时需要再次配置dma搬移长度是2k字节,再次启动dma,修改当前发送包数sendpkt = sendpkt
ꢀ–ꢀ
4。重复这个过程,直到sendpkt当前数值是0,表示usb主机需要的数据已发送完成,在最后一次时使能dma完成中断。
[0038]
第五步:在最后的一次dma操作完成中断服务程序中,将13字节的csw填入到芯片的usb txfifo中,到此时就完成了当前的bulk协议传输,即读取加解密结果的apdu。
[0039]
从上面的流程可以看到因为增加了usb txfifo半空中断事务,就可以使得usb主机的in事务操作基本可以达到线速,芯片的固件处理时间可以忽略不计。
[0040]
本实施例中所述usb txfifo 配置的大小是4kb空间,按512b一包数据,可以由dma
写入8个512b的usb数据包,当dma写入一包512b时, usb ip自动生成一个“端口号事务”信息到tx in请求队列中,如图8所示。
[0041]
需要说明的是,本发明中提供的所述dma包括普通dma、外设dma和算法dma,所述普通 dma在存储器和普通ip之间进行搬运;所述外设dma即在usb和存储器之间进行搬运;所述算法 dma,即在存储器-算法-存储器之间进行搬运;所述算法dma的运行原理流程如下:第一步:初始化算法,配置目标算法的key、iv等相关寄存器;第二步:初始化dma,配置dma数据源地址rxfifo,dma数据目标地址和dma操作数据长度寄存器;第三步:根据算法类型,配置dma传输控制寄存器,启动算法dma进行算法操作;第四步:算法dma从dma的数据源地址处读取一组数据写入算法对应的数据寄存器中,启动算法运算,等待数据运算完成;然后算法dma再从算法对应的数据寄存器中读取计算结果数据,写入到dma的数据目标地址处并增加地址,dma数据长度寄存器减少一组数据的长度,从而完成一组数据的算法加解密和读取操作。
[0042]
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视本发明的保护范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1