面向Modbus的安全认证通信机制分析
2017-10-10张玉鹏
张玉鹏, 温 蜜, 李 婧, 薛 梅
(上海电力学院 a.自动化工程学院; b.计算机科学与技术学院 上海 200090)
面向Modbus的安全认证通信机制分析
张玉鹏a, 温 蜜b, 李 婧b, 薛 梅b
(上海电力学院 a.自动化工程学院; b.计算机科学与技术学院 上海 200090)
为了研究工业控制网络的安全,对工业控制网络中应用最广泛的Modbus协议的安全性进行了分析.分析比较了Modbus主设备认证算法和ModbusSec认证算法两种算法的优劣,明确了今后对Modbus工控网络安全的研究方向.
工业控制网络; Modbus协议认证; ModbusSec算法
Modbus[1]是由Modicon公司1979年发行的,已经被广泛应用于工业控制现场的应用层协议,如Modbus协议已被广泛应用于在监控和控制现场设备.Modbus协议最初是通过串行数据进行通信的,也就是Modbus Serial 协议.随着工业现代化的发展,产生了Modbus TCP 协议,即通过与TCP协议相结合来发送和接收Modbus Serial数据.Modbus的出现是为了使工业现场设备实时地接收和发送相关命令和数据,最重要的安全措施在Modbus的设计之初并没有被考虑进去.
最近几年,工业控制网络受到的攻击越来越多,来势凶猛,如2010年首次发现的伊朗震网(Stuxnet)病毒,是第一个专门定向攻击工业基础设施的“蠕虫”病毒.面对严峻的安全形势有许多学者已经展开了众多研究,如,ANTOINE L等人[2]用攻击的方法找出Modbus工控网络的漏洞,然后提出安全措施;AL-DALKY R等人[3]和NARDONE R等人[4]提出了评估Modbus工控网络安全性的方法;DRIAS Z等人[5]对Modbus等工控网络中一些可能存在的威胁进行了分类.从上述研究可以看出,它们主要是以被动的预防检测为主,直接针对Modbus本身安全进行算法研究的还很欠缺,并不能从根本上消除威胁.
1 Modbus协议
Modbus协议被广泛应用于石油和天然气领域,特别是石油和天然气运输管道的控制.Modbus产生之初(Modbus Serial)是用于实现控制中心(主设备)和现场设备(从设备)的串行通信的[6],随着工业网络的发展,1999年又出现了Modbus TCP协议,实现了通过Internet IP 连接的主从通信方式,便于实时地监控、处理相关工业网络的生产过程.图1为一个Modbus常见的网络体系结构.
图1 Modbus常见网络体系结构
1.1 Modbus串行通信协议
Modbus串行通信协议在进行主从通信时执行严格的询问/响应机制,一个Modbus串行消息有3个部分组成,如图2所示.头部(header)包含了从设备地址;中间部分(PDU)是协议数据单元,用来指定应用层的相关操作,它又包括两部分,一是描述消息的目的即功能码,二是描述主从设备询问和应答的格式;最后部分用来差错校验等相关操作.
图2 Modbus串行消息帧
1.2 Modbus TCP协议
Modbus TCP协议是在Modbus Serial协议的基础上发展而来的,即Modbus TCP协议数据包是将Modbus Serial协议的数据包裹在以TCP/IP地址为开头的数据包中.通信阶段主设备因为创建了TCP连接,被定义为客户端,从设备此时作为服务器被动地通过502端口(或者其他可选择的端口)接受主设备的TCP连接.在建立新的连接时,一个Modbus设备可以选择自己是客户端或者是服务器端,一旦建立TCP连接后,作为客户端的设备和作为服务器的设备在Modbus网络中的主从地位就要确定下来,不能再随意更改[7].
一条Modbus TCP消息可以用Modbus应用层协议报文头(MBAP)来代替Modbus串行协议报文头,如图3所示.MBAP包含事务标识符(2 B)、协议标识符(2 B)、长度标识符(2 B)和单元标识符(1 B)4部分.由于MBAP占了7 B,所以Modbus TCP数据包最大为260 B.
图3 Modbus TCP消息格式
事务标识符用来惟一地标记每个事务,并允许配对每个事务的请求和应答消息;协议标识符用来标识相关协议(若设为0,则对应Modbus协议);长度标识符用来表示中间部分和单元标识符的长度(单元标识符表示从设备的地址).中间部分的长度和Modbus串行协议时相同,包括功能码和数据区.但Modbus TCP错误校验由TCP协议提供.
2 Modbus协议的安全问题
由于Modbus协议在设计之初并没有考虑安全问题,所以Modbus协议自身有很多安全缺陷,如缺乏认证、授权、加密等安全防护机制和滥用功能码等安全问题[8].正是由于这些固有的安全缺陷,Modbus工业控制网络面临很多潜在的安全威胁.若Modbus协议受到攻击,表现在不同的方面,本文主要讨论以下3种情况:一是针对数据的机密性的攻击,攻击者主要读取Modbus消息或者从设备的配置信息;二是数据完整性的攻击,主要涉及攻击者在Modbus消息中插入虚假消息或者修改从设备的相关配置,达到攻击的目的;三是可用性攻击,主要是使现场设备或者从设备丧失重要功能(如不能读取或者发送Modbus消息),甚至使设备重启或者损毁.具体如下.
(1) 诊断寄存器复位 攻击者发送带有功能码08和子功能码0A的伪造的Modbus消息,就可以清除目标现场设备的所有计数器和诊断数据.该攻击修改了现场设备的配置信息,影响被攻击设备的诊断功能.但是该攻击并不影响设备的正常控制和通讯功能.
(2) 远程重启 攻击者通过发送带有功能码08和子功能码01的伪造的Modbus消息,就可以使目标现场设备重启并启动电源测试.由于不断地重启,现场设备不能完成相关功能.
(3) 从设备侦查 攻击者通过发送带有功能码17的伪造的Modbus消息,可以使目标现场设备返回其自身的配置信息.
当然,上述攻击只是一小部分,由于Modbus TCP被广泛用在现代工业网络控制中,一些Internet中常见的攻击,如TCP FIN泛洪、TCP RST泛洪攻击等,也会潜在威胁Modbus工业网络的安全.本文主要讨论和分析针对Modbus安全问题的不同认证算法的优缺点,在此就不一一列举各种攻击的特点.
3 带认证的Modbus协议安全通信算法
LIAO G Y等人[9]提出了针对功能码安全认证的算法,能够让从设备对主设备的身份进行验证,能有效地防止没有权限的设备对从设备发送虚假指令.GARRETT H等人提出了MobusSec[10]安全层算法,该认证算法提出结合流传输控制协议(SCTP)来传输Modbus消息,并加入HMAC验证算法,以验证消息的真实性,但未对这两种方案的安全性进行量化分析.
3.1 算法描述
3.1.1 主设备和从设备初始化
首先,假设主设备要向从设备发送指令ci,其中i∈{1,2,3,…,m}.主设备此时为每一条指令ci选一随机数ai,1,并计算哈希链〈a1,n,a2,n,a3,n,…,am,n〉:
ai,k=h(ai,k-1) 2≤k≤n
(1)
式中:h(·)——哈希函数.
由哈希函数的性质可知,由y=h(x)不能求出原像x.主设备把所有指令的哈希链(i=1,2,3,…,m)求出来存储在内存中.
然后主设备构造长度向量V=〈v1,v2,v3,…,vm〉,其中vi代表第i条哈希链的长度,这里初始化都为n.vi其实是递减的,指向哈希链中最近使用的元素.
最后主设备继续计算R,并存储在从设备内存中.
式中:g1(x1)=h(x1); ‖——串联.
3.1.2 主设备和从设备通信阶段
当主设备向从设备发送指令ci,同时发送用于身份验证的数据.格式如下:
g1(a1,v1,a2,v2,a3,v3,…,ai-1,vi-1),
ai,vi-1,〈ai+1,vi+1,ai+2,vi+2,ai+3,vi+3,…,am,vm〉
而:
g1(a1,v1,a2,v2,a3,v3,…,ai-1,vi-1)=
h(h(…h(h(a1,v1)‖a2,v2a3,v3…)‖
ai-2,vi-2)‖ai-1,vi-1)
(4)
由上述分析可知,ai,vi=h(ai,vi-1),ai,vi-1只存储于主设备.当ai,vi-1随消息发送给了从设备,则此时哈希链长度向量V=〈v1,v2,v3,…,vm〉中的vi值需要减1.
从设备对命令来源进行验证.用〈x,y,z〉表示收到的数据,分别对应式(1)中主设备发送给从设备的数据.从设备收到数据后进行如下运算:
g1(x,h(y),z)=g1(h(h(…h(h(a1,v1)‖
a2,v2)…)‖ai-1,vi-1)
h(ai,vi-1),ai+1,vi+1,…,am,vm)=
g1(h(h(…h(h(a1,v1)‖a2,v2)…)‖ai-1,vi-1)
ai,vi,ai+1,vi+1,ai+2,vi+2,…,am,vm)=
h(h(…h(h(a1,v1)‖
a2,v2…)‖am-1,vm-1)‖am,vm)
(5)
然后从设备比较g1(x,h(y),z)和自身存储的R值是否相等,若相等,表示与其通信的是合法的主设备,主设备身份得到了验证,并执行命令ck(k=m=count(z),count(z)代表数列z中元素的个数).否则不是合法的主设备,停止执行相关命令.
最后,刷新从设备中的R值,用R*表示新数值:
R*=g1(x,y,z)=
g1(h(h(…h(h(a1,v1)‖a2,v2)…)‖
ai-1,vi-1),ai,vi-1,ai+1,vi+1,…,am,vm)
(6)
而R*和R的不同之处在于ai,vi=h(ai,vi-1).
3.2 ModbusSec算法描述
3.2.1 流传输控制协议
流传输控制协议(SCTP)是一种面向消息的传输层通信协议,是一种比TCP和用户数据报协议(UDP)更安全的通信协议,能有效抵抗传统的拒绝服务攻击;相比TCP,SCTP为保证传输数据的完整性,将数据校验位提高到了32位.此外,SCTP协议还提供了数据源认证功能,进一步提高了传输数据的安全性能.SCTP协议的数据格式如图4所示.
图4 STCP消息格式
3.2.2 ModbusSec安全层
Modbus协议和SCTP协议相结合并在数据包中加入HMAC验证算法,就构成了ModbusSec安全层.一方面利用了SCTP协议的安全特性解决了一些常见的安全问题,另一方面利用了HMAC算法,进一步确保了Modbus数据传输的安全性.
其数据格式如图5所示.
图5 ModbusSec消息格式
ModbusSec安全层由封装协议标识符、HMAC算法标识符、HMAC 哈希长度标识符和HMAC哈希散列值4部分组成,如图6所示.
Modbus-TCP数据包的HMAC hash值的计算式为:
Hash=hmac(key+vt,data)
(7)
式中:hmac——HMAC算法(如HMAC-MD5); key——预共享会话秘钥; vt——SCTP数据包验证标签; data——封装协议Modbus-TCP数据包.
在计算HMAC hash值之后,通过在SCTP数据包中插入一个很小的数据层即ModbusSec安全层来存放该值.ModbusSec安全层包含所有与验证有关的数据,其大小与哈希校验算法的长度成正比,即:
H=4+n
(8)
式中:n——哈希校验算法的长度.
图6 ModbusSec安全层格式
4 安全性及开销分析
文献[9]提出了带有认证的通信解决方案,它利用了哈希函数单向性这一性质并结合哈希链,目前的攻击手段很难被攻破.为了加强该算法的安全性,我们可以选取性能好并且拥有合理计算开销及通讯开销的单项哈希函数,如SHA-256等来满足安全需求.
假设一个工控网络中有s个从设备,则主设备存储开销为mns.另外,考虑算法的复杂性,当有一个哈希值存储时,从设备存储开销为O(1).从上述对主从设备存储开销的分析可以看出,带有认证的通信解决方案存储开销很小,主从设备有限的存储空间完全可以满足.
运算开销主要依赖于主设备发送的命令ci的数量,而在一个基于Modbus的工控网络中,主设备发出的命令数量是均匀分布的,从设备需要运算哈希函数的平均计算开销为0.5(m+1),又由于Modbus命令数量是一个常数,所以该平均开销为从设备开销的上限.由此可知,该通信方案完全满足工控网络有限的计算能力.
下面将文献[9]的方案与ModbusSec等方案作比较,从方案的安全性、通信开销和计算开销、存储开销等方面进行分析.
4.1 安全性
表1为4种方案的安全性比较.由表1可知,虽然所有方案都能抗中间人攻击,但是在认证方面,ModbusSec是不支持的;而在抗DOS攻击方面,文献[11]和文献[12]的方案都不具备这个性质;在重放攻击方面,文献[12]的方案和ModbusSec也均不支持.因此,只有文献[9]的方案在立即认证、抗DOS攻击、中间人攻击、重放攻击等方面具有很好的安全性能,在目前的攻击能力下能很好地满足安全要求.
表1 4种方案的安全性比较
4.2 通信开销和计算开销
现将文献[9]所提方案与ModbusSec方案的通信开销和计算开销作比较,以证明该方案的优越性.
ModbusSec方案是将带有消息验证码的Modbus消息与流控制传输协议(SCTP)相结合的产物,其数据包很大,而文献[9]所提方案只有Modbus消息数据包的传送,如图7所示.由图7可以看到,随着数据包数量的增加,Modbus的通信开销增长速度比文献[9]的要快.
同样,由于ModbusSec方案是将Modbus数据封装在以控制流传输协议(SCTP)为载体的数据包中,即在发送阶段,先要将Modbus数据及所需要的验证消息进行封装,然后在接收端将Modbus数据包取出进行验证.而文献[9]直接对Modbus消息本身进行发送和接收操作,如图8所示.由图8可知,随数据包数量的增加,ModbusSec方案的计算开销增长速度很快,远远大于文献[9].所以ModbusSec方案的通信开销和计算开销比文献[9]的要大很多.
图7 通信开销
图8 计算开销
4.3 存储开销
由上述分析可知,由于文献[9]所提方案的存储开销与ci数量相关,而ci数量是个常数,所以存储开销有上限,而ModbusSec方案存储开销与数据量呈正相关.两种方案的存储开销比较如表2所示.
表2 两种方案的存储开销比较
注:m—数据包的数量;n—哈希链长度;s—从设备个数.
由表2可以看出,文献[9]所提方案的存储开销相对较小,更有利于存储开销能力有限的Modbus工业控制网络.
5 结 语
通过文献[9]的认证方案与ModbusSec方案在安全性、通信开销、计算开销和存储开销等方面的比较可知,文献[9]的Modbus安全通信方案具有很大的优势,在一定程度上解决了Modbus网络中存在的安全问题.
[1] SHAYTO R,PORTER B,CHANDIA R,etal.Assessing the integrity of field devices in Modbus[J].The International Federation for Information Processing,2008,290:115-128.
[2] ANTOINE L,JOSE M F,SCOTT K.A Modbus command and control channel[C]//2016 Annual IEEE Systems Conference (SysCon),2016:1-6.
[3] AL-DALKY R,ABDULJALEEL O,SALAH K,etal.A Modbus traffic generator for evaluating the security of SCADA systems[C]//2014 9th International Symposium on Communication Systems,Networks & Digital Sign (CSNDSP),2014:809-814.
[4] NARDONE R,RODRIGUEZ R J,MARRONE S.Formal security assessment of Modbus protocol[C]//2016 11th International Conference for Internet Technology and Secured Transactions (ICITST),2016:142-147.
[5] DRIAS Z,SERHROUCHNI A,VOGEL O.Taxonomy of attacks on Industrial Control protocols[C]//2015 International Conference on Protocol Engineering (ICPE) and International Conference on New Technologies of Distributed Systems (NTDS),2015:1-6.
[6] MORRIS T,VAUGHN R,DANDASS Y.A retrofit network intrusion detection system for Modbus rtu and ASCII industrial control systems[C]//2012 45th Hawaii International Conference on System Sciences,2012:2 338-2 345.
[7] LIU Q,LI Y M.Modbus/TCP based network control system for water process in the firepower plant[C]//2006 6th World Congress on Intelligent Control and Automation,2006:432-435.
[8] PETER Huitsing,RODRIGO Chandia,MAURICIO Papa,etal.Attack taxonomies for the Modbus protocols[J].International Journal of Critical Infrastructure Protection,2008,12(1):37-44.
[9] LIAO G Y,CHEN Y J,LU W C,etal.Toward authenticating the master in the Modbus protocol[J].IEEE Transactions on Power Delivery,2008(23):2 628-2 629.
[10] HAYES G,EI-KHATIB K.Securing Modbus transactions using Hash—based message authentication codes and stream transmission control protocol[C]//2013 Third International Conference on Communications and Information Technology (ICCIT),2013,54(2):179-184.
[11] FOVINO I N,CARCANO AS,MASERA M,etal.Design and implemention of a secure Modbus protocol[C].IFIP Advances in Information and Communication Technology,2009,311:83-96.
[12] JOON H,CHOONG S H,SEONG H J,etal.A security mechanism for automation control in PLC-based networks[C]//2007 IEEE International Symposium on Power Line Communications and Its Applications,2007:466-470.
(编辑 胡小萍)
AnalysisofSecurityAuthenticationCommunicationMechanismforModbus
ZHANGYupenga,WENMib,LIJingb,XUEMeib
(a.SchoolofAutomationEngineering;b.SchoolofComputerScienceandTechnology,ShanghaiUniversityofElectricPower,Shanghai200090,China)
In order to study the safety of industrial control networks,the most widely used Modbus protocol security in industrial control networks is analyzed.The Modbus master authentication algorithm and ModbusSec authentication algorithm are analyzed comparatively.Analysis of the advantages and disadvantages of the two algorithms is conducted.The future research direction of Modbus industrial network security is clarified.
industrial control network; modbus protocol authentication; ModbusSec algorithm
10.3969/j.issn.1006-4729.2017.04.013
2017-03-09
张玉鹏(1989-),男,在读硕士,安徽阜阳人.主要研究方向为工业控制网络的安全.E-mail:zyp_bcy@63.com.
国家自然科学基金(61572311,61602295);上海市曙光计划(16SG47);上海市地方能力项目(15110500700).
TP393.08
A
1006-4729(2017)04-0372-06