基于iec62351的goose报文的安全交互方法

文档序号:7796983阅读:199来源:国知局
基于iec62351的goose报文的安全交互方法
【专利摘要】本发明的目的在于提供一种基于IEC62351的GOOSE报文的安全交互方法,包括如下步骤:服务端准备一套带有私钥的数字证书,同时将证书分发给GOOSE报文的客户端,由客户端将证书与服务端的网卡MAC地址进行关联,接着对报文的签名和验证。本发明方法基于IEC62351标准,对GOOSE报文CRC计算、报文摘要计算以及对摘要进行签名的安全处理,目的在于解决IEC61850标准的变电站自动化系统在基于IEC62351标准的安全通信加固问题。
【专利说明】基于IEC62351的GOOSE报文的安全交互方法
【技术领域】
[0001]本申请涉及电力信息安全领域,具体来说涉及一种基于IEC62351的智能变电站中智能电子设备的GOOSE报文的安全交互方法。
【背景技术】
[0002]IEC61850提出了变电站的一组公共通信标准,通过对设备的一系列规范化,使得IED (智能电子设备)能够在统一规范下进行无缝连接,为了推进国内变电站的发展需要,国内提出了基于IEC61850的DL/T860标准。
[0003]IEC61850的特点是I)面向对象建模;2)抽象通信服务接口 ; 3)面向实时的服务;4)配置语言;5)整个电力系统统一建模。
[0004]IEC61850标准将变电站通信体系分为变电站层、间隔层、过程层。IEC61850的网络通信上层统一采用抽象通信服务接口,对具体的网络,通过将底层实现接口映射到抽象通信接口来对接。在变电站层与间隔层之间将抽象通信服务接口映射到制造报文规范(MMS)、传输控制协议/网际协议(TCP/IP)以太网或光纤网。在间隔层与过程层之间的网络采用广播式的以太网传输。
[0005]国家电网公司在^一五”规划中明确提出研究和推广以IEC61850和电子式PT/CT为基础的数字化变电站。IEC61850提出了变电站过程层、间隔层、站控层三层之间所有设备直接接入以太网。由此可见网络在变电站中已成为最重要的通信方式。
[0006]但是,由于IEC61850标准提出时,只注重IED之间的共享通信,而对通信过程中的安全并未重视,导致变电站一旦被入侵,而变电站内部又没有任何防护措施,后果将很难想象。`
[0007]2005年4月,国际标准化组织IEC制定了 IEC62351数据和通信安全标准(草案),以解决电力通讯领域的数据和通讯安全问题。在IEC62351中,认证和加密是核心内容。由于GOOSE报文的时间要求极高,针对GOOSE报文进行加密,在时间上不能满足要求,而对GOOSE报文进行认证能够满足要求。
[0008]本专利提出基于IEC62351的GOOSE报文的安全交互方法。通过对GOOSE报文保留字段进行利用,保存计算GOOSE报文部分的CRC值,以及对GOOSE报文进行扩展,用于存放GOOSE报文的摘要及对摘要的签名,从而对GOOSE报文进行安全处理,防止GOOSE报文被篡改,以及确认GOOSE报文来源,从而防止GOOSE报文的欺骗攻击。

【发明内容】

[0009]本发明的目的在于提供一种基于IEC62351的GOOSE报文的安全交互方法,本方法针对智能变电站中智能电子设备使用GOOSE报文通信时,在基于IEC62351标准的基础上,对GOOSE报文进行CRC校验和数字签名处理后,再进行交互,以达到在GOOSE报文交互过程中,能够确认GOOSE报文的发送者的目的。
[0010]本发明的目的可通过以下的技术措施来实现:[0011]—种基于IEC62351的GOOSE报文的安全交互方法,首先,服务端(发送方)准备一套带有私钥的数字证书,同时将证书(不含私钥)分发给GOOSE报文的客户端(接收方),由客户端将证书与服务端的网卡MAC地址进行关联,接着对报文的签名和验证过程如下:
[0012]I)签名流程
[0013]1.1)对应用生成的GOOSE报文G进行解析,得到各个字段的值;签名与验证操作需要的字段包括GOOSE报文中的标志协议标识域TPID、标志控制信息域TC1、以太网报文类型域EtherType、应用标识域APPID、应用协议数据单元APDU,以及为未来标准化应用保留的保留字段I (Reservedl)、保留字段2 (Reserved〗)。
[0014]1.2)取得待计算CRC校验值的四个字段TPID、TC1、EtherType、APPID的值,并将其拼接成一个字符数组;
[0015]1.3)计算该字节数组的CRC校验值;所述计算CRC校验值的方法是采用循环冗余校验(Cyclic redundancy check,通称 “CRC”)。
[0016]1.4)将计算出的CRC值填入GOOSE报文的Reserved2字段;
[0017]1.5)读取并解析服务端的私钥P。
[0018]1.6)取得待计算RSA签名的三个字段APDU、Reserved、Private的值,并将其拼接成一个字符数组;其中,Reserved字段作为保留位用于后续扩展,Private字段作为GOOSE报文服务端和客户端传递非标准内容,该非标准内容的格式,由服务端和客户端提前自行约定。
[0019]1.7)使用散列算法MD5Hash (即哈希函数Hash Function)计算该字节数组的摘要值S”;·
[0020]1.8)使用服务端私钥对摘要值进行签名,获得签名值S ;
[0021]1.9)将RSA签名添加到GOOSE报文的末尾;
[0022]1.10)计算新的GOOSE报文扩展部分的长度;
[0023]1.11)将扩展部分的长度填入Reservedl字段的第一个字节中。
[0024]2)验证流程
[0025]2.1)根据接收到的网络报文的源MAC地址,查找对应的服务端证书X ;
[0026]2.2)对应用生成的GOOSE报文G进行解析,得到各个字段的值;
[0027]2.3)判定Reservedl字段的第一个字节是否大于O ;如果不大于O则该GOOSE报文未经过签名,验证结束;
[0028]2.4)取得待计算CRC校验值的四个字段TPID、TC1、EtherType、APPID的值,并将其拼接成一个字符数组;
[0029]2.5)计算该字节数组的CRC校验值;
[0030]2.6)将计算出的CRC校验值与GOOSE报文中的Reserved2字段值进行比较;若不相等则验证失败,记录日志,丢弃该报文;
[0031]2.7)取得待计算RSA签名的三个字段APDU、Reserved、Private的值,并将其拼接成一个字符数组;
[0032]2.8)使用散列算法MD5Hash计算该字节数组的摘要值S” ;
[0033]2.9)使用服务端证书对报文中的签名值进行解密,得到服务端计算的摘要值S ;
[0034]2.10)比较两个摘要值S”与S ;若不相等则验证失败,记录日志,丢弃该报文;若相等,贝1J验证成功。
[0035]本发明对比现有技术,有如下优点:
[0036]本发明基于IEC62351的GOOSE报文的安全交互方法,通过对基于IEC61850的GOOSE报文,对保留字段进行利用,并扩展GOOSE报文结构,通过对GOOSE报文头部分进行CRC计算、对GOOSE报文体进行SHA-256摘要计算,最终在扩展部分对摘要进行签名,保护GOOSE报文的完整性,以及确定GOOSE报文的源。能够达到确定GOOSE报文的源的目的,以防止在变电站被人攻击时,任何人都可以发送GOOSE报文来操作智能电子设备,特别是影响智能变电内部重要的高压变压设备。
[0037]本发明方法基于IEC62351标准,对GOOSE报文CRC计算、报文摘要计算以及对摘要进行签名的安全处理,目的在于解决IEC61850标准的变电站自动化系统在基于IEC62351标准的安全通信加固问题。由于基于IEC61850标准的GOOSE报文只涉及数据的交互,变电内GOOSE报文交互没有任何安全的防护,一旦变电站的防护出现意外,变电站内部的GOOSE报文将会被随意发送。而基于IEC62351标准提出以来,智能电子设备在GOOSE报文交互时,需要对报文的源头和数据本身进行验证,从而能够确保在一定时间内,即使变电站外部防护存在安全问题,验证过程也能够保证GOOSE交互过程的安全,以延缓攻击者的速度,为变电站安全争取宝贵时间。
【专利附图】

【附图说明】
[0038]图1是本发明参考体系结构示意图;
[0039]图2是GOOSE的报文结构示意图,(a)为IEC61850标准的结构,(b)为基于IEC62351标准的结构;
[0040]图3是本发明方法流程不意图。
【具体实施方式】
[0041]图1是本发明参考体系结构示意图,示出了本发明所包含的组件,给出了基于IEC62351的GOOSE报文的安全交互方法的参考体系结构图,它主要包括三个部分:服务端对GOOSE报文的处理、GOOSE报文和客户端对GOOSE报文的验证。
[0042]如图2所示,GOOSE报文分为IEC61850标准的GOOSE报文和IEC62351标准的GOOSE报文。IEC61850标准的GOOSE报文报文不包括安全项;IEC62351标准的GOOSE报文是基本结构基于IEC61850标准的GOOSE报文结构,并在此基础上扩展报文,以保存对GOOSE报文进行摘要后的签名值。
[0043]在IEC62351标准提出后,本专利基于IEC62351标准,提出通过GOOSE报文进行扩展,并安全处理,以确定GOOSE报文的源,和防止GOOSE报文被篡改,从而防止GOOSE报文从不确定的源头发出,和GOOSE报文被随意篡改。
[0044]服务端在组装GOOSE报文时,对GOOSE报文进行安全处理,首先对GOOSE报文头部分字段进行CRC计算,以保存在GOOSE报文的保留字段中,再对GOOSE报文进行摘要计算,并对摘要进行签名,并将签名值存放于扩展字段中。
[0045]客户端在接收到GOOSE报文后,对安全处理过的GOOSE报文进行验证,通过签名验证,以确定GOOSE报文的源,通过摘要验证和CRC验证,以确定内容是否被篡改。[0046]下面通过具体实施例说明基于IEC62351的GOOSE报文的安全交互方法的流程,如图3所示,例如有一个服务端程序,需要向一个客户端程序发送经过签名的GOOSE报文,首先,需要通过证书系统为服务端申请签发一个数字证书,以及相对应的RSA私钥,通过文件的形式配置给服务器程序使用。同时,需要将证书(不含私钥)与服务端的网卡MAC地址配置给客户端使用。接着,服务器端和客户端对该报文的处理流程分别如下:
[0047]1.服务器端:首先,服务端按照应用规则,生成GOOSE报文之后,在准备发送给客户端之前,需要对该报文的内容进行签名。
[0048]1.1服务端将GOOSE报文中的TPID、TC1、EtherType、APPID四个字段的值取出组成一个8字节的字节数组,计算其CRC校验值,并填入GOOSE报文中原来的Reserved〗字段中,具体过程如下:
[0049]对应用生成的GOOSE报文G进行解析,得到各个字段的值。签名与验证操作需要的字段有TPID、TC1、EtherType、APPID、APDU等,以及两个保留字段的位置。
[0050]取得待计算CRC校验值的四个字段TPID、TC1、EtherType、APPID的值,并将其拼接成一个字符数组,
[0051]C,=concatenate (G.TPID, G.TCI, G.EtherType, G.APPID)。
[0052]计算该字节数组的CRC校验值,
[0053]C=CRC (C,)。
[0054]将计算出的CRC值填入GOOSE报文的R eserved2字段,
[0055]G.Retain2=C。
[0056]读取并解析服务端的私钥P。
[0057]1.2服务端将GOOSE报文中的APDU、Reserved、Private三个字段的值取出组成一个字节数组,计算其RSA-SHA256签名值AuthenticationValue,并编码添加到GOOSE报文的末尾,具体过程如下:
[0058]取得待计算RSA签名的三个字段APDU、Reserved、Private的值,并将其拼接成一个字符数组,
[0059]S,=concatenate (G.APDU, G.Reserved, G.Private)。
[0060]使用Hash算法计算该字节数组的摘要值S”,
[0061]S”=SHA256(S’)。
[0062]使用服务端私钥对摘要值进行签名,获得签名值S,
[0063]S=RSAPrivateEncrypt (S,,, P)。
[0064]将RSA签名添加到GOOSE报文的末尾,
[0065]G,=concatenate (G, S)。
[0066]计算新的GOOSE报文扩展部分的长度,
[0067]L=Ien (G,)-1en (G)。
[0068]1.3 服务端计算报文扩展的 Reserved、Private、AuthenticationValue 三个字段的长度,并填入GOOSE报文的Reservedl字段第一个字节中,具体过程如下:
[0069]将扩展部分的长度填入Reservedl字段的第一个字节,
[0070]G,.Retainl [O] =L。
[0071]1.4服务端将新的GOOSE报文通过网络发送给客户端。[0072]2.客户端:客户端接收到服务端发送过来的GOOSE报文之后,需要对其签名的合法性进行验证。
[0073]2.1客户端首先根据接收报文的源MAC地址,查找对应的服务端证书:根据接收到的网络报文的源MAC地址,查找对应的服务端证书X。对应用生成的GOOSE报文G进行解析,得到各个字段的值。
[0074]2.2客户端检查GOOSE报文中Reservedl字段的第一个字节,如果是0,说明该GOOSE报文没有经过签名操作,跳过后续的验证操作,具体过程如下:
[0075]判定Reservedl字段的第一个字节是否大于O,
[0076]G.Retainl [O] >0。
[0077]如果不大于O则该GOOSE报文未经过签名,验证结束。
[0078]2.3客户端将GOOSE报文中的TPID、TC1、EtherType、APPID四个字段的值取出组成一个8字节的字节数组,计算其CRC校验值,然后与GOOSE报文中的Reserved2字段中的值进行比较,相等说明CRC校验通过
[0079]取得待计算CRC校验值的四个字段TPID、TC1、EtherType、APPID的值,并将其拼接成一个字符数组,
[0080]C,=concatenate (G.TPID, G.TCI, G.EtherType, G.APPID)。
[0081]计算该字节数组的CRC校验值,
[0082]C=CRC (C,)。
[0083]将计算出的CRC值与GOOSE报文中的Reserved2字段值进行比较,
[0084]C==G.Retain2
[0085]若不相等则验证失败,记录日志,丢弃该报文。
[0086]2.4客户端将GOOSE报文中的APDU、Reserved、Private三个字段的值取出组成一个字节数组,同时将AuthenticationValue字段中的值(即服务端计算的签名值)取出,根据之前查找到的服务端证书进行RSA-SHA256验签操作,通过则整个报文的签名验证成功,具体过程如下:
[0087]取得待计算RSA签名的三个字段APDU、Reserved、Private的值,并将其拼接成一个字符数组,
[0088]S,=concatenate (G.APDU, G.Reserved, G.Private)。
[0089]使用Hash算法计算该字节数组的摘要值S”,
[0090]S”=SHA256(S’)。
[0091]使用服务端证书对报文中的签名值进行解密,得到服务端计算的摘要值S,
[0092]S=RSAPublicDecrypt (S,,, X)。
[0093]比较两个摘要值S”与S,
[0094]S,,==S
[0095]若不相等则验证失败,记录日志,丢弃该报文。若相等,则验证成功。
[0096]2.5客户端继续进行后续的业务层数据处理。
[0097]本发明方法基于IEC62351标准,对GOOSE报文进行CRC计算、报文摘要计算以及对摘要进行签名的安全处理,目的在于解决IEC61850标准的变电站自动化系统在基于IEC62351标准的GOOSE报文安全通信加固问题。通过对基于IEC61850标准的GOOSE报文保留字段进行利用,保存计算GOOSE报文的头部CRC值,同时扩展GOOSE报文结构,对GOOSE报文体进行SHA-256摘要计算,对摘要进行数字签名,并保存于扩展部分,从而保护GOOSE报文的完整性和确定GOOSE报文的发送者,以确保GOOSE事件的真实性。
[0098]由于基于IEC61850标准的GOOSE报文仅涉及数据的交互,变电内GOOSE报文交互没有任何安全的防护,一旦变电站的防护出现意外,变电站内部的GOOSE报文将会被随意发送。而基于IEC62351标准提出以来,智能电子设备在GOOSE报文交互时,需要对报文的源头和数据本身进行验证,从而能够确保在一定时间内,即使变电站外部防护存在安全问题,验证过程也能够保证GOOSE交互过程的安全,以延缓攻击者的速度,为变电站安全争取宝贵时间,从而保护智能变电站内部的安全。
[0099]本发明的实施方式不限于此,在本发明上述基本技术思想前提下,按照本领域的普通技术知识和惯用手段对本
【发明内容】
所做出其它多种形式的修改、替换或变更,均落在本发明权利保护范围之内。
【权利要求】
1.一种基于IEC62351的GOOSE报文的安全交互方法,其特征在于:服务端准备一套带有私钥的数字证书,同时将证书分发给GOOSE报文的客户端,由客户端将证书与服务端的网卡MAC地址进行关联,接着对报文的签名和验证过程如下: 1)签名流程 .1.0对应用生成的GOOSE报文G进行解析,得到各个字段的值;签名与验证操作需要的字段包括GOOSE报文中的标志协议标识域TPID、标志控制信息域TC1、以太网报文类型域EtherType、应用标识域APPID、应用协议数据单元APDU,以及为未来标准化应用保留的保留字段1、保留字段2; .1.2)取得待计算CRC校验值的四个字段TPID、TC1、EtherType、APPID的值,并将其拼接成一个字符数组; . 1.3)计算该字节数组的CRC校验值;所述计算CRC校验值的方法是采用循环冗余校验; . 1.4)将计算出的CRC值填入GOOSE报文的Reserved2字段; .1.5)读取并解析服务端的私钥P ; .1.6)取得待计算RSA签名的三个字段APDU、Reserved、Private的值,并将其拼接成一个字符数组;其中,Reserved字段作为保留位用于后续扩展,Private字段作为GOOSE报文服务端和客户端传递非标准内容,该非标准内容的格式,由服务端和客户端提前自行约定; . 1.7)使用散列算法MD5Hash计算该字节数组的摘要值S” ; . 1.8)使用服务端私钥对摘要值进行签名,获得签名值S ; . 1.9)将RSA签名添加到GOOSE报文的末尾; . 1.10)计算新的GOOSE报文扩展部分的长度;. 1.11)将扩展部分的长度填入Reservedl字段的第一个字节中; 2)验证流程 . 2.1)根据接收到的网络报文的源MAC地址,查找对应的服务端证书X ; . 2.2)对应用生成的GOOSE报文G进行解析,得到各个字段的值; . 2.3)判定Reservedl字段的第一个字节是否大于O ;如果不大于O则该GOOSE报文未经过签名,验证结束; . 2.4)取得待计算CRC校验值的四个字段TPID、TC1、EtherType、APPID的值,并将其拼接成一个字符数组; .2.5)计算该字节数组的CRC校验值; . 2.6)将计算出的CRC校验值与GOOSE报文中的Reserved2字段值进行比较;若不相等则验证失败,记录日志,丢弃该报文; . 2.7)取得待计算RSA签名的三个字段APDU、ReserVed、PriVate的值,并将其拼接成一个字符数组; . 2.8)使用散列算法MD5Hash计算该字节数组的摘要值S” ; . 2.9)使用服务端证书对报文中的签名值进行解密,得到服务端计算的摘要值S ; . 2.10)比较两个摘要值S”与S ;若不相等则验证失败,记录日志,丢弃该报文;若相等,则验证成功。
【文档编号】H04L29/06GK103873461SQ201410051666
【公开日】2014年6月18日 申请日期:2014年2月14日 优先权日:2014年2月14日
【发明者】陶文伟, 李金 , 周鹏, 张喜铭, 樊腾飞, 梁寿愚 申请人:中国南方电网有限责任公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1