欢迎您访问工业控制系统信息安全产业联盟网!
官方微信
用户名:
密码:
登录 注册
基于3DES和SM4的Modbus安全通信算法

点击数:3528 发布时间:2021-01-29 17:07

Modbus协议广泛用于工业控制系统(ICS)中,Modbus TCP协议通常用于SCADA系统中的人机界面和可编程逻辑控制器(PLC)之间的通信。本文介绍了Modbus TCP协议的主要安全漏洞,并提出两种加密算法满足ModbusTCP协议的保密性要求,即3DES加密算法和国密SM4算法,这两种分组密码算法分别属于国际通用和我国自主研发的算法,3DES算法对常见的DES算法进行了三重加解密,具有很强的安全性,国密SM4算法使用了轮函数和迭代制等措施,具有较强的安全性,不容易被破解,文章针对两种不同算法的密钥长度和算法结构进行了比较。
1 引言
Modbus协议是SCADA系统中应用于现场控制器的一种通用协议。控制器通过Modbus协议和其他控制器或者传感器进行通信[1]。SCADA系统通常用于采集现场实时数据,同时负责监控和集中分散的现场通信设备[2]。近年来,频发的针对ICS的大规模病毒事件引发广泛关注,我们目前正面临着针对ICS的攻击数量增加的威胁,由于ICS和SCADA系统中物理和网络组件之间的紧密联系,网络攻击和安全漏洞可能会对SCADA系统产生严重的影响。Modbus协议如今被广泛运用于SCADA系统中,而SCADA系统应用于电力、石油、天然气等重要工业行业,所以持续上升的威胁导致SCADA系统Modbus协议的安全显得尤其重要[3]。Modbus协议缺乏集成加密、认证和授权机制,这意味着在网络中的任意具有合法IP地址的用户设备,如果构造出合理的Modbus协议报文即可建立通信,而且以明文的方式进行传输容易被中间人窃听或篡改,造成系统通信数据信息泄露。Fovino,I.N.等人[18]指出Modbus协议比较容易被洪水攻击,为了防御基于Modbus协议的洪水攻击,提出异常检测的控制算法。Erez,N[19]针对攻击者强制Modbus从设备重启的攻击方式,提出了基于状态的入侵检测方法。黄剑[6]提出针对Modbus协议的基于GPU的SM4并行加密算法,验证了该算法耗时少,加密实时性更高。

本文针对Modbus协议以明文传输的漏洞,对通信数据分别进行3DES和国密SM4加密处理,从而在一定程度上保证数据的安全,其中,国密SM4算法是我国自主知识产权算法,将SM4算法应用到Modbus协议通信过程对保证我国信息安全起到重要作用。

2 Modbus协议介绍

Modbus协议是OSI模型的应用层报文传输协议,它由Modicon公司(施耐德电气)于1979年为了使用PLC通信而发行的,现如今由于Modbus协议易于维修保护和标准开放等优点,经常应用于ICS。Modbus通信协议有两种主要版本,分别是串行链路、TCP/IP以太网。ICS现场设备的Modbus设备大多通过串口RS232/RS485或TCP/IP物理层进行通信连接。而Modbus协议的串行链路连接有两种形式:RTU模式和ASCII模式。为了确保数据传输的完整性和准确性,Modbus TCP协议属于TCP/IP模型的应用层,该协议通信采用主从的通讯模式,通常主站方发出请求的信息,从站方接收到消息回答响应并将数据发送至主站方,同时主站方也可能发送控制消息从而修改从站的数据,实现双向读写[6]。Modbus协议报文格式[7]如图1所示。

图1 Modbus TCP应用数据单元

3 Modbus协议安全性分析

Modbus TCP协议具有Modbus协议和TCP/IP协议的安全威胁,即存在Modbus协议固有的安全问题,还引入TCP/IP协议的安全漏洞[8]

(1)缺乏身份认证机制[7]:对于接入同一网络的攻击者,可以伪造Modbus TCP/IP报文与主站端实现通信,容易对主站进行窃听或发送错误的数据;

2)明文传输:系统的传输信息容易被中间人窃取,从而造成隐患威胁;

3)拒绝服务攻击(Denial of service,DoS):例如The SYN flood攻击是最常见的一种DoS攻击,攻击者发送大量循环设置了SYN标志的TCP数据包到TCP端口,而不通过TCP三次握手进行连接,服务器存储不足和TCP连接受限最终导致系统崩溃中断,进行Modbus通信的主从站双方通信也随着中断;

4)中间人攻击:例如ARP欺骗,由于Modbus协议缺乏集成加密和身份验证,通信端容易被冒充,系统通信数据易被篡改或监听,ARP欺骗就是其中的一种中间人攻击方式,攻击者利用Modbus协议漏洞冒充局域网内网关,使得主从站设备的通信数据都流向攻击者,窃取到关键数据后为之后更大的攻击做准备;

(5)重放攻击:由于Modbus协议缺少相应的机制,攻击者可以冒充主设备发送合法的控制命令到从设备,改写从设备数据,或者向主从设备发送大量消息以消耗设备的存储资源。

4 基于Modbus协议的3DES加密算法

针对Modbus协议存在的安全问题,本文首先通过Modbus poll和Modbus slave工具分别模拟Modbus主从站,实现了Modbus协议的通信,同时针对协议存在的安全问题,提出对称加密算法3DES算法。

4.1 实验环境

为了便于调试Modbus协议,工具软件Modbuspoll和Modbus slave分别模拟Modbus主站设备和从站设备。Modbus poll是Modbus主站设备仿真器,可以用于测试和调试Modbus从站设备,便于观察Modbus通信过程中的各种报文数据。Modbusslave用来模拟Modbus从设备,它用于接收主设备的命令包,并回送数据包,可测试和调试Modbus主站设备。

其中Modbus poll和Modbus slave都需要进行连接参数设置和寄存器设置,图2是Modbus poll的参数设置。

(a)Modbus poll连接参数设置                                                          (b)Modbus poll寄存器设置

图2 Modbus poll参数设置

(1)连接参数设置:Connection:选择Modbus TCP/IP;IP address:表示本机的IP地址。

(2)寄存器设定:Slave ID:表示从机的地址,要与自己的从机地址一致,选择1;Function:表示功能码的选择,选择03:保持寄存器;Address:线圈的起始地址,可以使用逻辑地址,选择0。

Modbus slave的参数设置如图3所示。

(a)Modbus slave寄存器设定                                                              (b)Modbus slave连接设定

图3 Modbus slave参数设置

(1)寄存器设定:Slave ID:表示从机的地址,设置为1;Function:表示功能码,同样设置为03:保持寄存器;Address:表示线圈的起始地址,设置为0。

(2)连接设置:Connection:实验选用Modbus TCP/IP连接;IP Address:本机IP地址。

在主从站设备都设置寄存器后,双方实现Modbus数据包的通信,图4为在Modbus slave中显示的发送数据帧(Tx)和接收数据帧(Rx)。

图4 Modbus poll-slave通信报文

在Modbus通信报文中可以发现,Modbus协议是以明文的形式进行传输,由于明文传输带来的安全问题,本实验对Modbus数据进行两种方式的加密,以增强协议安全性。

4.2 基于Modbus协议的3DES加密算法

3DES算法是三次数据加密算法,即对每个数据块应用三次加密标准(DES)算法,3DES基于DES算法进行开发,DES算法诞生于1970年代中期,它是一种分组密码算法,DES以64位密钥大小加密和解密[9](其中有效密钥长度为58位,第8、16、24、32、40、48、56、64位是校验位),很容易被暴力破解。因此,DES安全性很低。3DES是一种对称密钥加密块密码,3DES通过增加密钥长度来避免攻击,3DES算法是由DES算法改进而来,它的输入和输出同样为64bit[10],不同的是密钥长度为192bit(其中有效密钥长度为168bit),3DES具有三个不同DES密钥(K1,K2和K3),3DES的有效密钥长度为168位,具有较高的安全性,为了提高算法安全性,通常三个密钥是不同的。

DES算法的输入明文块与输出密文块均为64bit,它的加解密密钥长度也是64bit,其中主要的算法步骤是初始置换和逆置换。初始置换:将输入的64bit明文数据块按位置换规则重新组合,其中该规则是输入的第58位换到第1位,第50位置换到第2位,第42位置换到第3位,按照这一顺序进行置换直到第7位变成最后1位。随后输出两块均为32位的部分,记为L0和R0,L0是输出数据块的左32位,R0是输出数据块的右32位,置换后的顺序如表1所示。

表1 DES初始置换后数据位

由表1可以知道经过初始置换后的L0和R0。即:L0=D58D50……D8;R0=D57D49……D7。逆置换:每个字节第8位是奇偶校验位,不作为有效密钥,输入的数据块经过16次迭代相同运算后,得到最后的L16、R16,将L16和R16作为输入开始进行逆置换,逆置换正好是初始置换的逆运算,由此即得到密文输出。

3DES算法是对原始明文数据或揭秘数据进行3次DES加密或解密的过程,3DES的算法过程如下:

假设明文数据为D,三个密钥分别为Ek1、Dk2和Ek3,密文数据为S,则使用3DES算法对明文数据加密的公式如式(1)所示:

即k1为密钥进行DES加密,然后k2对密钥进行DES解密,最后k3进行DES加密,解密为加密的相反过程,解密公式如式(2)所示:

即k1为密钥进行DES解密,然后k2对密钥进行DES加密,最后k3进行DES解密。

本文对图4中的Modbus数据报文“B50000000601030000000A”进行3DES加密和解密,其中3DES加密得到的结果为“iF0KxGob5SVrkUT43hneI2XQoozs4cpL”,加密后的数据不容易被窃听,即使被中间人窃取到加密后的报文,也不会得到Modbus主从站设备数据信息,经过3DES解密后,得到原始数据“B50000000601030000000A”。值得注意的是当三重密钥相同的时候,仅相当于执行了1次DES加密。

4.3 基于Modbus协议的国密SM4算法

国密SM4算法属于分组密码算法,SM4算法在2006年公开,它是一个迭代分组算法,由加解密算法和密钥扩展算法组成。SM4分组长度为128bit,加密密钥长度为128bit,其中SM4的加密算法与密钥扩展算法均采取32轮迭代结构。SM4密码算法以字节(8位)和字节(32位)作为单位进行数据处理。SM4密码算法是对合运算,因此解密算法与加密算法的结构相同,但是加解密算法轮密钥的使用顺序相反,解密轮密钥是加密轮密钥的逆序。轮密钥由加密密钥通过密钥扩展算法生成,它的表达方式为MK=(MK0, MK1,MK2, MK3)[11],其中MKi为32bit。SM4密码算法需要使用密钥扩展算法,因为SM4的128位密钥,使用32轮迭代加密,每一轮加密都使用一个32位的轮密钥,共使用32个轮密钥。从加密密钥产生出32个轮密钥。轮密码生成为(rk0, rk1,…rk31),其中rki (i=0,1,….31)为32bit。图5是SM4算法的算法结构图。

图5 SM4算法结构图

本实验使用国密SM4算法对Modbus数据报文进行了加密,本实验随机采用MK=8574494820985478的方法,生成32轮密钥[rk]_1-[rk]_32之后对要加密的Modbus报文进行数据加解密。

4.4 3DES算法和SM4算法的比较(如表2所示)

表2 3DES算法和SM4算法的比较

5 结束语

本文首先针对Modbus协议存在的安全性问题进行分析总结,利用Modbus协议明文传输和缺乏身份认证机制的问题指出可能造成拒绝服务攻击、中间人攻击和重放攻击的威胁。并由此提出两种分组密码算法,一是国际通用的对数据块进行3次DES加解密的三重加密算法3DES算法,3DES算法安全性较高;二是为了加强我国自主知识产权的能力,将国密SM4算法应用于Modbus协议中,SM4算法具有的轮函数和迭代制等特点使其具有较强的安全性。将两种算法运用到工业控制系统中会增强系统的安全性,在一定程度上抵御中间人攻击。

★基金项目:国家自然科学基金面上项目(No.61772327);上海自然科学基金面上项目(No.20ZR1455900);奇安信大数据协同安全国家工程实验室开放课题(No.QAX-201803);浙江大学工业控制技术国家重点实验室开放式基金(No.ICT1800380);上海市科委科技创新行动计划,项目编号(18511105700);上海市科委电力人工智能工程技术研究 中心项目(19DZ2252800)。

作者简介

石 姗(1994-),女,山西大同人,学士,现就读于上海电力大学计算机专业,研究方向为电力系统信息安全。

王 勇(1973-),男,河南确山人,教授,博士,现就职于上海电力大学,研究领域为电力控制系统信息安全。

周 林,男,硕士,现任上海电力大学信息安全系系主任,研究领域为计算机网络与安全。

参考文献:

[1] 俞野秋. 基于Modbus和Modbuss-TCP协议的远程监控技术研究[D]. 上海 : 上海交通大学, 2012.

[2] 刘飞, 张仁斌, 李钢, 等. 基于哈希链与同步性机制的Modbus/TCP安全认证协议[J]. 计算机应用研究, 2018 (04) : 1169 - 1173, 1186.

[3] Fachkha C. Cyber Threat Investigation of SCADA Modbus Activities[C]. 2019 10th IF-IP International Conference on New Technologies, Mobility and Security (NTMS). IEEE, 2019: 1 - 7.

[4] Fovino, I.N., et al. Modbus/DNP3 state-based intrusion detection system[R]. In Advanced Information Networking and Applications (AINA), 2010 24th IEEE International Conference.

[5] Erez, N. and A. Wool, Control variable classification, modeling and anomaly detection in Modbus/TCP SCADA systems[J]. International Journal of Critical Infrastructure Protection, 2015.

[6] 黄剑, 张红梅, 张向利, 等. 基于Modbus协议的数据采集与并行加密通信系统[J]. 计算机应用与软件, 2017, 34 (3) : 260 - 266.

[7] Goldenberg N, Wool A. Accurate modeling of Modbus/TCP for intrusion detection in SCADA systems[J]. International Journal of Critical Infrastructure Protection, 2013, 6 (2) : 63 - 75.

[8] 蔡宇晴. SCADA系统中Modbus TCP/IP协议的异常检测研究[D]. 北京 : 北京交通大学,2017.

[9] Jun Y, Na L, Jun D. A design and implementation of high-speed 3DES algorithm system[C]. 2009 Second International Conference on Future Information Technology and Management Engineering. IEEE, 2009: 175 - 178.

[10] 朱欣欣, 李树国. 基于FPGA的高性能3DES算法实现[J]. 微电子学与计算机, 2015, 32 (9) : 54 - 59.

[11] 吕述望, 苏展波, 王鹏, 等. SM4分组密码算法综述[J]. 信息安全研究, 2016, 2 (11) : 995 – 1007.

[12] 左卫, 程永新. Modbus协议原理及安全性分析[J]. 通信技术, 2013, 46 (12) : 66 - 69.

[13] Morris, T., R. Vaughn and Y. Dandass. A retrofit network intrusion detection system for MODBUS RTU and ASCII industrial control systems[R]. In System Science (HICSS), 2012 45th Hawaii International Conference.

[14] Peterson, D. Quickdraw: Generating security log events for legacy SCADA and control system devices[R]. In Conference For Homeland Security, 2009. CATCH'09. Cybersecurity Applications &Technology

摘自《工业控制系统信息安全专刊(第七辑)》

成员展示