CN101655894B - 在通用串行总线加密锁设备上提高分组算法吞吐量的方法 - Google Patents
在通用串行总线加密锁设备上提高分组算法吞吐量的方法 Download PDFInfo
- Publication number
- CN101655894B CN101655894B CN2008100437164A CN200810043716A CN101655894B CN 101655894 B CN101655894 B CN 101655894B CN 2008100437164 A CN2008100437164 A CN 2008100437164A CN 200810043716 A CN200810043716 A CN 200810043716A CN 101655894 B CN101655894 B CN 101655894B
- Authority
- CN
- China
- Prior art keywords
- data
- serial bus
- usb data
- encryption
- main frame
- 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.)
- Active
Links
Images
Abstract
本发明公开了一种在USBKey设备上提高分组算法吞吐量的方法,主机上的应用程序将数据块传递给设备驱动程序,同时,应用程序请求从设备驱动程序中读取响应数据;设备驱动程序将所述的数据块传递给USBKey设备,同时,设备驱动程序请求读取响应数据;USBKey设备接收一个USB数据包,并送入加密IP中加密,同时接收下一个USB数据包;USBKey设备将加密后的USB数据包送入其输出缓冲区中,发送给主机,同时将下一个USB数据包送入加密IP中加密;主机接收加密的USB数据包,放入设备驱动程序中;直至数据块的数据全部处理完毕。本发明能够有效提高数据传输的速度。
Description
技术领域
本发明涉及一种USB(通用串行总线)设备处理分组加密算法的通讯方法,特别是涉及一种在USBKey设备(USBKey通常称做USB加密锁)上提高分组算法吞吐量的方法。
背景技术
当前,在通用串行总线加密锁设备(USBKey)上处理大量的(通常大于100K字节)分组加密数据时,为了提高处理速度,通常的方法如下(参见图1所示):主机上的应用程序将待处理的数据分解为一些长度固定的数据块,例如4096字节(这里提到的4096只是为了方便讲述而设,并非必须,在设备的能力之内,这个长度通常越大越好,对于绝大部分设备来说,这个长度不会太大);主机上的应用程序将上面所述的数据块传递给主机的设备驱动程序(由于只有设备驱动程序才能和设备通讯,因此应用程序需要通过操作系统提供的函数把数据传递给设备驱动程序。设备驱动程序能够存储数据,但为了提高处理速度,设备驱动程序不会存储应用程序的数据,而直接使用应用程序中的数据);主机上的设备驱动程序再将该数据块传递给USBKey设备;USBKey设备接收数据,并将这些数据保存在其内部的缓存中;USBKey设备使用加密IP(加密IP是指加密的硬件实现电路,是USBKey设备中的一个硬件电路)对所述数据块分组(每一组的大小通常在16字节到128字节之间,每一组的大小和密码算法有关)进行加密,加密后的数据也保存在USBKey内部的缓存(4096字节)中;USBKey设备将加密好的数据块回送给主机的设备驱动程序;应用程序从所述设备驱动程序中将其收到的数据(4096字节)读取出来。
这种方法的缺点是所有过程是串行操作,USBKey设备接收数据时,加密IP处于空闲状态,同样USBKey设备发送数据时,加密IP也处于空闲状态;并且数据传输过程有大量的数据搬运操作(主要是USBKey设备接收数据和发送数据)。
发明内容
本发明解决的技术问题是提供一种在通用串行总线加密锁设备上提高分组算法吞吐量的方法,能够有效提高数据传输的速度。
为解决上述技术问题,本发明的在通用串行总线加密锁设备上提高分组算法吞吐量的方法是:
步骤一、主机上的应用程序准备一个数据块;该应用程序将所述数据块传递给主机的设备驱动程序,其中:
在传递的同时,所述应用程序请求从设备驱动程序中读取通用串行总线加密锁设备发送至主机的数据;所述设备驱动程序将所述的数据块传递给USBKey设备,在传递的同时,所述设备驱动程序请求读取通用串行总线加密锁设备发送至主机的数据;
步骤二、通用串行总线加密锁设备接收一个USB数据包,并送入加密IP中加密,同时接收下一个USB数据包;
步骤三、通用串行总线加密锁设备将加密后的USB数据包送入其输出缓冲区中,且由通用串行总线加密锁设备将输出缓冲区中加密的USB数据包发送给主机,同时将下一个USB数据包送入加密IP中加密;
步骤四、主机接收加密的USB数据包,放入设备驱动程序中;
步骤五、返回到步骤二,直至所述数据块的数据全部处理完毕;
步骤六、所述设备驱动程序把从通用串行总线加密锁设备收到的数据回送给应用程序。
在本发明中USBKey设备对于主机发送来的数据,接收一个USB数据包,处理后立即发送一个USB数据包,并在处理的同时接收下一个USB数据包。与现有的接收一定数量数据,处理后再将数据全部发送的方法相比,能够有效提高数据传输的速度。
本方法不需要增加复杂的硬件,通过应用程序、设备驱动程序和USB设备三方面的配合,可以将USB设备对分组算法(如SCB2、SSF33、DES、AES等分组加密算法)数据的处理能力(实际吞吐量)提高到USB1.1设备通讯速度的理论上限;对于USB2.0设备,由于本发明使用流水线,也能提高实际处理能力。
附图说明
下面结合附图与具体实施方式对本发明作进一步详细的说明:
图1是现有的在USBKey设备上处理分组加密数据的方法流程图;
图2是本发明的方法控制流程图;
图3是USBKey设备的结构示意图。
具体实施方式
针对现有技术的不足,本发明的在通用串行总线加密锁设备(USBKey)上提高分组算法吞吐量的方法,从两个方面解决数据传输速度的问题:一个方面是减少不必要的数据搬运;另一个方面是使数据传输和加密操作并行处理。
结合图2所示,减少数据搬运的方法如下:
步骤一、主机上的应用程序将待加密数据分成一些固定长度的数据块。下面的描述中采用每个数据块长度是4096字节的方法(长度为4096不是必须的,只是为描述方便而采用的一个值,这个值越大则效果越好,这个值不受设备能力的限制);主机上的应用程序将第一个数据块传递给主机的设备驱动程序,在传递的同时,所述应用程序请求从设备驱动程序中读取响应数据(即USBKey设备发送至主机设备驱动程序的数据。应用程序读取响应数据的本质是应用程序提供一个缓冲区,设备驱动程序填写这个缓冲区)。应用程序从驱动程序中读取数据是通过操作系统提供的函数来实现的,驱动程序从USBKey中读取数据,直接放在应用程序提供的缓冲区中。主机采用设备驱动程序将所述的数据块传递给USBKey设备,在传递的同时,所述主机采用设备驱动程序请求读取响应数据(即USBKey设备发送至主机的数据)。这一步是主机上软件的工作,后面的步骤是USBKey设备上的工作。
步骤二、USBKey设备接收一个USB数据包(该数据包是64字节,按照USB协议,设备按一定的包长度发送、接收数据,协议规定的最大包长度是64字节,因此这里采用64字节的描述,包长度是USB设备定义的能力。这里的64字节是前述的4096字节中的一部分)。本步骤是由USBKey设备的一个硬件实现的,接收到的数据存在USBKey设备的输入缓冲区中。
步骤三、USBKey设备将步骤二接收的数据送入加密IP中加密,将加密后的USB数据包送入其第一输出缓冲区中(64字节)。
步骤四、和步骤三同时,USBKey设备发送其第二输出缓冲区的数据(如果有数据)
步骤五、主机接收64字节加密的USB数据包,设备驱动程序将这64字节数据放入主机上的应用程序提供的缓冲区中。
步骤五、返回到步骤二,直至4096字节数据块的数据全部处理完毕。
步骤六、设备驱动程序接收到全部的数据后,将控制权交给应用程序。
在现有的方法中,主机传输数据给USBKey设备的缓冲区,然后USBKey设备将缓冲区内的数据送入加密IP加密,之后再将加密的结果放入USBKey设备的缓冲区,最后将缓冲区的数据传输给主机。而本发明中缓冲区在主机侧,不需要USBKey设备的缓冲区,减少了比较费时间的USBKey设备内部的数据搬运操作。
并行操作的方法如下:
所述USBKey设备设有两个输入缓冲区和两个输出缓冲区;USBKey设备在第一个输入缓冲区收到64字节的USB数据包,并送入加密IP中加密时,另一个输入缓冲区同时在接收USB数据包;USBKey设备对该USB数据包进行加密处理后,向一个输出缓冲区写数据时,可以将另一个输出缓冲区中已加密的USB数据包同时发送给主机。
两个输入缓冲区接收USB数据包和两个输出缓冲区发送USB数据包,是由硬件电路完成的,不占用USBKey设备的CPU时间。从输入缓冲区读USB数据包并做加密处理,加密后将USB数据包放到输出缓冲区的过程,需要USBKey设备的CPU参与。
所述USBKey的结构如图3所示。
主机发送数据块至USBKey设备,USBKey设备将接收的USB数据包分别存放在其位于图3左侧的两个输入缓冲区Bufferl或Buffer2中。USBKey设备从所述的两个输入缓冲区Buffer1或Buffer2中读取USB数据包,USBKey设备的CPU将读出的USB数据包复制到加密IP的FIFO IN(输入缓冲区)中进行加密,经加密IP加密处理后的USB数据包存入加密IP的FIFOOUT(输出缓冲区)中保存。USBKey设备的CPU将加密IP的FIFO OUT中的数据复制到位于图3右侧的两个输出缓冲区Buffer3或Buffer4中,然后再将USB数据包发送回主机。
下面结合一个具体的实施例对本发明作进一步的说明。具体的实现过程如下:
1、主机调用CreateFile(这是操作系统提供的一个函数)打开USBKey设备,参数选用重叠方式(OVERLAPPED方式是Windows下一种特有的操作文件的方法);
2、主机准备好待加密的数据块,该数据块的大小通常采用64K(USB通讯的一帧之内可以传送16个包(1024字节),总线利用率=1024/(块长度+1024),采用4096字节数据块时总线利用率为80%,而采用64K字节数据块时,总线利用率为98%,因此在应用时应采用大一些的数据块);
3、主机以OVERLAPPED方式调用WriteFile(这是操作系统提供的一个函数)发送数据给主机的设备驱动程序;
4、对于步骤3中的写请求,设备驱动程序返回挂起状态(STATUS_PENDING是Windows下驱动程序返回的一个特定的状态);
5、主机以OVERLAPPED方式调用ReadFile(这是操作系统提供的一个函数)读取USBKey设备中的数据;
6、对于步骤5中的读请求,设备驱动程序返回STATUS_PENDING;
7、此时,主机会发送一个USB数据包给USBKey设备,同时从USBKey设备上读取一个USB数据包;数据包的大小与USBKey设备的配置有关,通常采用64字。这一步详细的流程如下:
7.1、主机发送第一个USB数据包,至USBKey设备的输入缓冲区Buffer1中。
7.2、USBKey设备的CPU读取输入缓冲区Bufferl的数据到加密IP的FIFO IN,并加密,加密后的USB数据包存在加密IP的FIFO OUT中。USBKey设备的CPU将加密IP的FIFO OUT中的数据复制到输出缓冲区Buffer3中;同时,主机再发送一个USB数据包到USBKey设备的输入缓冲区Buffer2中;
7.3、USBKey设备的CPU读取输入缓冲区Buffer2的数据到加密IP的FIFO IN,并加密,加密后的USB数据包存在加密IP的FIFO OUT中,USBKey设备的CPU将加密IP的FIFO OUT中的数据复制到输出缓冲区Buffer4中;同时USBKey设备将输出缓冲区Buffer3中的USB数据包发送给主机,主机也再发送USB数据包到输入缓冲区Buffer1;
7.4、USBKey设备的CPU读取输入缓冲区Buffer1的数据到加密IP的FIFO IN,并加密,加密后的USB数据包存在加密IP的FIFO OUT中,USBKey的CPU将加密IP的FIFO OUT中的数据复制到输出缓冲区Buffer3中;同时USBKey设备发送输出缓冲区Buffer 4中的USB数据包,主机也再发送USB数据包到输入缓冲区Buffer 2中;
7.5、如果累计加密数据没有达到64K字节,则转到步骤7.3,直到累计加密数据达到64K字节为止。步骤7.1至7.5的过程,按照图3中的标号,数据流的顺序可以表示为0123412341234……。
8、此时,步骤5和7中的读写请求同时结束,返回应用层。
9、此时,步骤4和6的读写请求同时结束,读回的数据就是加密后的数据。
在上面的实施例中,步骤7.1至7.5的过程没有通常操作中的输入缓冲区Bufferl或Buffer2向USBKey内部缓冲区复制的操作,而且步骤7.1至7.5中的加密操作充分利用了输出缓冲区Buffer3到主机、主机到输入缓冲区Buffer1和输出缓冲区Buffer4到主机、主机到输入缓冲区Buffer2中的时间。
由于加密速度超过了USB1.1传输的速度,因此分组加解密的吞吐量达到了USB1.1传输的理论上限4M bps,而现有的方法中由于有额外的数据搬运和串行操作,在8位MCU的硬件上,数据吞吐量通常在2M bps左右,在32位的MCU硬件上,数据吞吐量在3M bps左右。
下表是整个硬件(即USBKey设备)各部分的时序。
输入硬件 | ● | ● | ● | ● | ● | ||||||
处理器 | ● | ● | ● | ● | ● | ||||||
输出硬件 | ● | ● | ● | ● |
输入硬件的功能是从主机读取数据,放入输入缓冲区(有两个由硬件构成的输入缓冲区)中,处理器的功能是把数据从输入缓冲区送入加密IP加密,并把加密结果放入输出缓冲(有两个由硬件构成的输出缓冲区)中,输出硬件的功能是把输出缓冲区的数据发送给主机。从左至右为时间流逝的方向,表中表示主机发出5个包(包的大小是64字节),接收5个包。
以上通过结合具体实施方式对本发明作了详细的说明,这些并非构成对本发明的限制,在不脱离本发明原理的情况下,还可做出若干变形和改进,这些也应视为属于本发明的保护范围。
Claims (6)
1.一种在通用串行总线加密锁设备上提高分组算法吞吐量的方法,包括如下步骤:
步骤一、主机上的应用程序准备一个数据块;该应用程序将所述数据块传递给主机上的设备驱动程序,其特征在于:
在传递的同时,所述应用程序请求从设备驱动程序中读取通用串行总线加密锁设备发送至主机的数据;所述设备驱动程序将所述的数据块传递给通用串行总线加密锁设备,在传递的同时,所述设备驱动程序请求读取通用串行总线加密锁设备发送至主机的数据;
步骤二、通用串行总线加密锁设备接收一个USB数据包,并送入加密IP中加密,同时接收下一个USB数据包;
所述加密IP是加密的硬件实现电路,是USBKey设备中的一个硬件电路;
步骤三、USBKey设备将加密后的USB数据包送入其输出缓冲区中,且由通用串行总线加密锁设备将输出缓冲区中加密的USB数据包发送给主机,同时将下一个USB数据包送入加密IP中加密;
步骤四、主机接收加密的USB数据包,放入设备驱动程序中;
步骤五、返回到步骤二,直至所述数据块的数据全部处理完毕;
步骤六、所述设备驱动程序把从通用串行总线加密锁设备收到的数据回送给应用程序。
2.如权利要求1所述的方法,其特征在于:所述通用串行总线加密锁设备设有两个输入缓冲区和两个输出缓冲区;所述两个输入缓冲区和两个输出缓冲区分别进行并行操作;一个输入缓冲区收到USB数据包,并送入加密IP中加密时,另一个输入缓冲区同时在接收另一个USB数据包;通用串行总线加密锁设备向一个输出缓冲区写数据的同时,能将另一个输出缓冲区中已加密的USB数据包发送给主机。
3.如权利要求2所述的方法,其特征在于:两个输入缓冲区接收USB数据包和两个输出缓冲区发送USB数据包,由硬件电路完成,不占用通用串行总线加密锁设备的CPU时间;从输入缓冲区读USB数据包并做加密处理,加密后将USB数据包放到输出缓冲区的过程,需要通用串行总线加密锁设备的CPU参与。
4.如权利要求1或2所述的方法,其特征在于:通用串行总线加密锁设备的CPU将读出的USB数据包复制到加密IP的输入缓冲区中进行加密,经加密处理后的USB数据包存入加密IP的输出缓冲区中保存。
5.如权利要求1所述的方法,其特征在于:主机上的应用程序采用重叠方式或者采用多线程的方式访问通用串行总线加密锁设备。
6.如权利要求5所述的方法,其特征在于:当主机上的应用程序采用重叠方式或者采用多线程的方式访问通用串行总线加密锁设备时,所述设备驱动程序返回挂起状态。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2008100437164A CN101655894B (zh) | 2008-08-19 | 2008-08-19 | 在通用串行总线加密锁设备上提高分组算法吞吐量的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2008100437164A CN101655894B (zh) | 2008-08-19 | 2008-08-19 | 在通用串行总线加密锁设备上提高分组算法吞吐量的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101655894A CN101655894A (zh) | 2010-02-24 |
CN101655894B true CN101655894B (zh) | 2012-06-27 |
Family
ID=41710183
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2008100437164A Active CN101655894B (zh) | 2008-08-19 | 2008-08-19 | 在通用串行总线加密锁设备上提高分组算法吞吐量的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101655894B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101980239A (zh) * | 2010-11-12 | 2011-02-23 | 四川长虹电器股份有限公司 | 软件代码加密方法 |
CN104462993B (zh) * | 2013-09-18 | 2018-01-09 | 北大方正集团有限公司 | 加密方法、解密方法、加密装置和解密装置 |
CN103714033B (zh) * | 2013-12-31 | 2017-01-11 | 北京创毅视讯科技有限公司 | 数据处理方法和装置 |
CN104102530B (zh) * | 2014-07-30 | 2017-11-21 | 广东小天才科技有限公司 | 一种提高电子产品烧录速度的方法和系统 |
CN108563603B (zh) * | 2018-04-18 | 2020-12-29 | 山东方寸微电子科技有限公司 | 一种基于uasp协议的高效数据加密设备 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101032128A (zh) * | 2004-10-01 | 2007-09-05 | 诺基亚公司 | 移动装置的基于上下文的连通性 |
WO2008080107A2 (en) * | 2006-12-22 | 2008-07-03 | Qualcomm Incorporated | Enhanced wireless usb protocol and hub |
-
2008
- 2008-08-19 CN CN2008100437164A patent/CN101655894B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101032128A (zh) * | 2004-10-01 | 2007-09-05 | 诺基亚公司 | 移动装置的基于上下文的连通性 |
WO2008080107A2 (en) * | 2006-12-22 | 2008-07-03 | Qualcomm Incorporated | Enhanced wireless usb protocol and hub |
Also Published As
Publication number | Publication date |
---|---|
CN101655894A (zh) | 2010-02-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7336783B2 (en) | Cryptographic systems and methods supporting multiple modes | |
TWI237974B (en) | Security association data cache and structure | |
CN101655894B (zh) | 在通用串行总线加密锁设备上提高分组算法吞吐量的方法 | |
CN102724035B (zh) | 一种加密卡的加解密方法 | |
CN107256363A (zh) | 一种由加解密模块阵列组成的高速加解密装置 | |
CN1531240A (zh) | 支持多个模式的加密装置 | |
CN112329038B (zh) | 一种基于usb接口的数据加密控制系统及芯片 | |
JP2008500638A (ja) | 暗号化オペレーションをサポートする複数のレジスタを備えたデータムーバコントローラ | |
CN107092835A (zh) | 一种虚拟存储盘的计算机数据加密装置及方法 | |
JP2003532915A (ja) | 短い演算に対するdesハードウェア・スループットの向上 | |
CN102739393A (zh) | 基于apb总线的硬件加密uart装置 | |
CN112052483B (zh) | 一种密码卡的数据通信系统及方法 | |
CN114547663B (zh) | 基于usb接口的高速芯片实现数据加解密及读取的方法 | |
CN102013973A (zh) | 一种加密解密转接器 | |
CN104426654A (zh) | 一种基于多缓冲方式的加密卡的加解密方法 | |
CN114327255A (zh) | 存储器接口控制器及存储器 | |
CN110287721B (zh) | 硬件加解密系统及方法 | |
CN201479145U (zh) | 加密解密转接器 | |
CN117083612A (zh) | 处置未对齐事务以用于内联加密 | |
KR101380895B1 (ko) | 보안 서비스 제공 장치 및 이를 이용한 보안 서비스 방법 | |
CN1234079C (zh) | 高速信息安全处理器 | |
WO2020118583A1 (zh) | 数据处理方法、电路、终端设备及存储介质 | |
CN113810397A (zh) | 协议数据的处理方法及装置 | |
CN113742753B (zh) | 一种数据流加解密的方法、电子设备及芯片系统 | |
CN112015564A (zh) | 加解密处理方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |