发明内容
基于现有技术的不足,本发明提供了一种提高网络应用安全性的方法和系统。所述技术方案如下:
一种提高网络应用安全性的方法,所述方法包括:
客户端主机内的客户端软件根据用户输入的信息生成协议报文,并拆分为多个IP数据包发送;
所述客户端主机内的网络过滤驱动接收并缓存所述多个IP数据包,进行组包操作得到所述协议报文;
所述网络过滤驱动根据约定的协议解析所述协议报文,判断所述协议报文中是否存在所述网络过滤驱动、智能密钥设备和应用服务器预先约定的关键信息;
如果所述协议报文中存在所述关键信息,则所述网络过滤驱动将所述协议报文发送给所述智能密钥设备,所述智能密钥设备解析所述协议报文得到所述关键信息,输出该关键信息供用户确认;
如果接收到用户确认关键信息正确的信号,则所述智能密钥设备对所述协议报文进行签名,返回签名结果给所述网络过滤驱动,所述网络过滤驱动根据所述签名结果和协议报文生成新的协议报文,将该新的协议报文拆分为多个IP数据包,通过网卡驱动发送给所述应用服务器;
如果接收到用户确认关键信息不正确的信号或在预设的时间内没有接收到用户进行确认的信号,则所述智能密钥设备进行异常处理;
如果所述协议报文中不存在所述关键信息,则所述网络过滤驱动将缓存的所述多个IP数据包通过所述网卡驱动发送给所述应用服务器。
所述客户端主机内的网络过滤驱动接收并缓存所述多个IP数据包,进行组包操作得到所述协议报文,具体包括:
所述客户端主机内的网络过滤驱动接收并缓存所述多个IP数据包;
将所述多个IP数据包中的目的地址与预先存储的所述应用服务器的地址进行比对;
将所述多个IP数据包中目的地址均为所述应用服务器的地址的数据包进行组包操作,得到所述协议报文,将所述多个IP数据包中目的地址不为所述应用服务器的地址的数据包发送给所述网卡驱动。
所述网络过滤驱动根据约定的协议解析所述协议报文,判断所述协议报文中是否存在所述网络过滤驱动、智能密钥设备和应用服务器预先约定的关键信息,具体包括:
所述网络过滤驱动根据约定的协议解析所述协议报文,判断所述协议报文中是否存在所述网络过滤驱动、智能密钥设备和应用服务器预先约定的关键信息标识符,如果存在,则判断出所述协议报文中存在所述关键信息;
或,
所述网络过滤驱动根据约定的协议解析所述协议报文,在所述协议报文中找到所述网络过滤驱动、智能密钥设备和应用服务器指定的字段,判断该字段中是否存在数据,如果存在,则判断出所述协议报文中存在所述关键信息。
所述协议报文和新的协议报文均包含有请求头域,所述请求头域中写有所述应用服务器的地址。
所述网络过滤驱动将所述协议报文发送给所述智能密钥设备,具体包括:
所述网络过滤驱动对所述协议报文的请求头域进行解析,判断所述请求头域中写入的应用服务器地址是否与所述网络过滤驱动存储的应用服务器地址一致;
如果一致,则执行所述网络过滤驱动将所述协议报文发送给所述智能密钥设备的步骤;
如果不一致,则所述网络过滤驱动提示用户应用服务器错误,流程结束。
所述智能密钥设备解析所述协议报文得到所述关键信息,具体包括:
所述智能密钥设备解析所述协议报文,判断所述协议报文中是否存在所述网络过滤驱动、智能密钥设备和应用服务器预先约定的关键信息标识符,如果存在,则根据所述关键信息标识符找到所述关键信息;
或,
所述智能密钥设备解析所述协议报文,在所述协议报文中找到所述网络过滤驱动、智能密钥设备和应用服务器指定的字段,判断该字段中是否存在数据,如果存在,则读出所述数据,得到所述关键信息。
所述输出该关键信息供用户确认,具体包括:
所述智能密钥设备通过液晶显示器显示输出所述关键信息供用户确认,或者通过语音播报的方式播放所述关键信息供用户确认。
所述智能密钥设备进行异常处理,具体包括:
所述智能密钥设备通知所述网络过滤驱动停止操作,向用户提示操作失败;
或者,
所述智能密钥设备向所述网络过滤驱动返回一个错误的签名结果。
所述智能密钥设备对所述协议报文进行签名,具体包括:
所述智能密钥设备根据个人识别码或个人生物特征对用户的身份进行验证,所述个人生物特征包括指纹、虹膜或静脉识别;
如果合法,则对所述协议报文进行签名;
如果不合法,则拒绝对所述协议报文进行签名,流程结束。
所述网络过滤驱动根据所述签名结果和协议报文生成新的协议报文,具体包括:
所述网络过滤驱动将接收到的签名结果插入到所述协议报文中,并根据预先约定的协议对所述协议报文中的请求头域进行修改,得到新的协议报文;
或者,
所述网络过滤驱动使用接收到的签名结果对所述协议报文中的指定部分进行替换,并根据预先约定的协议对所述协议报文中的请求头域进行修改,得到新的协议报文。
所述约定的协议包括超文本传输协议http和/或安全的超文本传输协议https。
一种提高网络应用安全性的系统,所述系统包括:智能密钥设备和客户端主机内的网络过滤驱动;
所述网络过滤驱动包括:
接口模块,用于接收客户端主机内的客户端软件发来的多个IP数据包,所述多个IP数据包为所述客户端软件根据用户输入的信息生成协议报文后拆分得到的,并与所述智能密钥设备通讯,向所述智能密钥设备发送所述协议报文,接收所述智能密钥设备返回的签名结果,还用于发送新的协议报文拆分后的多个IP数据包给网卡驱动,由所述网卡驱动发送给所述应用服务器;
存储模块,用于缓存所述接口模块收到的所述多个IP数据包;
组包模块,用于对所述接口模块收到的所述多个IP数据包进行组包操作,得到所述协议报文;
解析判断模块,用于根据约定的协议对所述组包模块得到的所述协议报文进行解析,判断所述协议报文中是否存在所述网络过滤驱动、智能密钥设备和应用服务器预先约定的关键信息,如果存在所述关键信息,通过所述接口模块发送所述协议报文给所述智能密钥设备,如果不存在所述关键信息,通过所述接口模块将所述存储模块缓存的所述多个IP数据包通过所述网卡驱动发送给所述应用服务器;
报文生成模块,用于根据所述接口模块收到的签名结果和所述组包模块得到的所述协议报文,生成新的协议报文;
拆分模块,用于将所述报文生成模块得到的所述新的协议报文拆分为多个IP数据包,通过所述接口模块发送给所述客户端主机内的网卡驱动;
所述智能密钥设备包括:
接口模块,用于与所述网络过滤驱动通讯,接收所述网络过滤驱动发送的协议报文,向所述网络过滤驱动发送签名结果;
过滤模块,用于解析所述智能密钥设备的接口模块收到的协议报文,得到所述关键信息;
输出模块,用于输出所述过滤模块得到的关键信息供用户确认;
确认模块,用于接收用户输入的确认所述关键信息是否正确的信息;
签名模块,用于当所述确认模块收到的信息为用户确认关键信息正确时,对所述智能密钥设备的接口模块收到的协议报文进行签名,并通过所述智能密钥设备的接口模块返回签名结果给所述网络过滤驱动;
异常处理模块,用于当所述确认模块收到的信息为用户确认关键信息不正确时,或者所述确认模块在预设的时间内未收到用户的确认信息时,进行异常处理。
所述存储模块还用于存储所述应用服务器的地址,所述组包模块具体包括:
比对单元,用于将所述网络过滤驱动的接口模块收到的所述多个IP数据包中的目的地址与所述存储模块存储的所述应用服务器的地址进行比对;
组包单元,用于根据所述比对单元比对的结果,将所述多个IP数据包中目的地址均为所述应用服务器的地址的数据包进行组包操作,得到所述协议报文,将所述多个IP数据包中目的地址不为所述应用服务器的地址的数据包通过所述网络过滤驱动的接口模块发送给所述网卡驱动。
所述协议报文和新的协议报文均包含有请求头域,所述请求头域中写有所述应用服务器的地址,所述存储模块还用于存储所述应用服务器的地址,所述解析判断模块具体包括:
判断单元,用于根据约定的协议对所述组包模块得到的所述协议报文进行解析,判断所述协议报文中是否存在所述网络过滤驱动、智能密钥设备和应用服务器预先约定的关键信息;
第一处理单元,用于如果所述判断单元判断出所述协议报文中存在所述关键信息,则对所述协议报文的请求头域进行解析,判断所述请求头域中写入的应用服务器地址是否与所述存储模块存储的应用服务器地址一致,如果一致,则通过所述接口模块将所述协议报文发送给所述智能密钥设备,如果不一致,则提示用户应用服务器错误;
第二处理单元,用于如果所述判断单元判断出所述协议报文中不存在所述关键信息,则通过所述接口模块将所述存储模块缓存的所述多个IP数据包通过所述网卡驱动发送给所述应用服务器。
所述解析判断模块具体包括:
标识符解析判断单元,用于根据约定的协议对所述组包模块得到的所述协议报文进行解析,判断所述协议报文中是否存在所述网络过滤驱动、智能密钥设备和应用服务器预先约定的关键信息标识符,如果存在,则判断出所述协议报文中存在所述关键信息,通过所述网络过滤驱动的接口模块发送所述协议报文给所述智能密钥设备,如果不存在所述关键信息,通过所述接口模块将所述存储模块缓存的所述多个IP数据包通过所述网卡驱动发送给所述应用服务器;
或者,
字段解析判断单元,用于根据约定的协议对所述组包模块得到的所述协议报文进行解析,在所述协议报文中找到所述网络过滤驱动、智能密钥设备和应用服务器预先指定的字段,判断该字段中是否存在数据,如果存在,则判断出所述协议报文中存在所述关键信息,通过所述网络过滤驱动的接口模块发送所述协议报文给所述智能密钥设备,如果不存在,则判断出所述协议报文中不存在所述关键信息,通过所述接口模块将所述存储模块缓存的所述多个IP数据包通过所述网卡驱动发送给所述应用服务器。
所述过滤模块具体包括:
标识符过滤单元,用于判断所述智能密钥设备的接口模块收到的协议报文中是否存在所述网络过滤驱动、智能密钥设备和应用服务器预先约定的关键信息标识符,如果存在,则根据所述关键信息标识符找到所述关键信息;
或者,
字段过滤单元,用于在所述智能密钥设备的接口模块收到的协议报文中找到所述网络过滤驱动、智能密钥设备和应用服务器预先指定的字段,判断该字段中是否存在数据,如果存在,则读出所述数据,得到所述关键信息。
所述输出模块为液晶显示器或音频装置。
所述异常处理模块具体包括:
第一异常处理单元,用于当所述确认模块收到的信息为用户确认关键信息不正确时,或者所述确认模块在预设的时间内未收到用户的确认信息时,通过所述智能密钥设备的接口模块通知所述网络过滤驱动停止操作,向用户提示操作失败;
或者,
第二异常处理单元,用于当所述确认模块收到的信息为用户确认关键信息不正确时,或者所述确认模块在预设的时间内未收到用户的确认信息时,通过所述智能密钥设备的接口模块向所述网络过滤驱动返回一个错误的签名结果。
所述智能密钥设备的签名模块具体包括:
签名单元,用于当所述确认模块收到的信息为用户确认关键信息正确时,根据个人识别或个人生物特征对用户的身份进行验证,如果合法,则对所述智能密钥设备的接口模块收到的协议报文进行签名,并通过所述智能密钥设备的接口模块返回签名结果给所述网络过滤驱动;如果不合法,则拒绝对所述协议报文进行签名。
所述网络过滤驱动的报文生成模块具体包括:
第一生成单元,用于将所述网络过滤驱动的接口模块接收到的签名结果插入到所述协议报文中,并根据预先约定的协议对所述协议报文中的请求头域进行修改,得到新的协议报文;
或者,
第二生成单元,用于使用所述网络过滤驱动的接口模块接收到的签名结果对所述协议报文中的指定部分进行替换,并根据预先约定的协议对所述协议报文中的请求头域进行修改,得到新的协议报文。
本发明实施例提供的技术方案通过客户端的网络过滤驱动判断协议报文中是否存在关键信息,如果存在,由智能密钥设备对协议报文进行签名后返回签名结果给网络过滤驱动,网络过滤驱动根据签名结果生成新的协议报文发给网卡驱动程序,通过网卡发送给应用服务器,在不改动原有客户端的前提下提高了网络应用的安全性,可以适用于各种客户端软件,具有良好的兼容性、易用性。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
本发明实施例提供了一种提高网络应用安全性的方法,包括:
客户端主机内的客户端软件根据用户输入的信息生成协议报文,并拆分为多个IP数据包发送;客户端主机内的网络过滤驱动接收并缓存该多个IP数据包,进行组包操作得到该协议报文;网络过滤驱动根据约定的协议解析该协议报文,判断该协议报文中是否存在网络过滤驱动、智能密钥设备和应用服务器预先约定的关键信息;如果该协议报文中存在所述关键信息,则网络过滤驱动将该协议报文发送给智能密钥设备,智能密钥设备解析该协议报文得到所述关键信息,输出该关键信息供用户确认;如果接收到用户确认该关键信息正确的信号,则智能密钥设备对该协议报文进行签名,返回签名结果给网络过滤驱动,网络过滤驱动根据签名结果和协议报文生成新的协议报文,将该新的协议报文拆分为多个IP数据包,通过网卡驱动发送给应用服务器;如果接收到用户确认所述关键信息不正确的信号或在预设的时间内没有接收到用户进行确认的信号,则智能密钥设备进行异常处理;如果所述协议报文中不存在所述关键信息,则网络过滤驱动将缓存的所述多个IP数据包通过网卡驱动发送给应用服务器。
本发明实施例中的应用服务器是指客户端请求服务的目的站点服务器,有多种类型,包括但不限于:电子商务系统服务器、网上银行系统服务器等等。网络过滤驱动是指安装于客户端主机内的功能模块,该功能模块可以对计算机上层应用向网卡发送的数据包进行接收、缓存和处理,其中上述网卡可以为普通PC机网卡、无线网卡等。
实施例1
参见图1,本实施例提供了一种提高网络应用安全性的方法,具体包括:
步骤101:用户在客户端登录应用服务器,在本实施例中,以登录网上银行为例进行说明,用户输入登录相关信息;
在本步骤中,用户可以通过系统自带的IE或其他的浏览器等客户端软件程序访问网上银行,不需要安装其他插件或对客户端软件做更改。
步骤102:客户端软件接收到用户输入的信息后,根据该信息生成协议报文;
进一步地,客户端、智能密钥设备和应用服务器还可以预先约定协议报文中的关键信息,作为用户确认的基础,当协议报文中包含关键信息时,需要用户对该关键信息进行确认,如将网上银行交易的一些重要信息作为关键信息给用户进行确认,用户确认后才可以进行网上银行交易。
为了便于以后判断提取关键信息,还可以在协议报文中添加关键信息的标识符,对用户输入的关键信息进行标识,该关键信息的标识符可以为智能密钥设备、应用服务器和代理服务器预先约定。在本实施例中,以用户在网上银行进行转账为例,具体说明客户端生成的协议报文,包括协议内容和请求头域,下面列出XML格式的协议内容:
<?xml version=″1.0″encoding=″gb2312″?>
<!--业务数据--!>
<TradeInfo>
<AccountInfo name=″To″><!--转入帐号--!>
<AccountName>张三</AccountName><!--转入账户姓名--!>
<AccountValue>4367420037465985234</AccountValue><!--转入帐号--!>
<!--转入行信息--!>
<BankInfo>
<BankName>北京分行</BankName><!--转入分行--!>
</BankInfo>
</AccountInfo>
<AccountInfo name=″From″>
<AccountName>李四</AccountName><!--转出账户姓名--!>
<AccountValue>4367420074923372387</AccountValue><!--转出帐号--!>
<!--转出行信息--!>
<BankInfo>
<BankName>上海分行</BankName><!--转出分行--!>
</BankInfo>
</AccountInfo>
<TradeData>
<TradeMoney>134.22</TradeMoney> <!--转账金额-->
<TradeType>1</TradeType> <!--交易类型-->
<MoneyType>2</MoneyType> <!--货币类型-->
<TradeTime>20090206152645</TradeTime> <!--交易时间-->
<OtherData></OtherData> <!--其它数据-->
</TradeData>
<SignatureData>
</SignatureData>
</TradeInfo>
其中,预先约定在转账操作中用户输入的三种信息:转入账户姓名、转入账户和转账金额,即张三、4367420037465985234和134.22为关键信息,并使用如下关键信息标识符:
<AccountName>张三</AccountName> <!--转入账户姓名--!>
<AccountValue>4367420037465985234</AccountValue> <!--转入帐号--!>
<TradeMoney>134.22</TradeMoney> <!--转账金额-->
其中,<AccountName>和</AccountName>标识转入账户姓名,<AccountValue>和</AccountValue>标识转入账号,<TradeMoney>和</TradeMoney>标识转账金额,网络过滤驱动和银行应用服务器可以通过上述关键信息标识符,判断出协议报文中是否存在关键信息,并且可以确定出关键信息的位置。
上例中,因协议内容中没有签名值,<SignatureData></SignatureData>字段为空。
上述协议报文中还有客户端软件按照预先约定的协议添加的请求头域。本实施例中,预先预定的协议可以为http协议(Hypertext Transfer Protocol,超文本传输协议)和/或https协议(Hypertext Transfer Protocol over Secure Socket Layer,安全的超文本传输协议),且不局限于这两种。每种协议对应的请求头域都有多种,例如,http协议对应的请求头域包括但不限于:OPTIONS、GET、HEAD、POST、PUT、DELETE和TRACE等等。优选地,可以使用POST请求头域,具体如下:
POST/transfer.cgi HTTP/1.1\r\n
Host:219.168.0.1\r\n
Content-Length:512\r\n\r\n
POST=M
其中,M为上述XML格式的协议内容,请求头域使用的是http1.1协议,/transfer.cgi为银行服务器端处理网上银行交易的程序,219.168.0.1为所要访问的银行服务器地址,报文长度512。
步骤103:客户端软件将协议报文拆分为多个IP数据包,然后发送;
具体地,客户端软件可以调用系统的接口,将上层的协议报文根据下层TCP/IP协议拆分为固定长度的IP数据包发送给网卡驱动程序,再通过硬件转换发送到网络中。在本实施例中,由于操作系统和网卡驱动程序之间存在网络过滤驱动,因此操作系统会将上述多个IP数据包先发送给网络过滤驱动,由网络过滤驱动再将该多个IP数据包转发给网卡驱动。其中每个数据包都包括发送的目的地址、源地址、IP数据包的序列号、协议报文的一部分、该协议报文的长度。
步骤104:网络过滤驱动接收该多个IP数据包并进行缓存,对接收到的多个IP数据包进行排序,然后进行组包操作,得到上述协议报文;
在本实施例中,网络过滤驱动进行组包操作的具体过程如下:
网络过滤驱动每次处理一个IP数据包。对每一个IP数据包,解析出数据包中的目的地址。如果目的地址不是所述预先存储的应用服务器的地址,则网络过滤驱动不做任何额外处理,直接将该IP数据包发给网卡驱动。如果目的地址是所述预先存储的应用服务器的地址,则缓存该IP数据包,并不将其发送给网卡驱动,直到得到上述协议报文被拆分后得到的所有IP数据包。IP数据包中写有整个协议报文的长度,网卡过滤驱动根据上述长度判断IP数据包的个数,一旦该协议报文被拆分后得到的所有IP数据包均接收到之后,将每个IP数据包中所包含的协议报文部分取出,按IP数据包的序列号顺序排列,得到上述协议报文。
其中,网络过滤驱动可以预先存储有多个应用服务器的地址,并可根据需要修改该配置,为了进一步提高安全性,还可以加密存储多个应用服务器的地址。
步骤105:网络过滤驱动对组包得到的协议报文进行解析,判断协议报文中是否存在网络过滤驱动、智能密钥设备和应用服务器预先约定的关键信息,如果不存在,则执行步骤106,如果存在,则执行步骤107;
其中,解析是指根据当前应用的协议将协议报文拆分为请求头域部分和协议内容部分。解析之后网络过滤驱动判断协议内容中是否存在关键信息。
在本步骤中,网络过滤驱动可以采用以下两种方式中的任一种来判断协议报文中是否存在关键信息:
1)判断协议报文中是否存在网络过滤驱动、智能密钥设备和应用服务器预先预定的关键信息标识符,如果存在,则判断出该协议报文中存在关键信息,否则,协议报文中不存在关键信息;
例如,解析协议报文得到协议内容后,判断协议内容中是否存在关键信息标识符:<AccountName>和</AccountName>,如果存在,则将<AccountName>和</AccountName>之间的数据读出得到转入账号姓名关键信息;判断该协议内容中是否存在关键标识符:<AccountValue>和</AccountValue>,如果存在,则将<AccountValue>和</AccountValue>之间的数据读出得到转入账号关键信息;判断该协议内容中是否存在关键标识符:<TradeMoney>和</TradeMoney>,如果存在,则将<TradeMoney>和</TradeMoney>之间的数据读出得到转账金额关键信息。如果网络过滤驱动、智能密钥设备和应用服务器预先约定的上述三种关键信息标识符中有一个不为空(即中间写有数据),则认为协议内容中存在关键信息,如果该三种关键信息标识符均为空(即都未写有数据),则认为协议内容中不存在关键信息。
2)网络过滤驱动根据约定的协议解析所述协议报文,在该协议报文中找到网络过滤驱动、智能密钥设备和应用服务器指定的字段,判断该字段中是否存在数据,如果存在,则判断出所述协议报文中存在所述关键信息。
进一步地,本步骤中,如果存在关键信息,网络过滤驱动还可以先对组包得到的协议报文的请求头域中写入的应用服务器地址进行验证,如果正确,即与网络过滤驱动预先存储的应用服务器的地址一致,则执行步骤107;如果不正确,则向用户提示应用服务器错误,流程结束。
步骤106:网络过滤驱动将缓存的多个IP数据包发送给网卡驱动程序,通过网卡发送到网络中的应用服务器,在本实施例中发送给网上银行的服务器,然后客户端与应用服务器进行交互,流程结束;
步骤107:网络过滤驱动将组包得到的协议报文发送给USB Key,USB Key收到该协议报文后进行解析,得到上述关键信息,并且输出该关键信息供用户进行确认;
在本步骤中,USB Key可以采用以下两种方式中的任一种来解析协议报文得到关键信息:
1)USB Key判断协议报文中是否存在网络过滤驱动、智能密钥设备和应用服务器预先预定的关键信息标识符,如果存在,则根据该关键信息标识符读出关键信息;
2)USB Key解析协议报文,在协议报文中找到网络过滤驱动、智能密钥设备和应用服务器指定的字段,判断该字段中是否存在数据,如果存在,则读出该数据,得到关键信息。
具体地,USB Key可以通过液晶显示器显示输出该关键信息供用户进行确认,或者USBKey也可以通过语音播报的方式播放该关键信息供用户进行确认。其中,USB Key可以将得到的关键信息组成标准格式后再输出,例如:USB Key得到转入账号4367420037465985234、转入账号姓名张三和转账金额134.22后,在显示器上输出以下关键信息供用户进行确认:
帐号:4367420037465985234
户名:张三
金额:134.22
另外,USB Key也可以将该关键信息传给客户端主机,由客户端主机提示用户对该关键信息进行确认。
步骤108:USB Key接收用户输入的确认信息,判断是否用户确认该关键信息正确,如果用户确认该关键信息正确,则执行步骤109,如果用户确认该关键信息不正确或在约定的时间内USB Key没有接到用户的确认信息,则执行步骤112;
其中,所述约定的时间为USB Key为用户输入确认信息所预留的时间,在该时间段内输入的确认信息有效,如果超过该时间用户再输入确认信息,则视为无效。
步骤109:USB Key对收到的协议报文进行签名,并将签名结果发送给网络过滤驱动;
具体地,USB Key对协议报文进行签名前,还可以先验证用户的身份,其中,验证用户的身份的方式可以包括PIN(Personal Identification Number,个人识别码)码或指纹、虹膜、静脉特征等个人生物特征的方式,在本实施例中采取验证PIN码的方式,具体如下:
USB Key用显示输出或语音播报的方式提示用户输入PIN码,用户利用USB Key自带的键盘键入PIN码,USB Key接收并验证该PIN码是否正确,如果正确,则对协议报文进行签名,并将签名结果发送给网络过滤驱动,如果错误,则提示用户再次输入PIN码或停止操作。
另外,上述USB Key验证PIN码的过程还可以由以下过程替换:
USB Key向客户端软件发送验证PIN码的请求,客户端软件提示用户输入PIN码并接收用户输入的PIN码然后发送给USB Key,USB Key收到后验证该PIN码是否正确,如果正确,则对协议报文进行签名,并将签名结果发送给网络过滤驱动,如果错误,则提示用户再次输入PIN码或停止操作。
本发明实施例中,USB Key可以在一次网银交易初始时只验证一次PIN码,也可以在每次签名操作前验证PIN码。
另外,USB Key对协议报文进行签名操作时,可以对协议报文的全部协议内容进行签名,也可以选择部分协议内容进行签名,如约定仅对协议内容中的关键信息部分进行签名,即上例中对帐号:4367420037465985234,户名:张三和金额:134.22这三个关键信息进行签名,优选地,可以使用哈希算法,对该三个关键信息进行计算,得到以下签名结果:
“MualIO9msIOE1IuIiH22Z8N57PzagkURnlxUgknTTXi88t+9u1Tzg0ltcYZWdG+D3LOgDXfejPtjx01HSt293usQhRTt5SW8qte24lUvw0eMC0YHzH3Iwu0Jb5KErXrsg0OMWFZMnhbjF33pGloQWMC23pe6Z98XCcnKR3nqBdY=”。
步骤110:网络过滤驱动接收到该签名结果,根据该签名结果和协议报文生成新的协议报文,然后拆分成多个IP数据包发送给网卡驱动程序,网卡驱动程序处理后通过网卡硬件发送到网络中,最后到达应用服务器;
其中,网络过滤驱动生成新的协议报文可以具体如下:在组包得到的协议报文的协议内容中插入USB Key返回的签名结果,组合得到新的协议内容,并且根据预先约定的协议对协议报文中的请求头域进行修改,得到新的协议报文。插入的签名结果可以采取base64编码的方式,在本实施例中,具体为在字段<SignatureData></SignatureData>中插入签名结果:
<SignatureData>
MualIO9msIOE1IuIiH22Z8N57PzagkURnlxUgknTTXi88t+9u1Tzg0ltcYZWdG+D3LOgDXfejPtjx01HSt293usQhRTt5SW8qte24lUvw0eMC0YHzH3Iwu0Jb5KErXrsg0OMWFZMnhbjF33pGloQWMC23pe6Z98XCcnKR3nqBdY=
</SignatureData>
由于插入操作后协议报文的长度发生变化,因此对协议报文中的请求头域进行如下修改:
POST/transfer.cgi HTTP/1.1\r\n
Host:www.domain.com\r\n
Content-Length:528\r\n\r\n
POST=N
其中,N为插入签名结果后的协议内容。
除上述插入签名结果的方式外,网络过滤驱动还可以使用签名结果替换协议报文中的指定部分,并根据预先约定的协议对协议报文中的请求头域进行修改,得到新的协议报文。该指定部分由网络过滤驱动预先设置,可以为协议报文的全部协议内容或部分协议内容。例如,将协议内容中的指定字段<SignatureData></SignatureData>中的数据替换为签名结果。其中,客户端软件在生成协议内容时,可以在该字段中插入一段假的签名结果,作为初始值,当网络过滤驱动生成新的协议报文时,使用上述USB Key返回的签名结果替换原有的假的签名结果,并相应地修改请求头域,得到新的协议报文。
在本步骤中,网络过滤驱动将新的协议报文进行拆分得到多个IP数据包的具体过程如下:在本实施例中,优选地使用TCP/IP协议,按一定长度将新的协议报文分为多段数据,并为每一段数据添加新的IP协议包头,将上述被分成多段的数据按顺序排列并分配一个序号写入到IP协议包头中,其中,IP协议头中还包括IP版本、IP协议包长度、该IP数据包的总长度、目的地址、源地址等,完成拆包操作后,将上述拆分得到的IP数据包发送给网卡驱动。
步骤111:应用服务器收到该多个IP数据包后,组包得到上述新的协议报文,进行解析并验证其中的签名,验证通过后为客户端提供服务,进行网上转账,流程结束;
步骤112:USB Key进行异常处理,流程结束。
其中,异常处理的方式包括:USB Key拒绝对协议报文进行签名,并通知网络过滤驱动停止操作及向用户提示错误;或者,USB Key返回一个错误的签名结果给网络过滤驱动,导致网上交易失败。
在本实施例中,USB Key还可以在得到关键信息后,不输出该关键信息给用户进行确认,而是,直接对协议报文进行签名,然后返回签名结果给代理服务器,代理服务器根据该签名结果和协议内容生成新的协议报文,发送该新的协议报文给应用服务器。
在本实施例中,如果需要更高的安全性,步骤106还可以替换为以下过程:
网络过滤驱动将协议报文发送给USB Key,USB Key对该协议报文进行签名,并将签名结果返回给网络过滤驱动,网络过滤驱动根据该签名结果和协议报文(插入或替换方式),生成新的协议报文,拆分成多个IP数据包,然后发送给网卡驱动程序,通过网卡发送到应用服务器,应用服务器收到后组包得到该新的协议报文,解析验证其中的签名,验证通过后为客户端提供服务。
实施例2
本实施例提供了一种提高网络应用安全性的系统,包括:网络过滤驱动1和智能密钥设备2。其中,网络过滤驱动1安装于客户端主机内,具体包括:
接口模块11,用于接收客户端主机内的客户端软件发来的多个IP数据包,该多个IP数据包为客户端软件根据用户输入的信息生成协议报文后拆分得到的,还用于与智能密钥设备通讯,向智能密钥设备发送该协议报文,接收智能密钥设备返回的签名结果,还用于发送新的协议报文拆分后的多个IP数据包给网卡驱动,由网卡驱动发送给应用服务器;
存储模块12,用于缓存接口模块11收到的多个IP数据包;
组包模块13,用于对接口模块11收到的多个IP数据包进行组包操作,得到上述协议报文;
解析判断模块14,用于根据约定的协议对组包模块13得到的协议报文进行解析,判断该协议报文中是否存在网络过滤驱动1、智能密钥设备2和应用服务器预先约定的关键信息,如果存在该关键信息,通过接口模块11发送该协议报文给智能密钥设备2,如果不存在该关键信息,通过接口模块11将存储模块12缓存的多个IP数据包通过网卡驱动发送给应用服务器;
报文生成模块15,用于根据接口模块11收到的签名结果和组包模块13得到的协议报文,生成新的协议报文;
拆分模块16,用于将报文生成模块15得到的新的协议报文拆分为多个IP数据包,通过接口模块11发送给客户端主机内的网卡驱动;
智能密钥设备2包括:
接口模块21,用于与网络过滤驱动1通讯,接收网络过滤驱动1发送的协议报文,向网络过滤驱动1发送签名结果;
过滤模块22,用于解析智能密钥设备的接口模块21收到的协议报文,得到所述关键信息;
输出模块23,用于输出过滤模块22得到的关键信息供用户确认;
确认模块24,用于接收用户输入的确认所述关键信息是否正确的信息;
签名模块25,用于当确认模块24收到的信息为用户确认关键信息正确时,对智能密钥设备的接口模块21收到的协议报文进行签名,并通过智能密钥设备的接口模块21返回签名结果给网络过滤驱动1;
异常处理模块26,用于当确认模块24收到的信息为用户确认关键信息不正确时,或者确认模块24在预设的时间内未收到用户的确认信息时,进行异常处理。
本实施例中,存储模块12还用于存储应用服务器的地址,组包模块13具体包括:
比对单元,用于将网络过滤驱动1的接口模块11收到的多个IP数据包中的目的地址与存储模块12存储的应用服务器的地址进行比对;
组包单元,用于根据比对单元比对的结果,将接口模块11收到的多个IP数据包中目的地址均为所述应用服务器的地址的数据包进行组包操作,得到所述协议报文,将接口模块11收到的多个IP数据包中目的地址不为所述应用服务器的地址的数据包,通过接口模块11发送给网卡驱动。
本实施例中,所述协议报文和新的协议报文均包含有请求头域,请求头域中写有所述应用服务器的地址,存储模块12还用于存储所述应用服务器的地址,相应地,网络过滤驱动1的解析判断模块14具体包括:
判断单元,用于根据约定的协议对组包模块13得到的所述协议报文进行解析,判断该协议报文中是否存在网络过滤驱动1、智能密钥设备2和应用服务器预先约定的关键信息;
第一处理单元,用于如果判断单元判断出所述协议报文中存在关键信息,则对所述协议报文的的请求头域进行解析,判断该请求头域中写入的应用服务器地址是否与存储模块12存储的应用服务器地址一致,如果一致,则通过接口模块11将所述协议报文发送给智能密钥设备2,如果不一致,则提示用户应用服务器错误;
第二处理单元,用于如果判断单元判断出所述协议报文中不存在关键信息,则通过接口模块11将存储模块12缓存的多个IP数据包通过网卡驱动发送给应用服务器。
本实施例中,解析判断模块14具体包括:
标识符解析判断单元,用于根据约定的协议对组包模块13得到的协议报文进行解析,判断该协议报文中是否存在网络过滤驱动1、智能密钥设备2和应用服务器预先约定的关键信息标识符,如果存在,则判断出该协议报文中存在所述关键信息,通过接口模块11发送该协议报文给智能密钥设备2,如果不存在关键信息,则通过接口模块11将存储模块12缓存的多个IP数据包通过网卡驱动发送给应用服务器;
或者,
字段解析判断单元,用于根据约定的协议对组包模块13得到的协议报文进行解析,在该协议报文中找到网络过滤驱动1、智能密钥设备2和应用服务器预先指定的字段,判断该字段中是否存在数据,如果存在,则判断出该协议报文中存在所述关键信息,通过接口模块11发送该协议报文给智能密钥设备2,如果不存在,则判断出该协议报文中不存在所述关键信息,通过接口模块11将存储模块12缓存的多个IP数据包通过网卡驱动发送给应用服务器。
本实施例中,过滤模块22具体包括:
标识符过滤单元,用于判断接口模块21收到的协议报文中是否存在网络过滤驱动1、智能密钥设备2和应用服务器预先约定的关键信息标识符,如果存在,则根据该关键信息标识符找到所述关键信息;
或者,
字段过滤单元,用于在智能密钥设备2的接口模块21收到的协议报文中找到网络过滤驱动1、智能密钥设备2和应用服务器预先指定的字段,判断该字段中是否存在数据,如果存在,则读出该数据,得到所述关键信息。
本实施例中,输出模块23为液晶显示器或音频装置。
本实施例中,异常处理模块26具体包括:
第一异常处理单元,用于当确认模块24收到的信息为用户确认关键信息不正确时,或者确认模块24在预设的时间内未收到用户的确认信息时,通过接口模块21通知网络过滤驱动1停止操作,向用户提示操作失败;
或者,
第二异常处理单元,用于当确认模块24收到的信息为用户确认关键信息不正确时,或者确认模块24在预设的时间内未收到用户的确认信息时,通过接口模块21向网络过滤驱动1返回一个错误的签名结果。
本实施例中,网络过滤驱动1的接口模块11还用于当解析判断模块14判断出所述协议报文中不存在关键信息时,将存储模块12缓存的多个IP数据包发送给网卡驱动,由网卡驱动发送给所述应用服务器。
本实施例中,智能密钥设备2的签名模块25具体包括:
签名单元,用于当确认模块24收到的信息为用户确认关键信息正确时,根据个人识别码或个人生物特征对用户的身份进行验证,如果合法,则对接口模块21收到的协议报文进行签名,并通过接口模块21返回签名结果给网络过滤驱动1;如果不合法,则拒绝对所述协议报文进行签名。
本实施例中,网络过滤驱动1的报文生成模块15具体包括:
第一生成单元,用于将网络过滤驱动1的接口模块11接收到的签名结果插入到所述协议报文中,并根据预先约定的协议对所述协议报文中的请求头域进行修改,得到新的协议报文;
或者,
第二生成单元,用于使用网络过滤驱动1的接口模块11接收到的签名结果对所述协议报文中的指定部分进行替换,并根据预先约定的协议对所述协议报文中的请求头域进行修改,得到新的协议报文。
本发明实施例提供的技术方案通过客户端的网络过滤驱动判断协议报文中是否存在关键信息,如果存在,由智能密钥设备对协议报文进行签名后返回签名结果给网络过滤驱动,网络过滤驱动根据签名结果生成新的协议报文发给网卡驱动程序,通过网卡发送给应用服务器,在不改动原有客户端的前提下提高了网络应用的安全性,可以适用于各种客户端软件,具有良好的兼容性、易用性。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。