电力系统的信息安全在通信网络快速发展下已是一个不可回避的问题,关于建立网络安全防护体系的呼声越来越高。通信加密作为其中的重要技术,已开始应用在电力系统的很多领域,为此我们在分析电力系统实时数据的加密需求后,提出了实时数据加密密钥分发的一时一密方案和对实时数据加密的应用方案。
一、电力系统实时数据通信安全和加密需求
1、电力系统实时数据通信安全问题
当前,变电站的实时数据大多采用Modem通过载波、微波或E1远动信道传输到调度端;极少数采用了UDP方式,且应用其他技术实现了实时数据网和外网的完全隔离,实时数据的安全问题并不突出。而对以光纤十同步数字系列(SDH)+网际协议(IP)技术为主的第4代能量管理系统(EMS),将主要采用TCP/IP协议。由此带来的实时数据的网络安全问题也浮出水面。
a、网络隔离方式虽然能很好地保证内网的安全性,但是与系统的开放性相矛盾,加剧了“多岛自动化”。网络的物理隔离不能满足未来通信的数据交换的要求。
b、由于电力系统数据通信网仍然是以计算机网络为基础,基于TCP/IP的网络本身并没有考虑安全问题。即使与Internet隔离,也并不能防范来自内部的攻击,数据通信网络的安全威胁仍然存在。
c、随着变电站远程维护技术的发展,将会有能够通过Internet获得设备的实时运行信息的需求。
因而电力系统实时数据网络也不可避免地要接人公共Internet,而数据通信网的安全防护普遍比较弱。
实时数据的加密随着电力系统自动化和通信网络的发展,已经成为一个重要而迫切的课题。
2、电力系统实时数据的加密需求
电力系统数据网络上传输的数据非常混杂。可以考虑加密的信息包括:
a、下行数据。包括遥控、遥调和保护装置及其他自动装置的整定值信息等。这类数据与设备状态相关,直接影响到电网的安全运行,安全要求和实时要求都很高。
b、上传数据。包括遥信、重要遥测、事件顺序记录(SOE)信息等。这类数据是电网稳定运行的判据,也是调度决策的依据,实时性要求高。
c、经济数据。包括电力市场运行报价、交易数据、电能计费信息等。这类数据组成电力系统物资信息流,影响资金和电能在电力市场流向的平衡,对保密性要求高。
d、管理数据。如负荷管理、停电计划等管理信息系统(MIS)管理数据。这类数据对保密性有一定的要求。
根据这些加密信息的价值、加密要求和防御成功代价的大小,可以选择不同的加密策略。
EMS中的实时控制信息其数据流量稳定且时效性快。但是要求实时性高,可靠性高,其保密性和完整性的要求也高,因此对实时数据加密必须慎之又慎。
二、电力系统实时数据加密的过程和方法
1、加密的算法
密码体制从原理上可以分为2类:对称密码体制和非对称密码体制。
在对称加密(或称单密钥加密)中,只有1个密钥用来加密和解密信息。目前最常用的加密算法是DES,3DES和IDEA,其加密系统的安全性主要取决于密钥的安全性。
非对称加密(公钥体制)在加密的过程中使用一对密钥,其中用来向外公布的称为公钥,另一半需要安全保护的是私钥。公钥可以任意传播,私钥则必须在用户手中小心保护。想从公钥推导出私钥,在计算上是不可行的。拥有公钥的人可以加密信息却不能将其解密,只有拥有对应私钥的人才能解密信息。RSA是最主要的非对称密码体制。
一般地,对称加密由于其加密的开销很小,几乎不会影响生产控制类数据的实时性。非对称加密由于需要进行大数的模运算,非常耗时,但是其公用体制可以有效地避免密饲在传输过程中的问题,可以用来进行数据量小且安全性要求高的数据加密,比如握手、认证和加密传输对称密码密钥等。
2、网络环境下的电力系统实时数据加密方式
远程终端(RTU)和主站前置机之间的数据加密传输,应该采用端对端的加密方式,数据在信道和交换节点上均以密文的形式存在。
实时数据加密对网络结构和硬件有下列要求:
a、RTU的CPU单元具有一定的运算能力,以保证加密、解密的速度。
b、网络通信的信道满足实时性和可靠性要求,网络延迟小,误码率低。
c、主站的前置机能够同时处理多个进程的加密/解密,主站端设有管理密钥的服务器。
在电力系统实时数据通信加密的过程中,可以采用以下2种方式之一:
a、固定密钥方式。每个终端作为一个用户拥有一个密钥分配中心(KDC-key distributioncenter)生成好的密钥,主站拥有所有终端的密钥列表。在建立安全信道(假定没有认证通信双方身份之前建立的通信通道都是不安全的)后,终端和主站端按协商好的密钥进行通信。密钥的初始化、泄漏后更新、销毁是由主站端以自动或者手动设置的方式设定,需通过另一个安全的通道实现。
b、一时一密方式。每个终端没有固定的密钥,服务器也不保存密钥。服务器根据系统安全情况,设置时间参数,定时或不定时地、自动或手动地向KDC请求密钥。由KDC临时生成的一个随机密钥,通过安全信道送到终端,双方通过产生的随机密钥进行加密通信。
采用固定密钥的方式,不需要临时生成大量的密钥,密钥不会在信道中传输,加密时间要短一些;采用一时一密的方式,终端和主站端的密钥都不需要保存,只需在KDC加入一个密钥生成器。由于一个密钥的生存期很短,所以一时一密的安全性更好一些。
3、密钥的管理
(1)密钥分配的基本模式
在加密传输的过程中,需要大量的密钥,用以分配给主机、节点和用户。密钥的安全管理是加密通信的一个重要环节。为了降低系统的复杂性,可以采用中心化的密钥管理方式。KDC负责每次加密通信的密钥的生成、分发、更新和销毁过程。
KDC可以是在主站端,与服务器同在一个逻辑(或物理)服务器(集中式密钥分配),如图1(a)所示;也可以是在与主站、RTU完全对等的一个服务器上(对等式密钥分配),如图1(b)所示。如果KDC只为1个主站端分发密钥,应该采用集中式;如果KDC为多个同级主站分发密钥,应该采用对等式。
(2)密钥的分发过程
加密通信的首要问题是建立安全信道,交换一个只有双方知道的用于加密数据的共享密钥。
首先是通过认证权威机构签发的证书,完成对通信双方的身份认证。利用双方证书进行端点认证。主站和每个终端都拥有一个证书,证书包括用户的基本信息和用户的公钥。证书由证书管理机构——认证中心(CA-certification authorization)签发,拥有证书的实体才拥有密钥对的私钥。电力系统若没有CA,可以采用其他商业CA,也可以使用自签名的证书。
如果要认证通信的另一方,可以将一个随机消息发送给对方,对方将消息做消息摘要,用自己的私钥加密后返回。发送方用公钥(通过对方证书获得)解密后,与自己发出消息的摘要进行对比,就可以认证对方的身份。
在相互认证了身份后,就完成了端点认证。下一步是如何在不安全的通道中将通信加密密钥送到RTU(固定密钥方式没有这个问题),可以有2种方式:
a、利用终端证书中的公钥加密由KDC生成的一次密钥,然后将密钥密文通过不安全通道送到终端,终端通过自己的私钥解密,这样密钥就安全地分发到终端(为了保证完整性还可以加入密钥的摘要)。
b、通过DH (Diffie-Hellman)算法进行密钥磋商。通信双方各自生成随机数,然后通过乘幂算法交换结果,获得共享的密钥。
本文推荐采用一时一密方式对电力系统实时数据加密,是鉴于以下特点:采用固定密钥方式,在增加远方终端设备或者网络结构改变时,密钥更新和维护不方便;每个终端分配一个密钥永久保存,服务器用于与其他RTU通信的所有密钥列表,密钥必须进行存储管理;泄漏的密钥难以吊销、销毁。采用一时一密方式,生成密钥时间可以通过预先生成解决;传输安全由密钥分发控制完成;密钥不用采取保护、存储和备份措施;KDC也容易实现对密钥泄密、过期和销毁的管理。
三、一时一密的加密方案
1、随机密钥的生成
一时一密的密钥生成方式需要大量的随机数。真正的随机数难以获取,一般由技术手段生成无偏的随机性数列。在电力系统应用中,一般可以采用3种手段得到:
a、通过随机现象得到。如记录每次击键、鼠标轨迹、当前时刻、CPU负荷和网络延迟等产生的随机数,然后对其进行异或、杂凑等去偏技术,通过一系列的随机性检验后,就可以得到较满意的随机数。
b、通过随机数算法得到。如线性同余算法、Meyer的循环加密算法、ANSI X9. 17算法等。
c、将上一次的随机密钥作为随机种子,生成新的随机密钥。
2、密钥生成和分发过程
下面以集中式的KDC密钥分发方式为例,说明适用于TCP和UDP的随机加密过程。
通信双方在认证对方身份后,由主站端请求KDC生成一个随机密钥用于加密通信。密钥管理程序可以预先生成一个随机密钥队列,队列的长度咒根据实际情况确定。接受到申请后将队列第1个随机密钥发到服务器,然后生成一个随机密钥加到队尾。如图2所示,这样可以减少生成密钥的等待时间。
电力系统基于TCP/IP协议的绝大多数实时数据的传输是采用UDP。与面向连接的TCP相比,不提供可靠的信道,可靠性由校验和来保证。基于TCP的加密传输,可以在每次连接时请求生成密钥,也可以在传输过程中申请,做到一时一密。基于UDP的加密传输可以采用定时或者不定时、自动或手动的密钥请求方式。在电网正常运行时,可以采用定时密钥请求,请求时间间隔可以设置为30 min~7 d,甚至更长时间。在电网事故运行阶段,为了保证故障实时数据传输,应避免密钥请求,以免造成延迟。
随机密钥不在通信双方永久存储,应存放在内存中,在得到销毁密钥命令后,即删除密钥字符串,释放内存。
3、加密算法和密钥长度的选择
非对称算法一般用于认证,如果使用RSA生成证书公钥信息时,512 bit在短期内仍是安全的,但是由于WWW协作方式对512 bit的严重威胁,很可能不久就要采用768 bit和1 024 bit长度的密钥来保证在电力系统中认证的需要。
对称算法应用于大量数据的加密,速度要比相同密钥长度的非对称算法快1个数量级左右,因此实时数据的加密必须采用对称加密算法。常用的加密算法有DES,IDEA和RC4。本文推荐使用标准长度的密钥,算法程序简单:DES有效密钥长度56 bit,IDEA密钥长度128 bit。最快速的算法是RC4,比DES算法快10倍以上,密钥长度40 bit。
常用的摘要算法有MD4,MD5和SHA等,实时数据加密过程中可采用MD4或MD5,两者的消息压缩输出为128 bit。MD5比MD4更复杂,且运算速度较慢,但安全性高,输入消息长度不限。
4、利用SSL协议实现实时数据加密的TCP传输
(1)SSL协议
SSL协议基于SOCKET机制,在网络协议中处于应用层和传输层之间,如图3所示,利用TCP提供的可靠连接实现端对端的通信。
(2)利用SSL协议实现加密传输
电力系统中某些实时数据采用了TCP传输,此时可以采用SSL协议实现加密,其算法本身已经采用了一次(连接)一密,可以通过SSL协议的OpenSSL算法包实现。
表1是在Windows平台下,用OpenSSL-O.9.7开发包编译的服务器和客户端程序的流程。通过连接服务器的IP地址和端口,客户机和服务器完成大量数据加密通信,加、解密过程在数据交换中根据参数配置完成。该服务器端和客户端程序在局域网环境下实现。
SSL支持各种加密套件,算法强度从非常弱的RC40到强度非常高的3DES。根据数据价值和实时性的要求选择适当的加密套件。如果一次连接时间很长,可以考虑使用一时一密的加密通信方式,用随机密钥生成器生成的密钥代替一次连接生成的密钥,需要在服务器端加入密钥生成器生成密钥,传送密钥。在客户端加入接受新密钥,销毁旧密钥。
5、实时数据加密的UDP传输
(1)实时数据传输的认证和密钥分发过程
电力系统中大量的实时数据采用了UDP传输。在通信开始前或任何一次通信中断后,都需要验证双方的身份。在此后的通信中,如果通信没有中断,则不需要重复认证。
SSL协议是基于连接的,不能在UDP或者直接在IP上运行。UDP只能提供不可靠的交付,必须加入返回确认和超时重发措施,才能解决认证和加密密钥的分发可靠性问题。由于认证过程在终端启动接人开始就进行,如果由于不可靠传输导致认证失败,可以重复多次,直到认证通过为止。在认证阶段,通信双方的每一个报文必须加上附加的随机标识,对方在接受后立刻发确认报文以确认该标识的报文收到。如果发送方超时,则重发该报文。在密钥分发阶段,密钥用私钥加密,且必须加上摘要,以保证传输的密钥的保密性(防截获)和完整性(防篡改)。其传输过程如图4所示。
电力系统实时数据常用的UDP通信,在主站端和终端(或RTU)的通信控制程序中加入加密、解密模块,其一时一密在通信双方源程序中实现。这种加密过程位于应用层和UDP层之间,对不同电力系统应用层协议具有通用性。
(2)实时数据传输的密钥启动机制
目前电力系统中运行的RTU,一般是启动接人数据网络就进行实时数据的传输。采用实时数据加密机制后,数据的传输必须在身份认证和第1次密钥交换成功之后才能开始。在数据传输过程中,一时一密机制将定时或不定时地交换密钥,此时密钥的启动和同步非常重要。
密钥由主站端发送给RTU后,RTU接受密钥并检查其完整性,然后RTU向主站发送密钥启动标志,销毁原有密钥,并对随后的数据帧采用新的密钥加密。密钥启动标志字的格式类似图5。为了防
止UDP报文的丢失,可以连发3遍。主站端在收到密钥启动标志字后,用新的密钥加、解密实时数据。值得注意的是,理论上这一过程并不能保证100%的成功。如果失败,就可能造成双方密钥的不一致,主站将连续出现抗干扰编码监测失败(类似于同步通信中的失步)的现象。此时,可以由主站发起新的密钥交换。
由于一时一密的密钥分发周期可以是几十分钟到几天,且一次密钥的传输和启动过程也非常短暂,对实时数据的传输实时性的影响很小,可以忽略。
四、加密问题的讨论
1、加密、解密失败的解决
对实时控制系统而言,简单实用最好。系统越复杂,可靠性就越差。电力系统工作者对加密的最大困惑在于加密埔孚密失败怎么办。加密、解密失败可能是以下几个方面的问题:
a、身份认证失败。由于网络传输的误码,使得认证过程中随机消息、加密的消息摘要出现错误。系统的误操作,造成证书丢失、修改或者吊销。
b、密钥分发失败。通信双方的密钥由于各种原因不一致,将导致一次通信失败。
c、密文传输失败。如果密文中有1 bit的数据错误,将有64 bit的数据成为无意义数据。
由此看出,电力系统通信数据加密要求网络通信能保证数据传输的服务质量(QoS)。如果出现加密、解密失败,一般应该发起新的身份认证和新的密钥交换。
2、加密对实时性的影响
影响网络环境下的实时性的几个主要因素是:数据打包拆包,身份认证、数据加密、解密。数据的网络连接时间,网络延迟。与不加密相比,影响实时性的因素主要是数据的加密/解密时间。
如果将一次连接分成2个阶段,即握手和数据传输阶段,对于电力系统的实时数据传输而言,一次握手的开销并不大,数据传输阶段的加密,解密速度对实时性影响最大。如果已经安装的RTU不能负担,可以根据网络环境和允许的情况选择快速的算法和低加密密钥的长度,降低加密强度。表2是在PC试验中,几种常用的对称加密算法对随机字符串的加密、解密速度的比较。加密算法是用C语言在Windows 2000 Pro'fession上实现的,根据对编程实现的100万次随机字符串加、解密时间的算术平均统计完成。
由表2数据可以看出,在服务器前置机端如果采用高档的PC或者工控机,DES和IDEA算法的加密速度超过2 Mbit/s~8 Mbit/s,RC4算法将超过70 Mbit/s。
对远方终端(如RTU),若采用16位单片机或者DSP、DES和IDEA,加密速度估计可以达到10kbit/7s,RC-L速度100kbit/7s。
可见,上述算法从速度上来说完全可以满足电力系统实时数据加密的需求,由于现场的机器不仅要进行加密,解密,同时还要进行基本功能的计算,所以加密,解密速度不能达到理想值。但是随着计算机技术的发展,加密确孥密耗时会越来越短,对数据传输的实时性的影响也会很小。
根据不同地区网络情况,对于实时性要求高、时效性短、传输容量大的数据,如四遥数据,可以采用DES和IDEA算法,也可选择RC-1。对于实时性不高、安全期长且容量不大的数据,如电力市场的报价,可选择DES和IDEA。也可以采用强加密的算法如3DES.密钥长度768bit~l024bit。
3、对实时数据加密的可行性
从系统信息安全的角度来看,实时数据的加密是必要的。在条件不具备的地方,首先要考虑实时控制的可靠性、稳定性和实时性。在自动化程度高、网络通信较好、对信息安全的要求较高的系统中,加密将是保证系统通信安全的一个重要手段,是电力系统信息安全防护体系的重要组成部分。
小知识之RTU
RTU是REMOTE TERMINAL UNIT 的简称,既远方数据终端,用于监视、控制与数据采集的应用。具有遥测、遥信、遥调、遥控功能。