
ICS 25.040 CCS N10
GP
中华人民共和国国家标准
GB/T41868—2022
Modbus TCP 安全协议规范
Modbus TCP security protocol specification
2022-10-12发布
2023-05-01实施
国家市场监督管理总局
国家标准化管理委员会 发布
GB/T41868—2022
目 次
前言引言 1 范围 2 规范性引用文件 3 术语和定义 4 缩略语 5 规范性陈述 6 概述 6.1 mbap概述 6.2 mbaps概述 6.3 传输层安全性概述
服务定义 8协议规范 8.1 TLS协议 8.2 TLS握手 8.3 密码套件选择 8.4mbaps基于角色的客户端授权 9
2
系统依赖性 10 TLS要求 10.1 TLS版本 10.2 TLSv1.2密码选择 10.3 TLS分片 10.4 TLS压缩 10.5 TLS会话重新协商附录A(规范性) mbaps数据包结构· 参考文献
13
13
13 14 14 15
.
16
1
GB/T 41868—2022
前言
本文件按照GB/T1.1一2020《标准化工作导则 第1部分:标准化文件的结构和起草规则》的规定起草。
请注意本文件的某些内容可能涉及专利。本文件的发布机构不承担识别专利的责任。 本文件由中国机械工业联合会提出。 本文件由全国工业过程测量控制和自动化标准化技术委员会(SAC/TC124)归口。 本文件起草单位:机械工业仪器仪表综合技术经济研究所、施耐德电气(中国)有限公司上海分公
司、重庆信安网络安全等级测评有限公司、国能智深控制技术有限公司、浙江中控技术股份有限公司、 中国科学院沈阳自动化研究所、东方电气集团科学技术研究院有限公司、北京卓识网安技术股份有限公司、西南大学。
本文件主要起草人:冯夏维、王勇、周彦晖、王玉敏、尚羽佳、朱镜灵、陈俊璃、章维、刘明哲、桑梓、 刘韧、刘枫、梅恪。
I
GB/T41868—2022
引言
目前已经发布的Modbus协议国家标准包括: GB/T19582.1一2008《基于Modbus协议的工业自动化网络规范第1部分:Modbus应用协议》; GB/T19582.2一2008《基于Modbus协议的工业自动化网络规范第2部分:Modbus协议在串行
链路上的实现指南》;
GB/T19582.3一2008《基于Modbus协议的工业自动化网络规范第3部分:Modbus协议在 TCP/IP上的实现指南》;
GB/T25919.1一2010《Modbus测试规范第1部分:Modbus串行链路一致性测试规范》; GB/T25919.22010《Modbus测试规范第2部分:Modbus串行链路互操作测试规范》。 Modbus协议最初于1979年用于工业控制器与计算机或其他上位机通信的串行协议。1996年,
Modbus协议进行了以太网的扩展,使用了IANA登记的502号端口,支持ModbusTCP基于以太网的协议。同时,ModbusTCP保持了与ModbusRTU串行协议的一致与兼容,这使得Modbus串行设备通过ModbusTCP实现桥接通信变得十分容易。2002年,Modbus抽象出适用于串行和以太网的 Modbus应用层,开始使用ModbusPDU的概念,发布了Modbus应用层规范,针对串行和TCP不同的 ADU,也发布了串行和以太网的规范。同时,Modbus也加人了IEC61784作为行规之一。
基于转化IEC61784中的Modbus协议规范,我国发布了GB/T19582Modbus系列推荐性国家标准。
也是由于国家标准的发布,这使得依照规范标准进行互操作性测试成为可能。后来制定发布了 GB/T25919系列标准,这极大地改善了大量Modbus应用的一致性和互操作性,有利于工业自动化系统的开发和集成。
像所有的工业通信协议一样,Modbus最初没有设计信息安全功能。随着工业通信及应用对数据保密和完整性、设备身份识别等要求的需求增加,本文件使用通用的TLS传输层加密技术,对Modbus 协议进行了扩充,使加密的Modbus通信能够增加抵抗比如重放和中间人等常见攻击的能力。
ModbusTCP安全保持了与ModbusTCP一致的ADU,这样能够使ModbusTCP通信能够容易地迁移到ModbusSecurity。ModbusTCP安全使用了IANA登记的802号端口用于安全通信。Mod- bussecurity仅允许使用TLS1.2及以上版本。
ModbusTCP安全还采用了X.509v3的数字签名证书,在客户端和服务器进行TLS协商握手时使用双向认证。同时,在证书中使用了OID扩展,设备厂家可以利用这个扩展指定客户端的角色和权限,可以实现工业信息安全所需要的用户识别及基于角色的控制。随着ModbusTCP安全标准的推出,为现有大量使用Modbus的设备,提供了一种简洁且直接的升级路径。
ⅡI
GB/T41868—2022
ModbusTCP安全协议规范
1范围
本文件规定了ModbusTCP安全协议的服务定义、协议说明、系统依赖性以及TLS要求等内容。 本文件适用于开发或检测Modbus产品的相关机构。
规范性引用文件
2
下列文件中的内容通过文中的规范性引用而构成本文件必不可少的条款。其中,注日期的引用文件,仅该日期对应的版本适用于本文件;不注日期的引用文件,其最新版本(包括所有的修改单)适用于本文件。
RFC4492用于传输层安全(TLS)的椭圆曲线密码(ECC)加密套件[EllipticCurveCryptography (ECC)Cipher Suites forTransport Layer Security(TLS)J
RFC5246传输层安全协议规范,第1.2版[TheTransportLayerSecurity(TLS)Protocol,V1.2] RFC5280互联网X.509公钥基础设施证书和证书吊销列表(CRL)配置文件[Internetx.509
Public Key Infrastructure Certificate and Certificate Revocation List (CRL)profileJ
RFC6066传输层安全(TLS)扩展:扩展定义(TLSextensions:Extensiondefinitions)
3术语和定义
本文件没有需要界定的术语和定义。
4缩略语
下列缩略语适用于本文件。 ADU:应用数据单元(ApplicationDataUnit) AuthZ:授权(Authorization) BER:基本编码规则(BasicEncodingRules) CA:证书颁发机构(CertificateAuthority) CDP:CRL分发点(CRLDistributionPoint) CRL:证书吊销列表(CertificateRevocationList) HMAC密钥哈希消息认证码(Keyed-hashMessageAuthenticationCode) IANA:互联网号码分配机构(InternetAssignedNumbersAuthority) ICS:工业控制系统(IndustrialControlSystem) IEC:国际电工委员会(InternationalElectrotechnicalCommission) MAC:消息认证码(MessageAuthenticationCode) mbap:Modbus应用协议(ModbusApplicationProtocol) mbaps:Modbus安全应用协议((ModbusSecurityApplicationProtocol) OID:国际电信联盟标准化的物联网域名(ObjectIdentifierstandardizedbytheInternationalTele
1
GB/T41868—2022
communications Union)
PDU:协议数据单元(ProtocolDataUnit) PKI:公钥基础设施(PublicKeyInfrastructure) PRF:伪随机函数族(PseudorandomFunctionFamily) RA:登记机关(RegistrationAuthority) SSL:安全套接字层(SecureSocketLayer) TCP:传输控制协议(TransportControlProtocol) TLS:传输层安全协议(TransportLayerSecurity)
5 规范性陈述
本文件中的规范性陈述明确规定如下: R-n.m:这里是规范性声明文本。 其中“n.m”被需求声明语句标记号替换,该标记号可以是分层次的编号数字,例如R-1.2.3或简单
整数,例如R-1。
每个语句只包含一个需求级别关键字(例如,“应”)和一个一致性目标关键字(例如,“消息”)。 示例:“应使用BER对消息进行编码”。
6概述
6.11 mbap概述
ModbusTCP协议广泛应用于工业控制系统(ICS)。ModbusTCP规范定义了应用数据单元(ADU)。此ADU定义见图1。
+
Modbus TCP/IP ADU
mbap报头
4
PDU
图1ModbusTCPADU
传统的Modbus协议数据单元(PDU)和ModbusTCP应用数据单元(ADU)间的区别是在顿的前面添加了mbap报头(mbapheader)。
1996年,ModbusTCP协议在IANA(互联网号码分配机构)注册并分配给了系统端口号502。在 IANA的注册过程中,由于ModbusTCPADU中的mbap报头,ModbusTCP协议被称为mbap协议。
mbap协议这个名称持续使用,并且仍然以mbap/TCP的名称用于IANA注册的502端口。 本文件所述的ModbusTCP安全协议是使用传输层安全性(TLS)的ModbusTCP协议的一个以
安全为中心的变体。
IANA已将系统端口号802分配给ModbusTCP安全协议。在Modbus.org网站已注册的名称为网络通信安全应用协议,在端口802与IANA登记为mbap/TLS/TCP协议。
选择TLS作为安全传输协议是在GB/T356732017和IEC62443-4-2应用场景下分析来自行业域的代表性数据流的结果。
表1上下文特定术语列出了在不同上下文中用于mbap通信配置文件的名称,如通信配置文件, Modbus.org,IANA注册表和本文件。为简洁起见,本文件的其余部分将用mbap和mbaps分别表示
2
GB/T41868—2022
ModbusTCP和ModbusTCP安全协议。
表1上下文特定术语
Modbus.org Modbus TCP
协议类型 mbap/TCP mbap/TLS/TCP ModbusTCP安全协议 系统端口802的Modbus安全应用协议
本文件(为简洁起见)
IANA注册
系统端口502的Modbus应用协议
mbap mbaps
ModbusTCP协议安全原则: a)ModbusTCP安全协议使用端口号802; b)通过TLS使用X.509V3进行身份识别和认证; c)客户端/服务器端双向TLS认证; d)通过证书传输的角色进行授权; e) 授权规则是产品特定的; f) 没有更改mbap。
6.2mbaps概述
在Modbus协议的传统中,mbaps要求保持简单,允许供应商围绕协议开发其他的基础架构,并允许传统设备和现场总线向后兼容。mbaps扩展了GB/T19582.1和GB/T19582.3中原始定义的mbap 协议。mbaps定义了一个客户端-服务器端(C-S)协议,它是完整安全系统结构的一部分。TLS通过添加数据的机密传输、数据完整性、防重播保护、通过证书进行端点身份验证以及通过证书中嵌人的信息(如用户和设备角色)进行授权,提供了一种以安全为中心的协议来替代mbap。
协议mbap和mbaps的区别类似于http及其安全变体https的区别。在mbaps中,mbap协议通过TLS传输。TLS通过x.509v3证书提供身份验证功能。应为mbaps客户端和服务器进行配置,这些证书才能进行TLS身份验证功能。
mbap和mbaps之间的一个重要区别是,mbaps提供服务器调用授权的能力,该授权功能的规则由供应商或客户驱动,使用通过x.509v3证书中的扩展字段提供的角色数据。该扩展名已在Modbus.org 的IANAOID上注册。TLS提供使用预共享密钥建立安全连接,但本文件不考虑使用,因为它不允许角色信息传输提供授权功能。 6.3传输层安全性概述
mbaps/TLS/TCP配置文件使用RFC5246中定义的安全TLS传输协议。RFC5246定义了本文件发布时最新的TLS版本TLSv1.2,并为早期版本中已知的漏洞提供对策和缓解措施。此文件基于 TLSv1.2,当更新的TLS版本被广泛应用时,将考虑使用它们。
TLS由一组协议组成,见图2。该集合中的主要协议是TLS记录协议。其余的协议是由TLS记录协议承载的子协议。它们由一个TLS中间件管理。
3
GB/T41868—2022
TLS密码更改规范协议20
TLS心跳协议23
TLS警报协议21
TLS摄手协议22
TLS应用协议23
TLS记录协议
TCP
IP
图2TLS通信协议栈
mbapADU在mbaps中未更改,封装在TLS应用协议报文中,见图3。
mbap ADU
TLS应用协议23
TLS记录协议
TCP
IP
图3mbapADU封装在TLS中
TLS握手协议见图4的ModbusTCP安全概念图,其主要完成下列功能:
在端点之间协商安全通道的加密,包括算法,密钥等;提供基于x.509v3证书的双向客户端/服务器身份验证;从证书中提取客户端角色OID;建立TLS会话。
在建立TLS会话之后,正常的Modbus请求和响应序列在安全的TLS应用协议通道中传输。在处理请求的过程中,mbaps协议处理程序调用特定于供应商的授权功能。此授权功能使用来自mbap ADU的输人和从连接的x.509客户端证书中提取的角色来评估角色到权限算法。该算法根据对等方的角色确定是否可以处理ADU。如果授权功能不能处理mbapADU代码,则mbap处理程序返回 01一IlegalFunctionCode的Modbus异常码。此授权过程发生在每个请求上,确保请求流的全面验证。