IEC62351变电站二次系统安全加固方案.pdf

上传人:风**** 文档编号:1085381 上传时间:2024-04-16 格式:PDF 页数:32 大小:1.29MB
下载 相关 举报
IEC62351变电站二次系统安全加固方案.pdf_第1页
第1页 / 共32页
IEC62351变电站二次系统安全加固方案.pdf_第2页
第2页 / 共32页
IEC62351变电站二次系统安全加固方案.pdf_第3页
第3页 / 共32页
IEC62351变电站二次系统安全加固方案.pdf_第4页
第4页 / 共32页
IEC62351变电站二次系统安全加固方案.pdf_第5页
第5页 / 共32页
点击查看更多>>
资源描述

1、IEC62351 变电站二次系统安全加固方案变电站二次系统安全加固方案 1.概述概述 通信协议是电力系统运行的最关键部分之一,它负责从现场设备取回信息和发送控制命令至现场设备。虽然通信协议具有关键作用,但迄今这些通信协议还很少加入任何安全措施。协议安全性的缺失使得攻击者一旦绕过外围的物理防护措施,直接进入调度中心或变电站内部,就可直接通过通信协议实现对现场设备的控制。安全性、安全防护和可靠性始终是电力行业中系统设计和运行的重要问题,随着变电站的智能化、网络化,电力系统越来越多依赖于信息基础设施,该行业中计算机安全正变得日益重要。通常情况下存在四种类型计算机安全威胁:1)未经授权访问信息;2)未

2、经授权修改或窃取信息;3)拒绝服务;4)抵赖或不可追溯。对应的,计算机用户或软件应用存在四种基本安全需求:1)机密性(Confidentiality):防止对信息的未经授权访问;2)完整性(Integrity):防止未经授权修改或窃取信息;3)可用性(Availability):防止拒绝服务和保证对信息的授权访问;4)不可抵赖性或可追溯性(Non-repudiation or Accountability):防止否认已发生的行为或伪称发生了行为(实际上并没发生)。下图展示了常见的攻击类型和安全威胁的关系:上述安全威胁和安全需求在电力通信协议中具有相应的体现,如保密性体现为数据在通过通信协议编码

3、传输的过程中不被旁路监听,完整性体现为传输数据不可篡改,等等。因此,某些具体的信息化技术手段被开发出以用于实现此类安全需求,主要包括加密、认证、授权和访问控制,以及防重放和防篡改。在本方案中,重点讨论通过针对基于 IEC61850 变电站协议进行安全改造,提供以下能力:1)提供认证以最小化中间人攻击的威胁;2)提供认证以最小化某些类型的旁路控制威胁;3)提供认证以最小化无意和恶意的人员行为威胁;4)通过数字签名,提供实体认证:a)确保对信息的唯一授权访问;b)支持实现通信访问控制;5)通过加密,提供认证密钥的机密性;6)对那些具有额外的资源,具有处理额外负载能力的通信双方,通过加密,提供消息的

4、机密性;7)篡改检测,提供完整性;8)防止重放和欺骗;现有的智能变电站通信主要包括 MMS 协议和 GOOSE/SMV 协议,从网络协议的层次化角度观察,一个完整的 MMS 数据包涉及了 OSI 7 层模型,GOOSE/SMV 数据传输则仅使用物理层、链路层及应用层三个层次。本方案的安全防护能力也通过不同的协议层次进行体现,主要集中于传输层和应用层。2.基于基于 MMS 协议的加固协议的加固 MMS 协议改造主要分为两个部分,如下图所示。一是传输层安全改造,即下图的T-Profile,在TCP/IP协议集上层增加安全协议TLS/SSL;二是应用层MMS关联认证改造,即下图的 A-Profile

5、 的 ACSE 关联时进行应用层认证。1)传输层改造)传输层改造 通过在传输层上建立具有特定配置的具有特定配置的 TLS/SSL 连接,在传输层进行两个通信实体间的消息认证和消息加密,应对未经授权访问信息、未经授权修改(即篡改)或窃取信息。通过传输层改造提供的安全能力包括:通过传输层改造提供的安全能力包括:1)通过数字签名,提供节点的双向身份认证 2)通过加密,提供传输层认证、加密密钥的机密性 3)通过加密,提供传输层及以上层次消息的机密性,防止窃听 4)通过消息鉴别码,提供传输层及以上层次消息的完整性 5)通过定义传输序列号有效性,防止传输层的重放和欺骗 不能提供的安全能力包括:不能提供的安

6、全能力包括:传输层改造不能防止拒绝服务攻击,需要其他特定措施保证可用性。传输层改造不能提供完整的应用层安全,如应用层的认证,需要由其他安全措施提供。传输层改造的应用范围:传输层改造的应用范围:传输层安全改造应当在 MMS 通信中实现,并建议应用于厂家设备间私有协议的通信防护,如双机同步或运维管理协议等。兼容性:兼容性:实现了传输层安全改造的设备和系统,应支持与未实现传输层安全改造的设备和系统的互操作,兼容性的判断建议可通过区分传输层端口实现。2)应用层改造)应用层改造 通过针对 MMS 关联过程中的请求和响应进行扩展,在应用层进行两个通信实体间的基于数字证书的身份认证,该认证信息可用来支持对访

7、问者的权限控制,并在一定程度上防止重放攻击。通过通过 MMS 应用层协议改造提供的安全能力包括:应用层协议改造提供的安全能力包括:1)通过数字签名,提供应用层的双向身份认证 2)通过消息鉴别码,提供应用层消息的完整性,防止中间人攻击 3)通过规定的专用处理状态机,防止重放攻击。不能提供的安全能力:不能提供的安全能力:如未实现传输层安全改造,则相关安全能力均不能实现。兼容性:兼容性:实现了 MMS 应用层安全改造的设备和系统,应支持与未实现安全改造的设备和系统的互操作,对于改造过的设备和系统,兼容性的判断建议可通过区分特定的应用层安全标识实现,未改造的设备和系统可忽略新增的报文内容。2.1 应用

8、层加固应用层加固 2.1.1 MMS 关联建立过程简介关联建立过程简介 MMS 协议为应用层协议,MMS 通信需建立在 MMS 环境中,MMS 环境的建立需进行 MMS 关联,关联建立成功后,方可进行数据通信。MMS 关联建立过程如下图所示。通信提供者M-ASSOCIATE.reqCalling MMS userM-ASSOCIATE.indM-ASSOCIATE.rspCalled MMS userM-ASSOCIATE.cnf MMS 关联建立通过 M-ASSOCIATE 服务原语描述,它有以下四个过程:1)MMS 呼叫用户发起 MMS 关联建立请求;2)MMS 受叫户获得 MMS 关联建

9、立指令;3)MMS 受叫用户返回 MMS 关联建立响应;4)MMS 呼叫用户确认 MMS 关联建立结果。MMS 的 M-ASSOCIATE 服务原语关联建立由支持 MMS 关联建立的 ACSE(Association Control Service Element,关联控制服务元素)层来实现。如下图所示 MMS 关联建立实际由 ACSE 层完成,AARQ 和 AARE 为 ACSE 关联建立过程的协议数据单元。根据原有规范,AARQ 和 AARE 已经预置了认证功能信息,在 IEC 61850 中作为可选项,根据调研,未发现设备厂家进行使用。MMS 协议改造即通过完善 AARQ 和 AARE

10、中的认证功能单元,来完成对 MMS 关联过程的认证。2.1.2 改造点改造点 对IEC 61850 MMS用户在进入MMS环境之前,在MMS关联建立时对MMS用户进行认证。如下图所示,MMS 关联建立时,MMS 客户端通过 Initiate(启动)服务开始建立关联,MMS关联是通过支持MMS的下层ACSE来实现的。MMS层在关联建立过程中,只可能涉及到下表的三种 MMS 层协议数据单元,且三种数据单元内容并不会受到影响。MMS PDU 描述描述 Initiate-RequestPDU 关联建立发起方的协议数据单元 Initiate-ResponsePDU 关联建立响应方的协议数据单元 Init

11、iate-ErrorPDU 关联建立过程出错协议数据单元 认证过程由 ACSE 的 AARQ 和 AARE 协议数据单元完成的。ACSE、AARQ和 AARE 介绍见附录 C。改造过程分 2 部分:一,启用 AARQ 和 AARE 数据结构的认证字段,并填充认证相关数据。二,关联双方进行互认证检查,及必要的状态切换。此外,认证过程涉及到数字证书,需要进行数字证书的配置。2.1.2.1 数据结构改造数据结构改造 ACSE 关联建立过程的认证功能单元在原有 ACSE 的数据结构 AARQ 和AARE 中已有声明,但未有具体定义。数据结构改造包括:1)启用认证功能单元标识;2)定义认证机制数据结构;

12、3)定义认证值数据结构。(1)启用认证功能单元 启用 AARQ 的 sender-ACSE-requirements 字段和 AARE 的responder-ACSE-requirements 字段,为了兼容非认证的 MMS 关联服务,应如下处理:1)若 sender-ACSE-requirements 字段和 responder-ACSE-requirements 字段值为authentication(0),则确定关联过程需要进行符合 IEC 62351-4要求的认证操作;2)若 sender-ACSE-requirements 字段和 responder-ACSE-requirements

13、 字段值不存在,则继续检查 AARQ 和 AARE 的 mechanism-name 和 authentication-value字段,若字段值存在,特别是 authentication-value 字段值存在,则关联过程同样进行关联认证操作。(2)定义鉴别功能单元数据结构 定义 STASE-MMS-Authentication-value 模块,并在模块中定义认证值数据结构 MMS-Authentication-value,用于完成认证功能。模块定义如下图所示,模块将作为鉴别机制的类型,而鉴别值,重新定义于模块中。1)AARQ 和 AARE 中的 mechanism-name 的值为STAS

14、E-MMS-Authentication-value 模块的对象标识符值;2)认证数据结构 MMS-Authentication-value 作为 AARQ 和 AARE 中的MMS-Authentication 数据结构 external 字段的引用来完成实际的认证功能。为了便于理解,列出 MMS-Authentication 数据结构,如下图所示,MMS-Authentication-value 各字段具体说明如下:1)SignatureCertificate SignatureCertificate:=OCTET STRING(size(0.8192)SignatureCertifica

15、te 为签名证书,为 0 到 8192 的八位位组。关联建立过程中,关联请求者将自己的签名证书内容赋给 AARQ 中的 SignatureCertificate,而关联响应者在确认了关联请求者后,将自己的签名证书内容赋给 AARE 的SignatureCertificate。SignatureCertificate 内容应按照基本编码规则(Basic Encoding Rule)编码的X.509 证书(在 CMIP 中规定)。证书的交换应是双向的(服务器与客户端),且应提供来自某个已配置且可信的证书机构的个体证书(根证书)。如果以上条件任何一项不符合,则连接应被适当地终止。2)SignedVa

16、lue SignedValue:=OCTET STRING(size(0.256)SignedValue(签名值)为签名信息。它的值分两步获得,a)使用 HASH 算法对字段 time 计算摘要值 b)使用签名证书 SignatureCertificate 对应的私钥计算摘要值的签名值。签名值由关联发起方计算(关联请求者和关联响应者均为发起者),关联接收方使用以下步骤对签名值进行验证,a)使用与发起方同样的 HASH 算法对字段 time 进行计算摘要值 H;b)使用签名证书 SignatureCertificate 对签名值 SignedValue 解密,获得原HASH 值 H;c)比较 H

17、和 H 是否相等,相等,验证通过,不相等,验证不通过。3)Time 该参数应是创建 authentication-value 的时间,用 GENERALIZEDTIME 格式表示的格林威治时间(GMT)值。该时间的精度是一个当地问题,但应尽可能的精确。在调用 MMS 的 Intiate.Request(启动请求)服务、Intiate.Response(启动应答)服务期间或在这些服务的 ACSE 的 PDU 编码期间,确定该时间参数值都是同等有效的。2.1.2.2 关联认证过程关联认证过程(1)关联建立请求鉴别过程 a)AARQ 的发送者应该对适当的 ACSE 的 AuthenticationM

18、echanism 和AuthenticationValue 字段进行编码,并应通过使用 Presentation-Connect(表示层-连接)服务发送 AARQ。b)AARQ-indication(AARQ-指示)原语的接收者应使用AuthenticationMechanism 和 AuthenticationValue 字段去校验签名值。如果解码后的签名值不等于 time 字段的值,则应导致接收者发出 P-ABORT(表示层-异常终止)原语;如果 time 字段值与当地时间之差大于 10 min),则也应导致接收者发出 P-ABORT 原语。c)如果该AARQ的接收者在最近10 min之内

19、已经接收到包含相同签名值的AARQ,则应导致接收者发出 P-ABORT 原语。d)如果签名值没有导致 P-ABORT,则签名值及其它的安全参数就应传送给ACSE 的用户。(2)关联建立响应鉴别过程 a)AARE 的发送者应该对适当的 ACSE 的 AuthenticationMechanism 和AuthenticationValue 字段进行编码,并应通过使用 Presentation-Connect 服务发送AARE。b)AARE-indication 原语的接收者用 AuthenticationMechanism 和AuthenticationValue 字段去校验签名值。如果解码之后的

20、签名值不等于 time 字段的值,应导致接收者发出 P-ABORT 原语;如果 time 字段值与本地时间之差大于10 min,也应导致接收者发出 P-ABORT 原语。c)如果该AARE的接收者在最近10 min 之内已经接收到包含相同签名值的AARE,则应导致接收者发出 P-ABORT 原语。d)如果签名值没有导致 P-ABORT,则应将签名值及其它安全参数传送给ACSE 的用户。2.1.2.3 关联认证步骤关联认证步骤(1)关联认证过程添加位置)关联认证过程添加位置 关联认证过程分为两部分,关联请求与关联响应。添加位置均位于 ACSE层。关联认证请求过程添加于 ACSE 的 AARQ-P

21、DU 构造之前,在构造AARQ-PDU 数据结构时,保持原有 AARQ-PDU 字段,将认证功能单元的三个字段 sender-ACSE-requirements、called-authentication-value 和 mechanism-name 内容计算完成后,赋给 AARQ-PDU 相应字段完成 AARQ-PDU 的构造。关联认证响应过程添加于 ACSE 的 AARE-PDU 构造之前,在构造AARE-PDU 数据结构时,保持原有 AARE-PDU 字段,将认证功能单元的三个字段 responder-ACSE-requirements、responding-authentication

22、-value 和mechanism-name 内容计算完成后,赋给 AARE-PDU 相应字段完成 AARE-PDU的构造。(2)关联请求认证过程)关联请求认证过程 1)关联请求发起端过程:步骤 1:为 sender-ACSE-requirements 赋值 authentication(0)值;步骤 2:为 mechanism-name 赋值为 840.0.1.0.1.1,此值为STASE-MMS-Authentication-value 模块的对象标识符;步骤 3:以 GENERALIZEDTIME 记录当前的时间值 vtime,并将 vtime 赋给MMS-Authentication-

23、value 数据结构的 certificate-base 字段中的 time 字段;注:(记录时间放在此处是为了说明尽可能的精确记录 Authentication-value的时间,如在开发过程中,能够更精确的记录时间,可将此步进行自行调整,但不能出现在使用 time 值之后);步骤 4:使用 HASH 算法计算 time 的摘要值 htime=HASH(vtime);HASH 算法应是 SHA1;步骤 4:加载申请用户的数字证书 require-user-cert;步骤 5:将 require-user-cert 赋给 MMS-Authentication-value 数据结构的certif

24、icate-base 字段中的 authentication-Certificate 字段。步骤 5:加载申请用户数字证书相对应的私钥 req-user-privatekey;步骤6:使用私钥req-user-privatekey对htime进行签名,获得签名值vsigned,vsigned=private_encrypt(strlen(req-user-privatekey),htime,req-user-privatekey),strlen(req-user-private-key)为密钥长度。应使用 RFC 3447(PKCS#1 规范 Version 2)中规定的 RSASSA-PKC

25、S1-v1_5作为签名/验签算法。步骤 7:将 vsigned 赋给 MMS-Authentication-value 数据结构的 certificate-base字段中的 signature 字段。步骤 8:将组装的 certificate-base 值 authentication-Certificate,time,signature:=require-user-cert,vtime,vsigned 赋给 AARQ 中的 called-authentication-value 字段,此时,AARQ 中的认证功能单元的值已构造完成;步骤 9:将认证相关值进行 ASN1 编码。注:编码过程可以

26、与 AARQ-PDU 整体进行,也可以单独完成后,直接组装到 AARQ-PDU 结构中。流程图如下,GENERALIZEDTIME格式 2)关联请求接收端过程:步骤 1:判定 AARQ-PDU 的 sender-ACSE-requirements,如存在值,且为authentication(0),跳转到步骤 3;步骤 2:判定 AARQ-PDU 的 mechanism-value 字段和called-authentication-value 字段是否存在,如存在,进入步骤 3,如不存在,结束。步骤 3:提取 AARQ 的 mechanism-value 值,判定是否为 840.0.1.0.1.

27、1,如相等,进入步骤 4;如不相等,确定双方是否默认在 mechanism-value 没有值的情况下使用 STASE-MMS-Authentication-value 模块的数据结构,如是,进入第 4步,如不是,自行处理(由于不确定使用 STASE-MMS-Authentication-value 模块,不能保证 called-authentication-value 字段的值是接收用户所需要的值)。步骤 4:提取 called-authentication-value 字段的值,获得值 require-user-cert,vtime,vsigned。步骤 5:加载 CA 根证书;步骤 6:

28、使用 CA 根证书对申请用户证书进行验证,验证通过,进入步骤 7,否则,认证失败,终止关联并记录失败原因;步骤 7:使用 HASH 算法计算 vtime 的摘要值,htime=HASH(vtime);HASH算法应是 SHA1;步骤 8:提取签名数字证书 require-user-cert 中的公钥 req-user-publickey,req-user-publickey=get_publickey(require-user-cert);步骤 9:使用公钥 req-user-publickey 解签 vsigned,还原原时间的 HASH 值htime,htime=public-decryp

29、t(strlen(req-user-publickey),vsigned,req-user-publickey);应使用 RFC 3447(PKCS#1 规范 Version 2)中规定的 RSASSA-PKCS1-v1_5作为签名/验签算法。步骤 10:比较 htime 和 htime,如相等,则验证通过,如不相等,认证失败,发出认证失败响应,结束。步骤 11:提取当前时间 cur_time,与 vtime 比较,如 cur_time-vtime 的差大于 10 分钟,则发出超时响应,结束;步骤 12:从历史签名记录中提取最近 10 分钟的签名值 vsigned_10min,同时记录 vsi

30、gned 到历史签名记录中,将 vsigned_10min 与 vsigned 比较,如相等,则发出认证失败响应。(3)关联响应认证过程关联响应认证过程 关联响应认证过程与关联请求认证过程类似。1)关联响应发送端过程:步骤 1:为 responder-ACSE-requirements 赋值 authentication(0)值;步骤 2:为 mechanism-name 赋值为 840.0.1.0.1.1,此值为STASE-MMS-Authentication-value 模块的对象标识符;步骤 3:以 GENERALIZEDTIME 记录当前的时间值 vtime,并将 vtime 赋给MM

31、S-Authentication-value 数据结构的 certificate-base 字段中的 time 字段;注:(记录时间放在此处是为了说明尽可能的精确记录 Authentication-value的时间,如在开发过程中,能够更精确的记录时间,可将此步进行自行调整,但不能出现在使用 time 值之后);步骤 4:使用 HASH 算法计算 time 的摘要值 htime=HASH(vtime);HASH 算法应是 SHA1;步骤 4:加载响应用户的数字证书 responding-user-cert;步骤 5:将 responding-user-cert 赋给 MMS-Authentic

32、ation-value 数据结构的certificate-base 字段中的 authentication-Certificate 字段。步骤 5:加载响应用户数字证书相对应的私钥 res-user-privatekey;步骤6:使用私钥res-user-privatekey对htime进行签名,获得签名值vsigned,vsigned=private_encrypt(strlen(res-user-privatekey),htime,res-user-privatekey),strlen(res-user-privatekey)为密钥长度。应使用 RFC 3447(PKCS#1 规范 Ver

33、sion 2)中规定的 RSASSA-PKCS1-v1_5作为签名/验签算法。步骤 7:将 vsigned 赋给 MMS-Authentication-value 数据结构的 certificate-base字段中的 signature 字段。步骤 8:将组装的 certificate-base 值 authentication-Certificate,time,signature:=require-user-cert,vtime,vsigned 赋给 AARE 中的 responding-authentication-value 字段,此时,AARE 中的认证功能单元的值已构造完成;步骤 9

34、:将认证相关值进行 ASN1 编码。注:编码过程可以与 AARE-PDU 整体进行,也可以单独完成后,直接组装到 AARE-PDU 结构中。2)关联响应接端过程:步骤 1:判定 AARE-PDU 的 responder-ACSE-requirements,如存在值,且为authentication(0),跳转到步骤 3;步骤 2:判定 AARE-PDU 的 mechanism-value 字段和responding-authentication-value 字段是否存在,如存在,进入步骤 3,如不存在,结束。步骤 3:提取 AARE 的 mechanism-value 值,判定是否为 840.

35、0.1.0.1.1,如相等,进入步骤 4;如不相等,确定双方是否默认在 mechanism-value 没有值的情况下使用STASE-MMS-Authentication-value模块的数据结构,如是,进入第4步,如不是,自行处理(由于不确定使用 STASE-MMS-Authentication-value 模块,不能保证 called-authentication-value 字段的值是接收用户所需要的值)。步骤 4:提取 responding-authentication-value 字段的值,获得值 responding-user-cert,vtime,vsigned。步骤 5:加载

36、CA 根证书;步骤 6:使用 CA 根证书对响应用户证书进行验证,验证通过,进入步骤 7,否则,认证失败,终止关联并记录失败原因;步骤 7:使用 HASH 算法计算 vtime 的摘要值,htime=HASH(vtime);HASH算法应是 SHA1;步骤 8:提取签名数字证书 responding-user-cert 中的公钥 res-user-publickey,res-user-publickey=get_publickey(responding-user-cert);步骤 9:使用公钥 res-user-publickey 解签 vsigned,还原原时间的 HASH 值htime,h

37、time=public-decrypt(strlen(res-user-publickey),vsigned,res-user-publickey);应使用 RFC 3447(PKCS#1 规范 Version 2)中规定的 RSASSA-PKCS1-v1_5作为签名/验签算法。步骤 10:比较 htime 和 htime,如相等,则验证通过,如不相等,认证失败,发出认证失败确认,结束。步骤 11:提取当前时间 cur_time,与 vtime 比较,如 cur_time-vtime 的差大于 10 分钟,则发出超时确认,结束;步骤 12:从历史签名记录中提取最近 10 分钟的签名值 vsig

38、ned_10min,同时记录 vsigned 到历史签名记录中,将 vsigned_10min 与 vsigned 比较,如相等,则发出认证失败确认。2.1.3 改造后的改造后的 AARQ 和和 AARE 的的 ASN1 编码编码 AARQ 的 ASN1 编码 AARE 的 ASN1 编码 2.2 传输传输层加固层加固 2.2.1 传输层加固的变化传输层加固的变化 如下图所示,传输层加固为在 TCP 层与 TPKT 层之间增加 TLS/SSL 安全协议增。并将原 102 端口修改为 3782 端口。对于 TPKT 层数据和 TCP 层数据来说,中间多了一层 TLS/SSL 加密数据。下图为简化

39、后的网络层次关系,对于 TLS/SSL 协议来说,上层数据均为应用数据,它将上层数据作为输入,并进行加密后,打包本层协议数据后,整个作为TCP 的数据给 TCP 层。对于上层的应用程序来说,TLS/SSL 协议取代了 TCP 协议,同时增加了加密认证等功能;对于下层的 TCP 协议来说,TLS/SSL 协议就相当于应用层协议。数据链路层网络层(IP)传输层(TCP)TLS/SSL协议应用层数据 TLS/SSL 为其承载的应用层数据提供传输层加密和校验机制。2.2.2 TLS 协议标准简介协议标准简介 TLS 协议是一种应用于传输层的安全协议,用于构建客户端和服务端之间的安全通道。TLS 协议本

40、身基于 TCP 传输层协议,通过实现证书认证、密钥协商、数据加解密等功能,对上层应用程序提供类似于 TCP 的流传输协议。TLS 协议本身是分层结构,分为两层:下层的记录层协议提供对 TCP 数据流的分段、压缩与解压、加密与解密、完整性校验等;上层协议包括握手协议(用于身份鉴别和安全参数协商),密码规格变更协议(用于通知安全参数的变更),报警协议(用于关闭连接的通知和对错误进行报警)这三种协议。数据链路层网络层(IP)传输层(TCP)记录层协议握手协议、密码规格变更协议、告警协议应用层数据标准TCP/IP协议栈TLS协议栈 下面是 TLS 协议的具体内容,供协议的实现者参考。更细的 TLS 协

41、议内容请参见 RFC2246。3.基于基于 GOOSE/SV 协议的加固协议的加固 GOOSE/SMV 在底层通信协议格式完全一致,仅在 GOOSE 协议数据单元和SMV 协议数据单元有部分差别。通过对 GOOSE/SMV 协议的扩展,并在扩展字段中引入对单个数据报文的校验信息,防止数据报文在传输过程中被篡改,并在一定程度上防止重放攻击。通过通过 MMS 应用层协议改造提供的安全能力包括:应用层协议改造提供的安全能力包括:1)通过密钥相关的消息鉴别码,提供消息完整性保护 2)通过规定的专用处理状态机,防止重放攻击。不能提供的安全能力:不能提供的安全能力:从目前设备的处理能力和报文的处理效率要求

42、考虑,不通过加密提供保密性。不提供基于数字证书的双向身份认证。兼容性:兼容性:GOOSE/SMV 协议规约的安全扩展不影响原有报文数据结构,非安全GOOSE 客户端可不理会安全扩展的 GOOSE 报文。3.1 签名加固签名加固 通过利用 GOOSE/SMV 报文协议格式中的保留字段和扩展协议来实现GOOSE/SMV 安全改造目标。下图(a)所示为 IEC 61850 中 GOOSE/SMV 原始报文结构,下图(b)所示为改造后的报文结构。GOOSE/SMV 安全改造主要有两个部分,一是对原报文中的保留字段进行扩展定义(上图(b)中的原保留部分),二是对保卫尾部进行扩展(上图(b)中的Exten

43、d)。3.1.1 保留位的利用保留位的利用 保留 1:保留 1 字段用于保存扩展部分 extend 的长度(x+y+z 字节),使用保留 1 的第 1 字节存放,因此,扩展部分的长度最多为 255 字节。如果对协议进行扩展,则保留 1 的第 1 个字节内容不为 0,此标记可用于判断通信对端所使用的GOOSE/SMV 协议是否支持安全特性。保留 2:当保留 1 的第 1 字节不为 0 时,保留 2 用于存放根据 TPID、TCI、EtherType 和 APPID 四项字段共 8 个字节所产生的 CRC 校验值。3.1.2 协议扩展协议扩展 Extend 协议扩展部分的数据结构 ASN.1 描述

44、如下,Extension:=0 IMPLICIT SEQUENCE 1 IMPLICIT SEQUENCE Reserved OPTIONAL,2 IMPLICIT OCTETSTRING Private OPTIONAL,3 IMPLICIT AuthenticationValue OPTIONAL,Reserved 字段将保留用于未来的扩展。Private 字段用于厂商内部的私有信息传递。Extend 的 AuthenticationValue 值的计算可通过以下两步计算:1)使用 HMAC(Hash-based Message Authentication Code:哈希运算消息认证码)

45、签名算法计算报文格式图(b)所示的“签名计算输入”部分,获得一个消息鉴别码 MAC(消息鉴别码)。2)HMAC 算法需要密钥和 HASH 算法 3)密钥可以为 8-32 字节 4)HASH 算法使用:GOOSE 使用 SHA-256,SV 使用 SHA1。AuthenticationValue 值最终为数字签名,HMAC 计算过程在传输语法的T-L-V 值上进行,最终生成的 AuthenticationValue 值也以 T-L-V 放入图(b)中的AuthenticationValue 位置。3.1.3 扩展及认证值数据结构重新定义扩展及认证值数据结构重新定义 扩展数据结构 此结构为自定义结

46、构,如果有需要,开发者可以自行定义,但需要满足 IEC 62351 规范。扩展结构独立与 IEC61850 中定义的数据结构 GOOSE-PDU 和 SMV-PDU,GOOSE 结构如下,SMV 结构如下,3.1.4 CRC 计算范围计算范围 CRC 计算范围 CRC 计算范围包含 TPID、TCI、EtherType 和 APPID 四个字段,共 8 字节。3.1.5 签名范围签名范围 签名值的输入包含从 EtherType 开始,到 AuthenticationValue 之前,且数据是 ASN.1 编码后的值。即签名值输入范围包含了 EtherType、APPID、长度、保留 1、保留

47、2、编码后的 APDU、编码后的 Extension 除 Authentication 的 T、L、V 值,如下图所示,签名值计算范围-SHA256 输入 签名输入范围为图中签名范围描述,签名过程首先将输入经 HASH 计算成消息鉴别码 MAC,然后再对 MAC 进行签名。3.1.1 交互流程交互流程 3.1.1.13.1.1.1 要求要求 (1)对服务器的要求 服务器与接收客户端设备提供一共享密钥。(2)对客户端的要求 具有服务器的共享密钥,且需维护服务器MAC地址与服务器密钥的映射表。3.1.1.23.1.1.2 交互流程交互流程 1)服 务器 应具 有 执行 Authentication

48、Value 算 法的 功能,对 发出的GOOSE/SMV 报文进行 AuthenticationValue 算法处理;2)接收客户端应为 APDU(应用层协议数据单元)计算 AuthenticationValue;3)使用服务器提供的共享密钥对 Extend 字段的八位位组进行解密(严格来说,只对 Extend 中的 AuthenticationValue 部分进行解密);4)如果计算出的AuthenticationValue与解签后的AuthenticationValue相匹配,那么客户端将继续进行 APDU 的处理。3.1.1.33.1.1.3 交互步骤交互步骤 (1)服务器构建报文步骤

49、步骤1:构造APDU(原始GOOSE/SMV报文)、Extension(扩展报文,含private、reserved 和 authentication)的 TLV 结构,其中,authentication 值的 L 为固定值(依据签名算法输出结果长度),V 数据可预设为 0;步骤 2:计算保留字段 1,即 Extension 的长度,并填充到保留字段 1 中;步骤 3:计算 Length,Length 长度为 8 和 APDU 的长度相加,即 Length=8+sizeof(APDU)计算完成,填充至报文 Length 字段;步骤 4:填充 EtherType 和 APPID 字段 步骤 5:

50、填充链路信息,即源 MAC、目的 MAC、TPID、TCI 步骤 6:计算 CRC,6.1 以 TPID、TCI、EtherType 和 APPID 作为输入,6.2 以 CRC16 算法计算 CRC 值,并填充保留字段 2,步骤 7:计算签名值 7.1 以 EtherType、APPID、Length、保留 1 字段、保留 2 字段、APDU、Extension结构中除 Authentication 的值作为输入,7.2 GOOSE 协议使用SHA-256HASH算法,SV 协议使用SHA1HASH 算法,7.3 HMAC 签名算法计算签名值,并填充至 authentication 的预留

展开阅读全文
相关资源
相关搜索
资源标签

当前位置:首页 > 建筑施工 > 施工组织方案

版权声明:以上文章中所选用的图片及文字来源于网络以及用户投稿,由于未联系到知识产权人或未发现有关知识产权的登记,如有知识产权人并不愿意我们使用,如有侵权请立即联系:2622162128@qq.com ,我们立即下架或删除。

Copyright© 2022-2024 www.wodocx.com ,All Rights Reserved |陕ICP备19002583号-1 

陕公网安备 61072602000132号     违法和不良信息举报:0916-4228922