控制网络的安全是一个普遍关注的问题。国际电工委员会(IEC)就此成立了IEC SC/65C WG13和IEC TC 65/WG10,分别制定国际标准IEC 617844与IEC 62443[1],笔者参与了两项标准的制定工作。在EPA网络安全规范中,为了保证EPA控制网络在一个开放的环境中能够安全地运行,根据EPA控制网络的拓扑结构及其特点[2],提出了在安全体系架构中的EPA安全网关的概念[3],本文在此基础上设计和实现了其软硬件系统。
1 EPA安全网关的原理
位于现场设备层和过程监控层的边界上的EPA安全网关作为下层网络与上层网络的唯一入口,不仅要实现EPA网关的基本功能,还要实现相关的安全机制,是EPA安全网络中必不可少的一个环节。因此,EPA安全网关应具备以下3种功能。
(1) 转发功能
EPA安全网关的转发功能基于两种转发技术: 路由技术[4]和桥接技术[5]。这样设计的好处是可以根据工业现场组网灵活的需要,采用相应的转发技术。若EPA安全网关两端连接的是不同的IP网段,则根据路由表来转发;如果两端连接的是同一个IP网段的设备,则根据MAC地址学习库来转发。采用桥接技术转发还有一个好处就是转发速率高,延迟非常短,占用的网络资源少。
(2) 组态功能
EPA安全网关是一个可组态的设备,因此每个EPA安全网关拥有独立的EPA协议栈, 用来与上位机的组态
(3) 安全保护功能
EPA安全网关提供了相关的安全机制,如访问控制、设备鉴别、地址转换、用户认证、数据加密、数据校验和包过滤技术[6]等。
2 EPA安全网关的硬件设计
图1 EPA安全网关硬件结构图
EPA安全网关的硬件结构如图1所示。从功能上主要分为三个部分:CPU核心控制部分,双以太网控制器和电源模块。其中,CPU核心控制部分主要是实现特定的接口功能和执行相关的控制信息;以太网控制器主要担负以太网现场设备的数据信息传输;电源模块部分主要负责整个系统的电源供应。
3 EPA安全网关的软件设计
EPA安全网关主要由底层驱动模块、安全机制模块、IP处理模块、路由/桥接模块、TCP/UDP模块、EPA模块,以及EPA网络安全与功能安全模块、嵌入式操作系统模块等软件模块构成。各个软件模块的相互关系如图2所示。
图2 EPA安全网关软件模块关系图
3.1 路由模块设计
路由模块的设计主要分成两个子模块: 路由协议模块和路由转发模块。路由协议模块的主要作用是根据网络拓扑结构的变化动态地维护一个本地的路由表,根据TCP/IP协议的相关规定,路由协议是封装在UDP协议之上的。这里采用的是选路信息协议RIP协议,这是广泛使用的内部路由协议。采用路由协议更新本地路由表的流程如图3所示。路由转发模块的作用根据报文的目的IP地址和子网掩码查找已有的本地路由表来转发报文。先搜索匹配的主机地址,然后搜索匹配的网络地址,最后搜索默认表项。匹配主机地址始终发生在匹配网络地址之前。IP进行选路实际上是一种选路机制,它搜索路由表并决定向哪一个网络接口发送报文。IP查找路由表的顺序为:先搜索匹配的主机地址,然后搜索匹配的网络地址,最后搜索默认表项。匹配主机地址始终发生在匹配网络地址之前。IP进行选路实际上是一种选路机制,它搜索路由表并决定向哪一个网络接口发送报文。
图3 更新本地路由表流程
3.2 桥接模块设计
桥接模块的设计主要也分成两个子模块: MAC地址学习库模块和桥接转发模块。MAC地址学习库模块的主要作用将MAC地址和物理端口建立一一对应的关系。桥接转发模块的主要作用是根据MAC地址学习库中的规则转发报文。EPA安全网关拥有两个端口,将网卡设置为混杂方式工作,它将接收与之连接的网络上的每一个数据包。当数据包到达EPA安全网关其中一个端口时,CPU会对此数据包的目的MAC地址进行解析,然后对比自己端口和另一个端口的MAC地址学习库。如果在两个端口的MAC地址学习库中都没有找到此目的MAC地址,则同时在两个网段上广播,同时将源MAC地址和该物理端口记录在MAC地址学习表中。经过多次这样的学习和记录,EPA安全网关就会将两个端口所连接的所有MAC地址记录下来了,从而建立起一个MAC地址学习库,库中记录了每一个可能的MAC地址以及相应的物理端口。这样一个数据包到达EPA安全网关时,处理器解析出此数据包的目的MAC地址。如果在MAC地址学习库中找到此MAC地址,则判断库中端口是否与接收的端口相同。若相同,则证明拥有目的MAC的设备与源MAC在同一个物理网段,丢弃(不转发)此数据包;如果不同,则得出具有该地址的设备在另一个物理网段上,允许此数据包通过EPA安全网关,通过另一个端口发送出去。
3.3 底层驱动模块设计
底层驱动模块主要分成三个子模块: BSP模块,网卡驱动模块和定时器驱动模块。
BSP模块主要作用是针对目标板的设计,实现对操作系统的支持,使之能够更好地运行于硬件之上。对于不同的操作系统和不同类型的CPU来说,尽管实现的功能是一样的,但代码的编写方法和接口定义是完全不同的。具体负责上电时的硬件初始化,启动嵌入式操作系统和应用程序模块,提供底层硬件驱动,为上层软件提供访问底层硬件的手段。
网卡驱动模块实现了CPU与网卡的软件接口,实现了报文的发送与接收功能,对上层屏蔽了底层硬件具体的实现细节,为上层提供了应用接口。该网卡驱动程序实现的主要功能有网卡的初始化、中断处理、报文的接收和发送,以及监测和处理网卡出现的异常。
定时器驱动模块为实现一般报文的重发,路由报文的定时重发以及EPA报文的调度和时间同步等系统所需要的定时提供了准确的时间。定时器驱动是利用AT91RM40008中提供的3个16位定时器/计数器中的一个,这里主要包含定时器的初始化,定时器事件的插入和删除。
3.4 IP处理模块设计
IP处理模块的主要作用是根据已有的路由表信息选择性地转发EPA报文和路由协议报文。在IP处理模块中会对报文相关的接口信息和IP地址进行分析和处理,具体对报文的目的IP和源IP地址进行解析,如果目的和源IP地址不在同一个网段,则将该报文发送到路由模块进行处理,在路由模块中将根据路由表或者默认路由信息来转发这个报文;如果在同一个网段,则根据MAC地址学习库进行转发。
3.5 安全机制模块设计
安全机制模块的主要作用是提供相关的安全机制,如访问控制、设备鉴别、地址转换、用户认证、数据加密、数据校验和包过滤技术。只有通过了安全机制的报文才能向上层传送进行进一步的报文处理,否则将该报文丢弃。
在整个软件系统中,各个模块是通过嵌入式实时操作系统μC/OSII提供的消息机制完成任务切换来相互关联的。
4 EPA安全网关应用实例
为了考查和验证EPA安全网关的应用过程,搭建了一个比较典型的小型工业控制网络。应用网络结构如图4所示。
图4 EPA安全网关的应用网络结构
整个应用的过程可分为4个步骤:
① 现场设备将采集到的信息传送给所连接的EPA通信节点。
② EPA通信节点将这些信息打包成标准的EPA报文格式,并加上相应的安全措施发送给EPA安全网关。
③ EPA安全网关解析各个通信节点发来的EPA报文,根据相关的安全机制进行安全保护,并根据相关的转发机制转发给上位机,同时对这些报文进行同步和调度。
④ 上位机接收到经安全网关转发的报文,将对现场设备的监控指令打包成EPA报文,通过安全网关发送给各个现场设备,从而形成一个闭合的控制回路。
整个控制网络在组态软件监控下的测试结果如图5所示。
经过一个月对网络不间断的测试表明,对于未通过设备鉴别的非法设备或者非EPA设备,不能经过EPA安全网关进入到上位机,而不符合EPA网络安全策略的其他报文也不能通过EPA安全网关到达现场设备层。因此,EPA安全网关起到了很好的安全隔离作用。此外,合法的EPA设备经过EPA安全网关是可以被上位机组态软件实施有效的监控。
图5 上位机组态软件监控界面
结语
根据EPA协议的通信特点和要求,按照EPA安全网络规范,笔者设计了一种EPA安全网关的硬件与软件系统,并根据实际工业现场的需要,搭建了一个小型的EPA安全网络系统,对EPA安全网关在此网络环境中的各项功能进行了严格的测试,且达到了预期的要求,为如何保证EPA控制网络在一个开放的环境中安全地运行提供了一种解决方案。