微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 模拟电路设计 > USB软件加密卡及其驱动程序的设计与开发

USB软件加密卡及其驱动程序的设计与开发

时间:04-18 来源:互联网 点击:
 详述了USB软件加密卡及其驱动程序这一热门技术。根据实践经验,重点介绍了USB接口芯片选择和应用。阐述了USB驱动程序基本功能的开发,还提出了开发驱动程序的加密功能的新观点,具有很强的实践意义。
  关键词:USB加密卡,FPGA,驱动程序,即插即用


1 引 言
  软件加密卡(又称软件狗)是一种智能型加密工具,是一个安装在并口、串口等接口上的硬件电路。当被保护的软件运行时,程序向插在计算机上的加密卡发出查询命令,加密卡迅速计算查询并给出响应,正确的响应能保证软件顺利运行。如果没有软件加密卡,程序不能运行。最新的第四代软件加密卡内置一个单片机芯片,芯片中存有特定的算法程序,可将读出的密钥进行加密变幻,以对抗逻辑分析仪。
  USB软件加密卡是USB接口技术与第四代加密卡技术结合的产物,因而与其它加密卡相比具有一些明显优势:首先,USB的数据传输速度快,USB1.0协议为12M比特率,USB2.0版可达480M比特率;其次,USB的底层数据传输具有特定的打包方法和编码格式,这样就增加了加密数据在传输过程中被截获及解密的难度。最后,USB设备的即插即用性(plug-and-play)极大地方便了用户的使用,比如,要在其它微机上使用被保护软件时,只要一拔一插即可,免除了开机箱和重启动的麻烦。
2 USB软件加密卡的硬件设计
2.1 USB接口芯片
  USB接口芯片的种类很多,但无论何种接口芯片,都有两个基本功能:一是与上位机通信;二是提供对外围电路CPU的接口。也就是说接口芯片架起了计算机与外围设备的桥梁,使开发者不用关心复杂的USB协议是如何将数据传送到主机的。
  现有的支持USB1.0协议的接口芯片可大致分为两类:一种为内部集成了微控制器,如Intel 8×930Ax/Hx内嵌一个8051CPU;另一种则只提供了对外围电路访问的读写接口,如USBN9603。在加密卡的设计中,建议采用第二种类型,因为对于较复杂的加密算法,8051CPU处理起来很吃力。下面以USBN9603为例介绍接口芯片的使用。
  图1描述了USBN9603的逻辑结构,可以看到芯片对外提供了8位并行接口,该接口为数据/地址复用接口,芯片内部自带地址锁存器,配合CS,RD,WK信号完成对内部寄存器的读写操作。USBN9603有一外部中断INTR管脚,当USB接口有状态变化时可产生中断信号通知CPU,通过软件置中断屏蔽寄存器位,可控制中断信号的发生。
  USBN9603有7个与主机相连接的端点,包括一个双向命令传输端点、三个接收端点、三个发送端点,可支持中断(Interrupt)、批量(Bulk)和等时(Isochronal)传输模式。USBN9603传输器(Transceiver)配有的电压调节器通过软件置位可产生上拉电压,通过上拉电阻接D+则接通全速模式,接D-则接通低速模式。
  USBN9603使用外接晶振,同时有一个对外的时钟输出器,产生对外的时钟信号,它的输出频率可由软件控制。USBN9603的USB接口引擎由物理层和媒介通道控制器组成。物理层包括数字时钟电路、监视电路、位填充与清除逻辑电路等。媒介通道控制器层要完成数据包格式化、循环冗余检测、端点地址侦察等任务,并提供对端点发出的NAK,ACK和STALL回应的控制。接口引擎还要负责侦察和报告USB总线事件,如复位,挂起和恢复。

  USBN9603向开发者提供了53个可编程的寄存器,地址分布在0x00~0x3F。CPU通过对寄存器的读写,完成一切USB接口操作。USBN9603寄存器被映射为CPU的外部RAM。CPU通过CS片选信号寻址,在ALE信号及RD、WR信号的配合下,由8位的并口写入地址和数据。虽然读写操作简单,但各寄存器的定义及作用却复杂,但只要对USB协议及USBN9603功能有一定的了解,就不难理解和掌握各寄存器的使用。
2.2 外围控制电路的设计
  外围控制电路的作用有两个:一是对USB接口操作;二是实现加密算法。这要求主控芯片提供基本的读写、中断和地址/数据信号,同时要有一定的计算能力以适应加密算法。在此前提下,我们有多种选择,但加密卡的制作不能一味地追求高保密性能,而忽视了开发成本,应根据不同的应用场合灵活地选用不同的方案。例如,采用DSP芯片,其保密性和计算速度俱佳,但开发成本高、周期长;也可用价格低廉的单片机如8051,虽然速度慢且保密性差,但制作简单、开发周期短。
  我们在实践中应用的一种方案为单片机+FPGA(Field Programmable Gate Array)模式,既可方便地用单片机完成对USB口的操作,又能利用FPGA的速度快和保密性强等特点实现复杂的加密算法。FPAG支持众多的加密标准如AES、DES、三倍DES。而且,依靠FPGA的在线编程功能可方便地实现算法的更新与升级。这种组合模式符合模块化设计思想,会一定程度地提高开发速度。
3 USB软件加密卡驱动程序设计
3.1 驱动程序的基本功能实现
  驱动程序的基本功能就是建立应用程序与加密卡之间的数据通讯。Windows98和Windows2000操作系统为USB总线提供了全面的支持,并且用WDM(Windows Device Mode)设备驱动程序模型代替了VxD设备驱动程序。WDM支持USB1.1协议,并为用户开发自己的用户驱动程序提供了下沿接口USBDI(USBDriving Interface)。USB用户驱动程序通过USBDI访问USB设备类驱动程序。USB客户驱动程序决不会收到任何硬件资源(如端口或中断),所有低层I/O都由USB设备类驱动程序应付。客户驱动程序只关心数据传输类型、传输时序、传输管道以及如何处理数据等主要操作。USBDI就是为实现这一点而设计的软件接口。形象地讲,USBDI以软件形式搭建了一个USB协议中所定义设备的逻辑结构,见图2。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top