背景技术
由于Windows操作***是一个支持多用户、多任务的操作***,使得安全问题成为了非常关键的问题,因此Window操作***需要对用户进行权限设置。权限是指用户对***资源的访问权利。权限的设置是基于用户和进程而言的,不同的用户访问计算机具有不同的权限。Windows的用户被分成许多组,常见的用户组有以下几种:
Administrator:管理员组,默认情况下,Administrator中的用户对计算机/域有不受限制的完全访问权。
System:拥有和Administrator一样的,甚至比其还高的权限,具有***和***级的服务正常运行所需要的权限。
PowerUser:高级用户组,在权限设置中,这个组的权限是仅次于Administrator的。PowerUser可以执行除了为Administrator组保留的任务外的其他任何操作***任务。
User:普通用户组,这个组的用户无法对计算机***进行改动。
Guest:来宾组,来宾帐户的限制要比普通User帐号更多。
通常习惯称Administrator、System和Power User为超级用户,User和Guest为非超级用户。
随着人们安全意识的不断提高,各种加密算法也应运而生,常用的加密算法主要有散列算法、对称加密算法和非对称加密算法。散列算法是一种无需密钥参与的单向算法,可以将任意长度的数据进行变换,输出成固定长度的数据摘要,其具有较长的散列码以及能抗击特殊密码分析攻击的特性。目前比较常用的散列算法有HMAC算法、MD5算法、MD2算法、SHA1算法、SHA256算法等。对称加密算法(或叫单密钥加密算法)中,只有一个密钥用来加密和解密信息,尽管单密钥加密是一个简单的过程,但是双方都必须完全的相信对方,并都持有这个密钥的备份,通过对称加密算法对数据加密后,可以利用该密钥对加密结果进行解密。目前比较常用的对称加密算法有DES算法、3DES算法、RC4算法、RC5算法等。非对称加密算法(公钥加密算法)在加密的过程中使用一对密钥,而不像对称加密算法只使用一个单独的密钥,一对密钥中一个用于加密,另一个用来解密,即如用A加密,则用B解密;如果用B加密,则要用A解密。目前比较常用的非对称加密算法有RSA算法、DSA算法、椭圆曲线算法等。
近几年,随着互联网技术与电子商务的快速发展,越来越多的商务活动转移到网络上开展,例如网上政府办公、网上银行、网上购物等等,与此同时,越来越多涉及个人隐私和商业秘密的信息需要通过网络传递。然而病毒、黑客以及网页仿冒诈骗等恶意威胁,给在线交易的安全性带来了极大的挑战,致使网络安全问题变的举足轻重。
信息安全设备(简称设备)是一种带有处理器和存储器的小型硬件装置,它通过计算机的数据通讯接口与主机连接。它具有密钥生成、安全存储密钥、预置加密算法等功能。信息安全设备与密钥相关的运算完全在装置内部运行,且信息安全设备具有抗攻击的特性,安全性极高。信息安全设备一般通过USB接口与计算机相连,通常被称为USB KEY或USB Token。信息安全设备生产商、软件***开发商或者最终用户可以将一些重要信息存储到信息安全设备中,用以保证安全性或者防止遗忘。目前,较高端的信息安全设备是可编程的,即可以实现在信息安全设备中运行预先存入其中的代码。
一般信息安全设备中会内置安全设计芯片来实现信息安全功能。安全设计芯片除了具有通用嵌入式微控制器的各种特性外,更多的是在安全性能方面,安全设计芯片在芯片设计时会针对安全性能方面在结构上做一些特殊处理,比如安全芯片会采用特定的安全内核,该安全内核能够支持多个拥有不同权限定义的状态,用于实现对硬件资源访问权限的管理;以及支持指令执行时间(指令周期)的随机化;其中断***能够实现支持芯片状态的转换,从而实现对不同层次的安全级别的控制,以支持多应用的实现;它还可以带有MMU单元(Memory Management Unit-存储器管理单元),用于实现逻辑地址、物理地址的隔离,及地址映射,从体系结构上支持应用(多应用)、安全性的设计实现,与内核支持的不同状态一起有机的组成一个硬件防火墙;其中断***还能支持***数据库与用户程序的接口及权限传递和切换;其存储介质方面也会采用非易失性存储介质等等。安全设计芯片一般都要求符合相关的标准及通过相关的认证等以保证其安全性能,比如TCG TPM v1.2规范,ISO15408国际标准,中国密码管理委员会标准等等。目前市面上有很多款安全设计芯片可供选择,其中意法半导体的ST19WP18微控制器,已通过“公共标准”评估保障级EAL5+(增强版)的认证,这是ISO15408国际标准关于此类产品的最高的标准之一。
由于信息安全设备的上述结构特点,使得其在信息安全领域有着广泛的应用,信息安全操作一般包括数据交互(对写入的数据在所述信息安全设备内进行加密或对读取的数据在所述信息安全设备内进行解密);身份认证信息处理、存储/验证密码信息、存储/验证签名、存储/验证证书、权限管理;以及预置代码进行数据运算等,其中预置代码包括预置用户软件部分片断(用户软件部分片断不能被读出信息安全设备,并在信息安全设备内部运行进行数据运算),和预置软件保护应用接口函数(软件保护应用接口函数为信息安全设备和软件开发商应用之间的接口级函数)等多种操作。
硬件标识是存储于信息安全设备内部或标于信息安全设备上,由设备生产商自己定义的一种全球唯一的标识号码,可以被读取。硬件标识包括信息安全设备的产品编号(PID号)和厂商编号(VID号)等,依据产品编号(PID号)和厂商编号(VID号)就可以区分出设备的生产厂商及产品类型等信息。
现有信息安全设备的通讯可以通过SCSI(Small Computer System Interface-小型主机***接口)命令的方式来实现,SCSI是主机连接外接设备的一种接口标准,能够提供更快的数据传输率。SCSI为方便开发者使用预留了扩展命令,为完成信息安全设备的SCSI通讯,开发者将SCSI扩展命令设计成信息安全设备的命令,以完成信息安全设备的功能,但是在Windows 2000及以上操作***下,普通用户没有权限使用SCSI扩展命令,这就给SCSI设备的使用带来了很多的不便。
自动运行功能(Autorun)是USB-SCSI类设备所自带的一个功能,它使得对光盘、硬盘和海量存储等设备进行的操作变得更容易,一般习惯称此种能够自动运行起来的程序为Autorun程序。由于Autorun程序中包含了需要自动运行的命令,如改变驱动器图标、运行程序文件、可选快捷菜单等内容,所以当带有Autorun程序的光盘或海量存储等设备连接到计算机上时,Autorun程序会装载相应文件,例如GIF、JPEG、HTML文件、PDF文件,实现自动运行功能,Autorun程序还可以显示启动界面等。
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类,值为2Ih;字节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设备那样具有自动运行的功能,即不能实现对设备相关应用程序的自动安装。
为了解决具有自动安装功能的信息安全设备能够在Windows操作***下,不受用户权限限制,普通用户也可以使用的问题,即实现信息安全设备具有如下两种特性:USB-SCSI设备自动安装特性,及HID设备/CCID设备在Windows操作***下普通用户也可以使用的特性,目前主要的解决方式是在HID类信息安全设备/CCID类信息安全设备内部增加用以实现光盘功能的U盘部分电路,以及集线器(HUB)部分电路实现。但是当将此种设备与主机连接后,在***枚举时会同时向主机报告为HID设备类型/CCID设备类型和SCSI设备类型两种设备类型,容易造成用户误解,更重要的是,由于增加了集线器部分电路和U盘部分电路,成本增高,可靠性也有所降低。
发明内容
为了解决具有自动安装功能的信息安全设备能够在Windows操作***下,不受用户权限限制,普通用户也可以使用的问题,本发明提供了一种可自动安装的信息安全设备以及控制方法。
一种可自动安装的信息安全设备,所述信息安全设备包括控制模块、USB接口模块、工作模式切换模块、SCSI协议处理模块、与所述SCSI协议处理模块相连的自动运行模块、不受限协议处理模块、与所述不受限协议处理模块相连的信息安全模块,及与所述USB接口模块相连的复位USB总线模块,所述控制模块分别与所述USB接口模块、复位USB总线模块、工作模式切换模块、SCSI协议处理模块、不受限协议处理模块相连;
所述USB接口模块用于通过USB接口将所述信息安全设备与主机建立连接,解析并处理USB通信协议;
所述SCSI协议处理模块内置有SCSI接口设备描述符,用于向主机声明自身为SCSI设备类型,并解析处理SCSI命令;
所述自动运行模块用于自动启动并运行Autorun程序;
所述工作模式切换模块用于接收工作模式切换命令,并将所述信息安全设备从默认的SCSI工作模式切换到不受限工作模式;
所述复位USB总线模块用于控制USB总线模拟一次所述信息安全设备的拔插事件;
所述不受限协议处理模块内置有在Windows操作***下不受用户权限限制的接口协议相关的设备描述符,用于向主机声明自身为相应设备类型,并解析和处理相关协议命令;
所述信息安全模块用于根据访问所述信息安全设备的用户身份信息对其访问权限进行管理控制,和进行加/解密运算;
所述控制模块用于控制所述信息安全设备的工作模式,及对数据进行处理。
所述信息安全模块还包括密钥数据存储单元,所述密钥数据存储单元用于存储密钥数据,所述密钥数据包括数字证书、密钥和用户私有数据。
所述信息安全模块还包括用户程序存储单元,所述用户程序存储单元用于实现用户自定义算法的写入和调用。
所述Autorun程序由所述信息安全设备的生产商预先编写,并预先存储在所述信息安全设备中。
所述工作模式切换命令为在Windows操作***下不受用户权限限制的光盘控制指令。
所述复位USB总线模块通过控制USB信号线上的电平变化来实现在USB总线上模拟一次所述信息安全设备的拔插事件。
所述不受限工作模式具体为HID工作模式,所述不受限协议处理模块为HID协议处理模块;
所述HID协议处理模块内置有HID接口设备描述符,用于向主机声明自身为HID设备类型,并解析处理HID命令。
所述不受限工作模式具体为CCID工作模式,所述不受限协议处理模块为CCID协议处理模块;
所述CCID协议处理模块内置有CCID接口设备描述符,用于向主机声明自身为CCID设备类型,并解析处理CCID命令。
所述自动运行模块包括检测单元和应用程序安装单元,所述检测单元用于Autorun程序检测主机中是否已经安装了与所述信息安全设备相关的应用程序,应用程序安装单元用于当所述检测单元未检测到主机中安装了与所述信息安全设备相关的应用程序时,Autorun程序向主机中安装与所述信息安全设备相关的应用程序。
所述信息安全设备相关的应用程序由所述信息安全设备的生产商预先编写,并预先存储在所述信息安全设备中。
所述信息安全设备相关的应用程序还包括监控程序,所述监控程序用于向所述信息安全设备发送工作模式切换命令和/或判断当前主机***的用户权限。
所述SCSI协议处理模块还与所述信息安全模块相连,所述自动运行模块还包括工作模式选定单元;
所述工作模式选定单元用于Autorun程序或监控程序判断当前主机***的用户权限,并依据所述当前主机***的用户权限选定所述信息安全设备的工作模式,当所述当前主机***工作在超级用户权限下,选定所述信息安全设备继续工作在SCSI工作模式;当所述当前主机***工作在非超级用户权限下,选定所述信息安全设备工作在不受限工作模式。
所述工作模式切换模块还包括设备判断单元,所述设备判断单元用于判断与主机连接的SCSI类型设备是否为所述信息安全设备。
所述信息安全模块为安全设计芯片,所述安全设计芯片包括智能卡芯片。
所述信息安全模块与所述工作模式切换模块、复位USB总线模块、不受限协议处理模块、SCSI协议处理模块、控制模块、自动运行模块、USB接口模块中的一个或几个集成在一颗芯片中。
所述芯片为安全设计芯片,所述安全设计芯片包括智能卡芯片。
所述USB接口模块为USB接口芯片。
一种可自动安装的信息安全设备的控制方法,所述方法包括:
步骤A:将所述信息安全设备通过USB接口与主机建立连接,声明自身为SCSI设备类型;
步骤B:自动启动并运行Autorun程序;
步骤C:选定所述信息安全设备的工作模式;
步骤D:所述信息安全设备在所述选定的工作模式下与主机进行交互,执行信息安全操作。
所述Autorun程序由所述信息安全设备的生产商预先编写,并预先存储在所述信息安全设备中。
所述步骤B具体包括:自动启动Autorun程序,所述Autorun程序检测所述主机中是否已经安装了与所述信息安全设备相关的应用程序,如果所述主机中未安装与所述信息安全设备相关的应用程序,则所述Autorun程序安装与所述信息安全设备相关的应用程序到所述主机中;如果所述主机中已经安装了与所述信息安全设备相关的应用程序,则选定所述信息安全设备的工作模式。
所述信息安全设备相关的应用程序由所述信息安全设备的生产商预先编写,并预先存储在所述信息安全设备中。
所述信息安全设备相关的应用程序还包括监控程序,所述监控程序用于向所述信息安全设备发送工作模式切换命令和/或判断当前主机***的用户权限。
所述步骤C具体包括:Autorun程序发送工作模式切换命令给所述信息安全设备,所述信息安全设备从默认的SCSI工作模式切换到不受限工作模式,控制USB总线模拟一次所述信息安全设备的拔插事件,并声明自身为相应设备类型。
所述步骤C具体包括:Autorun程序或监控程序发送工作模式切换命令给所述信息安全设备,所述信息安全设备从默认的SCSI工作模式切换到不受限工作模式,控制USB总线模拟一次所述信息安全设备的拔插事件,并声明自身为相应设备类型。
所述步骤C具体包括:Autorun程序判断当前主机***的用户权限,如果所述当前主机***工作在超级用户权限下,选定所述信息安全设备继续工作在SCSI工作模式;如果所述主机***工作在非超级用户权限下,所述Autorun程序发送工作模式切换命令给所述信息安全设备,所述信息安全设备从默认的SCSI工作模式切换到不受限工作模式,控制USB总线模拟一次所述信息安全设备的拔插事件,并声明自身为相应设备类型。
所述步骤C具体包括:Autorun程序或监控程序判断当前主机***的用户权限,如果所述当前主机***工作在超级用户权限下,选定所述信息安全设备继续工作在SCSI工作模式;如果所述主机***工作在非超级用户权限下,所述Autorun程序或监控程序发送工作模式切换命令给所述信息安全设备,所述信息安全设备从默认的SCSI工作模式切换到不受限工作模式,控制USB总线模拟一次所述信息安全设备的拔插事件,并声明自身为相应设备类型。
所述不受限工作模式为在Windows操作***下不受用户权限限制的接口协议工作模式。
所述不受限工作模式为HID工作模式或CCID工作模式。
所述工作模式切换命令为在Windows操作***下不受用户权限限制的光盘控制指令。
所述控制USB总线模拟一次所述信息安全设备的拔插事件通过控制USB信号线上的电平变化来实现。
有益效果:本发明涉及的可自动安装的信息安全设备及其控制方法,由于省去了集线器部分电路和U盘部分电路,在成本方面得到了很好的控制;同时本发明也不会受到用户权限的限制,本发明所述的信息安全设备及其控制方法可以在Windows98、Windows2000、Windowsxp、Windows2003操作***下使用,同时在超级用户和非超级用户帐号下均可以使用。另外,本发明还具备HID设备和CCID设备的优点,比如用户不需要安装驱动程序就可以随时随地使用,不需要管理版本不断升级的驱动程序,不需要考虑不同产品驱动程序的兼容问题,不需要面对驱动程序引起的操作***使用风险,不需要担心驱动程序的安装卸载对***产生的污染。
具体实施方式
下面结合附图和具体实施例对本发明作进一步说明,但不作为对本发明的限定。
实施例1
本实施例提供了一种可自动安装的信息安全设备100,如图1所示,包括控制模块102、USB接口模块101、工作模式切换模块105、SCSI协议处理模块103、自动运行模块104,HID协议处理模块107、信息安全模块108和复位USB总线模块106。控制模块分别与USB接口模块、复位USB总线模块、工作模式切换模块、SCSI协议处理模块、HID协议处理模块相连,复位USB总线模块与USB接口模块相连,自动运行模块与SCSI协议处理模块相连,信息安全模块与HID协议处理模块相连。
USB接口模块101用于通过USB接口将信息安全设备与主机建立连接,解析并处理USB通信协议。
SCSI协议处理模块103内置有SCSI接口设备描述符,用于向主机声明自身为SCSI设备类型,并解析处理SCSI命令。
自动运行模块104用于自动启动并运行Autorun程序,Autorun程序由所述信息安全设备的生产商预先编写,并预先存储在所述信息安全设备中;自动运行模块包括检测单元和应用程序安装单元,检测单元用于检测主机中是否已经安装了与信息安全设备相关的应用程序,应用程序安装单元用于当检测单元未检测到主机中安装了与信息安全设备相关的应用程序时,向主机中安装与信息安全设备相关的应用程序;信息安全设备相关的应用程序还包括监控程序,监控程序用于向信息安全设备发送工作模式切换命令,和/或判断当前主机***的用户权限;信息安全设备相关的应用程序由信息安全设备的生产商预先编写,并预先存储在信息安全设备中。
工作模式切换模块105用于接收Autorun程序或监控程序发送的工作模式切换命令,并将信息安全设备从默认的SCSI工作模式切换到HID工作模式。工作模式切换命令为在Windows操作***下不受用户权限限制的光盘控制指令。
复位USB总线模块106用于控制USB总线模拟一次信息安全设备的拔插事件,复位USB总线模块通过控制USB信号线上的电平变化来实现在USB总线上模拟一次信息安全设备的拔插事件。
HID协议处理模块107内置有HID接口设备描述符,用于向主机声明自身为HID设备类型,并解析处理HID命令。
信息安全模块108用于根据访问信息安全设备的用户身份信息对其访问权限进行管理控制,和进行加/解密运算。信息安全模块108还包括密钥数据存储单元,用于存储密钥数据,密钥数据包括数字证书、密钥和用户私有数据;信息安全模块108还包括用户程序存储单元,用于实现用户自定义算法的写入和调用。信息安全模块可以是安全设计芯片,包括智能卡芯片。
控制模块102用于控制和管理信息安全设备的工作模式,及对数据进行处理和控制。
在实际的产品设计中,可以有多种实现形式,信息安全模块可以与工作模式切换模块、HID协议处理模块、SCSI协议处理模块、控制模块、自动运行模块、复位USB总线模块、USB接口模块中的一个或几个集成在一颗芯片(可以是安全设计芯片,包括智能卡芯片)中实现;USB接口模块也可以是与主控芯片分立的USB接口芯片。比如可以利用一颗安全设计芯片(包括智能卡芯片)实现信息安全模块、HID协议处理模块、SCSI协议处理模块及工作模式切换模块的功能,利用一颗通用单片机实现控制模块的功能,利用复位电路实现控制USB总线模拟一次信息安全设备的拔插事件,利用存储芯片存储的Autorun程序,实现自动运行模块的功能,再利用一颗USB协议芯片实现USB接口模块的功能;本实施例提供的可自动安装的信息安全设备还可以利用存储芯片存储自动运行程序,再利用一颗安全设计芯片(包括智能卡芯片)实现信息安全模块、控制模块、工作模式切换模块、USB接口模块、复位USB总线模块、HID协议处理模块及SCSI协议处理模块的功能。其中存储芯片的存储介质可以是RAM、ROM、EPROM、EEPROM、FLASH中的一种或几种。
本实施例中的HID协议处理模块107可以由在Windows操作***下不受用户权限限制的接口协议相对应的协议处理模块来替换,比如内置有CCID接口设备描述符,用于向主机声明自身为CCID设备类型,并解析处理CCID命令的CCID协议处理模块。
实施例2
本实施例提供了一种可自动安装的信息安全设备200,如图2所示,包括控制模块202、USB接口模块201、工作模式切换模块205、SCSI协议处理模块203、自动运行模块204、复位USB总线模块206、HID协议处理模块207和信息安全模块208。控制模块分别与USB接口模块、复位USB总线模块、工作模式切换模块、SCSI协议处理模块、HID协议处理模块相连,自动运行模块与SCSI协议处理模块相连,复位USB总线模块与USB接口模块相连,信息安全模块分别与SCSI协议处理模块和HID协议处理模块相连。
USB接口模块201用于通过USB接口将信息安全设备与主机建立连接,解析并处理USB通信协议。
SCSI协议处理模块203内置有SCSI接口设备描述符,用于向主机声明自身为SCSI设备类型,并解析处理SCSI命令。
自动运行模块204用于自动启动并运行Autorun程序,Autorun程序由所述信息安全设备的生产商预先编写,并预先存储在所述信息安全设备中;自动运行模块包括检测单元和应用程序安装单元,检测单元用于检测主机中是否已经安装了与信息安全设备相关的应用程序,应用程序安装单元用于当检测单元未检测到主机中安装了与信息安全设备相关的应用程序时,向主机中安装与信息安全设备相关的应用程序;信息安全设备相关的应用程序还包括监控程序,监控程序用于向信息安全设备发送工作模式切换命令,和/或判断当前主机***的用户权限;信息安全设备相关的应用程序由信息安全设备的生产商预先编写,并预先存储在信息安全设备中。
自动运行模块包括工作模式选定单元2041,利用Autorun程序或监控程序判断当前主机***的用户权限,并依据当前主机***的用户权限选定信息安全设备的工作模式,即如果当前主机***工作在超级用户权限下,选定信息安全设备继续工作在SCSI工作模式;如果当前主机***工作在非超级用户权限下,选定信息安全设备工作在不受限工作模式。
工作模式切换模块205用于接收Autorun程序或监控程序发送的工作模式切换命令,并将信息安全设备从默认的SCSI工作模式切换到HID工作模式;工作模式切换命令为在Windows操作***下不受用户权限限制的光盘控制指令。
复位USB总线模块206用于控制USB总线模拟一次信息安全设备的拔插事件,复位USB总线模块通过控制USB信号线上的电平变化来实现在USB总线上模拟一次信息安全设备的拔插事件。
HID协议处理模块207内置有HID接口设备描述符,用于向主机声明自身为HID设备类型,并解析处理HID命令。
信息安全模块208用于根据访问信息安全设备的用户身份信息对其访问权限进行管理控制,和进行加/解密运算。信息安全模块还包括密钥数据存储单元,用于存储密钥数据,密钥数据包括数字证书、密钥和用户私有数据;信息安全模块还包括用户程序存储单元,用于实现用户自定义算法的写入和调用。信息安全模块可以是安全设计芯片,包括智能卡芯片。
控制模块202用于控制和管理信息安全设备的工作模式,及对数据进行处理和控制。
在实际的产品设计中,可以有多种实现形式,信息安全模块可以与工作模式切换模块、HID协议处理模块、SCSI协议处理模块、控制模块、自动运行模块、复位USB总线模块、USB接口模块中的一个或几个集成在一颗芯片(可以是安全设计芯片,包括智能卡芯片)中实现;USB接口模块也可以是与主控芯片分立的USB接口芯片。比如可以利用一颗安全设计芯片(包括智能卡芯片)实现信息安全模块、HID协议处理模块、SCSI协议处理模块及工作模式切换模块的功能,利用一颗通用单片机实现控制模块的功能,利用复位电路实现控制USB总线模拟一次所述设备的拔插事件,利用存储芯片存储的Autorun程序,实现自动运行模块的功能,再利用一颗USB协议芯片实现USB接口模块的功能;本实施例提供的可自动安装的信息安全设备还可以利用存储芯片存储自动运行程序,再利用一颗安全设计芯片(包括智能卡芯片)实现信息安全模块、控制模块、工作模式切换模块、USB接口模块、复位USB总线模块、HID协议处理模块及SCSI协议处理模块的功能。其中存储芯片的存储介质可以是RAM、ROM、EPROM、EEPROM、FLASH中的一种或几种。
本实施例中的HID协议处理模块207可以由在Windows操作***下不受用户权限限制的接口协议相对应的协议处理模块来替换,比如内置有CCID接口设备描述符,用于向主机声明自身为CCID设备类型,并解析处理CCID命令的CCID协议处理模块。
实施例1与实施例2中的主机可以是台式电脑、笔记本电脑、服务器或专用机。本发明实施例实现的可自动安装的信息安全设备也可以与其它外部设备进行连接,外部设备可以但不限于是读卡器、通讯设备、数码相机、主机外设或其它专用设备。
本发明实施例的一个优选方案:信息安全设备由外壳部分和装于其内部的电路板两部分构成,电路板上的核心部件为带有USB接口的智能卡芯片(本方案中选用中兴公司的Z32H256SU芯片)、USB总线复位电路、大容量存储芯片(本方案选用SPANSION公司的S25FL004芯片),及USB接头;如图3所示,电路板上安装有智能卡芯片Z32H256SU(301),电阻R(302),大容量FLASH芯片S25FL004(304)以及USB接头(303),USB接头是用于提供信息安全设备与主机进行通信的接头;智能卡芯片Z32H256SU可以实现信息安全模块的功能。智能卡芯片Z32H256SU的D+管脚(USB数据串正端)与USB接头的D+管脚(USB数据串正端)相连,智能卡芯片Z32H256SU的D-管脚(USB数据串负端)与USB接头的D-管脚(USB数据串负端)相连,用以实现智能卡芯片Z32H256SU通过USB接头与主机进行通信,其中管脚D+和管脚D-为USB的两根信号线,负责与USB总线上的设备交换数据。智能卡芯片Z32H256SU利用一个I/O管脚通过电阻R(302)连接到USB接头的D+管脚(USB数据串正端),实现USB总线复位操作;也可以将Z32H256SU芯片的I/O管脚通过电阻R(302)连接到USB接头的D-管脚(USB数据串负端)来实现USB总线的复位操作;当将Z32H256SU芯片的I/O管脚通过电阻R连接到USB接头的D-管脚上时,信息安全设备被指定为低速USB设备(此时能够支持USB的1.5Mbps低速模式进行数据传输),当将Z32H256SU芯片的I/O管脚通过电阻R连接到USB接头的D+管脚上时,信息安全设备被指定为全速USB设备(此时能够支持USB的12Mbps全速模式进行数据传输);具体复位原理是当智能卡芯片Z32H256SU接收到Autorun程序或监控程序发送的工作模式切换命令后,Z32H256SU芯片先给该I/O管脚一个低电平,之后再给该I/O管脚一个高电平,通过控制USB信号线上的电平变化来实现USB总线模拟一次信息安全设备的拔插事件,这里也可以使该I/O管脚处于高阻状态来实现USB总线模拟一次信息安全设备的拔插事件。
智能卡芯片Z32H256SU外扩一大容量FLASH芯片S25FL004,用来存储Autorun程序以及信息安全设备相关的应用程序等。
智能卡芯片Z32H256SU能够实现对工作模式的控制和管理,以及对数据进行处理和控制;另外,本优选方案中选用的Z32H256SU智能卡芯片中带有32KB的EEPROM,用于存储数据和程序,以及256KB的FLASH用于存储程序、函数库、不常变动数据等,由于其存储空间为非易失性存储介质类型,可以实现多次擦写,为程序的升级提供了便利,同时由于其非易失特性,也使得程序的存储更加安全可靠。
上述优选方案的结构只是本发明的一个特例,在具体实施时,还可以采用内置USB复位功能的安全设计芯片来实现,比如Cypress公司的CY7C63813或者MOTOROLA公司的MOTO9085B8/JB16芯片都可以实现内置USB复位功能,在实现时,只需向USB复位寄存器写值便可以实现USB信号线上的电平变化,从而控制USB总线上模拟一次信息安全设备的拔插事件的实现,即将复位USB总线模块与信息安全模块集成在一颗芯片(可以是安全设计芯片,包括智能卡芯片)中实现,此时,电路板上就可以省掉USB复位电路部分。
在具体实施时,USB接口模块也可以是与安全设计芯片分立的USB协议芯片,比如飞利浦的USB接口芯片PDIUSBD12实现。
实施例3
本实施例提出了一种可自动安装的信息安全设备的控制方法,如图4所示,包括如下步骤:
步骤401:将信息安全设备通过USB接口与主机建立连接。
步骤402:信息安全设备声明自身为SCSI设备类型。
主机向信息安全设备发送获取设备类型的请求,信息安全设备向主机报告设备描述符为SCSI设备描述符,声明自身为SCSI设备类型。
步骤403:自动启动Autorun程序。
Autorun程序为预先存储在信息安全设备中,并由信息安全设备生产商预先编写好的。
步骤404:Autorun程序检测主机中是否已经安装了与信息安全设备相关的应用程序,如果主机中已经安装了与信息安全设备相关的应用程序,则执行步骤406,如果主机中未安装与信息安全设备相关的应用程序,则执行步骤405。
信息安全设备相关的应用程序为预先存储在信息安全设备中,并由信息安全设备生产商预先编写好的;信息安全设备相关的应用程序包括监控程序,如果主机中已经安装有信息安全设备相关的应用程序,则当主机开启时,监控程序便会自动启动。
步骤405:Autorun程序安装与信息安全设备相关的应用程序到主机中。
当应用程序安装完毕后,监控程序便会自动启动。
步骤406:Autorun程序或监控程序判断与主机连接的SCSI类型设备是否为信息安全设备。
判断的方法可以是:将Autorun程序或监控程序中预先写好的设备的产品编号(PID)和厂商编号(VID)与主机在枚举信息安全设备时从其描述符中获取到的与其连接的SCSI类型设备的产品编号(PID)和厂商编号(VID)进行比对,如果比对结果一致,则说明与主机连接的SCSI类型设备为信息安全设备,执行步骤409;如果比对结果不一致,则执行步骤407。
步骤407:继续判断其它与主机连接的SCSI类型设备是否为信息安全设备,如果查找到声明为SCSI类型的信息安全设备,则执行步骤409,如果没有查找到声明为SCSI类型的信息安全设备,则执行步骤408。
步骤408:与主机连接的SCSI类型设备均不是信息安全设备,提示错误信息,结束。
步骤409:Autorun程序或监控程序发送工作模式切换命令给信息安全设备。
工作模式切换命令为在Windows操作***下不受用户权限限制的光盘控制指令,可以使用的光盘控制指令有很多,比如可以直接调用微软多媒体指令库中直接提供出来的用于弹出光盘的多媒体指令(Multimedia Command Strings)来实现:
#include <mmsystem.h>
mciSendString(″set cdaudio door open″,NULL,0,0);
其中″set cdaudio door open″为微软多媒体指令库中直接提供出来的用于弹出光盘的多媒体指令(Multimedia Command Strings),直接调用就可以了。
除了使用上述弹出光盘指令外,还可以采用关闭光盘、音轨播放等多种方法实现,下面举出几个例子:
#define SCSI_PLAYAUD_10 0x45 //Play Audio 10-Byte(O)
#define SCSI_PLAYAUD_12 0xA5 //Play Audio 12-Byte 12-Byte(O)
#define SCSI_PLAYAUDMSF 0x47 //Play Audio MSF(O)
#define SCSI_PLAYA_TKIN 0x48 //Play Audio Track/Index (O)
步骤410:信息安全设备从默认的SCSI工作模式切换到HID工作模式。
工作模式的切换通过修改信息安全设备中预先写入的工作模式标志位来实现,比如,预先设定当工作模式标志位=0时为SCSI工作模式,当工作模式标志位=1时为HID工作模式,则当信息安全设备收到工作模式切换命令后,便会修改工作模式标志位为1,将工作模式切换到HID模式。
步骤411:信息安全设备控制USB总线模拟一次信息安全设备的拔插事件,并声明自身为HID设备类型。
USB总线模拟一次信息安全设备的拔插事件通过控制USB信号线上的电平变化实现,比如可以先给USB信号线一个低电平,再给USB信号线一个高电平实现;也可以通过使USB信号线处于高阻状态实现;还可以通过使用内置有USB总线复位功能的主控芯片,通过写其内部的寄存器相关控制位来实现。
在USB总线模拟一次信息安全设备的拔插事件后,主机会再次向信息安全设备发送获取设备类型的请求,通过读取工作模式标志位,信息安全设备向主机报告设备描述符为HID设备描述符,声明自身为HID设备类型。
步骤412:信息安全设备与主机之间通过HID设备命令进行信息安全操作。
信息安全操作包括数据交互,包括对写入的数据在信息安全设备中进行加密或对读取的数据在信息安全设备内进行解密;还包括身份认证信息处理,包括存储/验证密码信息、存储/验证签名、存储/验证证书、权限管理;还包括预置代码进行数据运算,其中预置代码包括预置用户软件部分片断,用户软件部分片断不能被读出信息安全设备,并在其内部运行进行数据运算,以及预置软件保护应用接口函数,软件保护应用接口函数是信息安全设备和软件开发商应用之间的接口级函数等等。
本实施例中的HID协议可以由在Windows操作***下不受用户权限限制的接口协议来替换,比如CCID协议,步骤410至412可以由下面的步骤替换:
步骤410′:信息安全设备从默认的SCSI工作模式切换到CCID工作模式。
步骤411′:信息安全设备控制USB总线模拟一次信息安全设备的拔插事件,并声明自身为CCID设备类型。
步骤412′:信息安全设备与主机之间通过CCID设备命令进行信息安全操作。
本实施例中步骤404~405中信息安全设备相关应用程序中可以不包括监控程序,此时发送工作模式切换命令给信息安全设备及判断与主机连接的SCSI类型设备是否为信息安全设备等操作均由Autorun程序实现,即步骤406和步骤409由下面的步骤替换:
步骤406′:Autortn程序判断与主机连接的SCSI类型设备是否为信息安全设备。
步骤409′:Autorun程序发送工作模式切换命令给信息安全设备。
实施例4
本实施例提出了一种可自动安装的信息安全设备的控制方法,如图5所示,包括如下步骤:
步骤501:将信息安全设备通过USB接口与主机建立连接。
步骤502:信息安全设备声明自身为SCSI设备类型。
主机向信息安全设备发送获取设备类型的请求,信息安全设备向主机报告设备描述符为SCSI设备描述符,声明自身为SCSI设备类型。
步骤503:自动启动Autorun程序。
Autorun程序为预先存储在信息安全设备中,并由信息安全设备生产商预先编写好的。
步骤504:Autorun程序检测主机中是否已经安装了与信息安全设备相关的应用程序。如果主机中已经安装了信息安全设备相关的应用程序,则执行步骤506,如果主机中未安装与信息安全设备相关的应用程序,则执行步骤505。
信息安全设备相关的应用程序为预先存储在信息安全设备中,并由信息安全设备生产商预先编写好的;信息安全设备相关的应用程序包括监控程序,如果主机中已经安装有信息安全设备相关的应用程序,则当主机开启时,监控程序便会自动启动。
步骤505:Autorun程序安装与信息安全设备相关的应用程序到主机中。
当应用程序安装完毕后,监控程序便会自动启动。
步骤506:Autorun程序或监控程序判断当前主机***的用户权限,如果当前主机***工作在超级用户权限下,选定信息安全设备继续工作在SCSI工作模式,执行步骤514;如果当前主机***工作在非超级用户权限下,选定信息安全设备工作在HID工作模式,执行步骤507。
判断当前主机***的用户权限的方法有很多,可以通过调用***自带的函数进行判断,比如直接调用如下***函数来实现:
#include <Windows.h>
CheckTokenMembership(NULL,AdministratorsGroup,&b);
也可以调用如下***函数实现:
#include <Windows.h>
GetUserName(lpszSystemInfo,&cchBuff);
步骤507:Autorun程序或监控程序判断与主机连接的SCSI类型设备是否为信息安全设备。
判断的方法可以是:将Autorun程序或监控程序中预先写好的设备的产品编号(PID)和厂商编号(VID)与主机获取到的与其连接的SCSI类型设备的产品编号(PID)和厂商编号(VID)进行比对,如果比对结果一致,则说明与主机连接的SCSI类型设备为信息安全设备,执行步骤510;如果比对结果不一致,则执行步骤508。
步骤508:继续判断其它与主机连接的SCSI类型设备是否为信息安全设备,如果查找到声明为SCSI类型的信息安全设备,则执行步骤510,如果没有查找到声明为SCSI类型的信息安全设备,则执行步骤509。
步骤509:与主机连接的SCSI类型设备均不是信息安全设备,提示错误信息,结束。
步骤510:Autorun程序或监控程序发送工作模式切换命令给信息安全设备。
步骤511:信息安全设备从默认的SCSI工作模式切换到HID工作模式。
步骤512:信息安全设备控制USB总线模拟一次信息安全设备的拔插事件,并声明自身为HID设备类型。
步骤513:信息安全设备与主机之间通过HID设备指令进行信息安全操作,结束。
步骤514:信息安全设备与主机之间通过SCSI设备命令进行信息安全操作。
信息安全操作包括数据交互,包括对写入的数据在信息安全设备中进行加密或对读取的数据在信息安全设备内进行解密;还包括身份认证信息处理,包括存储/验证密码信息、存储/验证签名、存储/验证证书、权限管理;还包括预置代码进行数据运算,其中预置代码包括预置用户软件部分片断,用户软件部分片断不能被读出信息安全设备,并在其内部运行进行数据运算,以及预置软件保护应用接口函数,软件保护应用接口函数是信息安全设备和软件开发商应用之间的接口级函数等等。
本实施例中的HID协议可以由在Windows操作***下不受用户权限限制的接口协议来替换,比如CCID协议,步骤511至513可以由下面的步骤替换:
步骤511′:信息安全设备从默认的SCSI工作模式切换到CCID工作模式。
步骤512′:信息安全设备控制USB总线模拟一次信息安全设备的拔插事件,并声明自身为CCID设备类型。
步骤513′:信息安全设备与主机之间通过CCID设备命令进行信息安全操作。
本实施例中步骤504~505中信息安全设备相关应用程序中可以不包括监控程序,此时发送工作模式切换命令给信息安全设备、判断当前主机***的用户权限及判断与主机连接的SCSI类型设备是否为信息安全设备等操作均由Autorun程序实现,即步骤506、步骤507和步骤510由下面的步骤替换:
步骤506′:Autorun程序判断当前主机***的用户权限,如果当前主机***工作在超级用户权限下,选定信息安全设备继续工作在SCSI工作模式,执行步骤514;如果当前主机***工作在非超级用户权限下,选定信息安全设备工作在HID工作模式,执行步骤507。
步骤507′:Autorun程序判断与主机连接的SCSI类型设备是否为信息安全设备。
步骤510′:Autorun程序发送工作模式切换命令给信息安全设备。
以上所述的实施例只是本发明较优选的具体实施方式,本领域的技术人员在本发明技术方案范围内进行的通常变化和替换都应包含在本发明的保护范围内。