一种面向物联网环境的数据加密和身份认证方法

文档序号:7978971阅读:277来源:国知局
一种面向物联网环境的数据加密和身份认证方法
【专利摘要】本发明公开一种面向物联网环境的数据加密和身份认证装置、基于usbkey的身份认证系统。所述装置,在外壳中,控制芯片与时钟、USB接口相连接,其特征是:控制芯片作为核心控制芯片与其他元器件相连,没有复位开关,只有上电复位,固件程序通过USB接口下载;固件程序主要包含usb协议的解析以及具体的应用逻辑。网页通过加载ActiveX控件调用usb驱动程序与该装置进行数据通信。本发明主要用于物联网环境中数据的加密和解密,以及远程登录时用户的身份认证。
【专利说明】一种面向物联网环境的数据加密和身份认证方法
【技术领域】
[0001]本发明涉及一种使用硬件加密和解密算法的身份认证技术,尤其涉及一种基于USB技术的能在物联网网络环境下对用户的身份进行认证的方法。
【背景技术】
[0002]随着物联网的出现和发展,信息安全问题已成为社会关注的热点,特别是物联网环境下的信息安全已成为影响国家安全、经济发展、社会稳定的重大关键问题。研制和开发适用于不同网络环境下的身份认证系统具有重要的意义。数据加密和身份认证服务是提供物联网服务中其它服务的如提和基础。
[0003]随着互联网的快速发展,各种新的应用层出不穷,如远程教育、网上购物、视频点播等,互联网已经由原来简单地提供公共信息服务转向全方位个性化服务。伴随着这些服务的出现,一个首先必须解决的问题就是:如何能够快速、准确、方便、可靠地识别用户的身份,并且尽可能地降低认证整体的成本。
[0004]目前在实际应用中,有四种常见的用户身份认证方法:用户账户+口令密码;银行卡或智能卡;虹膜或指纹;动态密码锁。虽然这些方法都可以提供认证服务,但每种方法都有自己的局限性。第一种方法使用起来简单、方便,但可靠性最差,一旦盗用者通过某种方式获得了他人的账户和密码,则该用户的切身利益将无法得到保障;后三种方法可靠性较高,但需要配置专用设备,体系结构复杂,使用不便,价格过于昂贵,影响推广使用。
[0005]Usbkey作为一种经济实用的解决方案得到了广泛的应用。但现存的usbkey解决方案也存在一些不足。如用户的用户名和密码存储在usbkey存储区中且不可修改,加密后的用户名和密码等信息在网络中传输,卡操作系统有可能存在后面。由于用户的用户名和密码存储在usbkey存储区中且不可被修改,网络中传输的数据格式是固定的,所以数据就很容易被截获和破解。如数据被破解后,用户就必须去服务器端的管理部门更换usbkey即重新写入用户名和密码等信息,给服务器端的管理带来麻烦。
[0006]在因特网环境中,典型的B/S结构的Web应用系统模式为:客户端浏览器接收Web服务器提供的数据,按标准的HTML语言对数据进行解释,并在浏览器窗口中表现出来。HTML语言的表述能力限制了浏览器窗口能力。要实现基于硬件识别技术的身份认证系统与Web应用系统的集成,客户端必须具有读取USBKey及本地硬件信息,并进行一定数据处理的能力。
[0007]USB总线是一种串行总线,支持主机与各式各样即插即用的外设之间进行数据传输。它由主机预定传输数据的标准协议。在总线上的各种外设上分享USB总线带宽。当总线上的外设和主机在运行时,允许自由添加、设置、使用以及拆除一个或多个外设。一个完整的USB总线系统可以分为三部分:USB的主机、USB的设备以及USB的互联。在任何USB总线系统中只能有一个主机。主机系统中提供USB总线接口驱动的模块,称作USB总线主机控制器。主机系统中USB总线的根(节点)集线器,通过次级的集线器则可以连接更多的外设。USB总线的外设可以分为网络集线器和功能外设两大类。USB总线连接外设和主机时,利用菊花链的形式对端点加以扩展,形成了金字塔型的外设连接结构。
[0008]USB标准命令共有11种,对于USB MASS STORAGE类设备来讲,主机并没有发出全部的标准命令,所以设备只要支持USB MASS STORAGE类设备需要的标准请求即可实现枚举过程。USB标准命令为8个字节长度,主要功能是完成USB设备的配置操作.USB MASSSTORAGE类设备主要用到以下3种标准命令:GET DESCRIPTER,用于获取设备描述符、配置描述符、语言ID、产片序列号、厂商字符串、设备序列号;SET ADDRESS,用于设置USB MASSSTORAGE类设备的地址;SET CONFI⑶RATION,用于设备USB设备的配置值。主机为了获取设备信息,对某些命令可能发多次请求。如果枚举成功,主机将发现新设备。随后USB主机根据枚举的数据,发送USB设备特定的功能代码。然后USB主机和设备端就可以进行数据通信了。
[0009]ActiveX控件是Windows标准控件的一种扩充机制,很适合应用在网络环境中,作为自包含代码的数据单元在网络上传输。HTML语言允许嵌入脚本语言(IE支持VB-Script和JavaScript),并且脚本语言可以调用ActiveX控件的方法和属性。
[0010]由于本发明主要应用于windows XP操作系统中,USB协议由主从两部分组成。为了保证usbkey设备与主机通信的安全性,完全自主解析USB设备端协议和自主设计windows XP上的USB驱动程序,确保了程序中不存在后门。USB驱动的设计采用DriverStudio3.2和VC++6.0工具进行开发。这样就可以保证usbkey卡操作系统和应用程序的安全性。

【发明内容】

[0011]为了克服现有的usbkey这种信息格式固定的不足和管理的不便,本发明的目的在于提供一种解决方案,该方案不仅允许用户随意修改用户名和密码,并且每次认证的信息也是不同的。
[0012]本发明的以上目的通过以下的技术方案实现:
一个usbkey装置。在usbkey的存储区中预留3个区域。一个用来保存用户名,一个用来保存用户密码,一个用来保存用户的RSA私钥。用户身份的验证分三步:第一步,将用户在WEB表单上输入的用户名和密码传入usbkey中,与usbkey中存储的用户名和密码进行对比,如果正确则进入第二步,否则返回错误信息要求用户重新输入。第二步,将随机函数产生的指定长度的随机数用RSA加密算法和usbkey中存储的RSA私钥进行加密,将随机数,加密后的数据和USBKEYID —起发送到服务器。第三步,在服务器端通过用同样的算法和RSA私钥对得到的随机数进行加密,再与接收到的加密数据进行对比。如果一致则提供用户请求的服务。
[0013]由于用户名和密码只存储在usbkey存储区中,所以用户可以通过配置软件随意更改自己的用户名和密码,无需与服务器同步。但是RSA私钥必需一致,所以用户是不允许修改私钥,私钥的修改只能由服务器端的管理人员来完成。
[0014]一个卡操作系统。卡操作系统主要有USB协议的解析、flash的读写和单片机主应用程序组成。USB协议解析式端点O作为控制端点,端点3作为输入端点,端点4作为输出端点。
[0015]一个USB驱动。USB驱动开发是将端点3初始化为输入端点,端点4初始化为输出端点。仅实现了 read和write函数,未实现iocontrol函数。
[0016]一个上位机配置软件。用于用户修改用户名和密码。
[0017]本发明的有益效果是,可允许用户通过配置软件修改用户名和密码,用户的验证信息为随机产生的指定长度的随机数。
【专利附图】

【附图说明】
[0018]下面结合附图和实施例对本发明进一步说明。
[0019]图1是本发明实施例的应用原理图。
[0020]图2是本发明实施例的usbkey的原理图。
[0021 ]图3是本发明实施例的usb协议setup流程图。
[0022]图4是本发明实施例的单片机应用程序流程图。
[0023]图5是本发明实施例的USB设备请求调用图。
[0024]图6是本发明实施例的上位机配置软件。
[0025]图7本发明实施例的ActiveX控件函数列表。
[0026]图8本发明实施例的远程登录界面。
【具体实施方式】
[0027]体现本发明特征与优点的一些典型实施例将在以下的说明中详细叙述。应理解的是本发明能够在不同的实施例上具有各种的变化,其皆不脱离本发明的保护范围,且其中的说明及附图在本质上是当作说明之用,而非用以限制本发明。
[0028]本发明实施例的基于usbkey的身份认证系统,具有本发明实施例的一种面向物联网环境的数据加密和身份认证装置。
[0029]如图1所示,本发明实施例的基于usbkey的身份认证系统,主要由以下几部分组成:USbkey装置、客户端、网络和服务器。
[0030]从总的工作原理来讲,用户在客户端打开登录页面前,先插入usbkey,然后在登录页面的相应位置输入用户名和密码,单击submit按钮。在此过程中,用户在登录页面上输入的用户名和密码传入到usbkey中,在usbkey中与存储区中存储的用户名和密码进行对比,如果正确,则产生指定长度的认证随机数,用RSA私钥加密后,和明文一起发送到服务器进行下一步认证。认证全部正确则返回用户请求的服务。
[0031]首先介绍usbkey装置。本发明优选实施例的基于usbkey的身份认证系统中的一种面向物联网环境的数据加密和身份认证装置是一个完整的单片机系统。通过USB接口与客户端通信,接收客户端登陆页面中输入的用户名和密码,在usbkey中对用户名和密码进行比较。产生指定长度的随机数,并采用RSA私钥对随机数进行加密和发送。每个用户拥有一个唯一的usbkey装置。Usbkey装置中存储了用户的用户名、密码和RSA私钥。
[0032]下面再介绍所述usbkey装置的软硬件配置。从硬件配置上讲,usbkey装置包括一个外壳,一个带有加密算法的单片机、一个时钟等被封装在所述外壳内。如图2所示,usbkey装置的内部模块连接关系为:控制芯片分别与USB接口和时钟相连。单片机接收客户端输入的信息,对信息进行相应的处理并返回给客户端需要的信息。
[0033]所述usbkey装置的核心控制芯片优选某公司的A980芯片。A980系列安全芯片是A780芯片的升级产品,实现了增强功能、提升性能、降低成本的要求。
[0034]A980芯片采用自主研发的32位RISC CPU为核心处理器,内置公钥(SM2、RSA、ECC)、分组(SM1、SMS4、SSF33、DES/3DES、AES)和散列(SM3、SHA-1、SHA-256)等三类多种密码算法加速引擎。覆盖了国际和国内标准的主流加密算法,可满足电子政务、电子商务等不同领域对安全加密和远程身份认证的需求。
[0035]A980 芯片配置了 8KB SRAM.256KB FLASH 存储器和 USB、GP10、UART、SP1、IS07816等通讯接口,具有成本低、功耗小、性能高、速度快的特性。
[0036]A980芯片可应用于USB KEY、RF-SIM, SD-KEY、读卡器、加密卡等多种安全产品。
[0037]A980芯片特性:32位RISC CPU,工作主频12/48MHz ;MMU存储保护,8+7K字节片内RAM ;
256K字节片内FLASH,可分别作为程序存储器和数据存储器;密码算法协处理器,包
括:
公钥算法:SM2、RSA (1024?2048 位),ECC (192?256 位);
分组算法:SM1、SSF33、SMS4、DES/3DES、AES ;
散列算法:SM3、SHA-U SHA-256 ;
物理噪声真随机数发生器;1路WDT看门狗定时器;2路定时器,I路实时钟计数器;12位GPIO接口,支持SP1、UART ;USB 2.0全速(12Mbps)工作模式;复位控制器(支持片内上电复位);中断控制器;芯片安全组件(包括防SPA/DPA攻击、存储保护等);支持3.3V±5%电源输出,输出电流最大50mA ;防静电保护(ESD):HBM4000V ;工作温度:_25°C?+ 85°C ;工作电压:3.0V?5.5V ;工作电流:平均4mA,公钥密码运算时最大16mA ;
封装形式:SS0P24或LQFP64。
[0038]如图3所示。USBKEY装置与客户端连接后,USB接口提供5V电源,然后单片机进入复位状态,之后进行USB协议的解析。在USB协议解析中,解析了 USB标准协议中的GET_DEVICE_DESCRIPTOR、GET_C0NFIG_DESCRIPT0R、SET_DEVICE_ADDR 和 SET_C0NFIG 四条标准命令。在设备描述符中将设备描述成USB2.0、厂商ID为0XFFFF、设备ID为0X1234.在配置描述符中将接口描述成MASS STORAGE、接口子类描述成SCS1-2、接口协议描述成BULKONLY、端点3描述成BULK输入、端点4描述成BULK输出。
[0039]如图4所示。USBKEY装置与客户端连接后,首先进行USB接口的初始化,然后进行USB枚举,之后运行固件程序。单片机固件程序实现了两个模式。一是配置模式,用于用户修改用户名和密码。一是使用模式,用于判断用户输入的用户名和密码是否正确以及进行与服务器之间的身份认证。
[0040]本发明优选实施例的基于usbkey的身份认证系统中的USB驱动程序是使用Driver Studio3.2和VC++6.0自主开发的。USB设备的WDM驱动程序也采用分层结构:顶层为USB设备驱动程序,对于某些设备可能还有中间层驱动程序,最后一层为USB总线驱动程序,它负责和USB硬件打交道。
[0041]如图5所示,USB设备驱动程序并不和硬件交互,这和其它传统的总线不一样。对USB设备驱动程序来说,它靠创建URB (USB REQUST BLOCK)并把URB提交到总线驱动程序,最终由总线驱动来完成相应的设备操作。总线驱动程序理解USB通信机制,并知道如何和USB设备进行数据的传输。当它接收到设备驱动请求包时,会把这些请求数据重新组织成具有USB特定格式的事务来进行传输。
[0042]结合图5,可以将设备和主机通信流程简述如下:当用户要与USB设备进行数据传输操作时,上层应用程序调用Windows API函数进行I/O请求,并把它传递给USB设备驱动程序。这个I/O请求包传递至设备驱动程序后,设备驱动程序根据该请求包中包含的IOCTL进入相应的派遣例程进行处理,在派遣例程中根据不同的传输类型构造相应USB请求块(URB),然后传递给USB总线驱动程序(某些设备可能需要经过中间层驱动程序处理)。USB总线驱动程序根据IRP中所含的URB执行相应的操作,并把所要传输的数据组织成USB事务传输给USB设备,然后把该IRP操作的结果返回给USB设备驱动程序。由USB设备驱动程序层层向上将IRP操作结果传回给应用程序完成本次数据传输。
[0043]如图6所示。上位机配置软件的图像界面包含:打开设备、关闭设备、配置用户名、配置密码、发送数据区、发送数据、接收数据和退出程序。配置软件的界面启动以后,连接usbkey装置,单击打开设备命令按钮,设备就被打开了,接下来就可以进行配置了。将用户名对应的字符的ASCII码输入到发送数据区,然后单击配置用户名命令按钮,用户名就配置完成。密码的配置与此相同。发送数据命令按钮和接收数据命令按钮用于测试数据的发送与接收是否正确。
[0044]本发明优选实施例的基于usbkey的身份认证系统中的ActiveX控件是使用VC++6.0开发的。ActiveX控件是一个自包含代码的组件,它有自己的永久状态,并且ActiveX控件与包容器之间通过COM接口进行通信,所以ActiveX控件具有普遍的适应性,更适合于浏览器与用户的交互。当打开登录页面时,在HTML代码中,通过CLSID来指定ActiveX控件的类型,同时希望浏览器自动找到ActiveX控件并注册到客户机上。
[0045]如图7所不。ActiveX控件包含的函数为:DllRegisterServer,DllUnregisterServer, DllGetClassObject, DllCanUnloadNow, Findusb , Usbopen,usbread , usbwrite, AboutBox, test.DllRegisterServer 函数用于注册 ActiveX 控件。DllUnRegisterServer 函数用于卸载 ActiveX 控件。DllGetClassObject 函数用于获得类对象。DllCanUnloadNow函数用于将组件从程序的内存中卸载。Findusb函数用于查找usbkey装置是否连接到了客户端。Usbopen函数用于打开usbkey装置。Usbread函数用于读取usbkey装置的数据。Usbwrite函数用于向usbkey装置写入数据。Test函数用于测试控件是否可用。AboutBox函数用于输出一些关于控件的信息。
[0046]如图8所示。用户远程登录的界面,输入用户名和密码后,点击命令按钮submit。如果信息正确就可以登录系统,否则就重新输入用户信息。
【权利要求】
1.一种面向物联网环境的数据加密和身份认证装置,用于网络环境中远程登录时客户端用户身份的认证,在外壳中,控制芯片与时钟、USB接口相连接,其特征是:控制芯片作为核心控制芯片与其他元器件相连,没有复位开关,只有上电复位,固件程序通过USB接口下载;固件程序与上位机驱动程序相对应,配置软件和ActiveX控件调用驱动程序,根据固件程序的应用逻辑进行配置和正常调用。
2.根据权利要求1所述的固件程序,其特征是:固件程序包含USBSETUP、FLASH读写和数据加密三部分。
3.根据权利要求2所述的USBSETUP程序,其特征是:解析了 USB标准协议中的GET_DEVICE_DESCRIPTOR、GET_C0NFIG_DESCRIPT0R、SET_DEVICE_ADDR 和 SET_C0NFIG 四条标准命令;在设备描述符中将设备描述成USB2.0、厂商ID为0XFFFF、设备ID为0X1234.在配置描述符中将接口描述成MASS STORAGE、接口子类描述成SCS1-2、接口协议描述成BULKONLY、端点3描述成BULK输入、端点4描述成BULK输出。
4.根据权利要求2所述的FLASH读写程序,其特征是:写扇区时先对指定的扇区(IK)进行擦除操作,然后在写入指定长度的数据,用户名和密码的程度都是固定的8字节;读扇区时将指定扇区的数据拷贝指定的变量中;在usbkey的存储区中预留3个区域:一个用来保存用户名,一个用来保存用户密码,一个用来保存用户的RSA私钥;用户身份的验证分三步:第一步,将用户在WEB表单上输入的用户名和密码传入usbkey中,与usbkey中存储的用户名和密码进行对比,如果正确则进入第二步,否则返回错误信息要求用户重新输入;第二步,将随机函数产生的指定长度的随机数用RSA加密算法和usbkey中存储的RSA私钥进行加密,将随机数,加密后的数据和USBKEYID —起发送到服务器;第三步,在服务器端通过用同样的算法和RSA私钥对得到的随机数进行加密,再与接收到的加密数据进行对比;如果一致则提供用户请求的服务。
5.根据权利要求2所述的数据加密程序,其特征是:使用RSA加密算法对其进行加密,RSA密钥的模长为1024位,密钥从FLASH中指定的区域中读出。
6.根据权利要求1所述的上位机驱动程序,其特征是:使用DriverStudio3.2和VC++6.0开发,厂商ID为0XFFFF、设备ID为0X1234,端点3为BULK输入、端点4为BULK输出,驱动程序中实现了 read和write两个函数,没有实现对应的iocontrol函数,驱动程序使用固定的GUID来访问。
7.根据权利要求1所述的配置软件,其特征是:通过操作系统的注册表中USB驱动程序的⑶ID来查找usbkey装置,如果usbkey装置没有连接,则提示用户插入usbkey装置,Usbkey装置连接以后则可以单击打开设备命令按钮,打开usbkey装置,然后就可以对usbkey装置进行相应的配置操作了。
8.根据权利要求1所诉的ActiveX控件,其特征是:使用VC++6.0的MFC ActiveX向导生成ActiveX的框架,软化通过USB驱动程序的⑶ID来访问usbkey装置,ActiveX控件提供了 findusb、usbread、usbwrite、usbopen 函数:Findusb 函数用于查找 usbkey 装置是否已经连接,Usbopen函数打开usbkey装置,Usbread和usbwrite函数用于和usbkey装置进行数据交互。
【文档编号】H04L9/32GK103427989SQ201210151645
【公开日】2013年12月4日 申请日期:2012年5月16日 优先权日:2012年5月16日
【发明者】王志良, 李宗辉, 谷学静, 王鲁 申请人:王志良, 李宗辉, 谷学静, 王鲁
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1