用于正在处理中的加密/解密usb数据的动态置换的制作方法

文档序号:7593109阅读:98来源:国知局
专利名称:用于正在处理中的加密/解密usb数据的动态置换的制作方法
技术领域
本发明涉及用于保护数字数据的方法和系统,特别是用于保护使用通用串行总线(USB)技术和协议或者一种类似的技术和协议来传递数字数据的方法和系统。
背景技术
在计算机系统里,外围设备和其它设备可以用总线连接到计算机系统,如USB总线。利用USB总线的计算机系统包括一个USB软件层,该软件层将与应用软件相互作用并且作为从中心主机到外围设备的数据发送和接收的媒介。
USB软件层支持一般的USB硬件。为了支持USB通信,USB软件层是复杂和灵活的。USB软件层优选地支持多种独立硬件售主的驱动程序并必须保持是可插入的。因此,为了解决诸如硬件方面的改变或其它更新之类的问题,可以经常对USB软件层进行改变。此外,存在大量不同的USB硬件元件可以利用,并且USB软件层优选地支持多种选择。
由于USB总线上的数据通过一个不安全的USB软件层传递并且该数据也可被总线上的任何设备利用,这涉及安全性的问题。举例来说,一个计算机模型包括一个请求经过USB总线传递数据的安全部件、软件或者硬件。然而,USB软件层不属于安全软件部件的一部分,则希望其简单、灵活、并具有可升级性是引人注目的。可是,如果USB软件层不是安全软件部件的一部分,安全软件部件内实现的安全性是危险的。
软件或硬件攻击可以使系统变得脆弱。例如,对攻击者来说从一个硬件设备进行输入来欺骗设备是可能的,所以用户键入的信息并没有传送到数据所指向的应用程序。对于攻击者来说探测设备的输入也是可能的,例如,保存用户的按键来获得口令或其它数据信息。通过对计算机的软件攻击,输入的记录、更改或重放也是可能的。
如果安全软件运行在计算机系统上,与USB设备进行的通信必须经过不可靠的USB软件和总线。对用户来说,此设备通常对于显示和输入是必须的。因此,为使得安全软件安全,则安全软件的输入和输出也必须是安全的。假如安全软件与用户之间无安全路径,安全软件无法得知用户方面的实际操作。首先,攻击者可以仿造用户的输入(不是来自于用户的输入,因此不是用户的意图)来欺骗安全软件进入合法用户不打算进行的行为。其次,如果可信软件的输出没有经过一条安全路径直接传送给用户,则不能保证合法用户实际看到的是从安全软件的真实输出。然而,USB协议是计算机工业中的一项标准,而且修改USB协议或体系结构来提供安全性则牺牲了广泛可用和广泛实现的体系结构。
因此,当考虑到增强安全性的时候,需要一种向现有的USB设备和系统提供USB连通性和兼容性的优点的手段。
发明概述本发明在采用了用于USB设备的安全模块中提供了加密/解密装备。特别是提供了设备和安全部件之间的通信,例如请求来自于设备的数据的命令、由该设备反馈给系统的数据以及用于将设备配置成安全操作的设置命令,甚至是那些从不安全的硬件和/或软件通过并到达安全部件的命令和数据。
加密/解密可以由物理上独立的设备提供,例如,安置在USB设备与主机或USB设备插入的硬件或作为固定USB设备插入的独立设备之间的连接线中的一块硬件(“复制保护器”)。可选地,加密/解密设备可以安装在设备中,例如,安装有加密/解密硬件的键盘,或集成了上游网络集线器功能的键盘。
设备可以具有几个与设备中不同功能部分相连的端点。因此,在一个实施例中,安全复制保护器控制设备上所有接口和端点的安全性。
根据本发明的一个实施例,当USB设备接收传送给安全部件的有效载荷时,例如,一个诸如击键,或鼠标点击这样的HID(人界面驱动器)数据包,有效载荷无障碍地从设备上游传送到复制保护器,在复制保护器中加密,并传送加密的数据给主机。加密的有效载荷的置换相对于USB主机控制器和该设备是透明的。
此外,复制保护器阻止所有从系统传向设备的未经许可的SETUP数据包以确保该透明性。安全软件在复制保护器允许设备发送任何SETUP命令之前向复制保护器发送“签名的”ALLOW命令。一旦复制保护器接收到ALLOW命令,复制保护器只允许指定的特殊的SETUP命令。因此,当将要执行一个SETUP命令时,发送一个带有包括设置命令数据以及设置命令数据的加密译文的数据的初级ALLOW命令。数据通过验证后(例如,通过确认ALLOW命令是由安全软件签名的,在一个实施例中通过利用复制保护器和安全软件之间的共享秘密来增加一散列)复制保护器允许将通过匹配的命令数据对端点进行寻址的SETUP命令传送到端点并在端点上执行。
当该安全应用程序从安全端点上请求数据时,该安全应用程序以标准的方式使用USB系统软件来发送该请求到一个指定的端点。然而,复制保护器通过以下的方式改变了该请求令牌送往端点以及数据反馈给主机系统软件的方式当USB系统软件发送给端点一个令牌信息,该令牌由安全模块截取。该安全模块将该令牌转发给设备,并发送一个NAK信号给主机。当该设备通过数据来响应该验证时,该数据由安全模块存储并加密。当安全模块为该设备和端点检测到一个重复验证时,由安全模块“粉碎”该请求(术语“粉碎”在USB领域中的含义是数据以指示一个传送错误的方式来进行传送)。安全模块发送该加密的数据作为该第二次验证的响应,当主机确认收到一个ACK信号时,该加密数据由安全模块传送到设备中。
当该安全装置想要发送数据到安全设备时,其首先发送一个请求到安全模块本身。ALLOW令牌被发送给安全模块。作为该数据包的一部分,命令(例如包含针对USB设备的命令的SETUP命令)作为ALLOW令牌数据被传送。安全模块验证该ALLOW命令从而确认该命令来自于安全软件并保存该数据。然后,当传送一个新的命令令牌给安全模块时,如果该命令令牌与在ALLOW命令中作为数据被传送的命令令牌相匹配,该设置命令被转送到设备中去。USB总线上的SETUP协议的其余部分不变。如果该SETUP命令与先前接收的ALLOW命令不匹配,复制保护器在SETUP命令可能结束之前粉碎该命令。
接下来描述本发明的其它方面。
附图的简要说明参照以下的附图详细描述根据本发明的安全模块

图1是可以实现本发明的计算机系统的方块图;图2是可以实现本发明的包括一个计算机和其它由USB连接的设备的计算机系统的方块图;图3(A)是根据本发明的一个实施例的包括复制保护器和集成的安全模块的计算机系统的方块图3(B)是根据本发明的另一个实施例的包括复制保护器和集成的安全模块的计算机系统方块图;图4是根据本发明的一个实施例用于解释一个IN处理的流程图;图5是根据本发明的一个实施例用于解释一个SETUP处理的流程图。
说明性的实施例的详细描述典型的计算环境图1为一个可实现本发明的合适的计算系统环境100的例子。计算系统环境100只是一个合适的计算环境的例子,并不限制本发明的使用或功能的范围。计算环境100不对典型的操作环境100中利用的任何一个部件或部件的结合具有任何依赖性或要求。
本领域普通技术人员均知晓将计算机或其它客户机或服务器设备可配置成一个计算机网络或分布式计算环境的一部分。在这点上,本发明适用于任何具有大量内存或存储单元的计算机系统,以及具有许多用于本发明的存储单元或卷之间的应用程序和处理事件的计算机系统。本发明可应用于具有配置在网络环境或分布式计算环境中的服务器计算机和客户机计算机的环境,该环境具有远程和本地存储器。本发明也可应用于独立的计算设备,该计算设备具有程序设计语言功能,具有产生、接收并传送与远程或本地服务相关的信息的分析和执行能力。
本发明可在许多其它一般目的或特殊目的的计算系统环境或配置中实行。已知的可以适用于本发明的计算系统、环境、和/或配置的例子包括,但并于局限于此,个人计算机、服务器计算机、手提或便携式设备、多处理器系统、基于微处理器的系统、机顶盒可编程消费电子设备、网络个人计算机、小型计算机、大型计算机、包括任一上述系统或设备的分布式计算环境等。
本发明可以描述在普通的计算机执行指令的内容中,诸如由计算机执行的程序模块。通常,程序模块包括执行特殊任务或特殊抽象数据类型的例程、程序、对象、组件、数据结构等。本发明也可以在分布式计算环境中实现,在该运算环境中通过由通信网络或其它数据传送介质进行链接的远程处理设备来执行任务。在分布式计算环境中,程序模块和其它数据同时位于包括内存存储设备的本地及远程计算机存储介质中。分布式计算通过在计算设备和系统之间的直接交换方便了计算机资源的共享和服务。这些资源和服务包括信息交换、高速缓冲存储、以及文件的硬盘存储。分布式计算利用网络的连接性,允许客户机来平衡它们的整体能力以有益于整个企业。在这点上,各种设备可以具有可利用本发明的技术的应用程序、对象或资源。
参照图1,实现本发明的典型系统包括形式为计算机100的一个通用计算设备。计算机110的部件可以包括但并不局限于处理部件120、系统存储器130、以及连接包括从该系统存储器到处理部件120的各系统部件的系统总线121。该系统总线121可以是几种总线结构的任何一种,包括存储总线或存储控制器、外部设备总线、以及采用多种总线体系结构中的任意一种的本地总线。举例来说但并不局限于此,这样的体系结构包括工业标准结构(ISA)总线,微通道结构(MCA)总线,增强型工业标准结构(EISA)总线,视频电子标准协会(VESA)本地总线,以及外部设备互连(PCI)总线(也被称为Mezzanine总线)。
计算机110典型的包括多种计算机可读介质。计算机可读介质可以是能够通过计算机访问的任何可用介质,包含易失性和非易失性介质、可拆卸和不可拆卸介质。举例来说但并不局限于此,计算机可读介质可以包含计算机存储介质和通信介质。计算机存储介质包括在任何存储的方法或技术中,用于信息存储的易失性和非易失性的、可拆除和不可拆除介质,此信息例如是计算机可读指令、数据结构、程序模块或其它数据这样的信息。计算机存储介质包括,但不局限于此,RAM、ROM、EEPROM、快速存储器或其它存储技术、CDROM、数字通用盘(DVD)或其它光盘存储器、磁带盒、磁带、磁盘存储器或其它磁性存储设备、或任何其它可以用于存储所需信息以及可以由计算机110访问的介质。通信介质典型地体现为计算机可读指令、数据结构、程序模块或在诸如载波或其它传送机制这样的已调制数据信号中的其它数据,并且通信介质包括任何信息传递介质。术语“已调制数据信号”表示具有一个或多个特征的信号,此特征通过编码信号中的信息来设置或改变。举例来说但不局限于此,通信介质包括像有线网络或直接有线连接这样的有线介质,以及无线介质,诸如声学的,RF,红外线及其它无线介质。任何上述的结合也包括在计算机可读介质的范围中。
系统存储器130包括形式为易失和/或非易失性存储器的计算机存储介质,诸如只读存储器(ROM)131和随机存取存储器(RAM)132。基本输入/输出系统133(BIOS),包含,例如在启动过程中,帮助在计算机110中的元件之间传送信息的基本历程,该基本输入/输出系统典型地存储在ROM 131中。RAM 132典型地包含立即可以访问和/或由处理单元120立即运行的数据和/或程序模块。例如,但不局限于此,图1表示操作系统134,应用程序135,其它程序模块136,以及程序数据137。
计算机110也可以包括其它可拆除/不可拆除,易失/非易性失计算机存储介质。仅作为举例,图1表示从不可拆除、非易失性磁性介质读出或写入的硬盘驱动器140,从可拆除、非易失性的磁盘152读出或写入的磁盘驱动器151,以及从可拆除、非易失性光盘156读除或写入的诸如CD ROM或其它光学介质这样的光盘驱动器155。其它可在典型的操作环境中使用的可拆除/不可拆除,易失/非易失性计算机存储介质包括,但不局限于此,磁带盒、快速存储卡、数字通用盘、数字录像带、固态RAM、固态ROM等等。硬盘驱动器141典型地通过一个不可拆除存储器接口,如接口140,连接到系统总线121,磁盘驱动器151和光盘驱动器155典型地通过一个可拆除存储器接口,如接口150,连接到系统总线121。
这些在以上公开并在图1中解释的驱动器以及与它们相关联的计算机存储介质,为计算机110提供了计算机可读指令、数据结构、程序模块以及其它数据。在图1中,例如,硬盘驱动器141被解释为存储操作系统144、应用程序145、其它程序模块146、以及程序数据147。应注意到这些部件与操作系统134、应用程序135、其它程序模块136以及程序数据137既可以是相同的也可以是不同的。此处提供给操作系统144、应用程序145、其它程序模块146以不同的附图标记用于解释至少它们是不同的复制。用户可以通过诸如键盘162和定点设备161,一般是鼠标、轨迹球或接触板,这样的输入设备来输入命令和信息到计算机20中。其它输入设备(未示出)可以包括麦克风、操纵杆、游戏板、圆盘式卫星电视天线、扫描仪等。这些或其它输入设备通常通过一个连接到系统总线的用户输入接口160连接到处理单元120,但也可以通过其它接口和总线结构连接,如一个并行端口、游戏端口或一个通用串行总线(USB)。监视器191或其它类型的显示设备通过诸如视频接口190的一个接口也连接到系统总线121。除该监视器之外,计算机也可以包括如扬声器197和打印机196这样的其它外围输出设备,该设备可以通过一个输出外围接口190连接。
计算机110利用一个或多个远程计算机,诸如远程计算机180,的逻辑链接而工作在网络环境中。远程计算机180可以是个人计算机、服务器、路由器、网络个人计算机、同级设备或其它通用网络节点,其典型地包括许多或全部上述与计算机110相关的元件,尽管在图1中仅解释了内存存储设备181。在图1中描述的该逻辑连接包括一个本地局域网(LAN)171和一个广域网(WAN)173,但也包括其它网络。这种网络化环境常见于办公室、企业广域计算机网络、内联网和互联网中。
当在LAN网络化环境中使用时,计算机110通过一个网络接口或适配器170连接到局域网171。当在WAN网络化环境中使用时,计算机110典型地包括一个调制解调器172或其它用于在WAN 173诸如互联网上建立通信的装置。调制解调器172可以是内置或外挂式的,其可通过用户输入接口160或其它合适的机制连接到系统总线121。在一个网络环境中,所描述的与计算机110相关的程序模块或其中的一部分程序模块可以存储在远程存储器存储设备。举例来说但并不局限于此,图1说明了内存设备180上驻留有远程应用程序185。可以理解,所示的网络连接是典型的,以及可以使用在计算机间建立通信链接的其它手段。
USB协议USB体系结构提供了将设备连接到主机并与主机通信的方法。例如,如图2所示,通用串行总线(USB)可以用于将鼠标161、键盘162,图形输入板163、扬声器197、麦克风164、电话165、以及监视器191连接到计算机110。USB结构允许一个或多个USB设备与一个USB主机之间连接。通常,在这种配置中,计算机110是该USB主机。
所使用的物理关联是星形布局的。为了防止循环连接,在星形布局中施加分层排序。其结果是如图2所示的树形布局。网络集线器在每个星形的中心。USB主机是一个网络集线器。USB设备也可以具有网络集线器的功能。例如,图2中键盘162和监视器191都是作为网络集线器的功能性设备。不具有单独功能的网络集线器也可以在一个USB布局中。
此外,多种功能可以组装在一个看起来像是一个单独的物理设备中。例如,键盘和定点设备(如轨迹球)可以共同包含在一个单独的组装中。当多种功能与网络集线器结合在一个单独组装中时,它们称作复合设备。复合设备中的网络集线器和每一个附属于网络集线器的功能被分配了它们自己的设备地址。例如,在键盘162中,网络集线器和键盘功能将都具有一个单独的地址。
主机包括连接到被称为主机控制器167的主计算机系统的USB接口。主机控制器167和USB系统软件提供了USB网络上的接口以及在设备和控制该设备的特定软件之间的主机个人计算机。主机控制器167控制所有对USB资源的访问以对这些设备传送和接收所有信息包。与根网络集线器和任何附加的网络集线器结合在一起的系统软件跟踪总线布局,并利用这些设备和设备本身控制所有设备的寻址以及来自客户软件的数据路由。当在主机的客户软件想要与某些USB设备通信时,它通过与USB系统软件的相互作用来实现该通信。USB系统软件与主机控制器167相互作用。主机控制器167通过USB总线向USB设备和设备上的端点传送和接收信号。在主机控制器167和USB设备之间可以有一个或多个网络集线器。在USB设备中,USB接口层接收信号。该接口层将构造的数据发送给设备,该设备将数据发送给设备的端点以及从设备的端点发送数据。由端点组成的接口提供了该功能。在一些例子中这些接口集合在“功能”中,例如,扬声器197的扬声功能或键盘162的键盘功能或者由键盘和鼠标组成的单独设备的两种功能。
所有USB设备提出了标准的USB接口,这些接口的提出依照于这些设备的USB协议的概括、它们对标准USB操作的响应、以及它们的标准性能描述的信息。这些接口通常由USB设备工作组标准体定义,虽然也定义售主特别定义的接口。
在图2中示出的用于连接对象的总线是查询总线。计算机110通过主机控制器167初始化所有数据传送。这种类型的传送称为中断传送。中断传送用于小数据、非周期的、低频率、以及有限等待时间。中断传送为在下一个周期的传送尝试的连接和该连接的重试提供了有保证的最大服务周期。例如,使用这种USB传送对击键的键盘验证进行处理。
当主机的一个应用程序向主机控制器167请求一个达到或来自设备的传送时,开始一个USB事务。主机控制器167传送一个描述事务的类型和方向、USB设备地址和端点号的USB数据包。这是一个“令牌包”。每一个USB设备通过一个USB地址进行访问,该地址在此设备附属于主机控制器167并由控制器编号时分配。每一个USB设备使用包含在令牌中的地址信息来确定该设备是否是主机所传送的令牌的目标。端点号定义了此接口,其中此端点属于此通信指向的USB设备(或通俗地说,具有此功能)。
接下来,在数据打包阶段中,根据令牌包中的指令从端点传送数据到主机,或从主机传送到端点。如果该特征是一个IN令牌,则主机从端点请求数据。如果该令牌是一个OUT令牌,则主机指示其将要向一个端点发出信息。
如果该令牌是一个IN令牌,并仍没有数据从寻址设备发送,则由端点发送一个NAK包代替该数据。例如,如果将要对键盘162进行查询,但是没有击键动作发生,则发送一个NAK(否定应答信号)。如果停止了一个端点,则发送一个STALL信号。如果有数据将要发送,则发送该数据。作为响应,如果数据被接收,主机将传送一个ACK握手信号。
OUT令牌发送出去后,以及数据从主机传送给端点后,端点将发送一个ACK信号数据包来确认数据是否接收成功。如果停止了设备并且设备不能接收数据了则可以发送STALL握手信号。如果端点不接收数据,则发送一个NAK信号。
SETUP命令是一种使得命令在端点上执行(在数据阶段传送)的外部事务。
完整的USB协议描述包含在作为公开可用文件的USB规范说明中。该文件可以在USB实施者论坛站点上得到,www.usb.org。
USB数据的动态置换本发明的方法和系统实现网络中的安全部件和设备之间的通信过程中安全,此设备例如是一个USB设备。本发明的安全模块可以位于一个USB设备中,并将主要依照一个USB系统进行描述,尽管它考虑了根据本发明的主机和设备之间连接的任何可能执行的操作。例如,任何连接包括本发明可以利用的一个或多个本地总线,一个网络(例如局域网(LAN)或其它网络)和一个USB总线。
在图3(A)描述的系统中,根据本发明,计算机110中的安全部件与鼠标361之间以及安全部件与图形输入板之间的通信是安全的。鼠标361包括一个集成的安全模块300,并通过由此安全模块作为安全部件通信地媒介。在图3(A)的系统中,为了与图形输入板163安全通信,典型地从图形输入板163分离出的复制保护器310作为图形输入板163与该安全部件之间连接的媒介。安全模块包含在复制保护器310中。安全模块可以在USB系统的任何端点上实现。在安全模块或复制保护器的USB网络上游(朝着主机的方向)的通信被保护,但是安全模块或复制保护器下游(远离主机的方向)的通信可能容易受到攻击。
由于系统的物理布局,主机与受保护的设备之间的通信都从安全模块经过。在可选择的实施中安全模块可以集成在复制保护器、上游网络集线器、或安全设备自身中。通常,对保护系统来说任何产生不可读或可核实数据的加密机制是有用的。在一个实施例中,实现一个密钥对系统,该系统中具有与设备通信的安全部件和具有密钥信息的安全模块。依照一个实施例,为了初始化加密/解密功能,安全部件和安全模块共享一个合作密钥。这种在两个设备之间共享合作密钥的方式是为了安全部件能安全地显示密钥信息,以及安全模块由此能通过接收从一个下游键盘或其它输入设备的输入来设置该合作密钥。例如,该安全部件可以在安全的监视器或其它输出设备上显示该合作密钥。由此,如果安全模块附属或合并在键盘中,则键盘可以用于输入合作密钥。在其它实施例中,共享的合作密钥也可以是编码在设备和安全部件中硬件,可以在工厂安装时期(或在制造后的首次导入时)烧制在设备中和安装在安全部件的软件中,或者可以由安全模块显示并通过让用户使用鼠标选择屏幕上随机安置的按钮而输入到安全部件中,因此阻止了敌人对信息的窃听。在一个实施例中,合作密钥用于作为加密和解密数据的密钥,也用于确认从安全部件到安全模块的命令。
在本发明的一个实施例中,主机(计算机110)包括作为对设备施加命令的安全部件的安全软件。在该实施例中,安全软件不受正在讨论的设备的直接控制,但必须通过主机的不安全总线和可能的不安全区域与设备通信。例如,如果主机允许了安全处理,安全软件可以作为在主机上的一个安全处理。从安全软件发出的命令必须在该命令传向主机的不安全区域以及跨越不安全总线之前进行加密或签名。这样,即使在数据经过主机或总线的可能受攻击的区域时也具有安全性。
根据本发明在图3(b)描述的系统中,安全部件是安全服务器350,一个运行通过鼠标361和图形输入板163请求与用户进行安全通信的软件的可信计算机。不可信计算机360包含主控制器167,由于不可信计算机360与安全服务器350、不可信计算机360与监视器191、监视器191与键盘162、以及键盘162与鼠标310之间可能的连接,不可信计算机可能容易受到攻击。然而,依据本发明,由于安全服务器350与鼠标361、以及安全服务器350与图形输入板163之间传送的信息是安全的,这些连接以及中介物不会使安全服务器350与这些设备之间的通信变得不安全。
为了实现解密/加密,在另一个实施例中,为安全部件与安全模块之间的每一次会话产生会话密钥。这考虑到了增强安全性,并且是对重放攻击的防御措施。当可记录或重放加密数据时,如果对话密钥改变,则加密数据被视为未经许可的。对话被建立在安全部件和设备或安全模块之间。安全部件与安全模块以目前已知的方式交换数据。安全部件和安全软件各自通过合作密钥计算这两个目前已知的散列函数,合作密钥是用于加密/解密的对话密钥。在一个实施例中,通过加密信息的交换确定正确的初始化值。
虽然本发明依照USB协议进行描述,但将意识到本发明具有更广泛的应用性,并可以任何与USB相似的协议实现,如以下描述的。例如,可以用于使用IEEE-1394标准对设备进行寻址。
用于处理中的加密的信号传送根据本发明,当安全部件经过主机和总线寻址并向在安全模块之外的一个端点发布IN令牌时,安全模块检查从而确定IN令牌寻址的USB地址和该端点是否受到保护或“被占据”。如果该地址和端点没有被占据,则安全模块简单的传递从主机到该端点的任何信息以及从该端点到该主机的任何信息(以同样的方式,USB网络集线器复制从一个上游端到一个下游端的数据,反之亦然)。然而,如果端点被占据,如图4所示安全模块作为安全部件和端点之间的媒介。
如图4所示,在步骤410通过安全模块接收来自安全部件的数据请求。即使数据请求指向的地址和端点被占据,在步骤420向被占据的端点转送IN令牌。在步骤430安全模块随后截取由端点送回的所请求的数据。取代向总线传送该数据,在步骤440(使用一个标准的NAK数据包)安全模块向主机传送一个信号指示没有数据可以利用,并在步骤450等待下一个来自安全部件的数据请求。在此期间,安全模块在步骤460加密该请求的数据。如同USB上所有的中断端点一样,主机系统将随后重试IN命令。当完成了加密并且已经接收了下一个数据,在步骤470作为对下一个数据请求的响应,安全模块传送加密数据到安全部件。下一个数据请求不完整地传送给所讨论的设备地址。由于安全设备必须在它接受比特的同时继续转发这些比特,因而除非已经转发这些比特给所讨论的地址和端点,否则安全设备不能确定传送下一个IN令牌给已占据的地址。因此,当复制保护器检测该条件时,安全设备必须对剩余的数据包进行信息破坏或者使它成为“粉碎的”。所以,由于USB端点没有接收到一个有效的IN令牌,它将不会返回一个新的数据包;取而代之的是,复制保护器将使用主机的数据包来回复该设备。当一个从安全部件接收到数据的确认信息,在步骤480向端点传递该确认信息。
这种正在处理中的加密在具有安全和不安全区域的主机上实现,用于加密或签名数据的信息应该通过主机保存在安全区域中,并且安全模块应该包含加密或验证数据需要的信息。在将共享的合作密钥同时作为加密信息和验证信息使用的地方,合作密钥通过主机存储在安全区域和安全模块中。
为了在一个USB系统上实现这些操作,数据请求是一个IN令牌,指示没有数据可利用的信号是一个NAK信号,以及确认信息是一个ACK信号。
如果在步骤430中,安全模块接收到指示端口处于错误状态的信号(例如,在USB,一STALL信号),则将该信号传送给总线。
用于处理中的解密的信号传送在以上描述的一个实施例中,如上所述,(通过安全模块)禁止并粉碎了所有对安全设备的设置命令。由此当安全部件想要发送合法的启动命令给设备时出现了一个问题。出于这种原因,必须创建用于允许特定设置命令通过安全模块到达此设备地机制。
根据本发明,一个向安全端点发送命令的有效启动指令,首先由安全部件以“允许”的命令发送给安全模块。该命令将是有效的,同样所有其它命令从可信软件发送到安全模块。如图5所示,在步骤510安全模块从安全部件接收一个允许命令。之后在步骤520安全模块接收安全部件发送的允许命令的数据,该数据包括一个加密的设置命令。在步骤530试用验证该加密的设置命令。
在另一个实施例中,该验证包括设置命令的解密,产生该设置命令的本地解密的译文。在一个实施例中,安全模块接收的允许命令数据包括该设置命令的未加密的译文。为了进行验证,该安全模块将这个未加密的译文与该本地解密的译文进行比较。
在另一个实施例中,该加密的设置命令是设置命令的签名译文,并且在验证过程中通过校验签名来确认设置命令是通过共享密钥进行签名的。
如果验证不成功,设置命令将不会发送给端点。如果验证成功,在步骤540安全模块接收来自安全部件的一个设置命令。如果该设置命令与先前验证的设置命令(步骤530)相匹配,在步骤570该命令随一个随后数据阶段一起发送给端点。如果设置命令不匹配,将不发送该命令。取而代之地,安全模块等待一个匹配的设置命令。
结论这样,当仍使用USB协议时,在阻止其它复制或重新配置从而保持设备安全时,加密的数据和命令可以从安全部件传送到端点,并从端点传送到安全部件。
如上所述,当结合不同计算设备和网络体系结构来描述本发明的优选实施例时,该基本的设想可以应用到任何适合在其中执行USB或相似通信的加密/解密的计算设备或系统中。因此,根据本发明的技术可以应用到多种应用程序和设备中。
这里描述的各种技术可以结合硬件或软件或两者适当的结合来实现。因此,本发明的方法和装置,或其中的某些方面或部分,可以表现为包含在有形的介质,如软盘、CD ROM、硬盘驱动器、或其它任何机器可读存储介质,中的程序代码(即指令)的形式,其中,当由机器,例如计算机,载入并执行程序时,该机器成为实现本发明的装置。当程序代码运行在可编程计算机中时,计算设备通常将包括一个处理器,一个可由处理器读取的存储介质(包括易失和非易失性内存和/或存储元件),至少一个输入设备,以及至少一个输出设备。一个或多个可利用本发明的信号处理服务的程序,例如,通过使用数据处理API等,更适合以高级程序性或面向对象的编程语言实现从而与计算机系统进行通信。然而,如果需要的话,该程序还可以汇编或机器语言实现。无论如何,该语言可以是编译语言或解释语言,并包含硬件实现。
本发明的方法和设备也可以通过具体表现为在一些传送介质之间传送的程序代码的通信来实现,例如布线或电缆线路之间,通过光纤,或经由任何其他形式的传送,其中,当机器接收、载入并执行程序代码时,诸如EPROM、门阵列、可编程逻辑设备(PLD)、客户计算机、录像机等,或者当具有上述优选实施例所述的信号处理功能的接收机器成为实现本发明的设备。当通用处理器实现时,程序代码与处理器将结合来提供一个独特的设备,该设备进行调用本发明的功能的操作。另外,任何与本发明结合使用的存储技术都可以是硬件和软件的结合。
当结合不同附图的优选实施例描述本发明时,应当理解到在不脱离本发明情况下可以使用其它类似的实施方式,或为了执行与本发明相同的功能而进行的改变或增加。例如,当在网络环境背景中描述本发明典型的网络环境时,如对等的网络环境,本领域的技术人员可以意识到本发明并不局限于此,并且本发明所描述的方法可以应用到任何计算设备或环境,例如有线或无线的对策控制台、手提计算机、便携式计算机等,本发明所描述的方法还可应用到许多通过通信网络连接的这种计算设备,并通过网络互相作用。此外,应该强调的是希望有包括手提设备操作系统和其它应用特殊的操作系统的多种计算机平台,尤其是当无线网络设备的数目持续激增时。更进一步,本发明可以在大量处理芯片或设备中或者之间实现,并类似地在大量设备之间进行存储。因此,本发明不限制在任何单独的实施例中,而是根据附加的权利要求的幅度和范围中解释。
权利要求
1.一种用于作为在设备和安全部件之间数据传送媒介的方法,包括接收所述的数据请求;在第一个数据请求的所述接收之后,向所述设备传递所述的第一数据请求;在向所述设备进行所述第一数据请求的所述传递之后,从所述设备接收数据;在所述第一数据请求的所述接收之后,发送一个指示没有数据可利用的信号给所述的安全部件;在来自所述设备的所述数据的所述接收之后,加密所述数据;从所述安全部件截取一个第二数据请求到所述设备;并在所述第二数据请求之后,发送所述的加密数据到所述安全部件。
2.如权利要求1的方法,其中使用一个密钥来执行所述加密,并且所述安全部件具有一个包含用于解密的所述密钥的副本的安全部分。
3.如权利要求1的方法,其中所述设备是一个USB设备,所述安全部件可操作地连接到一个USB主机,所述数据请求是一个USB IN令牌,所述数据是一个USB数据,以及发送到所述安全部件用来指示没有数据可利用的所述信号是一个NAK信号。
4.如权利要求1的方法,还包括在向所述安全部件进行所述加密数据的所述发送后,从所述安全部件接收一个确认信号;在来自所述安全部件的所述确认信号的所述接收之后,发送所述确认信号到所述设备。
5.如权利要求4的方法,其中所述设备是一个USB设备,所述安全部件可操作地连接到一个USB主机,以及所述确认信号是一个ACK信号。
6.如权利要求1的方法,其中来自所述设备的所述数据接收可以包括一个指示所述设备处于一个错误状态的信号,以及在从所述设备接收指示所述设备处于一个错误状态的数据之后,所述的向所述安全部件发送一个信号来指示没有数据可利用是一个用于指示所述设备处于一个错误状态的信号。
7.如权利要求6的方法,其中所述设备是一个USB设备,所述安全部件可操作地连接到一个USB主机,以及所述指示所述设备处于一个错误状态的信号是一个STALL信号。
8.一种用于作为在USB设备和可操作地连接到USB主机的安全部件之间数据传送媒介的方法,包括响应一个来自所述安全部件的第一IN令牌,从所述USB设备截取数据;加密所述数据;通过所述安全部件为所述USB设备截取一个第二IN令牌;以及发送所述加密数据到所述安全部件。
9.如权利要求8的方法,还包括在从所述USB设备截取所述数据之后,向所述安全部件发送一个NAK信号。
10.如权利要求8的方法,还包括粉碎所述第一IN令牌。
11.一种用于作为在安全部件和设备之间数据传送媒介的方法,包括接收数据,包括用于所述设备的一个第一命令;验证所述第一命令的安全性;为所述设备截取一个第二命令;将所述第一命令与所述第二命令相比较;如果所述第一命令等于所述第二命令,向所述设备发送所述第二命令数据。
12.如权利要求11的方法,其中所述设备是一个USB设备,所述安全部件可操作地连接到一个USB主机,以及所述第一命令和所述第二命令包含设置命令。
13.如权利要求11的方法,还包括在向所述设备进行所述第二命令的所述发送后,从所述设备接收一个确认信号;所述安全部件完成所述确认信号的所述接收后,向所述设备发送所述确认信号。
14.如权利要求13的方法,其中所述设备是一个USB设备,所述安全部件可操作地连接到一个USB主机,以及所述确认信号包含一个ACK信号。
15.如权利要求11的方法,其中所述第一命令的所述验证包括将所述第一命令的加密副本与所述第一命令的未加密副本进行比较。
16.如权利要求11的方法,其中所述第一命令的所述验证包括验证所述第一命令的签名副本上的签名。
17.一种用于对USB系统中一个来自于可操作地连接到USB主机的安全部件的SETUP请求进行安全处理的方法,包括从安全部件接收一个ALLOW命令;在所述ALLOW命令的所述接收之后,接收命令数据;验证所述命令数据;为所述USB设备接收一个包含SETUP命令数据的SETUP命令;将所述SETUP命令数据与所述命令数据相比较;以及如果所述SETP命令数据等于所述命令数据,传送所述SETUP命令到所述USB设备。
18.如权利要求17的方法,还包括在所述命令数据的所述接收之后,发送一个ACK信号到所述安全部件。
19.如权利要求17的方法,还包括在所述命令数据的所述传送之后,从所述USB设备接收一个ACK信号;在从所述设备进行了所述ACK信号的所述接收后,向所述安全部件传送所述ACK信号。
20.一种用于作为在设备和安全部件之间数据传送媒介的安全模块,包括用于接收所述数据请求的装置;用于在一个第一数据请求的所述接收之后,向所述设备传送所述第一数据的装置;用于在向所述设备进行所述第一数据请求的所述传送之后,从所述设备接收数据的装置;用于在所述第一数据请求的所述接收后,向所述安全部件发送一个指示无数据可用的信号的装置;用于在来自所述设备的所述数据的所述接收之后,加密所述数据的装置;用于调解从所述安全部件到所述设备的一个第二数据请求的装置;以及用于在所述第二数据请求后,向所述安全部件发送所述加密数据的装置。
21.如权利要求20的安全模块,其中所述设备包含所述安全模块。
22.如权利要求20的安全模块,其中所述安全模块包括一个网络集线器。
23.如权利要求20的安全模块,其中复制保护器包含所述安全模块,以及所述复制保护器可操作地连接到所述安全部件。
24.如权利要求20的安全模块,其中使用一个密钥来执行所述加密,所述安全模块包括用于存储所述密钥的装置,并且所述安全部件包括一个具有用于解密的所述密钥副本的安全部分。
25.如权利要求20的安全模块,其中所述设备是一个USB设备,所述安全部件可操作地连接到一个USB主机,所述数据请求是一个USB IN令牌,所述数据是USB数据,以及传送到所述安全部件的用于指示无数据可利用的所述信号是一个NAK信号。
26.如权利要求20的安全模块,还包括用于在送往所述安全部件的所述加密数据的所述发送之后,从所述安全部件接收一个确认信号的装置;用于在来自所述安全部件的所述确认信号的所述接收之后,向所述设备发送所述确认信号的装置。
27.如权利要求26的安全模块,其中所述设备是一个USB设备,所述安全部件可操作地连接到一个USB主机,以及所述确认信号是一个ACK信号。
28.如权利要求20的安全模块,其中来自所述设备的所述数据接收可以包括一个指示所述设备处于一个错误状态的信号,以及在从所述设备接收数据之后指示所述设备处于一个错误状态,所述的向所述安全部件发送一个信号来指示没有数据可利用是一个用于指示所述设备处于一个错误状态的信号。
29.如权利要求28的安全模块,其中所述设备是一个USB设备,所述安全部件可操作地连接到一个USB主机,以及所述指示所述设备处于一个错误状态的信号是一个STALL信号。
30.如权利要求20的安全模块,其中所述安全部件位于第一计算机系统中,所述设备位于第二计算机系统中,所述第一和第二计算机系统可操作地连接,所述可操作的连接至少包含以下设备中的一个网络,本地总线,以及USB总线。
31.如权利要求20的安全模块,其中所述安全部件包含一个至少运行一个安全处理的安全软件部件,以及所述数据传送发生在所述至少一个安全处理中的一个处理和所述设备之间。
32.一种用于作为在USB设备和可操作地连接到一个USB主机的安全部件之间数据传送媒介的安全模块,包括用于响应来自所述安全部件的一个第一IN令牌,从所述USB设备截取数据的装置;用于加密所述数据的装置;用于为所述USB设备截取一个由所述安全部件发送的第二IN特征的装置;以及用于发送所述加密数据到所述安全部件的装置。
33.如权利要求32的安全模块,还包括用于在截取来自所述USB设备的所述数据之后,发送一个NAK信号到所述安全部件的手段。
34.如权利要求32的安全模块,还包括用于粉碎所述第一IN令牌的装置。
35.一种用于作为在安全部件和设备之间数据传送媒介的安全模块,包括用于接收运行在所述设备上包括一个第一命令的数据的装置;用于验证所述第一命令的安全性的装置;用于为所述设备截取一个第二命令的装置;用于将所述第一命令与所述第二命令相比较的装置;用于如果所述第一命令等于所述第二命令,则向所述设备发送所述第二命令数据的装置。
36.如权利要求35的安全模块,其中所述设备包含所述安全模块。
37.如权利要求35的安全模块,其中所述安全模块包含一个网络集线器。
38.如权利要求35的安全模块,其中复制保护器由所述的安全模块组成,所述复制保护器可操作地连接到所述安全部件。
39.如权利要求38的安全模块,其中所述设备是一个USB设备,所述安全部件可操作地连接到一个USB主机,以及所述第一命令和所述第二命令包含设置命令。
40.如权利要求38的安全模块,还包括用于在向所述设备进行所述第二命令的所述发送后,从所述设备接收一个确认信号的装置;用于在所述安全部件完成所述确认信号的所述接收后,向所述设备发送所述确认信号的装置。
41.如权利要求40的安全模块,其中所述设备是一个USB设备,所述安全部件可操作地连接到一个USB主机,以及所述确认信号包含一个ACK信号。
42.如权利要求38的安全部件,其中所述第一命令的所述验证包括将所述第一命令的加密副本与所述第一命令的未加密副本进行比较。
43.一种用于对USB系统中一个来自于可操作地连接到USB主机的安全部件的SETUP请求进行安全处理的安全模块,包括用于从安全部件接收一个ALLOW命令的装置;用于在所述ALLOW命令的所述接收之后,接收命令数据的装置;用于验证所述命令数据的装置;用于为所述USB设备接收一个包含SETUP命令数据的SETUP命令的装置;用于将所述SETUP命令数据与所述命令数据相比较的装置;以及用于如果所述SETUP命令数据等于所述命令数据,则传送所述SETUP命令到所述USB设备的装置。
44.如权利要求43的安全部件,还包括用于在所述命令数据的所述接收之后,发送一个ACK信号到所述安全部件的装置。
45.如权利要求43的安全部件,还包括用于在所述命令数据的所述传送之后,从所述USB设备接收一个ACK信号的装置;用于在从所述设备进行了所述ACK信号的所述接收后,向所述安全部件传送所述ACK信号的装置。
46.一种用于作为设备和安全部件之间数据传送媒介的计算机可读介质,所述计算机可读介质具有由一个或多个处理器执行的计算机可读指令,实现步骤包括接收所述的数据请求;在第一个数据请求的所述接收之后,向所述设备传递所述的第一数据请求;在向所述设备进行所述第一数据请求的所述传递之后,从所述设备接收数据;在所述第一数据请求的所述接收之后,发送一个指示没有数据可利用的信号给所述的安全部件;在来自所述设备的所述数据的所述接收之后,加密所述数据;从所述安全部件截取一个第二数据请求给所述设备;并在所述第二数据请求之后,发送所述的加密数据到所述安全部件。
47.如权利要求46的计算机可读介质,其中使用一个密钥来执行所述加密,并且所述安全部件具有一个包含用于解密的所述密钥的副本的安全部分。
48.如权利要求46的计算机可读介质,其中所述设备是一个USB设备,所述安全部件可操作地连接到一个USB主机,所述数据请求是一个USB的IN令牌,所述数据是一个USB数据,以及发送到所述安全部件用来指示没有数据可利用的所述信号是一个NAK信号。
49.如权利要求46的计算机可读介质,还包括在向所述安全部件进行所述加密数据的所述发送后,从所述安全部件接收一个确认信号;在来自所述安全部件的所述确认信号的所述接收之后,发送所述确认信号到所述设备。
50.如权利要求49的计算机可读介质,其中所述设备是一个USB设备,所述安全部件可操作地连接到一个USB主机,以及所述确认信号是一个ACK信号。
51.如权利要求46的计算机可读介质,其中来自所述设备的所述数据接收可以包括一个指示所述设备处于一个错误状态的信号,以及在从所述设备接收指示所述设备处于一个错误状态的数据之后,所述的向所述安全部件发送一个信号来指示没有数据可利用是一个用于指示所述设备处于一个错误状态的信号。
52.如权利要求51的计算机可读介质,其中所述设备是一个USB设备,所述安全部件可操作地连接到一个USB主机,以及所述指示所述设备处于一个错误状态的信号是一个STALL信号。
53.一种用于作为在USB设备和可操作地连接到USB主机的安全部件之间数据传送媒介的计算机可读介质,所述计算机可读介质具有由一个或多个处理器执行的计算机可读指令,实现步骤包括响应一个来自所述安全部件的第一IN令牌,从所述USB设备截取数据;加密所述数据;通过所述安全部件为所述USB设备截取一个第二IN特征;以及发送所述加密数据到所述安全部件。
54.如权利要求50的计算机可读介质,所述步骤还包括在从所述USB设备截取所述数据之后,向所述安全部件发送一个NAK信号。
55.如权利要求50的计算机可读介质,所述步骤还包括粉碎所述第一IN令牌。
56.一种用于作为在安全部件和设备之间数据传送媒介的计算机可读介质,所述计算机可读介质具有由一个或多个处理器执行的计算机可读指令,实现步骤包括接收数据,包括运行在所述设备的一个第一命令;验证所述第一命令的安全性;为所述设备截取一个第二命令;将所述第一命令与所述第二命令相比较;如果所述第一命令等于所述第二命令,向所述设备发送所述第二命令数据。
57.如权利要求56的计算机可读介质,其中所述设备是一个USB设备,所述安全部件可操作地连接到一个USB主机,以及所述第一命令和所述第二命令包含设置命令。
58.如权利要求56的计算机可读介质,所述步骤还包括在向所述设备进行所述第二命令的所述发送后,从所述设备接收一个确认信号;所述安全部件完成所述确认信号的所述接收后,向所述设备发送所述确认信号。
59.如权利要求58的计算机可读介质,其中所述设备是一个USB设备,所述安全部件可操作地连接到一个USB主机,以及所述确认信号包含一个ACK信号。
60.如权利要求56的计算机可读介质,其中所述第一命令的所述验证包括将所述第一命令的加密副本与所述第一命令的未加密副本进行比较。
61.一种用于对USB系统中一个来自于可操作地连接到USB主机的安全部件的SETUP请求进行安全处理的计算机可读介质,所述计算机可读介质具有由一个或多个处理器执行的计算机可读指令,实现步骤包括从安全部件接收一个ALLOW命令;在所述ALLOW命令的所述接收之后,接收命令数据;验证所述命令数据;为所述USB设备接收一个包含SETUP命令数据的SETUP命令;将所述SETUP命令数据与所述命令数据相比较;以及如果所述SETUP命令数据等于所述命令数据,传送所述SETUP命令到所述USB设备。
62.如权利要求61的计算机可读介质,所述步骤还包括在所述命令数据的所述接收之后,发送一个ACK信号到所述安全部件。
63.如权利要求61的计算机可读介质,所述步骤还包括在所述命令数据的所述传送之后,从所述USB设备接收一个ACK信号;在从所述设备进行了所述ACK信号的所述接收后,向所述安全部件传送所述ACK信号。
全文摘要
一种实现了来自USB或其它相似设备的数据请求的安全模块和方法,其中安全部件可以在不改变基本USB总线协议或设备的情况下与设备进行安全地通信,即使是在软件控制总线是不可信的情况下。响应一个数据请求,安全模块(物理上独立或者集成在设备或网络集线器中)截取从设备发送给安全部件的数据。一个“不确认”信号被发送给安全部件,并且加密该数据。截取下一个数据请求,并响应该要求发送加密的数据。允许从安全部件传送到设备的确认信号到达该设备。为了处理一个设置请求,传送一个包括加密和未加密的许可命令给安全模块。如果加密核对成功,允许(通过安全模块)发送到设备的设置命令到达该设备。
文档编号H04L9/10GK1551003SQ20041004773
公开日2004年12月1日 申请日期2004年4月30日 优先权日2003年5月2日
发明者K·雷, T·凯赫尔, K 雷, 斩 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1