本发明涉及变电站内基于iec61850模型的数据发送、接收方法及装置,属于电力自动化领域。
背景技术:
随着信息和互联网技术在电力系统中的广泛应用,网络病毒和网络攻击给电力系统安全带来了前所未有的风险挑战,电网安全成为新的关注焦点,而iec61850作为电力系统中常用的变电站内通信规约,在服务器端有着复杂的模型参引,在服务器和客户端之间进行模型参引信息和报文数据的传输方式,仍然使用的是明文传输方式,在服务器和客户端各自保留有iec61850模型的情况下,虽然采用明文方式进行模型参引信息和报文数据的传输,第三方即使捕获了模型参引信息或报文数据,也由于不知道具体的模型以及模型参引信息复杂而无法知道传输数据的具体含义,因此,现有技术通常采用明文传输方式。但是,在这种情况下,通过常用的抓包工具,例如wireshark、mmsethereal等就可以轻易捕获和解析这些模型参引信息和报文数据,容易引发数据泄露,产生调度指令被篡改的安全隐忧,严重威胁智能变电站内的电力安全运行。
技术实现要素:
本发明的目的在于提供一种变电站内基于iec61850模型的数据发送方法及装置,用于解决现有技术采用明文传输方式发送模型参引信息和数据导致通信不安全的问题。同时,还提供一种变电站内基于iec61850模型的数据接收方法及装置,用于解决现有技术采用明文传输方式接收模型参引信息和数据导致通信不安全的问题。
本发明的一种变电站内基于iec61850模型的数据发送方法采用如下技术方案:
发起数据发送请求,生成服务请求码;
将待发送模型参引信息进行加密,转换成与待发送模型参引信息对应的索引码;
根据待发送模型参引信息和服务请求码生成动态密钥,通过动态密钥对待发送的数据进行加密处理,生成加密数据;
将所述服务请求码、索引码和加密数据发送至数据接收端。
本发明的一种变电站内基于iec61850模型的数据发送装置采用如下技术方案:
包括存储器和处理器,以及存储在所述存储器上并在所述处理器上运行的计算机程序,所述处理器与所述存储器相耦合,所述处理器执行所述计算机程序时实现上述数据发送方法。
上述两个技术方案的有益效果是:
本发明的数据发送方法与装置,在需要发送数据时采用密文传输方式,即将待发送模型参引信息进行加密,转换成对应的索引码;根据待发送模型参引信息和服务请求码生成动态密钥,对数据进行加密,最后将服务请求码、索引码和加密数据发送至数据接收端;在数据发送过程中,通过隐藏待发送模型参引信息和数据信息,使用动态密钥进行数据加密处理,使得通信双方外的第三方无法破解得到正确的动态密钥,保证数据的安全性。
为了实现待发送模型参引信息的加密,具体的,所述将待发送模型参引信息进行加密包括:
采用sm3杂凑值算法对所述待发送模型参引信息进行加密,将待发送模型参引信息中变长有序的字符串转换成定长无序的索引码,形成待发送模型参引信息与索引码的映射关系。
为了保证通信双方的安全连接,在发起数据发送请求之前,还包括:在通信双方之间进行通信连接和双向身份验证。
进一步,所述服务请求码由发送数据的序号确定,以保证发送数据序号的连续性。
基于上述目的,一种变电站内基于iec61850模型的数据接收方法的技术方案如下:
接收服务请求码、索引码和加密数据;
根据模型参引信息与索引码的映射关系,结合接收的索引码,确定对应的模型参引信息;
根据接收的服务请求码及对应的模型参引信息生成动态密钥,通过动态密钥对所述加密数据进行解密处理,生成解密数据。
本发明的一种变电站内基于iec61850模型的数据接收装置的技术方案如下:
包括存储器和处理器,以及存储在所述存储器上并在所述处理器上运行的计算机程序,所述处理器与所述存储器相耦合,所述处理器执行所述计算机程序时实现上述数据接收方法。
上述两个技术方案的有益效果是:
本发明的数据接收方法与装置,在接收数据时采用密文传输方式,即利用模型参引信息与索引码的映射关系,通过匹配接收的索引码,确定出对应的模型参引信息;根据确定出的模型参引信息和服务请求码生成动态密钥,对数据进行解密。在数据接收过程中,通过隐藏模型参引信息和数据信息,使用动态密钥进行数据解密处理,使得通信双方外的第三方无法破解得到正确的动态密钥,保证数据的安全性。
为了确定接收的模型参引信息,所述模型参引信息与索引码的映射关系通过以下步骤得到:
采用sm3杂凑值算法,将模型参引信息中变长有序的字符串转换成定长无序的索引码,形成模型参引信息与索引码的映射关系。
为了保证通信双方的安全连接,在接收服务请求码、索引码和加密数据之前,还包括:在通信双方之间进行通信连接和双向身份验证。
优选的,所述双向身份验证是采用sm2数字证书链进行双向验签实现的,以提高身份验证的安全性。
附图说明
图1是本发明的方法实施例中进行双向身份验证的流程图;
图2是本发明的装置实施例中计算机程序执行的数据发送流程图;
图3是本发明的装置实施例中计算机程序执行的数据接收流程图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明,即所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。
因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
需要说明的是,术语“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以下结合实施例对本发明的特征和性能作进一步的详细描述。
方法实施例:
本实施例以客户端和服务器之间进行数据传输为例,来阐述本发明提出的变电站内基于iec61850模型的数据发送方法和接收方法。客户端作为数据发送端,服务器作为数据接收端,具体实现数据传输的完整步骤如下:
s0、在通信双方第一次建立通信之前,交换通信双方的sm2数字证书链,即工程实施过程开始,可以通过用户认可的加密u盘、双因子登录的ukey、在线文件服务等方式,进行双方sm2数字证书链交换,服务器端向客户端传输模型文件icd(即iec61850模型文件)。
s1、在通信双方之间进行通信连接和双向身份验证。
具体的,客户端向服务器发起链路请求,经过三次握手成功建立tcp连接(即通信连接,形成tcp链路),通过sm2数字证书链进行双向身份验证,保证交互对象的正确性。
验证过程为:客户端通过对随机数、时间等信息进行sm2数字签名发送给服务器,服务器收到签名信息的报文后,验证客户端的数字证书链是否完整正确,对比客户端时间跟服务器时间是否在合理的时间差内,然后通过数字证书对签名报文进行验签。验签后,在服务器端将客户端的随机数、服务器的随机数、服务器时间等进行sm2数字签名,形成签名报文并发送给客户端。客户端收到服务器的签名报文后,进行时间值、发送随机数比对,对服务器的数字证书链验证等操作后进行验签,整个过程如图1所示。
s2、身份验证成功后,通过客户端与服务器间数据交互的抽象服务接口进行数据的交互,抽象服务接口用于处理服务请求码、索引号以及加密数据,数据交互前提是服务器与客户端之间共享服务器端的模型文件(其含有模型参引信息)。
模型参引信息是一个层次嵌套的结构,最顶层是scl,scl下面包括communication、ied、datatypetemplates。其中datatypetemplates包含enumtype,datype,dotype,lntype,简单说lntype包含多个dotype,dotype包含多个datype,datype包含多个enumtype、或者其他简单类型比如int,folat。ied包含多个ld,每个ld包含多个ln,和一个ln0。ln是lntype的一个实例化,ln下包含多个doi,ln0包含reportcontrol、dataset。当数据ld下面数据变化时,报告控制块(reportcontrol)以数据集(dataset)为单位上送报告。doi是dotype的实例化,包含sdi跟dai。sdi是sdo的实例化。dai是简单类型或者枚举类型(enumtype)的实例化。模型表示了服务器端有哪些数据。放在数据集里的数据,发生变化时,以报告方式通知给客户端。除此之外,客户端还可以通过读服务、写服务对ied下各个节点的对象,以及对象值进行读写。数据中有一类电力应用中特别功能的数据,被称为定值。非常重要,参与电力二次保护的逻辑运算。
作为数据发送端,客户端的数据发送步骤为:
1)客户端发起数据发送请求,根据发送数据的序号生成对应的服务请求码。一种实施方式为,该服务请求码即为发送数据的序号;作为其他实施方式,由发送数据的序号确定一个服务请求码,例如发送数据的序号为01,那么,服务请求码可设为1001。
2)将待发送模型参引信息进行加密,转换成与待发送模型参引信息对应的索引码;具体的,采用sm3杂凑值算法对待发送模型参引信息进行加密,将待发送模型参引信息中变长有序的字符串转换成定长无序的索引码(数字信息式的索引码),形成待发送模型参引信息与索引码的映射关系,存在索引码映射表中。
模型参引由访问对象的全路径组成。可以包括ied各级节点的inst或者name属性的组合。一般通过“.”或者“$”分割。p_l1101a_0s1/bininggio12$st$health$stval。其中“p_l1101a_0”是ied(智能电子设备)节点的name属性,表示110kv第一条线路a套保护,“s1”是ld(逻辑设备)表示用于mms通信,“bininggio12”是ln(逻辑节点)前缀,ln类型,ln后缀组合,表示第12个通用io(开入开出),“st”是fc类型,表示是一个状态量,“health”是doi,用于标识健康状态,“stval”是一种dai,表示状态值。
sm3算法是国密算法中的一个杂凑值算法,与des,或者md5类似,具有不可逆性,比如将p_l1101a_0s1/bininggio12$st$health$stval进行sm3算法进行变换后得到“苛餢畈戱犟+膣愇=臣&_≡鷱”,无法进行逆向还原为原来值。服务器与客户端有相同的服务器模型,可以通过对模型中所有的模型参引进行sm3变换,两边得到相同的映射表。当接收到索引码后,可以通过查找映射表的方式找到模型参引信息。
3)根据待发送模型参引信息和服务请求码生成动态密钥,采用sm4加密算法,实现动态密钥对待发送的数据进行加密处理,生成加密数据;将生成的服务请求码、索引码和加密数据通过抽象服务接口发送至服务器。
作为数据接收端,服务器的数据接收步骤为:
1)服务器接收客户端发来的服务请求码、索引码和加密数据。
2)根据模型参引信息与索引码的映射关系,在索引码映射表中,通过匹配索引码,查找对应的的模型参引信息。所述模型参引信息与索引码的映射关系通过以下步骤得到:
采用sm3杂凑值算法,将模型参引信息中变长有序的字符串转换成定长无序的索引码,形成模型参引信息与索引码的映射关系。
3)根据接收的服务请求码及对应的模型参引信息生成动态密钥,采用sm4解密算法和动态密钥,对加密数据进行解密处理,生成解密数据。
本实施例中,sm3是没有密码,输入一个长串之后,会得到一个32字节的索引码,而无法通过这个32位的索引码,解出那个长串,从而模型参引信息不被泄漏。
本实施例中,密钥包含两个部分,第一个是模型参引,经过sm3保护了,解决了不同对象间密码唯一性问题,请求号也就是链路顺序,保证了相同对象间密码唯一性。
本实施例中,在发起数据发送请求、设置定值(可以认为是一个电力应用中有特别用途的数据,这个数据的改变可能会影响到断路器的开合,线路的断电等)、写服务、写文件等关键性操作前,或延时一定的时间间隔后,都重新进行双向身份验证。
本实施例中,客户端的数据发送步骤1)和步骤2)的执行并无时间先后顺序,既可以串行执行,也可以并行执行。
本发明的数据传输方法(数据发送方法和接收方法),在tcp链路建立和后期维护过程中,采用sm2数字证书链进行双向身份验证,保证交互对象的正确性。在发送端发送数据过程中,通过采用sm3杂凑值算法把字符串的模型参引信息转换成数字信息索引码,利用模型参引信息和服务请求码生成动态密钥,采用sm4加密算法实现动态密钥对发送数据的加密处理,进而利用客户端与服务器间之间的抽象服务接口完成数据发送。在接收端解析数据过程中,通过从接收报文中提取请求码、索引号以及加密数据,对接收端的模型文件参引进行sm3杂凑值变换,形成与模型参引对应的索引号映射表,通过匹配索引号查找对应模型参引,将模型参引信息和服务请求码作为动态密钥,采用sm4解密算法完成动态密钥对发送数据的解密处理。传输过程中通过隐藏模型参引信息和数据信息,使用动态密钥进行数据加密处理,使得通信双方外的第三方无法破解得到正确的动态密钥,保证数据的安全性。
装置实施例:
本实施例提出一种变电站内基于iec61850模型的数据发送装置和数据接收装置,其中,数据发送装置包括第一存储器和第一处理器,以及存储在第一存储器上并在第一处理器上运行的计算机程序,第一处理器与第一存储器相耦合,第一处理器执行计算机程序时实现上述方法实施例中的数据发送方法,计算机程序执行的数据发送流程如图2所示。
数据接收装置包括第二存储器和第二处理器,以及存储在第二存储器上并在第二处理器上运行的计算机程序,第二处理器与第二存储器相耦合,第二处理器执行计算机程序时实现上述方法实施例中的数据接收方法,计算机程序执行的数据接收流程如图3所示。
上述实施例中所指的数据发送装置和数据接收装置,实际上是基于本发明方法流程的一种计算机解决方案,即一种软件构架,可以应用到计算机中,上述装置即为与方法流程相对应的处理进程,由于对上述数据发送和接收方法的介绍已经足够清楚完整,故本实施例不再详细描述。