前言
工业通信网络在提高生产速度、管理生产过程、合理高效加工以及保证安全生产等方面起到关键性作用。然而,由于通信过程中一些难以避免的系统故障、电磁干扰等问题,导致消息在传输过程中可能出现重复、插入、延时及伪装等,消息破坏及丢包现象也时有发生,进一步导致通信系统错误,这给工业控制带来了巨大危险。因此,消息安全通信已成为工业通信安全研究的关键问题之一。如何保证消息安全通信,传统方法一般在通信协议的数据链路层进行循环冗余校验(Cyclical redundancy check,CRC),同时为提高校验能力,对CRC生成的多项式进行改进研究,但这些方法难以降低通信过程中所产生的剩余错误率。剩余错误率是指接收端在对所收到消息进行校验之后,没有被检测到的错误位的数量与所有传输位总数的比值。目前数控系统正朝着开放式、网络化及智能化等方向发展,数控总线作为工业通信网络的一种,用于连接数控系统装置间数字式、双向、多点的通信,其采用了同步和异步两种通信机制,在这两种机制下如何保证消息的安全通信是本文研究重点。
基于此,本文提出一种用于数控总线的消息安全通信方法,消息发送前在应用层之上利用动态CRC进行校验,同时采用对消息进行连续编号等机制封装安全报文。通过该方法有效降低了剩余错误率,保障了消息的安全性。
1 研究背景
如何采取有效措施以保障消息安全是总线通信安全研究的关键。DZUNG针对消息传输、访问控制等问题,提出了一种基于网络分层的安全保护机制。RANMANI针对剩余错误率问题,提出了一种对数据包的包头编号和包尾CRC校验的机制进行消息保护。与总线通信安全研究相关的标准主要有欧洲EN 50159-2标准、IEC 61508.2标准以及最近的IEC 61784.3标准。在安全性设计上,用户希望新设计的安全总线具有现存总线向上兼容的能力,目的是方便使用现有总线的设备和相关知识。从这些需求出发,IEC 61784-3标准在现有总线协议上提出了安全通信层,用以处理通信过程中的消息错误。图1所示为基于“黑通道”机制的IEC61 784-3现场总线功能安全通信模型。
图1 IEC 61784-3功能安全通信模型
1.1现有安全总线
基于上述标准,目前安全总线主流研究方向是将安全保护措施封装在安全通信层,现有安全总线协议主要有Profisafe、Interbus Safety、CANopenSafety、EtherCat Safety等,如表1所示。
Profisafe安全协议是在Profibus总线协议基础上增加了安全通信层。安全通信层封装的安全报文由安全数据、状态/控制位、报文编号以及传统CRC.16/32校验方式等构成,如图2所示。
图2 Profisafe安全报文
但Profisafe安全机制存在以下问题。
(1)Profisafe安全报文采用了传统CRC校验方式对安全数据进行校验,所以通信过程中如果存在连续多个相同的安全数据,则会产生连续多个相同的CRC校验值,这可能使接收端无法判断新接收到的数据包是有效数据包还是错误数据包。
(2)Profisafe采用了报文编号在一定程度上可避免问题1的产生,但由于其为保证短帧传输,只使用了8位报文编号,所以如果通信过程中存在连续多个相同的安全数据,每255个循环重复一次,则也会产生连续多个完全相同的数据包。如果存在缓冲延迟,则也会导致接收端可能无法正确判断。
Interbus Safety安全协议是在Interbus总线协议基础上增加一个SafeControl控制模块,该模块专门用于检测安全报文,安全报文的传输正确与否通过传输检测位CRC-LoopbackWord的测试来确定,其CRC校验采用传统的CRC-16检测机制。CANop%Safety安全协议是在CANopen总线协议CANopen Safety安全协议是在CANopen总线协议基础上定义了安全相关数据对象(Safety-relateddata object, SRDO)用于安全报文传输,但SRDO的CRC校验仍然采用了传统CRC检测机制。CC-Link Safety安全协议是在CC-Link总线协议基础上增加了安全功能层,用于安全报文的传输和传输错误的检测。在CC-Link Safety安全协议中,主站与一般从站传输的报文与CC-Link总线协议相同,而与安全从站传输的安全报文是在原有的数据域中储存安全功能层使用的信息,该信息包括确定信息顺序的序列号和检测信息位错乱的CRC-32校验码,采用双重CRC校验方。分析可知,以上三种总线安全机制生成的CRC校验码只同安全报文内容和生成多项式有关,因此仍然存在接收端可能无法正确判断连续多个相同数据包的问题。