CN114547663A - 基于usb接口的高速芯片实现数据加解密及读取的方法 - Google Patents
基于usb接口的高速芯片实现数据加解密及读取的方法 Download PDFInfo
- Publication number
- CN114547663A CN114547663A CN202210455007.7A CN202210455007A CN114547663A CN 114547663 A CN114547663 A CN 114547663A CN 202210455007 A CN202210455007 A CN 202210455007A CN 114547663 A CN114547663 A CN 114547663A
- Authority
- CN
- China
- Prior art keywords
- data
- usb
- dma
- algorithm
- decryption
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 44
- 230000005540 biological transmission Effects 0.000 claims abstract description 30
- 230000008569 process Effects 0.000 claims abstract description 21
- 238000004891 communication Methods 0.000 claims description 32
- 238000004364 calculation method Methods 0.000 claims description 13
- 230000006870 function Effects 0.000 claims description 10
- 238000012546 transfer Methods 0.000 claims description 10
- 238000012545 processing Methods 0.000 claims description 9
- 230000002093 peripheral effect Effects 0.000 claims description 7
- 230000004044 response Effects 0.000 claims description 3
- 238000013461 design Methods 0.000 abstract description 10
- 101100325756 Arabidopsis thaliana BAM5 gene Proteins 0.000 description 10
- 101150046378 RAM1 gene Proteins 0.000 description 10
- 101100476489 Rattus norvegicus Slc20a2 gene Proteins 0.000 description 10
- 102100031584 Cell division cycle-associated 7-like protein Human genes 0.000 description 8
- 101000777638 Homo sapiens Cell division cycle-associated 7-like protein Proteins 0.000 description 8
- 238000010586 diagram Methods 0.000 description 4
- 230000007246 mechanism Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 239000002356 single layer Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/606—Protecting data by securing the transmission between two devices or processes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/32—Handling requests for interconnection or transfer for access to input/output bus using combination of interrupt and burst mode transfer
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4063—Device-to-bus coupling
- G06F13/4068—Electrical coupling
- G06F13/4081—Live connection to bus, e.g. hot-plugging
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4282—Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
- G06F13/4286—Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus using a handshaking protocol, e.g. RS232C link
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/602—Providing cryptographic facilities or services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/30101—Special purpose registers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
- G06F9/3013—Organisation of register space, e.g. banked or distributed register file according to data content, e.g. floating-point registers, address registers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3867—Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
- G06F9/3869—Implementation aspects, e.g. pipeline latches; pipeline synchronisation and clocking
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3877—Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/0042—Universal serial bus [USB]
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Computer Security & Cryptography (AREA)
- Information Transfer Systems (AREA)
Abstract
本发明提供了基于USB接口的高速芯片实现数据加解密及读取的方法,芯片操作系统将USB接口配置为大容量存储设备,采用USB Mass Storage协议进行传输,使用Bulk‑Only传输和SCSI命令集与主机CPU进行通信。本发明设计COS采用USB免驱设计,具有USB读写高性能,能够快速完成枚举过程,COS支持的APDU指令符合GM/T 0017规范。该芯片具有高速加解密数据的能力,可以应用于视频流加解密系统及嵌入式信息安全等领域。
Description
技术领域
本发明涉及加密芯片技术领域,尤其涉及基于USB接口的高速芯片实现数据加解密及读取的方法。
背景技术
USB作为设备间传输数据的重要接口其加密性能应较高,现有技术中对USB数据加密的方法有多种:有的在安全芯片内部使用软件去加密或者外挂硬件加解密,前者加密算法灵活,但较耗时,固件复杂性较高,后者则会增加硬件成本。传统USB加密卡对称算法代码处理流程是将所有待运算的数据都接收完毕,然后开始对称算法运算,这样处理性能会较低。有的USB加密芯片使用的固件动态切换USB收发FIFO的策略,固件尽量实现流水化处理,实际上加解密的性能也不高。为提高USB加密卡的数据传输速率,有的芯片设计在硬件上采用了一个专用于USB的直接内存存取模块(USB—DMA),该专用USB—DMA能够提高USB接口的数据传输速率,直接完成Endpoint FIFO与内存之间的数据传输;有的USB加密芯片使用多层AHB总线及AHB—Lite总线来满足多处理器系统高带宽和低延时的要求;这些设计会在硬件设计复杂程度高,芯片面积较大,芯片成本较高,外围电路设计不简单,存在应用推广的小障碍。
发明内容
本发明的目的在于提供一种基于USB接口的高速芯片实现数据加解密及读取的方法,从而解决现有技术中存在的前述问题。
为了实现上述目的,本发明采用的技术方案如下:
一种基于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数据缓冲区中暂时存储下。
优选的,所述芯片还包括定时器、时钟管理模块和电源管理模块。
优选的,所述密码算法模块实现SM1/SM4/SM7/DES/AES/PKU/HASH算法中的至少一个。
优选的,所述USB通信模块包括USB串行接口控制器和USB数据收发器,所述USB 串行接口控制器设置有8k FIFO RAM,所述USB串行接口控制器与AHB总线接口完成数据的高速并行传输过程,所述USB数据收发器采用Bulk-Only传输协议接收和发送待加解密数据包以及指令数据。
本发明的另一个目的是提供一种高速数据加解密方法,基于所述的基于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接管对密码算法模块的控制权,操控密码算法模块完成对USBRxFIFO内存中所有待加解密数据的处理,当所述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中。
S6,所述DMA控制器操作完成中断服务程序时,将13字节的CSW填入到芯片的USBTxFIFO中,USB串行接口控制器将其返回给USB主机,完成当前加解密数据的APDU指令全过程。
优选的,步骤S2中的所述USB RxFIFO内存为8K字节,步骤S4中所述操作系统COS配置USB串行接口控制器的OUT端点接收寄存器,具体包括:所述USB数据收发器接收待下发的数据包数量,随后使能Out端点的接收功能;
配置算法协处理器的寄存器具体包括:初始化加解密算法,配置目标算法的相关寄存器;
配置DMA模块寄存器具体包括:配置DMA源地址寄存器是RxFIFO,目标地址寄存器是加解密SRAM缓冲区的起始地址,DMA操作数据长度寄存器是CBW中的传输数据包个数乘以512B。
本发明的最后一个目的在于提供了一种高速数据加解密结果的读取方法,基于所述的基于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。
优选的,所述USB TxFIFO 配置的大小是4KB空间, 按512B一包数据,由DMA 写入8个512B的USB数据包,当DMA写入一包512B时, USB IP自动生成一个“端口号 事务”信息到Tx In请求队列中;
当USB主机请求读的数据包数多于8个时,应当使能USB TxFIFO半空中断, 当USBIP TxFIFO发送了4个512B数据包时,就会产生TxFIFO半空的USB中断通知CPU;在USB半空中断服务程序中,配置DMA继续向USB TxFIFO中搬移待发送数据包。
优选的,所述DMA包括普通DMA、外设DMA和算法DMA,所述普通 DMA在存储器和普通IP 之间进行搬运;所述外设 DMA即在USB和存储器之间进行搬运;所述算法 DMA,即在存储器-算法-存储器之间进行搬运;
所述算法DMA的运行原理流程如下:
第一步:初始化算法,配置目标算法的Key、IV等相关寄存器;
第二步:初始化DMA,配置DMA数据源地址RxFIFO,DMA数据目标地址和DMA操作数据长度寄存器;
第三步:根据算法类型,配置DMA传输控制寄存器,启动算法DMA进行算法操作;
第四步:算法DMA从DMA的数据源地址处读取一组数据写入算法对应的数据寄存器中,启动算法运算,等待数据运算完成;然后算法DMA再从算法对应的数据寄存器中读取计算结果数据,写入到DMA的数据目标地址处并增加地址,DMA数据长度寄存器减少一组数据的长度,从而完成一组数据的算法加解密和读取操作。
本发明的有益效果是:
本发明提供了一种基于USB接口的高速芯片实现数据加解密及读取的方法,芯片操作系统将USB接口配置为大容量存储设备,采用USB Mass Storage协议进行传输,使用Bulk-Only传输和SCSI命令集与主机CPU进行通信。本发明设计COS采用USB免驱设计,具有USB读写高性能,能够快速完成枚举过程,COS支持的APDU指令符合 GM/T 0017规范。该芯片具有高速加解密数据的能力,可以应用于视频流加解密系统及嵌入式信息安全等领域。
本设计芯片使用单层AHB总线结构,支持多种加密算法,包括SM1/SM4/SM7/DES/AES/PKU/HASH。为快速加解密数据包,使用了代码Remap机制关键固件代码在内存中执行,由中断事务驱动,算法硬件电路实现,DMA与算法协处理器并行流水线设计,灵活的USBFIFO机制设计等加速策略来提高USB接口加解密数据性能。
基于本芯片所实现的加解密方法,通过DMA模块使用AHB总线从USB控制器Rx FIFO中读取等待加解密的数据,写入到算法硬件协处理器寄存器中,然后将算法计算加解密结果数据保存到系统的内存中。当USB主机要读取加解密结果数据时,DMA模块配合USB控制器TxFIFO灵活设计,并行处理将结果数据传输给USB主机。与市场上的同类USB安全芯片相比,本设计芯片具有低成本,高性能的特点,在相同CPU频率下,具有更高的USB接口加解密性能,本文提出的USB加解密性能处于较领先的地位,具有广阔的市场前景。
附图说明
图1是实施例1中提供的基于USB接口的高速数据加解密芯片结构示意图;
图2是实施例1中提供的基于USB接口的高速数据加解密芯片原理示意图;
图3是实施例2中提供的高速数据加解密方法流程示意图;
图4是实施例2中提供的高速数据加解密方法原理示意图;
图5是实施例3中提供的加解密数据读取方法流程示意图;
图6是实施例3中USB出现半空中断时ISR流程示意图;
图7是实施例3中DMA出现中断时ISR流程示意图;
图8是实施例1中所采用的USB通信模块中FIFO设计示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施方式仅仅用以解释本发明,并不用于限定本发明。
实施例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传输协议接收和发送待加解密数据包以及指令数据。
所述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数据缓冲区中暂时存储下。
所述芯片还包括定时器、时钟管理模块和电源管理模块。
所述密码算法模块实现SM1/SM4/SM7/DES/AES/PKU/HASH算法中的至少一个。
实施例2
本实施例提供了一种高速数据加解密方法,采用实施例1中所述的基于USB接口的高速数据加解密芯片,如图3所示,包括以下步骤:
S1,芯片上电后,USB操作系统COS配置USB串行接口控制器使用“USB MassStorage”协议进行盘符枚举过程;
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接管对密码算法模块的控制权,操控密码算法模块完成对USBRxFIFO内存中所有待加解密数据的处理,当所述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中。
S6,待DMA数据长度寄存器的长度为0时,产生DMA中断,所述DMA控制器操作完成中断服务程序时,将13字节的CSW填入到芯片的USB TxFIFO中,USB串行接口控制器将其返回给USB主机 ,完成当前加解密数据的APDU指令全过程。
本实施例中步骤S2中的所述USB RxFIFO内存为8K字节,步骤S4中所述操作系统COS配置USB串行接口控制器的OUT端点接收寄存器,具体包括:所述USB数据收发器接收待下发的数据包数量,随后使能Out端点的接收功能;
配置算法协处理器的寄存器具体包括:初始化加解密算法,配置目标算法的相关寄存器;
配置DMA模块寄存器具体包括:配置DMA源地址寄存器是RxFIFO,目标地址寄存器是加解密SRAM缓冲区的起始地址,DMA操作数据长度寄存器是CBW中的传输数据包个数乘以512B。
具体举例:
本实施方式中RAM划分为RAM0,RAM1,RAM2,RAM3,以此为例说明USB 8KB 的RxFIFORAM同时工作的操作流程:
数据加密、或者解密的过程中,支持USB,DMA,算法协处理器硬件IP同时工作,具体流程如下:
1) USB 从 host 中接收Out数据包并写入至 RAM0 中, RAM0 受 USB 控制,其它RAM此时空闲
/RAM3 | RAM2 | RAM1 | RAM0 |
00 | 00 | 00 | USB |
完成后,硬件置标志位 RAM0_s =01(表示 USB 对 RAM0 的操作完成)
2)在第一个加解密数据包接收完成中断服务程序中, DMA-Codec 对 RAM0 中的数据进行加解密操作,此时RAM0 受 DMA-Codec 控制。
USB 继续从 host 中接收数据并写入至 RAM1 中,RAM1 受 USB 控制,其它2个RAM 此时空闲。
RAM3 | RAM2 | RAM1 | RAM0 |
00 | 00 | USB | DMA-Codec |
加密速度比接收数据的速度慢,因此当RAM1接收完数据后RAM0中的数据包还没有加解密完成, 所以还是DMA-Codec控制,USB 操作完成后,硬件置标志位 RAM1_s =01。RAM2 此时空闲,USB 从 host 中继续接收数据并写入至 RAM2 中, RAM2 受 USB 控制。
RAM3 | RAM2 | RAM1 | RAM0 |
00 | USB | 01 | DMA-Codec |
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 由于已经加密完成,此时处于空闲状态,因此可以再次开始接收数据。
RAM3 | RAM2 | RAM1 | RAM0 |
USB | 01 | DMA-Codec | 00 |
由上可以知晓,USB和DMA-Codec控制器如此并行地操作,循环着,直到将APDU包头中的所有要加解密的数据包处理完毕。在这个过程中,是由硬件IP自动处理的,在这个中间没有任何中断,在待处理的数据包最后一包完成时,会产生DMA完成中断将13字节的CSW填入到芯片的USB TxFIFO中,USB串行接口控制器将其返回给USB主机 ,完成当前加解密数据的APDU指令全过程。
实施例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。
具体实施过程:
在本实施过程中,TxFIFO配置的总的大小是4K字节,按Bulk协议,就是8个512B数据包,当USB主机要读取8K 加解密数据包时,下发的CBW 指令的传输长度就会是16, 即要求上传给USB主16个512B 数据包,那么处理流程如下:
第一步:配置USB In发送端点寄存器为:发送(16+1)个数据包,发送(16*512 +13)字节,随后使能In端点的发送功能,设置待发送包数SendPkt =16,此处的SendPkt与SendSize意义相同,只是采用了数据包的个数。
第二步:配置DMA目标地址是TxFIFO,源地址是加解密20K Codec RAM缓冲区的起始地址,DMA搬移长度是当前TxFIFO的可用空间4K字节,即8包数据,此时启动DMA。
修改当前发送包数SendPkt =16 – 8 = 8,当USB主机发送In包时,芯片将DMA搬移到USB TxFIFO中的512B数据包发送给USB主机。
第三步:DMA已完成4K字节数据包的搬移,同时USB向USB主机发送512B长度的数据包,当USB控制器发送完了2K字节即4个数据包时,USB控制器会产生TxFIFO半空中断,同时USB继续向USB主机发送512B长度的数据包。若要读取的数据小于4k,则直接发送即可,并不会产生半空中断过程。
第四步:在USB半空中断服务程序中,重新获取当前TxFIFO的可用空间,假设是XK字节,由于此时TxFIFO已经被占用了,因此X应当是小于4, 比如2K字节。此时需要再次配置DMA搬移长度是2K字节,再次启动DMA,修改当前发送包数SendPkt = SendPkt – 4。重复这个过程,直到SendPkt当前数值是0,表示USB主机需要的数据已发送完成,在最后一次时使能DMA完成中断。
第五步:在最后的一次DMA操作完成中断服务程序中,将13字节的CSW填入到芯片的USB TxFIFO中,到此时就完成了当前的Bulk协议传输,即读取加解密结果的APDU。
从上面的流程可以看到因为增加了USB TxFIFO半空中断事务,就可以使得USB主机的In事务操作基本可以达到线速,芯片的固件处理时间可以忽略不计。
本实施例中所述USB TxFIFO 配置的大小是4KB空间,按512B一包数据,可以由DMA写入8个512B的USB数据包,当DMA写入一包512B时, USB IP自动生成一个“端口号事务”信息到Tx In请求队列中,如图8所示。
需要说明的是,本发明中提供的所述DMA包括普通DMA、外设DMA和算法DMA,所述普通 DMA在存储器和普通IP之间进行搬运;所述外设DMA即在USB和存储器之间进行搬运;所述算法 DMA,即在存储器-算法-存储器之间进行搬运;
所述算法DMA的运行原理流程如下:
第一步:初始化算法,配置目标算法的Key、IV等相关寄存器;
第二步:初始化DMA,配置DMA数据源地址RxFIFO,DMA数据目标地址和DMA操作数据长度寄存器;
第三步:根据算法类型,配置DMA传输控制寄存器,启动算法DMA进行算法操作;
第四步:算法DMA从DMA的数据源地址处读取一组数据写入算法对应的数据寄存器中,启动算法运算,等待数据运算完成;然后算法DMA再从算法对应的数据寄存器中读取计算结果数据,写入到DMA的数据目标地址处并增加地址,DMA数据长度寄存器减少一组数据的长度,从而完成一组数据的算法加解密和读取操作。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视本发明的保护范围。
Claims (9)
1.一种基于USB接口的高速数据加解密芯片,其特征在于,包括32位RISC安全CPU核、AHB总线以及连接在所述AHB总线上的直接存取模块DMA、存储器管理单元EMMU,密码算法模块和USB通信模块,所述USB通信模块通过UTMI+Level 2接口内置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数据缓冲区中暂时存储。
2.根据权利要求1所述的基于USB接口的高速数据加解密芯片,其特征在于,所述芯片还包括定时器、时钟管理模块和电源管理模块。
3.根据权利要求1所述的基于USB接口的高速数据加解密芯片,其特征在于,所述密码算法模块实现SM1/SM4/SM7/DES/AES/PKU/HASH算法中的至少一个。
4.根据权利要求1所述的基于USB接口的高速数据加解密芯片,其特征在于,所述USB通信模块包括USB串行接口控制器和USB数据收发器,所述USB 串行接口控制器设置有8kFIFO RAM,所述USB串行接口控制器与所述AHB总线接口完成数据的高速并行传输过程,所述USB数据收发器采用Bulk-Only传输协议接收和发送待加解密数据包以及指令数据。
5.一种高速数据加解密方法,基于权利要求1-4任一所述的基于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接管对密码算法模块的控制权,操控密码算法模块完成对USBRxFIFO内存中所有待加解密数据的处理,当所述DMA控制器对最后一包待加解密数据进行处理完成时,DMA控制器会产生并进入DMA完成中断服务程序,具体包括;
DMA-Codec从DMA源地址寄存器处读取第一组待加解密数据写入目标算法对应的数据寄存器中,启动算法运算,等待数据运算完成;待运算完成后,DMA-Codec从目标算法对应的数据寄存器中读取计算结果数据,写入到DMA的目标地址寄存器,此时DMA数据长度寄存器减少一组数据的长度,从而完成一组数据的算法操作;此时,USB串行接口控制器同时接收下一包明文数据并写入到USB RxFIFO中,直到USB RxFIFO没有空间了,即停止接收待加解密数据包;当DMA算法功能做完512B数据加密,就释放出512B 的USB RxFIFO空间,芯片USB就自动从USB主机接收下一包的数据并写入到USB RxFIFO中;
S6,所述DMA控制器操作完成中断服务程序时,将13字节的CSW填入到芯片的USBTxFIFO中,USB串行接口控制器将其返回给USB主机,完成当前加解密数据的APDU指令全过程。
6.根据权利要求5所述的高速数据加解密方法,其特征在于,步骤S2中的所述USBRxFIFO内存为8K字节,步骤S4中所述操作系统COS配置USB串行接口控制器的OUT端点接收寄存器,具体包括:所述USB数据收发器接收待下发的数据包数量,随后使能Out端点的接收功能;
配置算法协处理器的寄存器具体包括:初始化加解密算法,配置目标算法的相关寄存器;
配置DMA模块寄存器具体包括:配置DMA源地址寄存器是RxFIFO,目标地址寄存器是加解密SRAM缓冲区的起始地址,DMA操作数据长度寄存器是CBW中的传输数据包个数乘以512B。
7.一种高速数据加解密结果的读取方法,其特征在于,基于权利要求1-4任一所述的基于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>TxFIFOCurSize1,且已发送的数据包长度等于TxFIFO的当前可用空间的一半时,那么此时 USB控制器会产生TxFIFO半空中断,进入步骤A4;若SendSize<TxFIFOCurSize1,则已发送的数据包长度等于要读取的数据包长度,直接进入步骤A5;
A4,重新获取当前TxFIFO的可用空间TxFIFOCurSize2为X K,再次重新配置DMA搬移长度等于X K,启动DMA,修改当前待读取的数据为SendSize=SendSize-X;重复该步骤,直到SendSize数值为0,进入步骤A5;
A5, 在最后的一次DMA操作完成中断服务程序中,将13字节的CSW填入到芯片的USBTxFIFO中,到此时就完成了当前的Bulk协议传输,即读取加解密结果的APDU指令。
8.根据权利要求7所述的高速数据加解密结果的读取方法,其特征在于,所述USBTxFIFO 配置的大小是4KB空间, 按512B一包数据,由DMA 写入8个512B的USB数据包,当DMA写入一包512B时, USB IP自动生成一个“端口号事务”信息到Tx In请求队列中;
当USB主机请求读的数据包数多于8个时,应当使能USB TxFIFO半空中断, 当USB IPTxFIFO发送了4个512B数据包时,就会产生TxFIFO半空的USB中断通知CPU;在USB半空中断服务程序中,配置DMA继续向USB TxFIFO中搬移待发送数据包。
9.根据权利要求7所述的高速数据加解密结果的读取方法,其特征在于,所述DMA包括普通DMA、外设DMA和算法DMA,所述普通 DMA在存储器和普通 IP 之间进行搬运;所述外设DMA即在USB和存储器之间进行搬运;所述算法 DMA,即在存储器-算法-存储器之间进行搬运;
所述算法DMA的运行原理流程如下:
第一步:初始化算法,配置目标算法的Key、IV相关寄存器;
第二步:初始化DMA,配置DMA数据源地址RxFIFO,DMA数据目标地址和DMA操作数据长度寄存器;
第三步:根据算法类型,配置DMA传输控制寄存器,启动算法DMA进行算法操作;
第四步:算法DMA从DMA的数据源地址处读取一组数据写入算法对应的数据寄存器中,启动算法运算,等待数据运算完成;然后算法DMA再从对应的数据寄存器中读取计算结果数据,写入到DMA的数据目标地址处并增加地址,DMA数据长度寄存器减少一组数据的长度,从而完成一组数据的算法加解密和读取操作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210455007.7A CN114547663B (zh) | 2022-04-28 | 2022-04-28 | 基于usb接口的高速芯片实现数据加解密及读取的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210455007.7A CN114547663B (zh) | 2022-04-28 | 2022-04-28 | 基于usb接口的高速芯片实现数据加解密及读取的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114547663A true CN114547663A (zh) | 2022-05-27 |
CN114547663B CN114547663B (zh) | 2022-07-22 |
Family
ID=81667732
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210455007.7A Active CN114547663B (zh) | 2022-04-28 | 2022-04-28 | 基于usb接口的高速芯片实现数据加解密及读取的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114547663B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115292236A (zh) * | 2022-09-30 | 2022-11-04 | 山东华翼微电子技术股份有限公司 | 一种基于高速接口多核加速方法及装置 |
CN117850700A (zh) * | 2024-01-23 | 2024-04-09 | 铵泰克(北京)科技有限公司 | 一种移动存储介质文件读写控制方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5825878A (en) * | 1996-09-20 | 1998-10-20 | Vlsi Technology, Inc. | Secure memory management unit for microprocessor |
US20060288235A1 (en) * | 2005-06-17 | 2006-12-21 | Fujitsu Limited | Secure processor and system |
CN101551784A (zh) * | 2008-04-02 | 2009-10-07 | 西北工业大学 | 一种usb接口的ata类存储设备中数据的加密方法及装置 |
CN103777918A (zh) * | 2012-10-18 | 2014-05-07 | 苏州简约纳电子有限公司 | 一种硬件加速器 |
CN112329038A (zh) * | 2020-11-15 | 2021-02-05 | 珠海市一微半导体有限公司 | 一种基于usb接口的数据加密控制系统及芯片 |
-
2022
- 2022-04-28 CN CN202210455007.7A patent/CN114547663B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5825878A (en) * | 1996-09-20 | 1998-10-20 | Vlsi Technology, Inc. | Secure memory management unit for microprocessor |
US20060288235A1 (en) * | 2005-06-17 | 2006-12-21 | Fujitsu Limited | Secure processor and system |
CN101551784A (zh) * | 2008-04-02 | 2009-10-07 | 西北工业大学 | 一种usb接口的ata类存储设备中数据的加密方法及装置 |
CN103777918A (zh) * | 2012-10-18 | 2014-05-07 | 苏州简约纳电子有限公司 | 一种硬件加速器 |
CN112329038A (zh) * | 2020-11-15 | 2021-02-05 | 珠海市一微半导体有限公司 | 一种基于usb接口的数据加密控制系统及芯片 |
Non-Patent Citations (2)
Title |
---|
张彤等: "即时加速非对齐数据传输的dma设计方法", 《电子测量技术》 * |
张锋等: "一种高速免驱USB加密卡的设计与实现", 《计算机工程》 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115292236A (zh) * | 2022-09-30 | 2022-11-04 | 山东华翼微电子技术股份有限公司 | 一种基于高速接口多核加速方法及装置 |
CN117850700A (zh) * | 2024-01-23 | 2024-04-09 | 铵泰克(北京)科技有限公司 | 一种移动存储介质文件读写控制方法 |
CN117850700B (zh) * | 2024-01-23 | 2024-06-28 | 铵泰克(北京)科技有限公司 | 一种移动存储介质文件读写控制方法 |
Also Published As
Publication number | Publication date |
---|---|
CN114547663B (zh) | 2022-07-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114547663B (zh) | 基于usb接口的高速芯片实现数据加解密及读取的方法 | |
EP1943595B1 (en) | Unified dma | |
US8266338B2 (en) | Data flow control within and between DMA channels | |
EP2803012B1 (en) | Using storage controller bus interfaces to secure data transfer between storage devices and hosts | |
CN109447225B (zh) | 一种高速安全加密Micro SD卡 | |
US6823403B2 (en) | DMA mechanism for high-speed packet bus | |
US20110307759A1 (en) | Functional DMA | |
US7707321B2 (en) | Chained DMA for low-power extended USB flash device without polling | |
CN114662136B (zh) | 一种基于pcie通道的多算法ip核的高速加解密系统及方法 | |
CN109902043A (zh) | 一种基于fpga的国密算法加速处理系统 | |
US6889266B1 (en) | Method for delivering packet boundary or other metadata to and from a device using direct memory controller | |
US9317462B2 (en) | Microcontroller peripheral data transfer redirection for resource sharing | |
CN110688333A (zh) | 一种基于pcie的dma数据传输系统及方法 | |
CN114817965A (zh) | 基于多算法ip核实现msi中断处理的高速加解密系统及方法 | |
KR100799305B1 (ko) | 다중 암호엔진을 사용하는 고성능 암호화 장치 | |
CN105468983B (zh) | 基于sata接口的数据传输方法与装置 | |
US6032204A (en) | Microcontroller with a synchronous serial interface and a two-channel DMA unit configured together for providing DMA requests to the first and second DMA channel | |
CN112470136A (zh) | 直接存储器存取控制器 | |
CN210836072U (zh) | 一种流加密usb接口转fifo接口的桥片 | |
US6772311B2 (en) | ATAPI device unaligned and aligned parallel I/O data transfer controller | |
CN114943087A (zh) | 一种多算法核高性能sr-iov加解密系统及方法 | |
US20220416997A1 (en) | Handling unaligned transactions for inline encryption | |
CN108563603B (zh) | 一种基于uasp协议的高效数据加密设备 | |
KR20090059602A (ko) | 세션 메모리 버스를 구비한 암호화 장치 | |
CN115292236B (zh) | 一种基于高速接口多核加速方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |