提高网络应用安全性的方法和系统 【技术领域】
本发明涉及信息安全领域,特别涉及一种提高网络应用安全性的方法和系统。
背景技术
随着网络蓬勃的发展,人们越来越依赖网络进行各种活动,网上银行、网上购物等都已经深入人们的生活当中,但是黑客攻击窃取用户密码进行非法交易等事件也发生得越来越多,造成了许多的损失,人们在享受网络的方便快捷的同时也越来越担忧网络安全问题,这时,身份识别技术就显得尤为重要了。目前,身份识别技术得到了广泛的发展并已经应用在各个领域,主要是网上银行、政府网站、BS(Browser/Server,浏览器/服务器)架构的ERP(EnterpriseResource Planning,企业资源管理)系统以及对保密性要求比较高的各个领域。
目前,已经出现了多种针对网络安全的保护方法,数字签名就是其中一种,在客户端中下载并安装数字证书,也有安全性更高的使用USB Key(Universal Serial BUS Key,通用串行总线接口硬件设备)等智能密钥设备对网络传输的数据进行签名等操作,但是USB Key内签名的数据仍然是由客户端主机发送过去的,仍然存在安全风险。
而且,现有的安全手段大多操作过于繁琐,为了完成签名的操作需要安装各种插件、与智能密钥设备相应的软件程序,并且现有的程序插件大多是针对IE内核进行开发,对一些如Firefox等浏览器并不支持,导致部分用户不能正常的进行网上安全的通讯。
综上所述,现有网络安全手段存在的缺点就是操作繁琐,兼容性、易用性差,安全程度不够高。
【发明内容】
基于现有技术的不足,本发明提供了一种提高网络应用安全性的方法和系统。所述技术方案如下:
一种提高网络应用安全性的方法,所述方法包括:
客户端主机内的代理服务器接收客户端软件根据用户输入的信息生成并发来的协议报文,根据约定的协议解析所述协议报文,得到协议内容;
所述代理服务器判断所述协议内容中是否存在所述代理服务器、智能密钥设备和应用服务器预先约定的关键信息;
如果所述协议内容中存在所述关键信息,则所述代理服务器将所述协议内容发送给所述智能密钥设备,所述智能密钥设备解析所述协议内容得到所述关键信息,输出该关键信息供用户确认;
如果接收到用户确认关键信息正确的信号,则所述智能密钥设备对所述协议内容进行签名,返回签名结果给所述代理服务器,所述代理服务器根据所述签名结果和协议内容生成新的协议报文,发送所述新的协议报文给所述应用服务器;
如果接收到用户确认关键信息不正确的信号或在预设的时间内没有接收到用户进行确认的信号,则所述智能密钥设备进行异常处理;
如果所述协议内容中不存在所述关键信息,则所述代理服务器将所述协议报文发送给所述应用服务器。
所述代理服务器判断所述协议内容中是否存在所述代理服务器、智能密钥设备和应用服务器预先约定的关键信息,具体包括:
所述代理服务器在所述协议内容中找到所述代理服务器、智能密钥设备和应用服务器指定的字段,判断该字段中是否写有数据,如果是,则判断出所述协议内容中存在所述关键信息;
或者,
所述代理服务器判断所述协议内容中是否存在所述代理服务器、智能密钥设备和应用服务器预先约定的关键信息标识符,如果存在,则判断出所述协议内容中存在所述关键信息。
所述协议报文和新的协议报文均包含有请求头域,所述请求头域中写有所述应用服务器的地址。
所述代理服务器将所述协议内容发送给所述智能密钥设备,具体包括:
所述代理服务器对所述协议报文的请求头域进行解析,判断所述请求头域中写入的应用服务器地址是否与所述代理服务器存储的应用服务器地址一致;
如果一致,则将所述协议内容发送给所述智能密钥设备;
如果不一致,则所述代理服务器提示用户应用服务器错误,流程结束。
所述智能密钥设备解析所述协议内容得到所述关键信息,具体包括:
所述智能密钥设备在所述协议内容中找到所述代理服务器、智能密钥设备和应用服务器指定的字段,判断该字段中是否写有数据,如果是,则读出所述数据,得到所述关键信息;
或者,
所述智能密钥设备判断所述协议内容中是否存在所述代理服务器、智能密钥设备和应用服务器预先约定的关键信息标识符,如果存在,则根据所述关键信息标识符找到所述关键信息。
所述输出该关键信息供用户确认,具体包括:
所述智能密钥设备通过液晶显示器显示输出所述关键信息供用户确认,或者通过语音播报的方式播放所述关键信息供用户确认。
所述智能密钥设备进行异常处理,具体包括:
所述智能密钥设备通知所述代理服务器停止操作,向用户提示操作失败;
或者,
所述智能密钥设备向所述代理服务器返回一个错误的签名结果。
所述智能密钥设备对所述协议内容进行签名,具体包括:
所述智能密钥设备根据个人识别码或个人生物特征对用户的身份进行验证,所述个人生物特征包括指纹、虹膜或静脉识别;
如果正确,则对所述协议内容进行签名;
如果不正确,则拒绝对所述协议内容进行签名,流程结束。
所述代理服务器根据所述签名结果和协议内容生成新的协议报文,具体包括:
所述代理服务器将接收到的签名结果插入到所述协议内容中得到新的协议内容,为所述新的协议内容添加请求头域,得到新的协议报文;
或者,
所述代理服务器使用接收到的签名结果对所述协议内容中的指定部分进行替换得到新的协议内容,为所述新的协议内容添加请求头域,得到新的协议报文。
所述约定的协议包括超文本传输协议http和/或安全的超文本传输协议https。
一种提高网络应用安全性的系统,所述系统包括:智能密钥设备和安装于客户端主机内的代理服务器;
所述代理服务器包括:
接口模块,用于接收客户端软件根据用户输入的信息生成并发来的协议报文,并与所述智能密钥设备通讯,向所述智能密钥设备发送协议内容,接收所述智能密钥设备返回的签名结果,还用于发送新的协议报文给应用服务器;
解析模块,用于对所述接口模块收到的协议报文进行解析,得到协议内容;
判断模块,用于判断所述解析模块得到地协议内容中是否存在所述代理服务器、智能密钥设备和应用服务器预先约定的关键信息,如果存在所述关键信息,通过所述接口模块发送协议内容给所述智能密钥设备,如果不存在所述关键信息,通过所述接口模块发送所述协议报文给所述应用服务器;
报文生成模块,用于根据所述接口模块收到的签名结果和所述解析模块得到的协议内容,生成新的协议报文,通过所述接口模块发送该新的协议报文给所述应用服务器;
所述智能密钥设备包括:
接口模块,用于与所述代理服务器通讯,接收所述代理服务器发送的协议内容,向所述代理服务器发送签名结果;
过滤模块,用于解析所述智能密钥设备的接口模块收到的协议内容,得到所述关键信息;
输出模块,用于输出所述过滤模块得到的关键信息供用户确认;
确认模块,用于接收用户输入的确认所述关键信息是否正确的信号;
签名模块,用于当所述确认模块收到的信号为用户确认关键信息正确时,对所述接口模块收到的协议内容进行签名,并通过所述智能密钥设备的接口模块返回签名结果给所述代理服务器;
异常处理模块,用于当所述确认模块收到的信号为用户确认关键信息不正确时,或者所述确认模块在预设的时间内未收到用户进行确认的信号时,进行异常处理。
所述判断模块具体包括:
第一判断单元,用于在所述解析模块得到的协议内容中找到所述代理服务器、智能密钥设备和应用服务器指定的字段,判断该字段中是否写有数据,如果是,则判断出所述协议内容中存在所述关键信息,通过所述接口模块发送协议内容给所述智能密钥设备,否则,判断出所述协议内容中不存在所述关键信息,通过所述接口模块发送所述协议报文给所述应用服务器;
或者,
第二判断单元,用于判断所述解析模块得到的协议内容中是否存在所述代理服务器、智能密钥设备和应用服务器预先约定的关键信息标识符,如果存在,则判断出所述协议内容中存在所述关键信息,通过所述接口模块发送协议内容给所述智能密钥设备,否则,判断出所述协议内容中不存在所述关键信息,通过所述接口模块发送所述协议报文给所述应用服务器。
所述协议报文和新的协议报文均包含有请求头域,所述请求头域中写有所述应用服务器的地址,所述判断模块具体包括:
判断单元,用于判断所述解析模块得到的协议内容中是否存在所述代理服务器、智能密钥设备和应用服务器预先约定的关键信息;
第一处理单元,用于如果所述判断单元判断出所述协议内容中存在所述关键信息,对所述代理服务器的接口模块收到的协议报文的请求头域进行解析,判断所述请求头域中写入的应用服务器地址是否与所述代理服务器存储的应用服务器地址一致,如果一致,则通过所述代理服务器的接口模块发送所述协议内容给所述智能密钥设备,如果不一致,则提示用户应用服务器错误;
第二处理单元,用于如果所述判断单元判断出所述协议内容中不存在所述关键信息,通过所述接口模块发送所述协议报文给所述应用服务器。
所述过滤模块具体包括:
第一过滤单元,用于在所述智能密钥设备的接口模块收到的协议内容中找到所述代理服务器、智能密钥设备和应用服务器指定的字段,判断该字段中是否写有数据,如果是,则读出所述数据,得到所述关键信息;
或者,
第二过滤单元,用于判断所述智能密钥设备的接口模块收到的协议内容中是否存在所述代理服务器、智能密钥设备和应用服务器预先约定的关键信息标识符,如果存在,则根据所述关键信息标识符找到所述关键信息。
所述输出模块为液晶显示器或音频装置。
所述异常处理模块具体包括:
第一异常处理单元,用于当所述确认模块收到的信息为用户确认关键信息不正确时,或者所述确认模块在预设的时间内未收到用户的确认信息时,通过所述智能密钥设备的接口模块通知所述代理服务器停止操作,向用户提示操作失败;
或者,
第二异常处理单元,用于当所述确认模块收到的信息为用户确认关键信息不正确时,或者所述确认模块在预设的时间内未收到用户的确认信息时,通过所述智能密钥设备的接口模块向所述代理服务器返回一个错误的签名结果。
所述智能密钥设备的签名模块具体包括:
签名单元,用于当所述确认模块收到的信号为用户确认关键信息正确时,根据个人识别码或个人生物特征对用户的身份进行验证,如果正确,则对所述智能密钥设备的接口模块收到的协议内容进行签名,并通过所述智能密钥设备的接口模块返回签名结果给所述代理服务器;如果不正确,则拒绝对所述协议内容进行签名,所述个人生物特征包括指纹、虹膜或静脉识别。
所述代理服务器的报文生成模块具体包括:
第一生成单元,用于将所述代理服务器的接口模块接收到的签名结果插入到所述协议内容中得到新的协议内容,为所述新的协议内容添加请求头域,得到新的协议报文,通过所述代理服务器的接口模块发送该新的协议报文给所述应用服务器;
或者,
第二生成单元,用于使用所述代理服务器的接口模块接收到的签名结果对所述协议内容中的指定部分进行替换得到新的协议内容,为所述新的协议内容添加请求头域,得到新的协议报文,通过所述代理服务器的接口模块发送该新的协议报文给所述应用服务器。
本发明实施例提供的技术方案通过客户端的代理服务器判断协议报文中是否存在关键信息,如果存在,由智能密钥设备对协议内容进行签名后返回签名结果给代理服务器,代理服务器根据签名结果生成新的协议报文发给应用服务器,在不改动原有客户端的前提下提高了网络应用的安全性,可以适用于各种客户端软件,具有良好的兼容性、易用性。
【附图说明】
图1是本发明实施例1提供的提高网络应用安全性的方法流程图;
图2是本发明实施例2提供的提高网络应用安全性的系统结构图。
【具体实施方式】
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
本发明实施例提供了一种提高网络应用安全性的方法,包括:
客户端主机内的代理服务器接收客户端软件根据用户输入的信息生成并发来的协议报文,根据约定的协议解析该协议报文,得到协议内容;代理服务器判断协议内容中是否存在代理服务器、智能密钥设备和应用服务器预先约定的关键信息;如果存在,则代理服务器将该协议内容发送给智能密钥设备,智能密钥设备收到后解析该协议内容得到上述关键信息,输出该关键信息供用户确认;如果接收到用户确认该关键信息正确的信号,则智能密钥设备对该协议内容进行签名,返回签名结果给代理服务器,代理服务器根据该签名结果和协议内容生成新的协议报文,发送该新的协议报文给应用服务器;如果接收到用户确认该关键信息不正确的信号或在预设的时间内没有接收到用户进行确认的信号,则智能密钥设备进行异常处理;如果所述协议内容中不存在该关键信息,则代理服务器将所述协议报文发送给应用服务器。
本发明实施例中的代理服务器并非介于客户端和Web服务器之间的一台服务器,而是指安装于客户端主机内的软件,负责客户端与Web服务器之间的信息传输。该代理服务器具有自己的IP地址,该IP地址可以是通过该代理服务器软件安装时自动生成,也可以是用户设定,该代理服务器具有报文的缓冲功能,可以存储报文并对报文进行解析和过滤。当客户端使用浏览器连接Internet网站取得网络信息时,先向代理服务器发出请求,由代理服务器将该请求转发给目的站点服务器,然后接收目的站点服务器返回的信息,并把该信息转发给客户端的浏览器。即本发明实施例中,代理服务器在客户端利用软件实现。
本发明实施例中的应用服务器是指客户端请求服务的目的站点服务器,有多种类型,包括但不限于:电子商务系统服务器、网上银行系统服务器等等。
实施例1
参见图1,本实施例提供了一种提高网络应用安全性的方法,具体包括:
步骤101:用户在客户端登录应用服务器,在本实施例中,以登录网上银行为例进行说明,用户输入登录相关信息;
在本步骤中,用户可以通过系统自带的IE或其他的浏览器等客户端软件程序访问网上银行,访问前使用操作系统自带的代理服务器功能进行设置,设置代理服务器的IP地址,设置完成后,在客户端主机通过IE或其他的浏览器和客户端软件程序访问网络资源时都将通过代理服务器进行访问,而不是直接到达所要发送的目的地。
其中,上述代理服务器软件可以存储在智能密钥设备中,本实施例以智能密钥设备为USBKey为例进行说明,在USB Key接入客户端主机时,自动运行该代理服务器软件并在客户端主机中进行安装,不需用户进行操作。
例如,客户端主机的IP地址为192.168.1.22,客户端主机内安装有代理服务器,且其地址被设置为219.168.0.1,用户使用客户端主机登录网上银行系统,该网上银行系统的应用服务器的IP地址为202.168.0.1。
步骤102:客户端软件接收到用户输入的信息后,根据该信息生成协议内容;
协议内容与当前采用的协议有关,本实施例中,客户端和应用服务器通信时采用的协议可以为http协议(Hypertext Transfer Protocol,超文本传输协议)和/或https协议(HypertextTransfer Protocol over Secure Socket Layer,安全的超文本传输协议),且客户端、智能密钥设备和应用服务器可以预先约定关键信息,作为用户确认的基础,如将网上银行交易的一些重要信息作为关键信息给用户进行确认。
为了便于以后判断提取关键信息,还可以在协议内容中添加关键信息的标识符,对用户输入的关键信息进行标识,该关键信息的标识符可以为智能密钥设备、应用服务器和代理服务器预先约定。在本实施例中,以用户在网上银行进行转账为例,具体说明客户端生成的协议内容,下面列出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>字段为空。
步骤103:客户端软件按照预先约定的协议,为该协议内容添加请求头域,得到协议报文,并发送给代理服务器;
本实施例中,预先预定的协议可以为http协议和/或https协议,且不局限于这两种。每种协议对应的请求头域都有多种,例如,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=XML格式的协议内容实体
其中,上述请求头域表示使用http1.1协议,/transfer.cgi为银行服务器端处理网上银行交易的程序,219.168.0.1为所要访问的服务器地址,报文长度512,在该请求头域后面即上述XML格式的协议内容实体。
步骤104:代理服务器收到该协议报文后,根据预先约定的协议解析该协议报文,去掉请求头域得到协议内容;
具体地,上述去掉请求头域的方法与步骤103相逆,如上例中根据http协议内容将上述POST请求头域去掉,得到步骤102中所述的XML格式的协议内容实体。
步骤105:代理服务器对得到的协议内容进行解析,判断协议内容中是否存在代理服务器、智能密钥设备和应用服务器预先约定的关键信息,如果不存在,则执行步骤106,如果存在,则执行步骤107;
在本步骤中,代理服务器可以采用以下两种方式中的任一种来判断协议内容中是否存在关键信息:
1)代理服务器在协议内容中找到代理服务器、智能密钥设备和应用服务器预先指定的字段,判断该字段中是否写有数据,如果是,则判断出该协议内容中存在关键信息,否则,协议内容中不存在关键信息;
其中,指定的字段由代理服务器、智能密钥设备和应用服务器预先协商而定。
2)代理服务器判断协议内容中是否存在代理服务器、智能密钥设备和应用服务器预先预定的关键信息标识符,如果存在,则判断出该协议内容中存在关键信息,否则,协议内容中不存在关键信息;
例如,判断协议内容中是否存在关键信息标识符:<AccountName>和</AccountName>,如果存在,则将<AccountName>和</AccountName>之间的数据读出得到转入账号姓名关键信息;判断协议内容中是否存在关键标识符:<AccountValue>和</AccountValue>,如果存在,则将<AccountValue>和</AccountValue>之间的数据读出得到转入账号关键信息;判断协议内容中是否存在关键标识符:<TradeMoney>和</TradeMoney>,如果存在,则将<TradeMoney>和</TradeMoney>之间的数据读出得到转账金额关键信息。如果代理服务器、智能密钥设备和应用服务器预先约定的上述三种关键信息标识符中有一个不为空(即中间写有数据),则认为协议内容中存在关键信息,如果该三种关键信息标识符均为空(即都未写有数据),则认为协议内容中不存在关键信息。
步骤106:代理服务器将收到的协议报文发送给应用服务器,在本实施例中发送给网上银行的服务器,通过代理服务器客户端与应用服务器进行交互,流程结束;
步骤107:代理服务器将协议内容发送给USB Key,USB Key收到该协议内容后进行解析,得到上述关键信息,并且输出该关键信息供用户进行确认;
为了进一步地提高安全性,防止钓鱼网站的攻击,本步骤中,代理服务器在发送协议内容给USB Key之前,还可以对请求头域中的应用服务器的地址进行验证,具体如下:
代理服务器解析收到的协议报文得到请求头域,判断该请求头域中写入的应用服务器地址是否与代理服务器已存储的应用服务器地址一致,如果一致,则代理服务器将协议内容发送给USB Key;如果不一致,则代理服务器提示用户应用服务器错误,流程结束。在上述例子中,可以提取出请求头域中的Host地址,与代理服务器已存储的网上银行的应用服务器的地址进行比对。
其中,代理服务器中可以预先存储有多个应用服务器的地址,而且还可以采取加密存放的方式,以保证安全。
在本步骤中,USB Key可以采用以下两种方式中的任一种来解析协议内容得到关键信息:
1)USB Key在协议内容中找到代理服务器、智能密钥设备和应用服务器预先指定的字段,判断该字段中是否写有数据,如果是,则读出该数据,得到关键信息;
其中,指定的字段由代理服务器、智能密钥设备和应用服务器预先协商而定。
2)USB Key判断协议内容中是否存在代理服务器、智能密钥设备和应用服务器预先预定的关键信息标识符,如果存在,则根据该关键信息标识符读出关键信息。
具体地,USB Key可以通过液晶显示器显示输出该关键信息供用户进行确认,或者USBKey也可以通过语音播报的方式播放该关键信息供用户进行确认。其中,USB Key可以将得到的关键信息组成标准格式后再输出,例如:USB Key得到转入账号4367420037465985234、转入账号姓名张三和转账金额134.22后,在显示器上输出以下关键信息供用户进行确认:
帐号:4367420037465985234
户名:张三
金额:134.22
步骤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:代理服务器接收到该签名结果,根据该签名结果和协议内容生成新的协议报文,然后发送该新的协议报文给应用服务器;
其中,代理服务器生成新的协议报文可以具体如下:在步骤102的XML格式的协议内容中插入USB Key返回的签名结果,组合得到新的XML格式的协议内容,并且为该新的协议内容添加新的请求头域,得到新的协议报文。插入的签名结果可以采取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=新的XML格式的协议内容
其中,因为签名的插入导致报文长度变化,POST、Host不变,请求头域后放置的报文数据由步骤102中的XML格式的协议内容变更为本步骤中插入签名结果后的新的XML格式的协议内容。
除上述插入签名结果的方式外,代理服务器还可以使用签名结果替换协议内容中的指定部分,得到新的协议内容,为该新的协议内容添加新的请求头域,得到新的协议报文。该指定部分由代理服务器预先设置,可以为协议内容的全部或部分。例如,将协议内容中的指定字段<SignatureData></SignatureData>中的数据替换为签名结果。其中,客户端软件在生成协议内容时,可以在该字段中插入一段假的签名结果,作为初始值,当代理服务器生成新的协议内容时,使用上述USB Key返回的签名结果替换原有的假的签名结果,得到新的协议内容。
步骤111:应用服务器收到该新的协议报文后,进行解析并验证其中的签名,验证通过后为客户端提供服务,进行网上转账,流程结束;
步骤112:USB Key进行异常处理,流程结束。
其中,异常处理的方式包括:USB Key拒绝对协议内容进行签名,并通知代理服务器停止操作及向用户提示错误;或者,USB Key返回一个错误的签名结果给代理服务器,导致网上交易失败。
在本实施例中,USB Key还可以在得到关键信息后,不输出该关键信息给用户进行确认,而是,直接对协议内容进行签名,然后返回签名结果给代理服务器,代理服务器根据该签名结果和协议内容生成新的协议报文,发送该新的协议报文给应用服务器。
在本实施例中,如果需要更高的安全性,步骤106还可以替换为以下过程:
代理服务器将协议内容发送给USB Key,USB Key对该协议内容进行签名,并将签名结果返回给代理服务器,代理服务器根据该签名结果和协议内容(插入或替换),生成新的协议内容,并添加新的请求头域得到新的协议报文,然后发送给应用服务器,应用服务器收到后解析该新的协议报文,验证其中的签名,验证通过后为客户端提供服务。
实施例2
本实施例提供了一种提高网络应用安全性的系统,包括:代理服务器1和智能密钥设备2。其中,代理服务器1安装于客户端主机内,具体包括:
接口模块11,用于接收客户端软件根据用户输入的信息生成并发来的协议报文,并与智能密钥设备2通讯,向智能密钥设备2发送协议内容,接收智能密钥设备2返回的签名结果,还用于发送新的协议报文给应用服务器;
解析模块12,用于对接口模块11收到的协议报文进行解析,得到协议内容;
判断模块13,用于判断解析模块12得到的协议内容中是否存在代理服务器1、智能密钥设备2和应用服务器预先约定的关键信息,如果存在该关键信息,通过接口模块11发送协议内容给智能密钥设备2,如果不存在该关键信息,通过接口模块11发送协议报文给应用服务器;
报文生成模块14,用于根据接口模块11收到的签名结果和解析模块12得到的协议内容,生成新的协议报文,通过接口模块11发送该新的协议报文给应用服务器;
智能密钥设备2具体包括:
接口模块21,用于与代理服务器1通讯,接收代理服务器1发送的协议内容,向代理服务器1发送签名结果;
过滤模块22,用于解析接口模块21收到的协议内容,得到所述关键信息;
输出模块23,用于输出过滤模块23得到的关键信息供用户确认;
确认模块24,用于接收用户输入的确认所述关键信息是否正确的信号;
签名模块25,用于当确认模块24收到的信号为用户确认关键信息正确时,对接口模块21收到的协议内容进行签名,并通过接口模块21返回签名结果给代理服务器1;
异常处理模块26,用于当确认模块24收到的信号为用户确认关键信息不正确时,或者确认模块24在预设的时间内未收到用户进行确认的信号时,进行异常处理。
本实施例中,代理服务器1的判断模块13具体包括:
第一判断单元,用于在解析模块12得到的所述协议内容中找到代理服务器1、智能密钥设备2和应用服务器指定的字段,判断该字段中是否写有数据,如果是,则判断出所述协议内容中存在该关键信息,通过接口模块11发送协议内容给智能密钥设备2,否则,判断出所述协议内容中存在该关键信息,通过接口模块11发送所述协议报文给应用服务器;
或者,
第二判断单元,用于判断解析模块12得到的所述协议内容中是否存在代理服务器1、智能密钥设备2和应用服务器预先约定的关键信息标识符,如果存在,则判断出所述协议内容中存在该关键信息,通过接口模块11发送协议内容给智能密钥设备2,否则,判断出所述协议内容中存在该关键信息,通过接口模块11发送所述协议报文给应用服务器。
本实施例中,上述协议报文和新的协议报文均包含有请求头域,该请求头域中写有所述应用服务器的地址,相应地,判断模块13具体包括:
判断单元,用于判断解析模块12得到的协议内容中是否存在代理服务器1、智能密钥设备2和应用服务器预先约定的关键信息;
第一处理单元,用于如果判断单元判断出所述协议内容中存在关键信息,对代理服务器1的接口模块11收到的协议报文的请求头域进行解析,判断该请求头域中写入的应用服务器地址是否与代理服务器1存储的应用服务器地址一致,如果一致,则通过代理服务器的接口模块11发送所述协议内容给智能密钥设备2,如果不一致,则提示用户应用服务器错误;
第二处理单元,用于如果判断单元判断出所述协议内容中不存在关键信息,通过接口模块11发送所述协议报文给应用服务器。
本实施例中,智能密钥设备2的过滤模块22具体包括:
第一过滤单元,用于在接口模块21收到的协议内容中找到代理服务器1、智能密钥设备2和应用服务器指定的字段,判断该字段中是否写有数据,如果是,则读出该数据,得到所述关键信息;
或者,
第二过滤单元,用于判断接口模块21收到的协议内容中是否存在代理服务器1、智能密钥设备2和应用服务器预先约定的关键信息标识符,如果存在,则根据该关键信息标识符找到所述关键信息。
本实施例中,智能密钥设备2的输出模块23可以为液晶显示器或音频装置。
本实施例中,智能密钥设备2的异常处理模块26具体包括:
第一异常处理单元,用于当确认模块24收到的信息为用户确认关键信息不正确时,或者确认模块24在预设的时间内未收到用户的确认信息时,通过接口模块21通知代理服务器1停止操作,向用户提示操作失败;
或者,
第二异常处理单元,用于当确认模块24收到的信息为用户确认关键信息不正确时,或者确认模块24在预设的时间内未收到用户的确认信息时,通过接口模块21向代理服务器1返回一个错误的签名结果。
本实施例中,代理服务器1的接口模块11还用于当判断模块13判断出协议内容中不存在所述关键信息时,将协议报文发送给应用服务器。
本实施例中,上述智能密钥设备2的签名模块25具体包括:
签名单元,用于当确认模块24收到的信号为用户确认关键信息正确时,根据个人识别码或个人生物特征对用户的身份进行验证;如果正确,则对智能密钥设备2的接口模块21收到的协议内容进行签名,并通过智能密钥设备2的接口模块21返回签名结果给代理服务器1;如果不正确,则拒绝对协议内容进行签名,流程结束。其中,个人生物特征包括指纹、虹膜或静脉识别。
本实施例中,代理服务器1的报文生成模块14具体包括:
第一生成单元,用于将代理服务器1的接口模块11接收到的签名结果插入到所述协议内容中得到新的协议内容,为新的协议内容添加请求头域,得到新的协议报文,通过接口模块11发送该新的协议报文给应用服务器;
或者,
第二生成单元,用于使用代理服务器1的接口模块11接收到的签名结果对所述协议内容中的指定部分进行替换得到新的协议内容,为新的协议内容添加请求头域,得到新的协议报文,通过接口模块11发送该新的协议报文给应用服务器。
本发明实施例提供的技术方案通过客户端的代理服务器判断协议报文中是否存在关键信息,如果存在,由智能密钥设备对协议内容进行签名后返回签名结果给代理服务器,代理服务器根据签名结果生成新的协议报文发给应用服务器,在不改动原有客户端的前提下提高了网络应用的安全性,可以适用于各种客户端软件,具有良好的兼容性、易用性。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。