(1.南方电网科学研究院广州510080)
摘要:IEC62351[1]为IEC60870-5电力远动设备及系统传输规约提供了基于消息认证的安全防护机制,本文在分析IEC62351消息认证机制及其密钥更新机制不足的基础上,提出了密钥更新和消息认证事务处理逻辑分离的密钥更新机制和状态机变换方式,通过降低或消除密钥更新对远动控制消息传递的影响,有效防止了因引入消息安全认证机制引起的电力系统远动控制失效问题。
关键词:IEC62351;电力系统信息安全防护;挑战/响应;消息认证;
TheOptimizationandImprovementforIEC62351MessageAuthenticationProtocolofTelecontrolEquipmentandSystems
YUANXiaokai,LIGuo,JIANGYixin,ZHANGFuzheng
(1.ElectricPowerResearchInstitute,CSG,Guangzhou,510080,China)
Abstract:IEC62351providessecurityprotectionmechanismbasedonmessageauthenticationforIEC60870-5transmissionprotocolofpowertelecontrolequipmentandsystems.BasedontheanalysisoftheinsufficientofIEC62351messageauthenticationmechanismanditskeyupdatemechanism,thispaperpresentsanewmethodofkeyupdateandstatechange.Themethodlogicallyseparatesthekeyupdateandmessagesauthenticationtansactionprocessing,toreduceoreliminatetheinfluenceofkeychangeonthecriticaloperations.Experimentshowsthattheproposedmethodefficientlypreventsfailureofpowersystemremotecontrolcausedbytheintroductionofinformationsecurityauthenticationmechanism.
Keywords:IEC62351;PowerSystemInformationSecurityProtection;Challenge/Reply;MessageAuthentication;
1引言
近年来,基于以太网的IEC60870-5规范在电力系统被广泛采用,主要用于变电站内、调度控制中心间以及变电站间的测量、事件、控制等信息的传递,但规范中未涉及信息安全防护机制。针对电力系统面临的日益突出的信息安全问题,国际电工委员会第57技术委员会第15工作组(IECTC57WG15)制定了IEC62351电力系统管理及其信息交换数据和通信安全系列标准,其中的消息认证机制,用于对执行关键控制消息指令进行用户身份认证。同时,为了降低用户密钥被破解的风险,制定了密钥定期更新机制,但该机制存在一定的缺陷,在密钥更新时存在短暂的密钥失效期,可能引起控制指令被阻断而失效。
本文针对IEC62351密钥更新机制存在的不足,提出了一种密钥更新和关键消息认证事务处理逻辑隔离的密钥更新机制,旨在降低或消除密钥更新时因密钥的短暂失效对远动控制消息传递的影响,防止因引入消息安全认证机制引起的电力系统远动控制失效。
图1关键ASDU的成功挑战例子
Figure1–ExampleofsuccessfulchallengeofcriticalASDU
2IEC62351消息认证机制概述
2.1术语
1)控制站controllingstation
启动大部分通信和发布命令的设备或应用。在一些协议规范中一般称作"主站"。
2)被控站controlledstation
将现场收集数据传送到控制站的远方设备。在一些协议规范中一般称作"子站"或"从站"。
3)挑战站challenger
发出认证挑战的站点。既可以是控制站,也可以是被控站。
4)响应站responder
响应或回应认证挑战的站点。既可以是控制站,也可以是被控站。
图2关键ASDU的失败挑战例子
Figure2–ExampleoffailedchallengeofcriticalASDU
2.2消息认证
IEC62351规范中为每个使用电力远动设备和系统的用户定义了会话密钥,当控制站/被控站收到关键消息(控制、设点调整、参数设定等输出操作)时,分3步完成关键消息认证,1)挑战站产生伪随机数和挑战序列(CSQ),确保每次生成的挑战消息的唯一性,并指定keyed-hashmessageauthenticationcode(HMAC)算法,最后生成挑战消息发送到响应站进行用户身份认证;2)响应站收到挑战消息后,使用用户的会话密钥将关键消息体(ASDU:ApplicationServiceDataUnit)、挑战消息等关键信息进行HMAC计算,生成应答消息发送到挑战站以响应挑战;3)挑战站收到应答消息后,根据相同的信息重复计算HMAC与应答消息中的HMAC值进行比较,相同时则认为通过认证,正常执行先前收到的关键消息,否则拒绝执行并返回错误消息。
同时,为了减少关键消息认证步骤和网络带宽的使用,IEC62351规范定义了主动认证模式(aggressivemode),在关键消息中主动携带HMAC值,消除了挑战消息和应答消息。规范中规定,在响应站收到和响应来自挑战站至少一条挑战消息之前,响应站不应使用主动认证模式。
图3主动认证模式成功例子
Figure3–Exampleofasuccessfulaggressivemoderequest
2.3会话密钥更新
电力远动设备及系统传输规约通信存在长连接的特点,为了避免用户会话密钥因长时间使用通过通信链路分析而暴露,IEC62351规范设计了会话密钥定期更新机制,通过设置会话密钥定期更新定时器定期进行密钥更新。规范中规定密钥更新只能由控制站发起。
图4会话密钥初始化和定期更新例子
Figure4–Exampleofsessionkeyinitializationandperiodicupdate
2.4运行状态机
IEC62351规范为了支撑消息认证和会话密钥更新机制的运行,规定了控制站和被控站状态机。本文主要研究会话密钥更新机制对关键消息执行的影响,因此重点针对控制站状态机进行阐述。
控制站状态机有4个主要状态,其运行机制如下:
1)Waitforkeystatus,表示请求获取被控站会话密钥状态,初始化、当控制站密钥更新定时器超时或错误计数达到最大值向被控制站发送Keystatusrequest消息,进入该密钥更新状态;
2)Waitforkeychangeconfirmation,表示等待会话密钥更新确认,控制站发起KeyChange消息后进入该密钥更新状态;
3)Securityidle,安全空闲状态,当控制站收到Keychange消息的正确响应后,会话密钥更新完成,进入该状态。所有IEC60870-5消息在该状态下处理;
4)Waitforreply,表示等待挑战应答消息,当挑战站收到关键消息,发起挑战后进入该状态。
图5控制站主要状态转移
Figure5–Majorstatetransitionsforcontrollingstation
除了正常状态迁移外,IEC62351规范中也对特殊状态和异常状态进行了明确描述,在控制站处于密钥更新状态(“waitforkeystatus”或"waitforkeychangeconfirmation”)下,因为会话密钥无效,当收到一个应答消息,将认为该应答消息是一个Rxinvalidreply(收到无效应答消息)事件,丢弃在队列中等待执行的关键消息,增加错误计数。本文未列出所有的状态机迁移(详情参考IEC62351-5规范),仅对与本文主题相关的状态迁移进行描述,如表1所示。
由IEC62351定义的状态机可看出,密钥更新会使状态变换到密钥更新状态,在该状态下会话密钥处于无效状态,对收到的挑战、应答和关键消息则做无效或错误处理,使关键消息不能正确执行而导致短暂控制失效。
3密钥更新和消息认证逻辑分离关键技术
3.1逻辑处理分离机制
IEC62351规范中,明确要求设置密钥更新定时器触发会话密钥更新,但未明确规定密钥更新期间密钥失效,理论上密钥更新期间原有会话密钥仍应该为有效的密钥,密钥有效期在时间轴上应连续,不存在时间上的间隔,示意图如下:
图6密钥有效期时间序列
Figure6–Timesequenceofkeyperiod
表1控制站状态机
Table1–Challengerstatemachine
由于规范中定义了一个控制站状态机同时控制密钥更新和消息认证,且规定在密钥更新状态下,当前会话密钥失效。但一个消息交互存在跨越两个密钥有效周期的可能,这会导致密钥更新期间关键消息不能正常执行。
为了能够满足会话密钥有效性在时间上的连续性,本文将密钥更新和关键消息处理逻辑分离,使密钥更新作为逻辑独立的事务处理,保障密钥更新期间原有会话密钥仍然有效,消除其对关键控制消息事务处理的影响,逻辑隔离示意图如下:
图7密钥更新和关键消息逻辑处理分离示意图
Figure7–Schematicdiagramofkeychangeandkeymessagelogicprocessingseparation
图8密钥更新状态机
Figure8–Statemachineofkeychange
3.2状态机优化
本文提出的密钥更新和关键消息处理逻辑分离的密钥更新机制,将IEC62351规范中控制站状态机一分为二,一个是密钥更新状态机,仅用于处理规范定义的密钥更新消息;另一个是消息处理状态机,仅用于处理IEC60870-5消息,优化后的状态描述如下:
1)控站优化后的密钥更新状态机
密钥更新状态机与IEC62351规范一致,包含“waitforkeystatus”和“waitforkeychangeconfirmation”2个状态。初始化时,状态由“Init”迁移到“waitforkeystatus”,然后根据规范中的密钥更新机制在状态间相互切换。规范中定义的密钥更新消息和会话密钥定期更新定时器超时消息都被从消息队列中取出并路由到该状态机上处理。会话密钥成功更新后则使用新的会话密钥替换用户密码表中原有会话密钥,该替换过程使用互斥锁机制,保障在写入用户新的会话密钥时不会被同时读取。
2)控制站优化后的消息处理状态机
图960870-5消息处理状态机
Figure9–Statemachineof60870-5messageprocessing
经优化后的控制站消息处理状态机和被控站一致,仅有2个状态。控制站将所有收到的IEC60870-5消息从消息队列中取出并路由到该状态机上处理,并根据挑战消息和应答消息的成功发送和响应进行状态切换,事务处理逻辑简单清晰,且不会受到密钥更新消息机制的影响而阻断控制消息的处理,不会造成控制消息失效。
3)被控站状态机优化
IEC62351规范中定义的被控站状态机和本文优化后的控制站状态机基本一致,不同在于规范中定义当处于“Waitforreply”状态时,收到Keystatusrequest或Keychange消息则丢弃队列中等待执行的关键ASDU。
本文对被控站状态机进行优化,将密钥更新消息处理和IEC60870-5消息处理逻辑分离,即被控站收到密钥更新消息则按照“Securityidle”状态立即处理,不丢弃执行队列中的关键ASDU,保障密钥更新在被控站逻辑处理的独立性,消除密钥更新对消息处理逻辑的影响。其它情况,仍按照规范中定义的状态运行机制运行。
3.3会话密钥切换
正常情况下,挑战站收到挑战应答消息后使用用户会话密钥表中的密钥进行用户身份认证,但在密钥更新期间,由于时间差可能导致挑战站和响应站使用不同的会话密钥计算HMAC导致认证失败。
根据规范,在被控站收到密钥改变(图4:Keychange(response3))消息并正确处理后,新的会话密钥在被控站已经生效,但被控制站发送的成功更新会话密钥的响应信息(图4:keystatus(ok,challenge4))到达控制站前,经本文优化后可能收到控制站发送的关键消息或先前发送挑战的应答消息,因为本文去除了被控站在“Waitforreply”状态下对密钥更新消息的阻断。此刻,如果控制站使用新的会话密钥对先前发送挑战的应答消息进行认证,存在因使用不同的会话密钥(先前发送的挑战的应答消息可能使用更新前的会话密钥)计算HMAC而导致认证失败的可能。
为了使挑战站能够在会话密钥更新时正确的完成对挑战应答消息的认证,本文在挑战站发起挑战时记录了挑战序列和会话密钥的映射关系,记录内容如下:
表2挑战序列与密钥记录
Table2–CSQandkeyrecord
挑战站收到挑战对应的应答消息后,首先使用记录中的密钥进行认证,认证失败时再使用用户会话密钥表中的密钥进行认证,无论响应站使用新会话密码或原有会话密钥响应挑战,该机制都能确保被正确认证。仅当密钥更新时,可能需要2次认证,其它情况仅一次就可完成认证,性能影响极小。
对于规范中定义的主动认证模式,由于规范要求至少成功完成挑战和应答一次方可采用该模式,因此,上述的根据记录密钥进行认证的机制仍然有效,密钥更新时可正确认证。但为了保证记录中密钥的正确性,本文则有优化为密钥更新后必须成功完成挑战和应答一次方可采用主动认证模式。
4优化提升方案的安全性分析
4.1网络链路安全分析
本文提出的优化提升方案仅将IEC62351规范中的密钥更新和IEC60870-5消息处理逻辑事务处理分离,通信会话连接的建立,以及身份认证和传输加密机制未作改变,仍然遵循IEC62351规范的要求,因此,未增加和降低传输安全防护的能力。
4.2会话密钥暴露的风险评估
本文中密钥更新机制与IEC62351规范中的要求的密钥更新间隔一致,挑战序列与密钥记录仅为了保证会话密钥切换的连贯性,并未延长会话密钥的有效性周期,因此会话密钥暴露的风险防护能力与规范要求一致。
4.3更新的会话密钥存储风险评估
在IEC62351的规范中,会话密钥的管理和保存并未有直接规定,会话密钥存储的保存安全性和具体实现有直接关系。本文将密钥更新逻辑事务处理分离,记录了挑战序列和会话密钥的关联关系,未增加和降低密钥存储相关安全风险。
5优化提升方案验证
5.1测试验证方案
为了能够验证本文优化与提升方案能够正常的达到设计目标,通过对开源社区的IEC62351仿真程序进行二次开发,分别实现了符合IEC62351的仿真程序和本文优化提升后的仿真程序,但去除了其中传输层加密模块,方便通过网络协议分析验证消息通信处理结果。
整体测试框架中包含一套典型的测试用例,2套消息认证控制端仿真服务和被控端仿真服务,1套网络通信捕获程序用于对测试的消息进行记录和分析,示意图如下:
图10优化提升方案测试框架
Figure10–Testingframeworkofoptimizationandupgradingscheme
5.2典型测试用例
1)密钥初始化验证
建立通信链路,完成身份认证,发起会话密钥初始化,验证能够正确的完成会话密钥生成,消息应答正常。
2)密钥更新验证
触发密钥更新定时器,验证密钥更新消息可正常运行,会话密钥可被正常更新。
3)验证非关键消息处理
发送非关键消息,验证可正常被处理。
4)验证关键消息认证(挑战-应答)
发送关键消息,验证可正常触发消息认证,正常收发和处理挑战和应答消息,关键消息被正确处理。
5)密钥更新后的关键消息认证
发起密钥更新,发送关键消息,验证可正常触发消息认证,挑战和应答消息使用更新后的密钥计算HMAC,关键消息被正确处理。
6)验证密钥更新期间关键消息的处理
发起密钥更新,紧接着发送关键消息,验证可否正常触发消息认证,关键消息被正确处理。
7)验证密钥更新期间挑战应答消息的处理
发送关键消息,在收到挑战信息后触发密钥更新,然后对收到的挑战进行应答,关键消息被正确处理。
5.3测试结果
表3优化前后测试结果对比
Table3Comparisonoftestresultsbeforeandafteroptimization
根据测试对比结果分析,本文的优化提升方案可良好的运行,能够有效的消除IEC62351规范中定义的控制站状态机在会话密钥更新时造成的关键控制消息失效问题。
6结束语
电力系统中不同的用户可对电力远动设备和系统进行遥控、参数设定等操作,为了能够对用户进行身份认证,IEC62351制定了消息认证机制,有效的对非授权或非法用户操作进行安全防护。IEC62351建立的电力系统整体安全防护体系可有效的规范化电力系统的安全防护技术要求,提高电力系统的安全防护水平。
本文对IEC62351的消息认证机制进行了深入的研究,发现了存在的一些不足,通过理论与实践结合提出了优化提升解决方案,且通过开发仿真程序对方案进行了验证,可有效的解决消息认证中密钥更新机制引发的远动控制失效,为进一步推广和深化IEC62351规范在电力系统安全防护中的应用做出了积极推进作用。
参考文献:
[1]IEC62351Powersystemsmanagementandassociatedinformationexchange–Dataandcommunicationssecurity–Part5:SecurityforIEC60870-5andderivatives[S].2009
作者简介:
袁小凯(1977-),男,河南沁阳人,工程师,从事电力系统通信和信息安全领域研究工作(e-mail)yuanxk@csg.cn;
李果(1979-),男,湖南长沙人,高级工程师,从事电力企业信息化建设、信息集成及信息化规划等工作(Tel)020-38120872(e-mail)liguo@csg.cn
蒋屹新(1972-),男,广西全州人,高级工程师,从事电力系统通信和信息安全领域研究工作(Tel)020-38120876(e-mail)jiangyx@csg.cn;