城市轨道交通网络间安全单向传输技术

时间:2022-11-09 14:30:35

城市轨道交通网络间安全单向传输技术

摘要:安全单向传输技术指不同安全级别网络之间单一数据流向的传输。为了应对城市轨道交通业务系统中各个子系统之间的复杂接入带来的潜在威胁,中国城市轨道交通协会提出安全生产网和外部服务网间应实施物理安全隔离。上海轨道交通目前所使用的通用单向传输技术无法满足业务传输的要求,且存在较大的安全隐患。提出了一种新型单向安全传输技术,介绍了该传输技术所采用的核心技术、所需的私有协议和传输模块工作机制。试验验证表明,在性能和可靠性方面,该传输技术比传统安全隔离网闸表现优异,且对其他子系统和网络具有普适性。

关键词:城市轨道交通;业务系统;安全生产网;外部服务网;单向传输;安全隔离

为了应对城市轨道交通业务系统中各个子系统之间复杂接入带来的潜在威胁,2018年,中国城市轨道交通协会了《智慧城轨信息技术架构及信息安全规范》。该规范提出:安全生产网和外部服务网间、内部管理网和外部服务网间应实施物理安全隔离,且不能进行实时信息交互。GB/T22239—2019《信息安全技术网络安全等级保护基本要求》(以下简称“等保2.0”)中,对信息系统安全隔离又有了更高的要求,有关工控扩展项的要求为:工业控制系统与企业其他系统之间应划分为两个区域,区域间应采用单向隔离技术手段。目前的主流单向传输技术是使用GAP(安全隔离网闸)隔离不同安全等级的网络。GAP主要依靠单向的光纤以太网适配器和一个无反馈的单向传输信道,而无反馈单向传输信道并不能保证传输的可靠性。因此需要使用较冗余的数据和复杂的校验计算来为单向传输信道提供可靠性,并通过打乱数据包的发送序列来解决随机丢失和序列丢失的问题。这种操作方式占用了较多的CPU资源,且无法解决流量突发和连续丢包的问题。城市轨道交通业务系统具有其特殊性,通用单向隔离技术无法满足业务系统必须的协议传输要求,在传输速率和可靠性上达不到等保2.0的技术要求,同时还存在很大的安全隐患。为了解决城市轨道交通业务系统生产核心网和服务管理网之间的单向数据传输问题,本文基于文献[1]的研究,提出了基于单向以太网适配器和单工光纤跳线进行安全单向传输的技术。该技术设计了一个有限反馈的单向传输信道,数据传输由一根光纤实现,反向反馈由一条单工串行线提供。在特定的需求下,该技术比GAP的传输速度更快。单工串行线只传输少量的确认信息,不能反向传输任何数据。两种网络之间不能连入任何其他网络,以确保网络信息安全。

1新型安全单向传输技术

1.1相关技术

由于单向以太网适配器只能沿单一方向发送数据,无法接收反馈,因此只能使用无连接的不可靠协议。而单向以太网适配器仅需要实现发送方和接收方端到端的传输,并不需要额外做数据帧分析和处理。因此,本文定义了一个运行在网络层和传输层的私有网络协议,用于实现单向传输。为了能够捕获和发送以太网帧,本文引入了高性能的PF_RING库。1.1.1PF_RING库PF_RING库是运行在Linux内核层的高效数据报文传输模型,用户级别的应用程序可以通过其提供的API(应用程序界面)来进行更为高效的网络数据传输。在Linux传统的网络协议栈数据报文处理过程中,CPU大量的处理能力使用在把网卡接收到的数据报文拷贝到kernel系统中的数据结构队列中,再从kernel系统的数据结构队列发送到用户空间的应用程序数据接收区中,导致CPU处理能力被严重耗损。网络传输过程中,在网络设备上需要对数据报文sk_buff结构进行多次拷贝,并且涉及内核态和用户态的频繁系统调用,限制了传输报文的效率,尤其对小报文的传输性能影响更大。PF_RING库一方面能减少报文在网络设备上的拷贝次数,可极大地释放出CPU的处理能力;另一方面与TNAPI技术的融合后可将网卡接收的数据报文分发到各个CPU核的RX队列中,以充分利用多核的特性,显著提高了网络设备的数据报文处理能力。1.1.2信号量信号量是一个同步对象,为多个进程提供共享对象的访问。当进程完成一次对该信号量对象的等待(wait)时,计数值减1;当进程完成一次对该信号量对象的释放(release)时,计数值加1。当计数值为0时,则进程不能完成对该信号量对象的等待,直至该信号量对象变成signaled状态。信号量对象的计数值大于0,为signaled状态;计数值等于0,为nonsignaled状态。如果信号量是一个任意的整数,通常被称为计数信号量;如果信号量只有二进制的0或1,被称为二进制信号量。在SystemV系统中,信号量增加了复杂度,称之为计数信号量集,即至少有1个信号量构成的集合,其中集合中的每个信号量都是计数信号量。对于信号量集中的信号量数目,系统内核是存在限制的,由内核参数决定。当操作计数信号量集时,可以同时对多个信号量进行一组操作,SystemV系统能确保其为原子操作。一个计数信号量集的每个成员可以有3种操作:查询值是否为0,计数值增加,以及计数值减少(假设减少以后结果仍不为负)。

1.2私有协议

1.2.1协议设计由于单向以太网适配器不能反向传输,因此一般使用不可靠的UDP(用户数据报协议)。为了适应城市轨道交通特殊的业务需求,提高传输的可靠性和效率,本文提出了一种私有协议,用于单向数据传输。该协议是在以太网的基础上实现的。为了提高以太网帧的传输性能,本文引入了PF_RING库对数据包进行处理。以太网帧MTU(最大传输单位)一般为1500B,本文设定MTU为1452B。实际应用场景下,用户进程一次发送的数据长度将大于MTU,因此数据将被分割成多个以太网帧来进行发送,并在接收端重新组装。因此,上层的私有协议需要具有分割和组合数据的能力。在本文中,设计了基于以太网的两层协议:第三层协议和第四层协议。第三层协议运行在以太网之上,用于实现数据包的分割和重组;第四层协议运行在第三层协议之上,用于实现数据包的验证。协议内容如图1所示。第三层协议中,version字段表示版本,通信双方使用的版本必须一致;flag字段表示标识,用于控制和识别分片;identification字段表示标识符,被用来唯一地标识一个报文的所有分片,因为分片不一定按序到达,所以在重组时需要知道分片所属的报文;offset字段表示分片偏移,描述每个分片相对于原始报文开头的偏移量;length字段表示长度,定义了包含首部和数据的总长度;data字段表示数据内容。第四层协议中,length字段表示长度,定义了包含首部和数据的总长度;checksum字段表示校验和,用于发现首部信息和数据中的传输错误。1.2.2协议转换城市轨道交通业务系统各子系统需要将数据经由生产核心网端点设备传输至服务管理网,因此需要对各子系统的数据传输协议进行解析,并转换为本文设计的私有协议。由于各子系统内使用的协议不尽相同,本文选择使用最多的ModbusTCP(TCP:传输控制协议)工控协议进行说明。ModbusTCP是一种应用层消息传递协议,其底层基于TCP/IP(IP:网际互连协议)协议架构,因此端点设备需要将TCP协议转换为第四层协议,将IP协议转换为第三层协议。1)将IP协议转换为本文定义的第三层协议。IP协议中版本字段占4bit,对其高位补全4个0后,构成8bit数据填入第三层协议version字段。IP协议中标志字段占3bit,对其高位补全5个0后,填入第三层协议flag字段。IP协议中片内偏移字段占13bit,对其高位补全3个0后,填入第三层协议offset字段。第三层协议length字段为:IP总长度字段值减去4个字段值,再乘以IP首部长度字段值,然后再加8个字段值。将IP协议中标识字段直接填入第三层协议identification字段。2)将TCP协议转换为本文定义的第四层协议。第四层协议length字段为:第三层协议length字段值减去8个字段值。第四层协议checksum字段计算过程为:首先将首部和数据以16bit为长度,分为一个个等长的字节,若总长度为奇数个字节,则在末尾补上一个位全为0的字节。然后将check-sum字段全置0;接下来采用反码加法(对每16bit进行二进制反码求和)累加所有16bit长的字节,得到的结果即为校验和;接收端收到帧后,将帧所有原码相加,且溢出的高位循环叠加到低位,如计算结果的16位中每一位都为1,则正确,否则说明发生错误。

1.3传输模块工作机制

传输模块基于单向以太网适配器和单工串口来建立可靠的信道。在私有协议中,第四层协议的length字段长度为2B,所以数据内容的最大长度为65535B。但由于运行在应用层的传输模块会占用几个字节,因此数据的最大长度会减少。由于光纤以太网的速度远大于单工串口,因此串口将成为传输瓶颈。为了提高信道的利用率,服务管理网不需要每次接收到单个数据包后都通过反向传输链路发送确认信息,而是持续接收一组数据包后再发送。基于存储能力和通信量的考虑,一组数据包的数量为16个数据包。传输模块首部有3个字段,分别是sn字段、ident字段和num字段,每个字段的长度为1B。sn字段表示组的标识符,用于区分不同的组;ident字段表示一个组内各个数据包的标识符,用于区分组内的不同数据包;num字段表示该组中数据包的数量。在生产核心网端点设备连续发送一组数据包后,会再发送一个查询数据包,要求服务管理网端点设备发送该组数据包的接收情况。当接收方收到一个数据包时,它将记录ident字段的值。当接收方收到查询数据包时,将回复对该组数据包的确认帧。发送方会检查确认帧中是否有接收缺失,如果有则重新发送对应的数据包。重复上述步骤,直到这组数据包被确认收到后再发送下一组。传输模块会提供发送和接收接口,传输单位是一组数据包。在发送端,端点设备调用接口来发送数据。数据不会被立即发送,而是先存储在一个环形队列中。同样,在接收端,收到的数据也会被暂存在一个环形队列中,直至该组数据包全部到达后才能被端点设备读取。发送方/接收方端点设备和传输模块需要互斥地访问环形队列。本文使用计数信号量集来实现互斥。该信号集有两个信号量,第一个用于对环形队列的访问,第二个代表环形队列中的空闲位置。端点设备和传输模块争取对环形队列的操作权限,需要同时对这两个信号量操作。比如,发送端在发送一组数据包前,需要对第一个信号量进行wait操作。如果操作后该信号量值大于等于0,则说明发送端获取了环形队列的控制权,可以进行发送;如果操作后该信号量值小于0,则说明端点设备正在使用环形队列,发送端需要等待其释放该资源。同时,发送端对第二个信号量也要进行wait操作,操作值为该组数据包的数量。如果操作后该信号量值小于0,则说明环形队列中没有足够的位置供数据进行发送。有时发送端的传输速度很慢,无法填满整个环形队列。因此传输模块会设置一个发送计时器,如果超时,模块会对第二个信号量执行release操作,并获得环形队列中的所有数据包。同理,在接收端也有类似的操作,本文将不再赘述。

2新型安全单向传输技术试验

为了测试上述安全单向传输技术设计方案的实际性能,本文对上述方法进行了试验验证。试验软硬件配置如下:操作系统为CentOS6.8,内核版本为4.4.43,CPU型号为Inteli5-2400,以太网设配器为ixgbe。串行端口的波特率为115200bit/s,一组数据包的最大数量为16个。试验设计为:发送方端点设备一次性发送50000个数据包,记录下开始时间和结束时间,然后计算出传输速度;接收方会输出收到的数据包的长度和数量,以验证是否收到了50000个数据包。传输速度的制约因素主要为串行速度和数据包大小,波特率对传输没有明显的影响,因此在试验中主要计算不同数据包大小的速度。本次试验中,按照1kB、2kB、4kB、8kB、16kB、32kB和64kB不同规格的数据包分别进行了10次测试,结果如表1所示。从表1中可以看出,当数据包不大于8kB时,数据包大小和传输速度成线性增长。但随着数据包逐渐增加大,分片和重组的时间也会增加,从而导致传输速度的增长速率降低。为了更直观地观察传输速度的变化,本文将数据绘制成折线图,如图2所示。当数据包大于8kB时,因为分片和重组所花费的时间越来越多,对传输速率的影响也逐渐增大。但总的来说,传输速率是随着数据包大小的增长而增长的。为了验证协议转换是否会造成过大的延时,对TCP协议转换至第四层协议消耗的时间进行了验证,结果如图3所示。平均转换时间约为1.7ms,主要用于计算校验和。这个时间是可接受的。

3结语

本文设计了一种使用单向以太网适配器和单工光纤跳线的单向安全传输技术。城市轨道交通的生产核心网和服务管理网可以通过光纤和串行线连接,在保障安全单向传输的基础上提高传输的速率。通过使用所提出的私有协议,也能够有效防止一些针对通用协议的网络攻击。试验结果表明,本文所提出的方法在传输大容量数据包时有速度上的优势。

作者:张菁博 单位:上海申通地铁集团有限公司技术中心

上一篇:水资源统一调度助力水利高质量发展 下一篇:烘箱加热安全隐患改进及实现