一、摘要及引言
本文中,作者利用PLC的可编程特性,提出了一种保护PLC抵御数据篡改攻击的方法。该方法主要有两部分组成——数据认证机制和数据恢复机制。数据认证机制能够实时检测数据篡改攻击,数据恢复机制可以在短时间内将PLC从异常状态恢复到正常状态。
由于PLC资源有限,传统的数据认证算法无法使用PLC指令实现,因此作者提出了一种新的数据认证算法。该算法以要传输的数据和伪随机数为输入,生成消息摘要。当接收方收到数据后,会重新计算消息摘要,通过与收到的摘要作比较,接收方可以判断数据是否被篡改。如果不一样,说明数据被篡改,此时接收方会要求发送方使用RC5加密并重传数据,由于数据加密传输,因此无法被篡改。接收方收到加密数据后,解密并更新PLC状态,使PLC恢复正常。为了减小开销,只有在检测到篡改攻击后,才会加密要重传的数据。
二、数据认证
数据认证算法的关键之处在于数学函数集合RFunc以及线性同余法生成器LCG。
RFunc:使用PLC内置指令构建的函数的集合,如布尔运算、加减乘除、异或、绝对值等函数。
LCG:使用线性同余法生成随机数,公式如下:
摘要生成算法如下:
三、数据恢复
数据恢复是通过加密重传数据包来实现的,使用的加密算法为RC5。数据恢复算法如下:
四、测试
作者在来自不同厂商的19个PLC平台上实现并测试了本文提出的方法。此外,作者在天然气管道实验台上测试了方法的有效性。