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

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

时间:04-18 来源:互联网 点击:


  由图2可知,USBDI表现给客户驱动程序的所有USB设备都统一由配置、接口、端点组成。一个设备暴露一系列管道(端点),一个或多个端点可组成一个接口,一个或多个接口可组成一个配置。注意,USB接口芯片也以此模型描述其设备结构。端点、接口和配置由各自描述符描述性质。描述符一般放在外设储存器中,当设备接入USB总线时,以连续数据块的形式一起发到USB设备类驱动程序。USB客户驱动程序对设备的操作完全参照描述符中的参数进行。
  从编程角度上讲,USBDI为开发者提供了一系列内部控制码IOCTL,来向USB设备类驱动程序发出控制信息,如客户驱动程序可使用IOCTL_INTERNAL_USB_RESET_PORT来复位管道。
IOCTL种类很多,其中最重要的是IOCTL_INTERNAL_USB_SUBMIT_URB,它用于向USB设备娄驱动程序发送URB(USB Request Block)请求块。URB是一个联合体数据结构,因而有多种不同的定义,每种定义对应一种功能并由各自的功能码描述,如USB_FUNCTION_BULK_OR_INTERRUPT_TRANSFER表示通过块或中断端点读/写数据功能。每个功能码使用各自的URB结构详细说明它的输入/输出参数。URB包参数构造完后,将其指针挂接在IRP包上,随IRP包传给USB设备类驱动程序处理。URB是个极重要的概念,对外设的各种操作基本上是通过发送URB包进行的。
  有了驱动程序并将其安装在计算机上,应用程序(被保护软件)就可用OpenFile、Write/ReadFile等API函数对加密卡进行读写或状态检测。
3.2 开发驱动程序的加密功能
  驱动程序的加密功能有以下几种实现方式:将加密数据的一部分或加密算法的某一阶段交给驱动程序完成,使其在基本通讯功能上增加数据过滤计算功能;还可借鉴“用户算法植入”的思想(普通的加密思想无非是在程序执行中与加密卡交换数据,而这种加密技术是在加密硬件中开辟一块存储区,将用户程序的一部分写进去,并由加密卡来执行),将应用软件的一部分写入驱动程序,造成在没有驱动程序时应用程序将不完整。
  开发驱动程序的加密功能主要基于两点考虑。首先,USB外设具有即插即用功能,加密卡插上或拔出时,其驱动程序自动加载或卸载,不可能在没有加密卡的情况下单独运行驱动程序,因而可以将它们视为整体。但驱动程序毕竟在计算机上运行,它可以充分利用其资源,如计算能力与内存空间,以协助加密卡的工作。其次,驱动程序运行在操作系统的内核。鉴于一般操作系统(如Windows)对内核的保护,要对其进行跟踪解密比较困难,因而将应用软件的重要部分写入驱动程序要比在应用程序中运行更安全,更依赖于加密卡,同时又不增加加密卡的负担。
  驱动程序的加密功能使其既成为加密卡的一部分又成为应用软件的一部分,这种双重性实现了加密系统的紧密联系,使得加密效果更可靠。同时,使得性能较低的加密卡得以扩展,方便地用低成本实现高保密性。另外,要对现有加密卡进行升级,往往只需修改驱动程序,这更显得方便高效。
4 结束语
  以上我们已对USB加密卡的各种关键技术作了详细介绍。虽然世界上没有绝对安全的加密技术,而数据加密也只是安全保密的一小部分,但加密卡的软硬件开发表现出了高度的灵活性与创新性。面对层出不穷的威胁计算机安全的行为,各种各样的加密技术将不断涌现,它们以自身的发展,捍卫了软件商利益的同时,也捍卫着知识的尊严。

参考文献

1 秦石乔,王省书.微机接口技术及应用.长沙:国防科技大学出版社,2000
2 Chris Cant.Windows WDM设备驱动程序开发指南.北京:机械工业出版社,2000
3 看雪编著.加密与解密——软件保护技术及完全解决方案.北京:电子工业出版社,2001

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

网站地图

Top