背景技术
近几年,随着互联网技术与电子商务的快速发展,越来越多的商务活动转移到网络上开展,例如网上政府办公、网上银行、网上购物等等,与此同时,越来越多涉及个人隐私和商业秘密的信息需要通过网络传递。然而病毒、黑客以及网页仿冒诈骗等恶意威胁,给在线交易的安全性带来了极大的挑战,致使网络安全问题变的举足轻重。
信息安全设备(简称设备)是一种带有处理器和存储器的小型硬件系统,它通过计算机的数据通讯接口与主机连接。它具有密钥生成、安全存储密钥、预置加密算法等功能。信息安全设备与密钥相关的运算完全在系统内部运行,且信息安全设备具有抗攻击的特性,安全性极高。信息安全设备一般通过USB接口与计算机相连,通常被称为USB KEY或USB Token。信息安全设备生产商、软件系统开发商或者最终用户可以将一些重要信息存储到信息安全设备中,用以保证安全性或者防止遗忘。目前,较高端的信息安全设备是可编程的,即可以实现在信息安全设备中运行预先存入其中的代码。
一般信息安全设备中会内置安全设计芯片来实现信息安全功能。安全设计芯片除了具有通用嵌入式微控制器的各种特性外,更多的是在安全性能方面,安全设计芯片在芯片设计时会针对安全性能方面在结构上做一些特殊处理,比如安全芯片会采用特定的安全内核,该安全内核能够支持多个拥有不同权限定义的状态,用于实现对硬件资源访问权限的管理;以及支持指令执行时间(指令周期)的随机化;其中断系统能够实现支持芯片状态的转换,从而实现对不同层次的安全级别的控制,以支持多应用的实现;它还可以带有MMU单元(MemoryManagement Unit-存储器管理单元),用于实现逻辑地址、物理地址的隔离,及地址映射,从体系结构上支持应用(多应用)、安全性的设计实现,与内核支持的不同状态一起有机的组成一个硬件防火墙;其中断系统还能支持系统数据库与用户程序的接口及权限传递和切换;其存储介质方面也会采用非易失性存储介质等等。安全设计芯片一般都要求符合相关的标准及通过相关的认证等以保证其安全性能,比如TCG TPM v1.2规范,ISO15408国际标准,中国密码管理委员会标准等等。目前市面上有很多款安全设计芯片可供选择,其中意法半导体的ST19WP18微控制器,已通过“公共标准”评估保障级EAL5+(增强版)的认证,这是ISO15408国际标准关于此类产品的最高的标准之一。
由于信息安全设备的上述结构特点,使得其在信息安全领域有着广泛的应用,信息安全操作一般包括数据交互(对写入的数据在所述信息安全设备内进行加密或对读取的数据在所述信息安全设备内进行解密);身份认证信息处理、存储/验证密码信息、存储/验证签名、存储/验证证书、权限管理;以及预置代码进行数据运算等,其中预置代码包括预置用户软件部分片断(用户软件部分片断不能被读出信息安全设备,并在信息安全设备内部运行进行数据运算),和预置软件保护应用接口函数(软件保护应用接口函数为信息安全设备和软件开发商应用之间的接口级函数)等多种操作。
硬件标识是存储于信息安全设备内部或标于信息安全设备上,由设备生产商自己定义的一种全球唯一的标识号码,可以被读取。硬件标识包括信息安全设备的产品编号(PID号)和厂商编号(VID号)等,依据产品编号(PID号)和厂商编号(VID号)就可以区分出设备的生产厂商及产品配置等信息。
SCSI(Small Computer System Interface-小型主机系统接口)是主机连接外接设备的一种接口标准,能够提供更快的数据传输率。基于SCSI的USB设备只是借用了SCSI的软件协议,硬件是完全不同的。借用SCSI的软件协议可以令驱动程序的编写简单。基于SCSI协议设计的产品都是模拟一个USB“海量存储器”,所以我们的产品连接到主机上后,都可以直接被主机端集成的“U盘”驱动程序所驱动。而采用一些技巧,可以使我们的产品不被系统当做一个真实的驱动器显现给操作者,这可以避免被电脑用户误操作,同时可以取得快速的数据传输速度。另一方面,我们也可以让主机将我们的产品识别为一个真实的驱动器,这样至少在WIN32平台上,我们可以借用AUTO PLAY特性让我们的软件自动运行起来,从而提升产品的易用性。
CCID(USB Chip/Smart Card Interface Devices-USB芯片智能卡接口设备)标准是由几大国际级IT企业共同制定的一个标准,它提供了一种智能卡读写设备与主机或其它嵌入式主机实现相互通讯的可能。CCID标准规定了CCID设备是一种芯片/智能卡接口设备,设备通过USB接口与主机或其它嵌入式主机连接,进行符合CCID标准的数据通讯,同时设备通过符合7816标准协议的接口与智能卡进行通讯。微软公司在其Windows 2000及以上的操作系统上提供并支持CCID驱动,使设备生产厂商可以轻松的开发使用符合CCID接口标准的设备。同时,CCID接口标准支持PC(Personal Computer-个人计算机)/SC(Smart Card-智能卡)接口调用,使广大开发者可以方便的对信息安全设备进行开发操作,在其它开源操作系统如LINUX的众多版本上,也有许多开源的CCID驱动可供开发者和使用者使用。
HID(Human Interface Device-人机接口设备)类是Windows操作系统完全支持的第一批USB设备配置中的一种,在运行Windows 98或更高版本的计算机上,应用程序可以与使用操作系统内置驱动的HID设备通信,由于这个原因,符合HID类的USB设备才得以很容易的设置并运行。但是HID设备不是必须要有人机接口的,它只是需要能在HID类规范的限制内起到一定作用,HID类的主要功能和限制如下:交换的数据驻留在被称为报告的结构中;每个事务包含一个小到中等量的数据;设备可以在不可预期的时间里发送信息到计算机中等等。尽管很多HID设备主要是从设备发送数据到主机,其实HID设备也可以从主机接收数据,所以可以说任何工作在HID类的限制之内的设备都可以称为HID设备,这些设备既可以发送数据到计算机,也可以从计算机接收配置设备的请求,主要负责接收数据的例子是远程显示器、远程设备的控制面板,及从主机接收偶尔或周期性命令的任何配置的设备。HID设备可以是设备支持的多个USB接口之一,既可以是低速设备也可以是全速设备。微软公司在其Windows98及以上的操作系统上提供并支持HID驱动,使设备生产厂商可以轻松的开发使用符合HID接口标准的设备。
描述符是数据结果或信息的格式化块,它可以使主机知道这个设备,每个描述符包含了关于这个设备的整体信息或者一个元素的信息。
按照SCSI协议标准,符合USB-SCSI接口标准的设备其描述符的特征是:在接口描述符中,字节0是描述符的字节长度,值为09h;字节1是描述符配置,值为04h;字节4是支持的终端号;字节5是类代码,值为08h;字节6为子类代码,值为00h;字节7是协议代码,值为50h。在配置描述符中,字节0是描述符的字节长度,字节2是SCSI规范的版本号。符合SCSI接口标准的设备的其它描述符中的字节,如设备描述符、配置描述符中的字节以及上述接口描述符和配置描述符中的其它字节仍按照USB协议中的规定设置。
按照CCID协议标准,符合CCID接口标准的设备其描述符的特征是:在接口描述符中,字节0是描述符的字节长度,值为09h;字节1是固定终端,值为04h;字节4代表其支持的终端号(除了终端0),值为02h或03h;字节5是类代码,值为0Bh;字节6为子类代码,值为00h;字节7是协议代码,值为00h。在配置描述符中,字节0是描述符的字节长度,值为36h,字节2是CCID规范的版本号,它是用二进制代码表示的小数,值为0100h,字节52是PIN码支持,值为00h-03h。符合CCID接口标准的设备的其它描述符中的字节,如设备描述符、配置描述符中的字节以及上述接口描述符和配置描述符中的其它字节仍按照USB协议中的规定设置。
按照HID协议标准,符合HID接口标准的设备其描述符的特征是:在接口描述符中,字节0是描述符的字节长度,值为09h;字节1是描述符配置,值为04h;字节4是支持的终端号,值为01h;字节5是类代码,值为03h;字节6是子类代码,值为00h;字节7是协议代码,值为00h。在配置描述符中,字节0是描述符的字节长度;字节1为HID类,值为21h;字节2是HID规范发布号,它采用二进制编码的十进制格式,比如1.0版本是0100h,1.1版本是0110h。符合HID接口标准的设备的其它描述符中的字节,如设备描述符、配置描述符中的字节以及上述接口描述符和配置描述符中的其它字节仍按照USB协议中的规定设备。
在公开日为2006.7.26,申请号为200610002400.1的“通用串行总线人机交互类的信息安全设备及其控制方法”专利中,公开了一种基于通用串行总线人机交互类的信息安全设备及其控制方法,通过包括内置有人机接口设备描述符的主控芯片,和与所述主控芯片相连的USB接口模块,使其本身可以做到小巧便携易用,而功能却很强大。HID设备目前已经得到了广泛的应用,比如在移动硬盘、U盘、键盘、鼠标等多种产品上都已有应用。
HID设备和CCID设备有诸多优点,比如HID设备和CCID设备不会受到用户权限的限制,在Windows操作系统下,普通用户和管理员用户都可以实现对HID设备和CCID设备进行访问和相应的操作;而且设备用户不需要安装驱动程序就可以随时随地使用,不需要管理版本不断升级的驱动程序,不需要考虑不同产品驱动程序的兼容问题,不需要面对驱动程序引起的操作系统使用风险,不需要担心驱动程序的安装卸载对系统产生的污染。一般地,当主机系统支持智能卡登录时,会选用CCID协议,当主机系统不支持智能卡登录时,会选用HID协议。由于HID设备以及CCID设备的上述优点使得其应用越来越广泛,但是同时也提出了一个新的问题,即HID设备和CCID设备并不能像USB-SCSI设备那样具有自动运行的功能,即不能实现对设备相关应用程序的自动安装。
Linux操作系统所用的内核版本有2.4和2.6两种,使用2.4内核版本的主机只支持传送小于64字节的数据包,而使用2.6内核版本的主机还支持大于64字节的数据包。
目前,信息安全设备的用途越来越广,很多时候,其内部的配置根本无法满足和主机通讯的需要,因此就需要对采用多种配置的设备进行操作,也就意味着需要同时配备多套设备来满足工作需要,一定程度上造成了设备的浪费和操作的不便。
发明内容
为了解决上述问题,本发明提供一种提高设备使用率、节约成本的动态切换设备配置的方法,包括下面步骤:
主机检测是否已经连有设备,如果已经连有,则主机获取设备配置信息;否则,主机监控是否有设备正在插入,如果有设备插入,则主机获取设备配置信息,如果没有设备插入,则主机继续监控是否有设备在插入;
主机获取设备配置信息后,判断所述设备提供的配置信息是否符合主机要求,如果符合则设备按照所述配置信息进行操作;否则主机向设备发出将设备切换成符合主机要求的配置信息的指令,所述设备判断主机指令是否为设备配置切换指令,如果不是设备配置切换指令,则进行信息安全操作,否则设备执行主机指令,切换成符合主机要求的配置,模拟拔插动作并按照修改后的的配置信息进行重新声明,然后所述主机继续监控是否有设备插入,如果有设备插入,则主机获取设备配置信息,否则,主机继续监控是否有设备在插入。
所述设备配置信息包括所述设备的设备描述符、配置描述符、接口描述符和端点描述符。
所述设备描述符为设备的协议类型,包括HID协议、CCID协议和/或SCSI协议。
所述端点描述符为设备发出的最大数据包的大小。
所述设备提供的配置信息是所述设备在出厂时预先规定好的配置信息。
所述设备为USB类信息安全设备。
所述设备模拟拔插操作是通过所述设备控制USB信号线上的电平变化来实现在USB总线上模拟一次设备的拔插事件。
所述设备模拟拔插动作并按照修改后的配置信息进行重新声明后,还包括所述设备将所述修改后的配置信息存储为默认配置的步骤。
本发明还提供了一种动态切换设备配置的系统,其特征是包括主机端和设备端:
所述主机端包括:第一通信模块、设备检测模块、设备监控模块、设备配置获取和判断模块及设备配置切换模块;
所述第一通信模块用于所述主机端与所述设备端通信;
所述设备检测模块用于检测是否连有设备,如果已经连有,则启动所述设备配置获取和判断模块;否则启动所述设备监控模块;
所述设备监控模块用于监控是否有设备插入,如果有设备插入,则启动所述设备配置获取和判断模块;否则继续进行监控;
所述设备配置获取和判断模块用于获取设备的配置信息,并判断所述设备是否为符合所述主机要求的配置信息的设备,如果是,则对所述设备端按照所述配置信息进行操作;否则,启动所述配置切换模块;
所述设备配置切换模块用于向所述设备端发出将设备切换成符合主机要求的配置信息的指令;
所述设备端包括第二通信模块、设备拔插模块、配置切换响应模块和信息安全模块;
所述第二通信模块用于所述设备端与所述主机端通信;
所述设备拔插模块用于在所述设备端接收到所述主机端发出的切换成符合主机要求的配置信息的指令后,修改当前配置信息为所述主机要求的配置信息,模拟拔插操作;
所述配置切换响应模块用于在所述设备拔插模块模拟拔插操作后,按照所述修改后的配置信息进行重新声明;
所述信息安全模块用于在所述设备为符合主机配置要求的设备时,进行信息安全操作。
所述设备端还包括存储模块,用于在所述设备拔插模块模拟完拔插动作和所述配置切换响应模块按照修改后的配置信息进行重新声明后,将所述符合主机端要求的配置信息保存为所述设备端的默认配置。
所述存储模块为非易失性存储器。
所述设备配置获取和判断模块获取的所述设备的配置信息包括设备描述符、配置描述符、接口描述符和端点描述符。
所述设备描述符为设备的协议类型,包括HID协议、CCID协议和/或SCSI协议。
所述端点描述符包括设备发出的最大数据包的大小。
本发明的有益效果在于:通过在设备和主机通讯过程中,动态切换设备的配置类型,提高了设备的使用率,避免了使用多个设备造成的浪费,节约了成本。
具体实施方式
下面结合附图和具体实施例对本发明作进一步说明,但不作为对本发明的限定。
实施例1
图1为本发明一种动态切换设备配置的方法图,包括下列步骤:
步骤101:主机通过枚举的方法检测是否已经有设备连入,如果已经有设备连入,执行步骤103;否则,执行步骤102;
步骤102:主机通过动态监测的方法监控是否有设备正在插入,如果有设备正在插入,执行步骤103;否则,主机继续监控;
步骤103:主机获取设备配置信息;
该步骤为主机从设备中读取一些信息,包括设备描述符、配置描述符、接口描述符和端点描述符。
其中设备描述符包括:设备描述符类型编号、USB版本号、USB分配的设备类代码、USB分配的子类代码、USB分配的设备协议代码、端点0的最大数据包大小、厂商编号、产品编号、设备出厂编号、描述厂商字符串的索引、描述产品字符串的索引、描述设备序列号字符串的索引、可能的配置数量。
配置描述符包括配置描述符类型编号、此配置所返回的所有数据大小、此配置所支持的接口数量、Set_Configuration命令需要的参数值、描述该配置的字符串的索引值、供电模式的选择和设备从总线提取的最大电流。
接口描述符包括接口描述符类型编号、该接口的编号、备用的接口描述符编号、该接口使用的端点数、不包括端点0、接口类型、接口子类类型、接口遵循的协议和描述该接口的字符串索引值。
端点描述符包括端点描述符类型编号、端点地址及输入输出属性、端点的传输类型属性、端点收、发的最大包的大小和主机查询端点的时间间隔。
步骤104:主机根据设备提供的当前配置信息判断设备类型是否为支持PC/SC软件接口协议的USBkey,如果是,转向步骤106;否则,执行步骤105;
有些USBkey需要通过支持PC/SC软件接口的协议与主机通信。而可选的设备类型有SCSI协议类设备、HID协议类设备、CCID协议类设备等,这些类型的设备并不都支持PC/SC软件接口的协议。
具体为主机通过程序判断主机在步骤103获得的设备配置是否为需要的设备描述符。设备在出厂前,就由厂商预先写入了多种配置代码,包括厂商编号、产品编号和协议类型,其中,厂商编号是唯一的,标识产品是由哪个生产厂商提供的;产品编号可以有多个,但和主机相连时设备提供的配置,一次只能识别为其中的一个产品类型,如0811代表支持PC/SC软件接口协议的USBkey,0812代表密钥系统等;协议类型也可以有多个,如:SCSI协议类设备、HID协议类设备、CCID协议类设备等,当系统获取设备配置信息时,设备只发给主机一种协议配置(即:默认配置),如SCSI协议类设备。设备和主机通讯过程中,硬件协议和应用程序之间必须通过某种特定的软件接口来实现,但是并不是所有的硬件协议都支持该种类型的软件接口,因此必须将设备类型切换成支持这种软件接口类型的设备类型。例如:主机中只安装了PC/SC软件接口,只有微软提供的CCID协议支持PC/SC软件接口,而其它协议如SCSI协议、HID协议和其它一些私有驱动协议并不支持PC/SC软件接口,因此安装了默认配置为上述任意一个协议的设备如果想和主机通讯,就必须切换成CCID协议类型的设备。
步骤105:主机发出指令,要求设备切换成指定的配置类型,设备修改当前配置信息为支持PC/SC软件接口协议的配置,模拟拔插动作并按照修改后的配置信息进行重新声明,然后返回步骤102;
设备按照主机发来的指令修改提供的设备描述符、配置描述符、接口描述符和端点描述符,并模拟一次拔插事件。
设备模拟插拔操作的过程具体为:设备内部配有复位USB总线模块,复位USB总线模块用于控制设备的USB总线模拟一次信息安全设备的拔插事件,复位USB总线模块通过控制USB信号线上的电平变化来实现在USB总线上模拟一次信息安全设备的拔插事件。
本实施例中主机发出的指令具体为APDU(Application ProtocolDataUnits,应用协议数据单元)控制指令,APDU定义了一个遵循ISO7816-4的应用程序协议数据单元,是小应用程序(卡上)和主应用程序(卡外)之间使用的通信格式,APDU既制定了命令格式,也制定了响应格式。
切换设备类型的APDU指令为命令格式APDU,命令APDU包括一个必备的4字节头(CLA、INS、P1、P2)和一个可选的可变长度的体(Lc、Data、Le)如下:
命令头 命令体
命令头为命令的编码,Lc为体内数据(data)长度,Data为发送的数据。Le是期望中的应答APDU数据字段的最大字节数。当Le=0时,表示请求送回最大应答数据字节数,如Le为1字节长度,则最大数据字节数为256。
具体可以设计为:
84F1000004MAC为将USBKey切换为使用HID协议进行通讯,84F1000104MAC为将USBKey切换为使用SCSI协议进行通讯,84F1000204MAC为将USBKey切换为使用CCID协议进行通讯。
在本实施例中,使用84F1000204MAC将设备类型切换为CCID类型。
步骤105中,设备模拟拔插动作并按照修改后的配置信息进行重新声明后还将主机要求的配置类型存储为设备默认的配置类型,这样,当主机和设备断开连接后再重新建立连接时,设备就表现为符合主机配置要求的设备,无须进行配置切换了。
步骤106:主机对设备按照符合主机要求的配置对应的协议进行操作。
本实施例中,主机安装的操作系统可以为Windows操作系统、Linux操作系统、Unix操作系统或苹果操作系统;设备为USB类信息安全设备。
实施例2:
图2为本发明一种动态切换设备配置的方法图,包括下列步骤:
步骤201:主机通过枚举的方法检测是否已经有设备连入,如果已经有设备连入,执行步骤203;否则,执行步骤202;
步骤202:主机通过动态监测的方法监控是否有设备正在插入,如果有设备正在插入,执行步骤203;否则,主机继续监控;
步骤203:本实施例中,主机使用64字节长度数据包和设备进行通讯,获取设备配置信息;
该步骤为主机从设备中读取一些信息,包括设备描述符、配置描述符、接口描述符和端点描述符。
其中设备描述符包括:设备描述符类型编号、USB版本号、USB分配的设备类代码、USB分配的子类代码、USB分配的设备协议代码、端点0的最大数据包大小、厂商编号、产品编号、设备出厂编号、描述厂商字符串的索引、描述产品字符串的索引、描述设备序列号字符串的索引、可能的配置数量。
配置描述符包括配置描述符类型编号、此配置所返回的所有数据大小、此配置所支持的接口数量、Set_Configuration命令需要的参数值、描述该配置的字符串的索引值、供电模式的选择和设备从总线提取的最大电流。
接口描述符包括接口描述符类型编号、该接口的编号、备用的接口描述符编号、该接口使用的端点数、不包括端点0、接口类型、接口子类类型、接口遵循的协议和描述该接口的字符串索引值。
端点描述符包括端点描述符类型编号、端点地址及输入输出属性、端点的传输类型属性、端点收、发的最大包的大小和主机查询端点的时间间隔。
步骤204:主机根据设备提供的当前配置信息判断设备允许的数据包长度是否可以大于64字节长,如果是,转向步骤206;否则,执行步骤205;
主机使用的操作系统为Linux操作系统时,由于所用操作系统的内核版本不同,因此传输的数据包大小就不一致。具体地说,Linux内核版本有两种类型,即Linux2.4和Linux2.6。其中,Linux2.4的数据包只支持小于64字节的数据包的传输,而Linux2.6还支持大于64字节的数据包的传输。主机采用的操作系统版本是固定的。设备因为配置类型的不同,而支持不同字节大小的数据包的传输。因此,当主机使用的是Linux2.6的内核版本,而设备提供的配置类型支持的传输方式是小于或等于64字节的数据包时,主机和设备间就只能以低于或等于64字节的传输方式进行数据交互,这无疑降低了数据的传输效率,因此需要将设备切换成大于64字节的数据传输类型,以节约时间,提高效率。
步骤205:主机发出指令,要求设备切换成指定的配置类型,设备修改当前配置信息为符合主机Linux2.6内核版本要求的配置信息,模拟拔插动作并按照修改后的配置信息进行重新声明,然后返回步骤202;
设备按照主机发来的指令修改设备提供的设备描述符、配置描述符、接口描述符和端点描述符,并模拟一次拔插事件,上述提供的设备描述符规定了该设备当前的配置状况。
设备模拟插拔操作的过程具体为:设备内部配有复位USB总线模块,复位USB总线模块用于控制设备的USB总线模拟一次信息安全设备的拔插事件,复位USB总线模块通过控制USB信号线上的电平变化来实现在USB总线上模拟一次信息安全设备的拔插事件。
本实施例中主机发出的指令具体为APDU(Application ProtocolDataUnits,应用协议数据单元)控制指令,APDU定义了一个遵循ISO7816-4的应用程序协议数据单元,是小应用程序(卡上)和主应用程序(卡外)之间使用的通信格式,APDU既制定了命令格式,也制定了响应格式。
切换设备类型的APDU指令为命令格式APDU,命令APDU包括一个必备的4字节头(CLA、INS、P1、P2)和一个可选的可变长度的体(Lc、Data、Le)如下:
命令头 命令体
命令头为命令的编码,Lc为体内数据(data)长度,Data为发送的数据。Le是期望中的应答APDU数据字段的最大字节数。当Le=0时,表示请求送回最大应答数据字节数,如Le为1字节长度,则最大数据字节数为256。
切换通讯数据包大小的APDU指令为命令格式APDU,可以设计为:
84F1010006XX XX MAC为将USBKey切换使用XX XX(两个字节)字节长度的数据包进行通讯。
本实施例中Linux 2.6内核的主机将设备切换成大于64字节的数据传输类型,就可以使用84F10100061000MAC对设备进行切换,表示要设备使用4096(0x1000)长度的数据包和主机进行通讯。
步骤205中,设备模拟完拔插动作并按照修改后的配置信息进行重新声明后还将主机要求的配置类型存储为设备默认的配置类型,这样,当主机和设备断开连接后再重新建立连接时,设备就表现为符合主机配置要求的设备,无须进行配置切换了。
步骤206:主机对设备按照符合主机要求的配置进行操作。
本实施例中,主机安装了Linux操作系统;设备为USB类信息安全设备。
实施例3:
图3中,针对实施例1和实施例2中主机的操作,设备响应如下:
步骤301,设备接收主机指令;
步骤302,设备判断主机指令是否为设备配置切换指令,如果不是设备配置切换指令,则执行步骤306,否则执行步骤303;
步骤303:设备执行主机指令,切换成符合主机要求的配置;
切换过程具体通过修改设备中预先写入的协议标志位来实现,以实施例1为例,预先设定当协议标志位=0时为SCSI协议或者HID协议,当协议标志位=1时为CCID协议,则当设备收到协议切换命令后,便会修改协议标志位为1,将协议切换到CCID类型。
步骤304:模拟设备往主机的拔插操作,并按照修改后的配置信息进行重新声明;
步骤305:将符合主机要求的配置保存为默认配置,本步骤也可以没有,如果没有,主机和设备真正断开连接后,如果再建立连接就需要再次进行设备配置切换操作;
步骤306:设备执行主机指令,进行信息安全操作。
信息安全操作一般包括数据交互(对写入的数据在所述信息安全设备内进行加密或对读取的数据在所述信息安全设备内进行解密);身份认证信息处理、存储/验证密码信息、存储/验证签名、存储/验证证书、权限管理;以及预置代码进行数据运算等,其中预置代码包括预置用户软件部分片断(用户软件部分片断不能被读出信息安全设备,并在信息安全设备内部运行进行数据运算),和预置软件保护应用接口函数(软件保护应用接口函数为信息安全设备和软件开发商应用之间的接口级函数)等多种操作。
实施例4:
图4为本发明提供一种动态切换设备配置的系统400的结构图,包括:主机端401和设备端402;
主机端401包括第一通信模块4011、设备检测模块4012、设备监控模块4013、设备配置获取和判断模块4014以及设备配置切换模块4015;
第一通信模块4011用于主机端和设备端通信;
设备检测模块4012用于检测是否有设备已经连接到主机上,如果有,则启动设备配置获取和判断模块4014;否则启动设备监控模块4013;
设备监控模块4013用于监控是否有设备正在插入主机上,如果有,则启动设备配置获取和判断模块4014;否则继续监控;
设备配置获取和判断模块4014用于获取设备配置信息,然后判断设备是否为符合主机配置要求的设备,如果是则直接对设备进行操作;否则启动设备配置切换模块4015;设备配置获取和判断模块获取的设备配置信息包括设备描述符、配置描述符、接口描述符和端点描述符,设备描述符具体包括设备的协议类型,如:HID协议、CCID协议和/或SCSI协议;端点描述符具体包括设备发出的最大数据包的大小;
设备配置切换模块4015用于在设备配置获取和判断模块4014判断设备不是符合主机配置要求的设备时,将设备从和主机相连时提供给主机的配置切换成符合主机要求的配置,具体为设备配置切换模块4015对设备端发出指令,命令设备端进行相应切换;
设备端402具体为USB类信息安全设备,包括第二通信模块4021、设备拔插模块4022、配置切换响应模块4023、信息安全模块4025;
第二通信模块4021用于设备端和主机端进行通信;
设备拔插模块4022用于在设备端402接收到主机端401发出的切换成符合主机要求的配置信息的指令后,修改当前配置信息为主机端401要求的配置信息,模拟设备往主机的拔插操作;
配置切换响应模块4023用于在设备拔插模块4022模拟拔插操作后,按照修改后的配置信息进行重新声明;
信息安全模块4025用于进行信息安全方面的操作,一般包括数据交互(对写入的数据在所述信息安全设备内进行加密或对读取的数据在所述信息安全设备内进行解密);身份认证信息处理、存储/验证密码信息、存储/验证签名、存储/验证证书、权限管理;以及预置代码进行数据运算等,其中预置代码包括预置用户软件部分片断(用户软件部分片断不能被读出信息安全设备,并在信息安全设备内部运行进行数据运算),和预置软件保护应用接口函数(软件保护应用接口函数为信息安全设备和软件开发商应用之间的接口级函数)等多种操作。
本实施例中,设备端402还可以包括存储模块4024,用于在设备拔插模块模拟完拔插操作并按照修改后的配置信息进行重新声明后,将符合主机要求的配置作为设备的默认配置保存下来,以便主机下次与设备连接时,就不用再修改设备配置,直接使用了;存储模块为易失性存储器。
以上所述的实施例只是本发明较优选的具体实施方式,本领域的技术人员在本发明技术方案范围内进行的各种变化和替换都应包含在本发明的保护范围内。