本发明涉及计算机应用技术领域,尤其涉及一种跨浏览器使用硬件加密介质数据安全传输系统和方法。
背景技术:
目前主流的浏览器,如Microsoft Internet Explorer、Google Chrome、Mozilla、Firefox、360安全浏览器等,在需要使用身份认证、数字签名、应用授权、网银支付等独立于浏览器以外的特定功能时,需要用到浏览器插件技术来实现。
ActiveX插件技术是国际上通用的基于Windows平台的软件技术。ActiveX控件是一些软件组件或对象,可以将其插入到WEB网页或其它应用程序中。许多浏览器的扩展功能,如Flash、网银等功能都是以ActiveX控件的形式提供的。而ACTIVEX控件只有IE内核的浏览器较好的对它进行了支持,而非IE内核浏览器默认是不支持这种形式的控件的例如:Chrome,firefox等,不利于浏览器和操作系统的交互。
例如,公告号为CN 102946314 A的中国发明专利申请,名称为《一种基于浏览器插件的客户端用户身份认证方法》, “其具体包括以下步骤:步骤1. 客户端向服务器请求身份认证;步骤2. 客户端浏览器加载浏览器插件,浏览器插件进行初始化并加载外部硬件密码设备,外部硬件密码设备加载后,浏览器插件获取其中的数字证书和密码算法,并采用密码算法对服务器信息进行签名;步骤3. 浏览器插件向浏览器返回数字证书和签名值,浏览器将返回后的数字证书和签名值提交给服务器。通过在浏览器上设置浏览器插件,使得浏览器可以运行特定的密码算法,提高了客户端用户身份认证的安全性及有效性,其外部硬件密码设备中的密码算法和证书可以根据需要进行任意选择。”这是现在大多数公司通用的插件技术,但是插件只能是IE内核的浏览器才能使用,而非IE内核浏览器默认是不支持这种形式的控件。而且该技术仅仅涉及了身份认证。
之前很多开发者为了能在非IE内核的浏览器中支持ACTIVEX控件,使用了NPAPI接口的插件技术,通过NPAPI接口的插件来调用ACTIVEX控件。因为对于NPAPI接口的安全性和稳定性的不足使得众多非IE内核浏览器的开发者选择不支持或即将不支持这种接口,所以现有技术具有很难统一以及不稳定等缺点。
另一方面,ActiveX控件有可能存在漏洞,黑客可利用ActiveX的漏洞进行ActiveX控件权限范围内的操作。一般的,ActiveX控件与浏览器内核(例如IE内核)运行在同一个进程(即浏览器进程)中。浏览器进程本身权限较高,可读写文件、布局内存、进行网络通信甚至读写注册表。一旦ActiveX控件存在漏洞,就有可能被黑客利用以进行读写文件、布局内存等高级权限操作,达到控制用户计算机的目的。
技术实现要素:
本发明所要解决的技术问题是针对现有技术中存在的上述问题,提供了一种用统一的方法一次性实现非IE内核浏览器与操作系统的交互,且安全性能更佳的一种跨浏览器使用硬件加密介质数据安全传输系统和方法。
为解决上述问题,本发明的一种技术方案是:
一种跨浏览器使用硬件加密介质数据安全传输方法,包括通过网络连接的数据解密终端设备和数据加密终端设备,其特征在于,所述的数据加密终端设备包括客户端A、硬件加密介质,以及数据加密模块,所述的数据解密终端设备包括客户端B、硬件解密介质,以及数据解密模块;
所述的数据加密模块,通过通讯协议与所述的客户端A进行进行通讯,用以调用数据加密介质进行加密。
所述的数据解密模块,通过通讯协议与所述的客户端B进行进行通讯,用以调用数据解密介质进行解密。
作为优选,所述的数据加密模块和/或所述的数据解密模块为一种socket的服务程序。
作为优选,所述的通讯协议为socket通讯协议。
作为优选,所述硬件加密设备或硬件解密设备包括与所述的密码算法对应的密码芯片或独立的处理芯片。
一种跨浏览器使用硬件加密介质进行数据安全传输方法,包括以下步骤:
S101.所述客户端A通过浏览器A获取由待加密内容组装成约定的协议包;
S102. 所述的浏览器A将所述的协议包发送给数据加密模块,等待所述数据加密模块返回;
S103. 所述的数据加密模块收到协议包后获取待加密待加密内容,同时调用硬件加密介质调用加密算法进行加密;
S104. 所述的数据加密模块将加密好的内容重新按照约定的协议打包成协议包,并发送给所述的浏览器A;
S105. 所述的浏览器A获取密文。
作为进一步地,还包括以下步骤:
S201. 所述客户端B通过浏览器B接收所述的浏览器A发送的密文;
S202. 所述的浏览器B将密文发送给所述数据解密模块,等待所述数据解密模块返回;
S203. 所述的数据解密模块收到协议包后,同时调用硬件解密介质调用与所述的加密算法相应的解密算法进行解密;
S204. 所述的数据加密模块将解密后的内容重新按照约定的协议打包成协议包,并发送给所述的浏览器B。
作为优选,所述浏览器A和浏览器B为任意windows平台的浏览器。
作为优选,所述的加密算法和解密算法为sm2或RSA。
相比较于现有技术,本发明具备如下优点:
本发明数据加密模块和数据解密模块,是基于Socket的服务程序,将其注册为windows平台的服务,通过服务程序作为中间件来实现非IE内核的浏览器的交互。本发明以服务的方式替代ActiveX控件来和浏览器进行交互,解决了非IE内核对ActiveX控件不兼容的问题,对所有浏览器都可使用一套代码,无需针对性的开发,无需担心各版本浏览器的兼容问题。服务程序附带加密或解密功能,无需再通过调用ActiveX控件实现加密解密,减少了因采用ActiveX控件存在的漏洞而带来的风险,进一步提高了安全性。
附图说明
图1是本发明原理示意图。
具体实施方式
下面结合附图和实施例进一步详细说明本发明,但本发明的保护范围并不限于此。
参照图1,本发明一种跨浏览器使用硬件加密介质数据安全传输方法,包括通过网络连接的数据解密终端设备和数据加密终端设备,其特征在于,所述的数据加密终端设备包括客户端A、硬件加密介质,以及数据加密模块,所述的数据解密终端设备包括客户端B、硬件解密介质,以及数据解密模块;所述的数据加密模块,通过通讯协议与所述的客户端A进行进行通讯,用以调用数据加密介质进行加密。所述的数据解密模块,通过通讯协议与所述的客户端B进行进行通讯,用以调用数据解密介质进行解密。所述的数据加密模块和/或所述的数据解密模块为一种socket的服务程序。所述的通讯协议为socket通讯协议。所述硬件加密设备或硬件解密设备包括与所述的密码算法对应的密码芯片或独立的处理芯片。
一种跨浏览器使用硬件加密介质进行数据安全传输方法,包括以下步骤:
S101.所述客户端A通过浏览器A获取由待加密内容组装成约定的协议包;
S102. 所述的浏览器A将所述的协议包发送给数据加密模块,等待所述数据加密模块返回;
S103. 所述的数据加密模块收到协议包后获取待加密待加密内容,同时调用硬件加密介质调用加密算法进行加密;
S104. 所述的数据加密模块将加密好的内容重新按照约定的协议打包成协议包,并发送给所述的浏览器A;
S105. 所述的浏览器A获取密文。
还包括以下步骤:
S201. 所述客户端B通过浏览器B接收所述的浏览器A发送的密文;
S202. 所述的浏览器B将密文发送给所述数据解密模块,等待所述数据解密模块返回;
S203. 所述的数据解密模块收到协议包后,同时调用硬件解密介质调用与所述的加密算法相应的解密算法进行解密;
S204. 所述的数据加密模块将解密后的内容重新按照约定的协议打包成协议包,并发送给所述的浏览器B。
所述浏览器A和浏览器B为任意windows平台的浏览器。所述的加密算法和解密算法为sm2或RSA。
除此之外,本发明中提及的硬件加密介质和硬件解密介质,是指通过专用加密芯片或独立的处理芯片等实现密码运算。将加密芯片、专有电子钥匙、硬盘一一对应到一起时,加密芯片将把加密芯片信息、专有钥匙信息、硬盘信息进行对应并做加密运算,同时写入硬盘的主分区表。这时加密芯片、专有电子钥匙、硬盘就绑定在一起。经过加密后硬盘如果脱离相应的加密芯片和电子钥匙,在计算机上就无法识别分区,更无法得到任何数据。
作为本发明的其他实施方式,本发明数据加密模块和数据解密模块作为服务程序采用Socket协议,也可以通过服务程序来调用ACTIVEX控件,或者扩展开可以进行IO操作或调用windowsAPI进行各种想要的操作。同时在网页和控件交互时可以作适当的加密来保证该做法的安全性。
本发明可以应用于加密文件传输,身份认证,数据签名,应用授权等多个领域,本发明的硬件加密介质和硬件解密介质可以根据需求替换成不同的程序。以下就本发明的实施例做进一步地阐述,但不作为对本发明技术方案的限制。
在本发明的一个实施例中,以加密传输为例,以客户端A和客户端B分别针对本发明应用在浏览器页面和客户端的情况下的具体实现步骤加以说明。
所述的数据加密模块和数据解密模块为浏览器页面程序,以客户端A的加密步骤为例加以说明,
1)客户端A启动页面初始化,创建websocket对象、并绑定本地IP和端口;
2)输入待加密原文 A,将A拼接成请求报文B,发送报文B给本机IP,等待返回结果
3)如果返回错误,则提示操作错误;否则,解析收到的Websocket消息,得到加密后的密文,将密文数据发送给客户端B。
再通过所述的数据加密模块和数据解密模块为桌面数据加密,以客户端A的加密步骤为例加以说明,
1)创建socket服务器对象 A;
2)如果绑定端口失败或监听申请的连接失败,则返回错误代码;
3)创建socket对象 B,等待连接,将连接对象赋值给B,等待接收数据 C;如果接收数据失败,则返回错误代码;
4)将数据C解析得到原文数据D,CALL 硬件接口对D进行加密得到密文E,发送E给socket连接对象
所述的数据加密模块和数据解密模块为浏览器页面程序,以客户端B的解密步骤为例加以说明,
1)客户端B启动页面初始化,创建websocket对象、并绑定本地IP和端口;
2)所述的客户端B等待接收待解密密文 A,
3)接收A并将A拼接成请求报文B,发送报文B给本机IP,等待返回结果
4)如果返回错误,则提示操作错误;否则,解析收到的Websocket消息,得到解密后的明文,显示明文信息。
所述的数据加密模块和数据解密模块为桌面数据加密程序,以客户端B的解密步骤为例加以说明,
1)创建socket服务器对象 A
2)如果绑定端口失败或监听申请的连接失败,则返回错误代码;
3)创建socket对象 B,等待连接,将连接对象赋值给B,接收数据 C,如果接收数据失败,则返回错误代码;
4)解析数据得到密文数据D,CALL 硬件接口对D进行解密得到明文E,发送E给socket连接对象 。
作为本发明的另一个实施例,以身份认证和签名过程为例,以客户端A和客户端B分别针对本发明的具体实现步骤加以说明。
1)创建websocket对象、并绑定本地IP和端口
2)输入用户名 A,将A拼接成请求报文B,发送报文B给本机IP,等待返回结果;
3)如果返回错误,则提示操作错误,否则解析收到的Websocket消息,得到签名结果,将签名结果发送给验签服务器;
4)如果验签失败,则提示身份认证失败,否则身份认证成功。
以上仅就本发明的最佳实施例作了说明,但不能理解为是对权利要求的限制。本发明不仅限于以上实施例,凡在本发明独立权利要求的保护范围内所作的各种变化均在本发明的保护范围内。