基于集群阵列的反向隔离文件传输系统及其方法
技术领域
本发明涉及一种文件传输系统,尤其涉及一种基于集群阵列的反向隔离文件传输系统,同时还涉及一种基于集群阵列的反向隔离文件传输方法,属于网络安全技术领域。
背景技术
如图1所示,反向隔离设备一般部署在不同网络的边界,采用文件作为传输载体,通过在隔离设备上配置相应的传输规则,允许合法的数据,从网络1经过隔离设备单向传输到网络2。
反向隔离设备其内部设置有开关装置,通过开关切换及数据缓冲设施来进行数据交换。开关的切换使得在任何时刻两个网络没有直接连通,在某个时刻网络安全隔离设备只能连接到一个网络,而数据流经网络安全隔离设备时TCP/IP协议被终止,因此可以有效地防护利用网络进行的外部攻击。从而达到两个不同网络数据交换的目的。
作为代理,反向隔离设备从外网的网络访问包中抽取出数据然后通过数据缓冲设施转入内网,完成数据中转。在中转过程中,网络安全隔离设备会对抽取的数据报文的IP地址、MAC地址、端口号、连接方向实施过滤控制;由于网络安全隔离设备采用了独特的开关切换机制,因此,在进行过滤检查时实际上网络处于断开状态;通过严格检查只有符合安全策略的数据才能进入内网,因此即使黑客强行攻击了网络安全隔离设备,由于攻击发生时内外网处于物理断开状态,黑客也无法进入内网。
在实现物理隔断的同时,反向隔离设备允许可信的内部网络和不可信的外部网络之间的数据和信息进行安全交换。由于网络安全隔离设备仅抽取合法数据进入内网,因此,内网不会受到网络层的攻击,这就在物理隔离的同时实现了数据的安全交换。
随着技术的发展,应用面的广泛,遇到的传输任务呈现多样化,复杂化。单个反向隔离设备的带宽(大约为2M/S)已经不满足传输任务的过高的要求,常规部署方式会到达性能瓶颈。或者待发送文件数量较多时,会产生文件传输任务堆积的情况,影响文件传输的及时性,从而影响到等待使用该文件的其他相关应用,影响工作效率。
发明内容
针对现有技术的不足,本发明所要解决的首要技术问题在于提供一种基于集群式阵列的反向隔离文件传输系统。
本发明所要解决的另一技术问题在于提供一种基于集群式阵列的反向隔离文件传输方法。
为实现上述发明目的,本发明采用下述的技术方案:
一种基于集群阵列的反向隔离文件传输系统,包括发送端、外网交换机、至少两个反向隔离设备、内网交换机和接收端,所述反向隔离设备设置外网口和内网口,其中,
所述发送端设置于发送服务器上,所述接收端设置于接收服务器上,所述发送服务器通过网线与所述外网交换机相连,所述外网交换机再通过网线与所述至少两个反向隔离设备相连,每一个所述反向隔离设备的内网口与所述内网交换机相连,所述内网交换机通过网线与所述接收服务器相连。
一种基于集群阵列的反向隔离文件传输方法,基于上述的反向隔离文件传输系统实现,包括以下步骤:
(1)在所述反向隔离设备中配置通信规则,在所述发送端配置传输隧道,所述传输隧道与所述反向隔离设备进行协商,生成传输密钥;
(2)当所述发送端与接收端两者建立文件传输通道后,所述反向隔离设备将文件作为传输载体,获取文件传输列表并根据选择的传输链路进行文件分发。
其中较优地,所述步骤(1)中,所述发送端内由独立的线程对所述隧道协商进行控制,且所述隧道协商过程与所述反向隔离设备交互至少2次。
其中较优地,所述隧道协商过程完成后,所述发送端与所述反向隔离设备之间建立连接,形成链路,且一条链路只对应一个反向隔离设备,所述链路由单独的线程进行维护。
其中较优地,所述发送端内设置集群阵列发送分配模块,所述发送分配模块根据当前线路是否繁忙分配传输任务,选择最优线路发送。
其中较优地,每个所述链路线程维护自己的待发送文件列表,当发送任务线程有新的文件需要发送时,通过比较链路中所述待发送列表中的文件数量,选择链路待发送文件最少的链路,将所述文件添加到所述链路的待发送文件列表中。
其中较优地,所述文件传输过程中采用动态密钥的对称加密,且传输完成后进行MD5值校验。
其中较优地,所述文件的分发过程如下:a.在线程启动后,等待其他线程加载系统使用的其他必须参数;b.判断原发送路径是否存在,若不存在线程退出,并给予界面错误提示;c.获得本地路径下的全部文件;d.更新待发送列表;d.遍历待发送列表,获得待发送文件;判断该文件是否在正在发送列表中,若已经在正在发送列表中,则遍历下一个文件,若不在正在发送列表中,将该文件添加到正在发送文件列表中;f.查找是否有可用的空闲链路,若没有空闲链路,则将该文件从正在发送列表中移除;若有空闲链路,判断该空闲链路是否真实存在于系统的链路列表中,若链路存在,将该文件添加到空闲链路的待发送列表中,进行排队发送。
其中较优地,用户登陆与隧道协商时,采用非对称算法密钥机制,在所述发送端内采用RSA算法生成公钥对与私钥对,并以标准数字证书的形式存储在本地。
其中较优地,所述接收端内设置集群阵列接收模块,当有报文发来时,对其进行初步的分析,判断是否为某一个文件的第一帧信息;如果为第一帧信息则说明是有一个新文件开始传输,启动独立的线程接收文件,如果不为第一帧,则将报文添加到接收该文件的线程缓冲区中。
本发明能够通过软件内部多线程的控制,可以将一个文件传输任务的待发送文件进行分配,经过多个隔离设备发送到接收端,从而大大提高传输效率;采用动态密钥(每次与设备协商,都会对密钥进行更换)的机制,保证文件安全传输,并且传输密钥无法通过截取传输报文进行破解;采用MD5值校验,失败重传机制保证文件完整、顺利的传输到接收端,并且传输过程中没有被篡改。
附图说明
图1是反向隔离设备的常规部署方式示意图;
图2是本发明所提供的反向隔离文件传输系统结构图;
图3是本发明的实施例中,隧道协商流程的示意图;
图4是本发明的实施例中,获取文件流程的示意图;
图5是本发明的实施例中,文件分发流程的示意图;
图6是本发明的实施例中,链路工作原理的示意图;
图7是本发明的实施例中,文件多线程接收原理的示意图;
图8是本发明的实施例中,反向隔离文件传输系统结构图。
具体实施方式
下面结合附图和具体实施例对本发明的技术内容做进一步的详细说明。
在对传输任务速率有过高的要求时,单个反向隔离设备的常规部署方式会到达性能瓶颈,因此本发明采用集群阵列式反向隔离传输方案。本发明公开了一种基于集群阵列的反向隔离文件传输系统,包括发送端、接收端和至少两个反向隔离设备。根据反向隔离设备的特性,一般部署在不同网络的边界,从而达到两个不同网络数据交换的目的。
如图2所示,本发明所提供的反向隔离文件传输系统结构图:发送端设置于服务器上,通过该服务器与外网交换机相连,外网交换机再引出若干根网线与若干个隔离设备的外网口相连。每个隔离设备的内网口与内网交换机相连,内网交换机再引出一根网线与接收服务器相连。从而使发送端、接收端能够通过交换机与多台隔离设备相连,提供实现多台隔离同时传输的硬件网络环境。
系统在发送端内设置集群阵列发送分配模块,在接收端内设置集群阵列接收模块。首先,系统在反向隔离设备中配置通信规则,然后在发送端配置传输隧道,该传输隧道与反向隔离设备进行协商,生成传输密钥。当发送端与接收端两者建立文件传输通道后,反向隔离设备将文件作为传输载体,获取文件传输列表并根据选择的传输链路进行文件分发,即反向隔离设备一方面循环遍历文件夹,查找是否存在符合规范的待发送文件,获得待发送列表,另一方面根据检查所选择配置的链路的状态,选择较优线路发送文件,进行文件分配。
发送端与反向隔离设备之间建立连接,形成链路,标志发送端与接收端之间建立关系,一条链路需要有一条隧道,并对应一个反向隔离设备,其中,隧道协商成功后才可以形成链路。集群阵列发送分配模块中,链路由单独的线程进行维护,其功能类似文件传输通道。发送端传输任务能够根据当前链路是否繁忙对传输任务进行分配,选择最优线路进行发送,通过独立的线程控制不同的链路,每个链路线程维护自己的待发送文件列表,当发送任务线程有新的文件需要发送时,可以通过比较链路待发送列表中的文件数量,择优选择链路待发送文件最少的链路,将文件添加到该链路的待发送文件列表中。当所有链路待发送文件列表中文件数量都达到5个(可配置)时,认为全部链路均处于繁忙状态,则暂时不对文件进行发送,当有空闲链路时在重新进行对文件进行分配,经过不同的反向隔离设备将文件完整的传输到接收服务器上。传输过程中采用动态密钥的对称加密,文件传输完成后进行MD5值校验从而保证文件稳定可靠传输。
下面就一种基于集群式阵列的反向隔离文件传输系统的文件传输过程的各个部分进行详细描述。
1.文件传输部分:
(1)待发送文件列表更新:由线程检视制定文件夹(包括子文件夹),获取目录下全部待发送的文件并对文件的类型进行一些判断。一方面由getFiles()获取文件,更新待发送文件列表。另一方面,将不符合发送规则的文件移动到制定的路径。
获取文件算法getFiles()流程如下,如图3所示,该算法采用递归调用的原则,首先判断参数是否为路径。如果为文件,则将文件添加到待发送列表中;如果参数是一个路径对象,则会调用该对象的listFiles()方法获得当前路径下的文件列表,接着会对列表内的元素进行遍历。遍历过程中,如果遍历到的对象是路径,则递归调用getFiles()方法对这个对象进行分析;如果该对象是文件,则要对文件进行验证:a.验证这个文件是否还存在于系统中,如果不存在,继续遍历下一个元素。b.验证文件是否已经在待发送列表中,如果已存在,则遍历下一个元素。c.验证是否正在使用该文件,防止文件在没写入完的情况下被错误发送,如果正在使用,则等待200毫秒。d.判断文件是否为0字节,如果为0字节,则认为是错误文件不发送,将文件移动到zeroSize文件夹。e.判断是否为二进制文件,如果为二进制文件则将文件移动到错误文件路径,该路径需通过发送端进行配置,由于电力系统的特性要求,不允许二进制文件进行跨区输。f.判断文件是否符合E语言规范(E语言规范:一种标签格式规范,E语言校验功能可以通过发送端配置进行启用/禁用),如果不符合E语言规范,同样将文件移动至错误文件路径。
(2)文件分发流程,如图4所示,包括:a.在线程启动后,首先要sleep1000毫秒,等待其他线程加载系统使用的其他必须参数;b.判断原发送路径是否存在,若不存在线程退出,并给予界面错误提示;c.调用getFiles()方法获得本地路径下的全部文件;d.更新待发送列表;d.遍历待发送列表,获得待发送文件;判断该文件是否在正在发送列表中,若已经在正在发送列表中,则遍历下一个文件,若不在正在发送列表中,将该文件添加到正在发送文件列表中;f.查找是否有可用的空闲链路,若没有空闲链路,则将该文件从正在发送列表中移除;g.若有空闲链路,判断该空闲链路是否真实存在于系统的链路列表中,若链路存在,将该文件添加到空闲链路的待发送列表中,进行排队发送。
(3)文件校验部分:处于安全因素考虑,传输软件需要对待发送的文件类型进行判断,区分出二进制文件、文本文件、E语言文件三种类型,分类进行处理。
2.链路工作原理:链路的主要工作是对待发送列表的发送工作,包括:
a.在链路进行文件发送前,需要做一些验证:首先要判断该链路是否已经发送失败次数是否超过3次(连续发送文件失败3次任务链路故障)。如果链路故障,则暂停文件发送3分钟;b.由累加计数器进行计数,如果当前链路已发送的文件数量是设置隧道周期的整数倍,则认为到达隧道协商周期,需要重新协商隧道;c.验证链路发送文件列表是否为空,若不为空,则遍历列表进行文件顺序发送;d.发送文件的过程中,如果出现传输错误,或者丢包等异常情况,超过3次任务本次发送失败。
如图5所示,循环遍历待发送列表,如果存在待发送文件,则调用文件发送方法,将文件发送到接收端。同时链路中也增加了一些容错的处理,如果链路连续发送失败3次,则链路设置为不可用,线程sleep100000毫秒后,这条链路才可以重新作为备选链路进行文件发送。
为需要保证文件可靠传输,本发明还设置有完善的密钥机制,采用非对称算法的数字证书作为媒介,文件发送端可以生成RSA算法的公、私钥对,并且将生成的密钥对以PKCS#12的标准将数字证书以.p12的文件后缀形式存储在本地。密钥机制主要用来控制用户登录以及与反向隔离设备进行隧道协商。当用户进行登录时,在登陆系统时需要对.p12证书的密码进行验证,密码验证通过后才可以登陆系统。在隧道协商时,通过协商产生相应的传输文件过程中使用的对称密钥,整个协商的过程采用UDP协议。其中,UDP报文格式设定分两部分:
1.隧道协商部分:第一帧,Request报文:
版本号4字节代表发送端的版本号,现只考虑版本号3位情况,末位用0做填充。校验过程只判断第一个字节的大版本号。原报文格式不变,在报文末尾补充4字节的版本信息。
第二帧,Response报文:
版本号4字节代表发送端的版本号,现只考虑版本号3位情况,末位用0做填充。校验过程只判断第一个字节的大版本号。原报文格式不变,在报文末尾补充4字节的版本信息。
第三帧,确认报文:
按照原有格式不变,如果第二帧版本号没有验证通过,则不发送第三帧。
第四帧,接收确认报文:
2.文件传输部分:第一帧报文内容:
外部报头 |
内部报头 |
文件大小 |
文件名 |
密钥 |
签名 |
属性 |
MD5 |
2 |
2 |
4 |
1258 |
16 |
128 |
16 |
16 |
整个报文1442,外部头0xEF,0xE1两字节,传递过程中,除外部头外,剩下1440用固定密钥(固化在程序中)加密。取加密结果的最后两个字节对外部头的2个字节进行异或运算,从而对外部头2字节进行密文保护。外部头2字节用整个报文(加密后的结果)的最后2个字节进行异或。
中间帧报文:
外部头0xEF、0xE2两字节,除外部头外1440用隧道协商出来的密钥(随机)进行加密。外部头2字节用整个报文(加密后的结果)的最后2个字节进行异或。
最后一帧报文:
外部头0xEF,0xE3两字节,除外部头外1440用隧道协商出来的密钥(随机)进行加密。外部头2字节用整个报文(加密后的结果)的最后2个字节进行异或。
根据上述UDP格式,反向隔离设备侧设置端口对协商报文进行监听,接收到协商报文后,按照流程对合法的协商请求进行应答。
在发送端侧,由独立的线程对隧道协商进行控制,循环遍历隧道列表,然后控制隧道进行协商请求发起操作,并检视每条隧道的运行状态。如图6所示,整个隧道协商流程一共需要与反向隔离设备交互2次,在协商之前,需要在发送端导入反向隔离设备的公钥证书,在反向隔离设备上导入发送端的公钥证书,用来进行加解密和验证数字签名。
其中,
第1次交互:首先发送端生成随机数1,并用自己生成的p12证书的私钥,对随机数1进行加密和数字签名,并按照上文中所述的固定的报文格式对加密后的结果进行封装。在完成报文封装后,用封装好的报文向反向隔离设备发起协商请求。在反向隔离设备收到发送端的协商请求后,对报文的内容进行验签。验签通过后,由反向隔离设备生成随机数2,同样对随机数2进行加密及数字签名,并按照固定的报文格式给予发送端应答,完成第一次交互。
第2次交互:发送端在接收到反向隔离设备的应答后,对接收到的报文进行解析,验签通过后,用反向隔离设备证书中的公钥将加密后的随机数解密还原成原文,此时发送端获得自身生成的随机数1和反向隔离设备生成的随机数2,用随机数2对随机数1进行异或运算,结果作为文件输出的对称密钥。完成生成密钥的过程后,发送端向反向隔离设备发送确认报文,该反向隔离设备针对该确认报文向发送端发送确认报文应答,完成第二次交互。
如图7所示,在接收端侧,文件核心接收线程工作原理,作为接收线程的主类,负责接收报文后,再对其进行多线程分发。对固定的端口进行监听(UDP协议)。当有报文发来时,对其进行初步的分析,判断是否为某一个文件的第一帧信息。如果为第一帧信息则说明是有一个新文件开始传输,启动独立的线程接收文件,如果不为第一帧,则将报文添加到接收该文件的线程缓冲区中。
文件传输过程中,为避免UDP协议丢包现象对文件接收造成的不一致,对发送的文件过程进行了一些处理。
(1)为了安全起见,每次发送文件的长度都为固定值。大小为1442字节,通过文件大小计算出需要发送/接收的帧数。
(2)发送一个文件时,第一帧不要传输真实的数据,而是把文件的加密密钥,文件名,需要接收的帧数,接收后的存储路径,发送前的MD5值等信息发送到接收端,同时需要接收来自接收端的应答,以便确认接收端已具备接收该文件的条件。
(3)为了避免接收过程中出现丢包现象,接收端严格控制接收到的序列,确保所有帧全部收到,同时在传输过程中,按照每发送5帧(可以通过配置调整)接收一次应答的机制,保证每组(5帧)数据成功接收,并提供丢包重传的机制保证文件传输过程中不丢包。
(4)当文件接收到最后一帧时,会对接收到完整的文件进行MD5值计算,并与之前第一帧接收到的MD5值进行比较,如果两次的MD5值一致,则认为文件顺利被接收,同时给予发送端成功标识符。
(5)所有发送端与接收端之间的交互,都需要通过反向隔离设备,并且每次发送的报文都以密文形式存在。密钥的获取方式为与反向隔离设备协商所得,每次重新协商后,对称密钥都会进行更换。
本发明的一个实施例如图8所示,其中,发送端硬件环境:CPU:Intel Pentium4CPU3.00GHz,内存:1GB,操作系统:Windows XP SP3。接收端硬件环境:CPU:Intel Core i3-2328M CPU 2.20GHz,内存:6GB,操作系统:Windows 7家庭普通版。
(1)单任务经过单个反向隔离设备传输,默认应答帧情况下(5帧一应答)文件发送的速率,以及文件传输的可靠性,并测试出最大支持传输文件大小,类型及大小。
表1单任务经过单个反向隔离设备传输测试结果
在默认5帧一应答的情况下,稳定传输在1.3M/S左右。当启用E语言校验时,最大文件上线为20M。超过的话可能导致内存使用过大,java虚拟器崩溃。
2.多任务经过单个反向隔离设备传输,默认应答帧情况下(5帧一应答)文件发送的速率,以及能够承受最大的任务数量,以及文件传输的可靠性。使用20M大小的符合E语言校验的文件进行发送。
表2多任务经过单个反向隔离设备传输测试结果
在默认5帧一应答的情况下,大致估算反向隔离设备的速率上线为2.3M/S左右。前半部分测试中启用了E语言校验,后半部分没有启用,因为当多个任务同时校验E语言文本时,有可能导致占用内存过大,导致虚拟机崩溃,正常情况下,校验E语言的速度还是比较快的,同时有3个任务还是可以的。8个任务同时经过一个反向隔离设备进行传输,就出现了丢包现象。7个的时候还是可以的不过传输速率达到2.3M/S后就没有变化了。单任务情况下,最大支持应答帧为40。
3.单任务经过多个反向隔离设备传输,默认应答帧情况下(5帧一应答)文件发送的速率、任务分配的能力、文件传输的可靠性。调整应答帧数,测出应答帧数上限。使用文件为:4个20M符合E语言校验的文本。
表3单任务经过多反向隔离设备传输测试结果
由于隔离3和4不能用新驱动更新,故后半程测试没有测试隔离3,4。但是结果可以参照隔离1,2进行猜想,应该相当于单个反向隔离设备单任务情况。
4.多任务经过多个反向隔离设备传输,默认应答帧情况下(5帧一应答)文件发送的速率,以及任务分配的能力,以及文件传输的可靠性。使用文件为:4个20M符合E语言校验的文本分两种情况考虑:
(1)共享链路的情况
表4多任务经过多反向隔离设备且共享链路时传输测试结果
不共享链路的情况下,能够保证同时经过同一个反向隔离设备的线程只有一个,基本上符合单个反向隔离设备,单任务的测试结果。
(2)不共享链路的情况
表5多任务经过多反向隔离设备且不共享链路传输测试结果
不共享链路的情况下,基本上符合多任务单个反向隔离设备的测试结果。经过测试数据可以发现,在设置为20帧一应答的方式情况下,工作最稳定,效率最高。
在本发明的一个实施例提供的网络环境中,发送端与反向隔离设备进行协商,分别形成四条不同的隧道,产生传输密钥(每隔一段时间会重新协商更换密钥)。然后,与接收端链接形成四条链路,在发送任务中,可以根据链路的繁忙状态对待传输的任务进行合理的分配,从而解决单个反向隔离设备的性能瓶颈,各个反向隔离设备之间并行传输,理论上采用四个反向隔离设备可以将任务传输效率提高四倍。
本发明通过多个反向隔离设备的集群阵列,实现了对文件并行发送。基于UDP协议,严格的控制每一帧的数据报文、数字证书验证、失败重传、MD5值校验等手段,保证文件可靠、稳定、安全的传输。同时本发明具有良好的跨平台性,支持Windows to Windows、Linux to Linux、Windows to Linux、Linux to Windows的文件传输。相对于传统的部署方式,不论是在稳定性,传输效率,容错机制上都有了很大的提升,从而解决了传统单个反向隔离设备传输性能瓶颈的问题。
上面对本发明所提供的基于集群式阵列的反向隔离文件传输系统及其方法进行了详细的说明。对本领域的一般技术人员而言,在不背离本发明实质精神的前提下对它所做的任何显而易见的改动,都将构成对本发明专利权的侵犯,将承担相应的法律责任。