李佑文 俞 铭 陆知言
南京国电南自轨道交通工程有限公司
目前,国内外大量城市在进行地铁智慧车站试点工作,其中,智慧车站监控系统是车站运行管理的核心,是智慧的“大脑”,其实施的目标是实现车站运营数字化、智能化,帮助车站站务人员更加智能地进行站务处理、设备管理,使车站运维更加安全、高效。城市轨道交通一旦遭到破坏,会严重危害公共利益,车站作为大中型城市的参与主体,其安全问题更加不容忽视,因此,在车站运行的智慧车站监控系统设计时,必须将安全性放在首位。
智慧车站监控系统集成了多个自动化专业子系统,与众多子系统利用接口进行数据交互,在B/S架构的智慧车站监控系统中,最关键、要求最高的功能是保证通信的安全性。本文设计了一种符合EN50159标准的智慧车站监控系统安全的通信机制,该机制满足安全完整性等级(Safety Integrity Level,SIL)的2级安全认证。
由于B/S架构属于完全瘦客户端特性,不需要在工作站上安装特定的客户端软件就能访问数据,越来越多的工业控制软件从C/S架构转变为B/S架构。为了安全起见,早期的B/S架构客户端和服务器端无法保持长连接通信,且服务端也法直接推送数据至客户端,使得工业控制领域数据传输的实时性变得很差。为了解决这种矛盾,在智慧车站监控系统的工作站和服务器之间设计一种WEBSOCKET通信机制,与传统C/S架构下的SOCKET方式类似,能够保证通信链路的长连接,并且工作站和服务器端的通信是完全双工的,可以相互之间发送数据。
WEBSOCKET本质上是一种计算机网络应用层的协议,用来弥补HTTP协议在持久通信能力上的不足,由于HTTP本身是无状态协议,每一个新的HTTP请求只能通过客户端主动发起,通过建立连接→传输数据→断开连接的方式来传输数据,而采用WEBSOCKET通信使得B/S架构的工作站和服务器之间的数据交换变得简单,允许服务器端主动向客户端推送数据。使用WEBSOCKET可以创建持久性连接,并进行双向数据传输。
单纯的WEBSOCKET数据是不加密的,很容易被窃取。为了保护数据安全,在智慧车站监控系统的工作站与服务器端采用SSL+WEBSOCKET协议的通信方式,其在TCP层对所有交互报文进行加密,工作站只有在安装了证书的情况下,才能正常访问服务器,否则会提示连接不安全,需要用户安装有效证书后才能访问服务器。使用证书的SSL+WEBSOCKET方式要求服务器与工作站之间的访问均受信任,在TCP层保证了通信过程中数据不被泄密和篡改。
虽然在TCP层使用了安全的WEBSOCKET通信机制,但在专用SIL2等级认证的系统中仍然不够,还需在应用层进行EN50159标准的合规性设计。该标准是专门针对铁路信号系统中安全相关通信而设立的,从功能和技术层面提出传输系统可能遇到的威胁及安全要求和措施。为防御各种风险,其要求通信系统必须在应用层采用规定的防护措施,以提供安全保障。核心思想是通过技术手段保证通信报文的真实性、完整性、实时性和有序性。EN50159标准所规定的7种威胁和8种防护措施如表1所示。
为满足SIL2级认证要求,智慧车站监控系统中工作站和服务器之间的通信必须在应用层符合EN50159标准,因此,本文针对表1中的8种防护措施进行了对应性的设计。
表1 EN50159标准中的威胁与防护措施
(1)防护措施1:序列号设计。由于WEBSOCKET的全双工特性,为服务端和客户端的每条报文均设计发送序列号SendSeqNo和接受序列号RecvSeqNo。
SendSeqNo:unsigned int,每发送一帧报文增加1;
RecvSeqNo:unsigned int,每接受到一帧报文增加1;
客户端的接受序列号RecvSeqNo应等于服务端的发送序列号SendSeqNo;
服务端的接受序列号RecvSeqNo应等于客户端的发送序列号SendSeqNo;
(2)防护措施2:时间戳。为每条报文设计一个时间戳SendTime(unsigned long),为了节省传输报文的长度,不使用“YYYY-MM-dd HH:mm:ss”格式,而使用4字节时间戳。
(3)防护措施3:超时判断。设计最大超时时间为Tmax,接收端须校验两个报文间的时间间隔是否超过允许的最大时间Tmax,如超过,则视为传输发生了错误。另外,在无业务数据交互时,通过发送心跳报文来避免超时导致的错误。
(4)防护措施4:源、宿标识符。每条报文设计源标识符From,和宿标识符To,分别记录报文的发送端IP和接收端IP地址,并提前在客户端和服务器中配置所有可能的源标识IP和宿标识IP,在每次接收到报文后进行IP校验,从而避免非法IP的模拟报文介入。
(5)防护措施5:反馈报文。不要求每帧请求报文都必须要对应反馈报文,但是在连续收到M(M=8)帧报文后必须反馈,发送端连续发送M帧后会等待反馈报文,若超时后其仍未收到反馈报文,则认为传输错误。
(6)防护措施6:认证程序。在客户端和服务端间进行,在客户端首次连接服务器时发送身份信息(用户名、密码)向服务器申请秘钥Token,服务端身份信息验证通过后返回Token以及其失效时间,客户端使用该Token在此段时间内的请求有效,若时间超过,则必须重新申请Token;若服务器端身份验证信息失败,则直接拒绝请求。
(7)防护措施7:安全编码。为每个报文设计个32位的MD5校验码字段,用于保存对除了该字段以外的内容进行MD5校验的值,如图1所示。
图1 MD5安全校验码设计
(8)防护措施8:加密技术。对所传输的报文整体进行加密(不同于MD5的校验码),只有授权的用户,并具有相应的权限才能解密。由于在TCP层已使用SSL加密的WEBSOCKET通信技术,因此,在应用层可以不必再对报文进行加密。
本文在城市轨道交通智慧车站监控系统中使用SSL+WEBSOCKET方式,要求服务器与工作站之间的访问均是受信任的,在TCP层保证通信过程中数据不被泄密和不被篡改。同时,又在业务应用层对交互的报文进行EN50159标准的合规性设计,通过技术手段保证通信报文的真实性、完整性、实时性和有序性,彻底地解决传输系统可能遇到的各种威胁,从而保证通信系统的安全性。