一种基于通信消息实时认证的U盘访问方法与流程

文档序号:13282802阅读:464来源:国知局
一种基于通信消息实时认证的U盘访问方法与流程

本发明属于网络安全技术领域,特别是一种基于通信消息实时认证的u盘访问方法。



背景技术:

近年来,随着社会信息化程度的不断提高,u盘已经不可避免的出现在我们日常的学习与生活中。但是,随着现在u盘的应用越来越普遍,随之产生的问题也渐渐被大众所关注。一方面,由于普通u盘的使用是透明的,一旦丢失,u盘存储的所有数据和文件都将被任意读出,对其存储过的敏感信息也没有提供可靠的数据消除手段,易被他人恢复窃用;另一方面,当u盘能够被合法访问时,也要同时防范病毒木马、黑客对u盘的非法操作,这也就促使了安全u盘的出现。目前,市场上的安全u盘大都基于特定的安全芯片,采取身份认证、数据访问权限控制、加解密系统来实现对u盘的全盘数据加密保护和安全区数据开启的口令控制,以达到充分保护用户安全u盘内数据的目的。

以某型安全u盘为例,介绍主流的安全u盘技术方案。

1安全u盘系统组成

图1所示为安全u盘硬件原理框图,如图1所示,该方案采用华芯安全芯片安全存储控制芯片,该芯片提供usb3.0接口,支持bot协议,片内集成sm2/sm3/sm4国密算法,支持真随机数发生器。通过安全芯片存储控制器,对外提供usb3.0接口,对内提供两个nandflash的访问通道,电源管理单元采用开关电源实现,为安全芯片和两个nandflash供电。

图2所示为安全u盘系统软件组成框图,如图2所示,由u盘嵌入式软件、u盘驱动、安全支撑中间件、专用客户端组成。其中u盘嵌入式软件运行在设备内部,实现usb接口通信、对设备的安全管理、以及大容量存储管控等功能;设备驱动软件运行在主机端,与设备直接通信,实现设备的读写访问;安全支撑中间件以库的形式提供api访问接口,实现上层请求包的安全过滤、报文的解析与重组、定制的文件系统、与设备驱动的数据通信、自定义scsi命令等功能;专用管理软件运行在主机端操作系统上,提供图形界面的用户操作接口和配置管理接口,主要实现用户登录认证、用户管理、对设备存储空间的读写操作和销毁操作等功能。

2安全u盘工作原理

1)用户登录认证

基于安全芯片来验证登录用户的口令/指纹/ic-key,若非法尝试超过预设限制,设备将自行锁定;若验证通过,则登录用户可以通过安全u盘配套的客户端软件对u盘文件进行访问,实现了只有合法的用户才能访问u盘的数据;

2)u盘全盘数据加密

利用安全芯片提供的强加密算法,对u盘全盘数据进行硬件加密,可有效的防止u盘丢失后数据泄露;

3)禁止非法进程访问、对病毒、木马的免疫

配套的安全u盘客户端基于定制的文件系统和自定义的scsi协议,实现对u盘数据的访问及管理。由于非法进程、木马、病毒是通过标准的文件系统、scsi协议访问u盘,因此通过配套的客户端可实现u盘对非法进程、木马、病毒的免疫。

4)自定义scsi协议的实现

图3所示为自定义scsi协议的数据传输流程图,如图3所示,u盘属于usb规范中的massstorageclass类别,massstorageclass类设备采用bulk-only-transport(简称bot)协议实现与主机进行数据交互。在bot协议工作模式下,有三种类型数据包在主机与设备之间进行传输:包括cbw(commandblockwrapper,命令块包)、csw(commandstatuswrapper,命令状态包)和普通数据。usb遵循scsi协议的bot传输,一次完整的数据传输都以cbw命令包开头,中以csw命令状态包结束,中间可能有输入数据包(datain)或输出数据包(dataout)。

u盘接收到一个cbw命令包后,解析出cbw包传递的scsi命令,然后按照自定义的scsi协议定义命令码执行相应的操作,如果cbw命令包提示后续有相应的数据包,设备将等待接收data-out数据包;在设备处理完cbw请求后,根据命令不同,若需要反馈响应数据包,则以data-in数据包形式传递给宿主机,最后传递csw包,表明此次命令的处理情况。cbw/csw指令格式如表1、表2所示。

表1cbw指令格式

表2csw指令格式

综上可知,欲实现自定义的scsi命令,需在安全支撑中间件的scsi层构建cbw包时,按照自定义的scsi协议填充cbw命令包中scsi字段;u盘固件接收到一个cbw命令包后,解析出cbw传递的命令,然后按照自定义的scsi命令集中定义的命令码执行相应的操作。

前文所述的安全u盘系统技术方案是通过定制的客户端,利用自定义的scsi命令访问u盘。由于操作系统无法理解客户端与u盘之间通信协议,因此只能通过配套的客户端对u盘访问。但利用自定义的协议来保证特定的进程访问安全u盘的方法安全强度较低,黑客可利用bus-hound软件抓取客户端与u盘之间的通信数据,通过对抓取数据的分析,可轻易破解自定义的scsi协议,当合法用户认证通过后,黑客可根据破解的scsi协议,窃取u盘数据。



技术实现要素:

本发明的目的在于提供一种基于通信消息实时认证的u盘访问方法,其中,包括:步骤一:终端根据sm2密钥交换协议,向u盘发起密钥协商流程,双方协商初始密钥,密钥1用于bot协议的hmac验证,密钥2用于加解密bot部分协议数据;步骤二:终端等待接收业务请求,如果没有接收到业务请求,则继续等待,如接收到,则转步骤三;步骤三:终端根据bot协议中cbw数据包格式进行组包,并通过usb接口发送至u盘;步骤四:u盘接收到cbw数据包后,对cbw数据包进行解密;步骤五:u盘进行hmac校验,如果hmac校验通过,则执行步骤六,如果hmac校验未通过,则丢弃该数据包,将u盘状态置位接收cbw数据包状态,跳转步骤二;步骤六:如果u盘需接收data-out阶段/发送data-in阶段业务数据,那么将u盘状态设置为接收data-out阶段业务数据状态/发送data-in阶段业务数据状态,跳转至步骤七,如果u盘不需接收data-out阶段业务数据/发送data-in阶段业务数据,那么跳转至步骤九;步骤七:u盘发送data-out阶段业务数据/接收data-in阶段业务数据,并等待接收返回的csw数据包;步骤八:u盘接收data-out阶段业务数据/发送data-in阶段业务数据;步骤九:u盘根据bot协议中csw数据包格式进行组包,并通过usb接口发送;步骤十:终端接收到csw数据包后,对csw数据包进行解密和hmac校验,如果校验通过,更新安全支撑中间件的密钥1和密钥2,如果校验未通过,返回校验失败;步骤十一:跳转到步骤二。

根据本发明的基于通信消息实时认证的u盘访问方法的一实施例,其中,步骤一中,密钥1以及密钥2为16字节初始密钥。

根据本发明的基于通信消息实时认证的u盘访问方法的一实施例,其中,步骤4中的bot协议的组包流程包括:根据业务请求,解析出要发送的scsi协议指令;根据解析出的scsi协议指令,填充csw数据包;利用随机数将scsi协议指令补齐至16字节,记补齐后的scsi指令为scsi16;利用密钥1和openssl提供的sm3算法服务,计算hmac校验码,hmacvalue=hmac密钥1(cbw15||scsi16),并hmacvalue的前16字节填充至csw数据包中的hmac校验码字段;利用密钥2和openssl提供的sm4算法服务,对scsi16加密,加密结果记为scsi16-加密-密钥2,将scsi16-加密-密钥2填充至csw数据包中加密后的scsi协议字段。

根据本发明的基于通信消息实时认证的u盘访问方法的一实施例,其中,步骤五具体包括:利用密钥2和安全芯片提供的sm4算法服务,对cbw数据包中加密后的scsi协议字段解密,解密结果记为scsi16-解密-密钥2-u盘;将cbw数据包中的0~14字节记为cbw15-u盘;利用密钥1和安全芯片提供的sm3算法服务计算hmacvalue-u盘=hmac密钥1(cbw15-u盘||scsi16-解密-密钥2-u盘);判断hmacvalue-u盘的前16字节数据与cbw数据包中的hmac校验码字段是否相等。

根据本发明的基于通信消息实时认证的u盘访问方法的一实施例,其中,步骤九具体流程包括:(1)填充csw数据包的对应字段,记为csw13-u盘;(2)利用安全芯片提供的真随机数发生器产生32字节随机数,作为下一轮hmac密钥和加解密密钥,记为privatekeynext,其中前16字节为hmac算法密钥,记为密钥1’,后16字节为sm4算法密钥,记为密钥2’;(3)利用密钥1和安全芯片提供的sm3算法服务计算hmacvalue-u盘-csw=hmac密钥1(csw13-u盘||privatekeynext),并将hmacvalue-u盘-csw的前16字节填充至csw数据包校验值字段;(4)利用密钥2和安全芯片提供的sm4算法服务,对privatekeynext进行加密,加密结果记为privatekey32-加密-密钥2-u盘,并将privatekey32-加密-密钥2-u盘填充至csw数据包中下一轮hmac密钥和加解密密钥的加密值字段;(5)更新u盘固件中的密钥1和密钥2,其中,密钥1=privatekeynext的前16字节,密钥2=privatekeynext的后16字节。

根据本发明的基于通信消息实时认证的u盘访问方法的一实施例,其中,步骤十具体流程如下:(1)利用密钥2和openssl提供的sm4算法服务,对csw数据包中下一轮hmac密钥和加解密密钥的加密值字段解密,解密结果记为privatekey32-解密-密钥2;(2)将csw数据包中的0~12字节记为csw13;(3)利用密钥1和openssl提供的sm3算法服务计算hmacvalue-csw=hmac密钥1(csw13||privatekey32-解密-密钥2);(4)判断hmacvalue-csw的前16字节数据与csw数据包校验值字段是否相等。

根据本发明的基于通信消息实时认证的u盘访问方法的一实施例,其中,步骤十中密钥1=privatekey32-解密-密钥2的前16字节;密钥2=privatekey32-解密-密钥2的后16字节。

本发明提供了一种基于通信消息实时认证的u盘访问方法,当用户通过登录认证后,安全支撑中间件向u盘发起密钥协商流程,双方之间协商用于hmac消息认证的密钥和用于加密scsi命令的密钥。安全支撑中间件与u盘之间基于自定义的scsi指令和hmac消息认证协议实现数据交互。由于安全中间件与u盘在接收到数据后,对通信数据的完整性和来源进行验证,克服了安全u盘系统自定义通信协议易于破解的缺陷,有效的保证了合法的进程访问合法的u盘。

附图说明

图1所示为安全u盘硬件原理框图;

图2所示为安全u盘系统软件组成框图;

图3所示为自定义scsi协议的数据传输流程图;

图4所示为本发明的安全u盘系统结构框图;

图5所示为本发明基于通信消息实时认证的u盘访问方法的流程图。

具体实施方式

为使本发明的目的、内容、和优点更加清楚,下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。

图4所示为本发明的安全u盘系统结构框图,图5所示为本发明基于通信消息实时认证的u盘访问方法的流程图,如图4以及图5所示,本发明提出的基于通信消息实时认证的u盘访问方法的处理流程如图所示,包括以下步骤:

步骤一:用户登录认证成功后,根据sm2密钥交换协议,安全支撑中间件向u盘发起密钥协商流程,双方协商两个16字节初始密钥,密钥1用于bot协议的hmac验证,密钥2用于加解密bot部分协议数据;

步骤二:安全支撑中间件scsi层等待接收来自访问控制模块和定制的文件系统模块的业务请求;

步骤三:如果安全支撑中间件scsi层没有接收到业务请求,则跳转至步骤二;

步骤四:如果安全支撑中间件scsi层接收到来自访问控制模块和定制的文件系统模块的业务请求,那么根据改进的bot协议中cbw数据包格式进行组包,并通过usb接口发送至u盘,改进的bot组包流程包括:

改进的cbw数据包格式如表3下:

表3

根据业务请求,解析出要发送的自定义scsi协议指令;

根据解析出的scsi协议指令,填充表3中dcbwsignature、dcbwtag、dcbwdatatransferlength、bmcbwflags、bcbwlun、bcbwcblength字段,表3中字节0至字节14记为cbw15;

由于不同业务请求的scsi协议指令长度不同,因此利用随机数将scsi协议指令补齐至16字节,记补齐后的scsi指令为scsi16;

利用密钥1和openssl提供的sm3算法服务,计算hmac校验码,hmacvalue=hmac密钥1(cbw15||scsi16),并hmacvalue的前16字节填充至表3中的hmac校验码字段;

利用密钥2和openssl提供的sm4算法服务,对scsi16加密,加密结果记为scsi16-加密-密钥2,将scsi16-加密-密钥2填充至表3中加密后的scsi协议字段;

步骤五:u盘接收到cbw数据包后,对cbw数据包进行解密和hmac校验,具体流程如下:

利用密钥2和安全芯片提供的sm4算法服务,对cbw数据包中加密后的scsi协议字段解密,解密结果记为scsi16-解密-密钥2-u盘;

将cbw数据包中的0~14字节记为cbw15-u盘

利用密钥1和安全芯片提供的sm3算法服务计算hmacvalue-u盘=hmac密钥1(cbw15-u盘||scsi16-解密-密钥2-u盘);

判断hmacvalue-u盘的前16字节数据与cbw数据包中的hmac校验码字段是否相等;

步骤六:相等则校验通过,如果hmac校验通过,则根据自定义的scsi协议执行相应动作;

步骤七:如果hmac校验未通过,那么;

丢弃该数据包,将u盘状态置位接收cbw数据包状态;

跳转至步骤十六。

步骤八:如果u盘需接收data-out阶段/发送data-in阶段业务数据,那么将u盘状态设置为接收data-out阶段业务数据状态/发送data-in阶段业务数据状态,跳转至步骤十;

步骤九:如果u盘不需接收data-out阶段业务数据/发送data-in阶段业务数据,那么跳转至步骤十二;

步骤十:安全支撑中间件发送data-out阶段业务数据/接收data-in阶段业务数据,并等待接收返回的csw数据包;

步骤十一:u盘接收data-out阶段业务数据/发送data-in阶段业务数据,并完成处理;

步骤十二:u盘根据改进的bot协议中csw数据包格式进行组包,并通过usb接口发送至安全支撑中间件,具体流程包括:

改进的csw数据包格式如表4:

表4改进的csw数据包格式

(1)u盘固件根据业务处理结果填充表4中的dcswsignature、dcswtag、dcswdataresidue、bcswstatus字段,记为csw13-u盘;

(2)利用安全芯片提供的真随机数发生器产生32字节随机数,作为下一轮hmac密钥和加解密密钥,记为privatekeynext,其中前16字节为hmac算法密钥,记为密钥1’,后16字节为sm4算法密钥,记为密钥2’;

(3)利用密钥1和安全芯片提供的sm3算法服务计算hmacvalue-u盘-csw=hmac密钥1(csw13-u盘||privatekeynext),并将hmacvalue-u盘-csw的前16字节填充至表4中csw数据包校验值字段;

(4)利用密钥2和安全芯片提供的sm4算法服务,对privatekeynext进行加密,加密结果记为privatekey32-加密-密钥2-u盘,并将privatekey32-加密-密钥2-u盘填充至表4中下一轮hmac密钥和加解密密钥的加密值字段;

(5)更新u盘固件中的密钥1和密钥2,其中

密钥1=privatekeynext的前16字节

密钥2=privatekeynext的后16字节

步骤十三:安全支撑中间件接收到csw数据包后,对csw数据包进行解密和hmac校验,具体流程如下:

(1)利用密钥2和openssl提供的sm4算法服务,对csw数据包中下一轮hmac密钥和加解密密钥的加密值字段解密,解密结果记为privatekey32-解密-密钥2;

(2)将csw数据包中的0~12字节记为csw13;

(3)利用密钥1和openssl提供的sm3算法服务计算hmacvalue-csw=hmac密钥1(csw13||privatekey32-解密-密钥2);

(4)判断hmacvalue-csw的前16字节数据与csw数据包校验值字段是否相等;

步骤十四:如果校验通过,那么:

更新安全支撑中间件的密钥1和密钥2

密钥1=privatekey32-解密-密钥2的前16字节;

密钥2=privatekey32-解密-密钥2的后16字节;

返回csw数据包;

步骤十五:如果校验未通过,返回校验失败;

步骤十六:跳转到步骤二,循环以上的处理过程。

本发明基于对称密码体制提出了一种用于实体间通信消息实时校验认证的方法,可以保证u盘不被非法进程访问,提高了u盘系统的安全性能;通信消息的实时校验认证方法基于sm4和hmac算法实现,本发明以很小的u盘通信性能损耗为代价,实现了sm4和hmac算法“一次一密”的密钥更新方式,在保证u盘通信性能的同时,使安全协议具有较高的安全性能。

本发明基于对称密码体制提出了一种用于专用客户端、安全中间件与u盘安全通信的方法,通过对交互消息来源的实时认证,保证了只有合法的进程才能访问安全u盘,在这种通信机制下,有效的解决了黑客利用破解自定义scsi协议手段窃取u盘信息的漏洞,与现有技术相比,极大的提高了u盘的安全性能。

本发明一种基于通信消息实时认证的u盘访问方法,通过在u盘固件中增加sm2/sm3算法库,在安全支撑中间件中基于openssl增加sm2/sm3/sm4算法支持库,实现安全支撑中间件与安全u盘的密钥协商;改进安全支撑中间件scsi层和u盘固件中的bot协议,利用加密部分bot协议数据和在bot协议数据包中增加hmac校验的方法,实现安全支撑中间件与u盘交互消息的实时认证,可以有效的保证合法的进程访问合法的u盘。

以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变形,这些改进和变形也应视为本发明的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1