刘刚,许艾,徐延明,李维
(1.北京四方继保自动化股份有限公司,北京100085;2. 北京四方继保工程技术有限公司,北京100085)
近两年,随着国家对电力关键基础设施安全重视程度越来越高,电网公司相继提出了自主可控新一代变电站二次系统安全防护措拖,确保变电站二次系统在原有安全防护基础上进一步安全加固与优化。现有或在建的智能变电站绝大多数基于IEC 61850标准建设,由于变电站内智能设备的广泛应用以及变电站内的信息大都通过TCP/IP协议进行网络传输,因此变站内通信系统将面临着极大的安全风险与隐患[1 - 3]。
国际电工委员会第57技术委员会制定了IEC 62351标准。IEC 62351标准是目前国内外变电站安全防护的重要参考标准,国内众多学者基于IEC 62351标准提出的安全机制进行了多种尝试并取得了较好的实践成果[4 - 7]。
现阶段我国的一些重要行业中的信息系统使用的密码体系大部分依赖国外,这给行业应用系统带来了极大的风险[8 - 11]。因此,大力推进国产密码算法在各行各业的应用,实现国产密码算法逐步取代国际算法已成为业界的重要共识。基于IEC 62351标准对变电站安全防护的文献不少,文献[12]提出基于公钥加密算法RSA的数字签名与认证方案;文献[13]提出了基于IEC 62351安全机制解决变电站内安全通信问题;文献[14]基于IEC 62351标准实现了变电站内站控层安全通信领域的互操作验证等。但上述文献主要研究基于公匙基础设施(public key infrastructure,PKI)安全体系内的国际算法与数字证书在变电站内的安全应用。
本文引入基于SM9[15]标识密码身份认证机制并结合标识密码体系,研究基于标识身份的数字签名技术在智能变电站的应用,以调度到变电站通信协议的身份认证及加密机制为基础,实现标识密码算法体系在变电站通信中的应用。
国内电力二次系统的安全防护主要依据发改委14号令与国家能源局36号文有关规定[16 - 17]实施,而电力监控系统安全防护的安全策略是“安全分区、网络专用、横向隔离、纵向认证”,侧重点是边界安全防护,通过加强边界防护来抵御病毒、黑客等发起的恶意破坏和攻击。由于前期重点考虑了边界防护并没有过多考虑通信系统的协议安全,而近年来随着信息技术的发展,针对通信协议的攻击也不断增加,因此本文提出的基于SM9标识密码算法是实现调度到变电站及变电站内通信协议安全防护的重要参考方案。
目前,调度主站与变电站远动机通信数据是通过调度与变电站两侧的纵向加密认证装置来保护,调度与变电站远动机通信协议大多采用IEC 104协议,其实从严格意义上讲IEC 104不是一种安全的通信协议,容易被伪造、篡改及重放攻击。调度到变电站架构如图1所示。
图1 调度到变电站架构图Fig.1 Architecture diagram from dispatching to substation
由图1可知,在调度主站侧的纵向加密认证装置前接入非法设备就可以伪造、篡改协议报文,而调度与变电站两端的纵向加密认证装置并不能识别协议的真伪,因此容易造成变电站事故;在变电站端的纵向加密认证装置后接入非法设备也存在同样的安全隐患;这就可能导致变电站系统由于不能鉴别发送方的身份从而发生恶劣的电网安全事故。
近年来,在调度到变电站安全通信方面有不少的研究,文献[18]研究了基于SM2密码体系的传输层安全性协议(transport layer security,TLS)在智能变电站远动通信中“长连接”与“短连接”相互配合的安全策略机制。采用TLS协议在传输层对数据进行了机密性保护,TLS协议本身比较复杂,维护也比较麻烦,且TLS协议大多都是基于OpenSSL开源库实现,而近几年OpenSSL库多次爆出漏洞,如2014年震惊世界的“心脏出血漏洞”就是OpenSSL的漏洞[19],提供底层安全的算法库出现安全漏洞,那么它支撑的安全防护系统的安全性也受到极大的安全威胁。
本文基于协议的安全防护策略采用安全协议的方式进行数据传输,使协议具备身份认证与报文传输的机密性。通过改造IEC 104协议的结构,扩展安全域,增加身份认证及数字信封功能,对协议本身做较小改动;因此,相较于TLS协议防护属于轻量级的安全防护,协议的第一阶段连接握手也没有TLS的复杂、耗时,体现了协议的便捷、轻量及安全性。
基于标识密码体系(identity-based cryptograph,IBC)是在传统的公钥基础设施(public key infrastructure,PKI)基础上发展而来,除了保有PKI的技术优点外,主要解决了具体安全应用中PKI需要大量交换数字证书的问题。IBC密码技术使用的是非对称密码体系,加密与解密、签名与验证使用2套不同的密钥,公钥就是身份标识,比如手机号、e-mail地址,使用比较方便[20 - 21]。
我国研发的SM9标识密码算法在2016年4月公开发布。SM9标识密码算法是基于椭圆曲线离散对数的问题,同时增加了对椭圆曲线对双线性的应用,其使用的双线性对需要满足双线性、非退化性、可计算性。SM9算法由数字签名算法、公钥加密算法、密钥交换协议和密钥封装4个算法组成。本文应用场景只用到了前2个算法,下面将介绍加解密与签名验证算法原理。
SM9加解密算法主要由4个算法组成,即生成系统参数算法GenPara;生成密钥算法GenKey;加密算法Crypt和解密算法Uncrypt组成。算法具体说明如下。
1)GenPara:通过安全参数sk生成系统参数sysParas和主密钥mKey。公用参数为sysParas,密钥生成中心KGC保存主密钥mKey。
2)GenKey:通过sysParas、mKey和ID∈{0,1}产生私钥priKeyID,ID作为公钥,priKeyID为私钥。
3)Crypt:通过sysParas和公钥ID对明文Plain进行运算,计算出密文Cipher即Cipher = Crypt(sysParas, Plain,ID)。
4)Uncrypt:通过sysParas和私钥priKeyID对密文Cipher进行解密,计算出明文Plain,即Plain=Decrypt(sysParas, Cipher, priKeyID)。
为了更好地描述SM9签名算法与验证算法,表1列出了算法涉及到的符号及含义。
表1 算法符号表Tab.1 Algorithm symbol table
SM9签名算法实现步骤如图2所示,用户A通过系统参数、签名公钥、明文消息和签名密钥进行7个步骤的运算,最终计算得到签名值。
图2 SM9 签名过程Fig.2 SM9 signing process
SM9签名验证算法步骤如图3所示,用户B通过系统参数、签名公钥、识别符hid、标识IDA、明文消息及签名值进行9个步骤的运算,并最终验证签名值的正确性。
图3 SM9 验证过程Fig.3 SM9 verification process
调度需建立密钥中心,密钥中心为调度主站与变电站分发身份私钥,公钥则可通过公共系统参数与身份ID计算出来,调度密钥中心如图4所示。
图4 调度密钥中心Fig.4 Dispatching key center
基于SM9标识密码的密钥中心根据调度主站与变电站远动机的身份标识ID为其生成各自的私钥并分发,调度与变电站远动机又可通过各自身份ID与公共参数计算出各自公钥,因此只要知道对方的身份ID就可以计算出对方的公钥,省去了数字证书管理与通信中身份证书的交换过程。
调度主站与变电站远动机通信前要进行TCP连接,通常需进行3次TCP握手后完成连接。TCP的3次握手并没有对通信双方的身份进行严格的鉴别,而基于IEC 104协议的主子站通信也没有身份认证机制,所以本文在调度与变电站远动机业务数据传输前增加安全认证及密钥协商安全流程,为后续的业务数据传输提供机密性、不可抵赖性保护。
调度到变电站远动机间的双向身份认证协议格式设计如下。
1)认证请求报文
调度与远动机建立TCP连接后,调度向远动机发起认证请求报文,请求报文格式如表2所示。
表2 请求报文格式Tab.2 Request message format
2)认证应答报文
远动机收到调度的认证请求报文后,验证通过则向调度发送应答报文,否则断开连接,认证应答报文格式如表3所示。
表3 认证应答报文格式Tab.3 Authentication response message format
3)认证确认报文
调度收到远动机的认证应答报文后,验证通过,则向远动机发送确认报文;否则断开连接,重新建立TCP连接并开始认证过程,认证确认报文格式如表4所示。
表4 认证确认报文格式Tab.4 Format of authentication confirmation message
4)密钥协商请求报文
调度与远动机完成双向身份认证后,调度生成随机数利用远动机公钥ID加密、调度私钥签名后发送给远动机,密钥协商请求报文如表5所示。
表5 密钥协商请求报文Tab.5 Key agreement request message
5)密钥协商应答报文
远动机收到密钥协商请求报文后,对随机数密文验证、解密通过后,将随机数作为双方的会话密钥,密钥协商应答报文格式,密钥协商应答报文如表6所示。
表6 密钥协商应答报文Tab.6 Key agreement response message
图5为调度与远动机双向身份认证与密钥协商流程设计。
图5 调度-远动机双向认证与密钥协商流程设计Fig.5 Process design of dispatching-remote machine mutual authentication and key agreement
通过对调度与变电站远动机安全流程设计,实现了调度到变电站双向身份认证、会话密钥协商的2个关键流程,正是这2个安全过程保证了后续协议报文传输的机密性和不可抵赖性。
3.1节完成了调度与变电站远动机之间的双向身份认证、会话密钥协商流程,这只是在前期保证了业务数据传输前的身份鉴别,而后续基于IEC 104协议传输业务数据的机密性、防重放及防篡改还没有安全技术保护,因此,本文在IEC 104协议的基础上增加安全域来保障协议报文的机密性与不可抵赖性,同时采用3.1节中产生的会话密钥来保护协议报文的机密性。表7为协议增加安全域的报文结构。
表7 IEC 104协议安全报文Tab.7 IEC 104 protocol Security message
通过表7安全报文格式可以看出,采用SM4算法对原IEC 104协议的控制域和ASDU域进行加密保护,并在协议的末尾扩展了安全域,扩展安全域采用SM9算法来保证协议报文的完整性、抗抵赖性及防篡改与重放,这样可以实现从调度到变电站的端到端安全认证。图6以控制报文为例的安全报文交互流程。
图6 调度-远动机安全报文传输过程Fig.6 Dispatching-remote motor security message transmission process
3.1节和3.2节设计并论述了调度主站到变电站远动机的双向身份认证、密钥协商及安全报文传输流程。具体来讲可以解决以下几方面的问题。
1)调度到变电站协议报文加密的必要性
目前,调度到变电站的通信数据都经过纵向加密认证装置来保护,纵向加密认证装置是电力调度专用安全设备,在网络层对数据进行加密保护,实现调度到变电站间传输链路的安全防护。这里有一个问题,调度端纵向加密认证装置前的数据报文没有保护,也就是说没有从协议源头解决报文的机密性。本文在协议源头杜绝了协议的不安全性,对调度到变电站协议报文加密防护,杜绝协议报文传输过程中任何一个环节被窃取的可能性。
2)基于标识密码认证与基于数字证书安全认证比较
基于SM9标识密码体系实现通信双方身份认证及安全加密比基于证书实现起来简单、方便。采用数字证书的身份认证机制是基于PKI体系中CA机构签发证书,涉及数字证书申请、签发、使用、吊销、管理等多个环节,工程应用比较复杂、繁琐,不利于大规模推广应用;而标识密码比较简便,只需要自身拥有一个标识身份的ID号,并保管好自己的私钥就可以与对方进行安全通信,也容易实现工程规模化。
3)与其他研究的比较
文献[12]提出了基于国际公钥加密算法RSA的数字签名与认证方案;文献[20]提出了基于IEC 62351安全机制国密算法身份认证与加密方案。前者大量采用国际算法与现阶段国家大力推广国产密码算法现状相悖;后者则采用了开源OpenSSL安全组件的TLS协议,而OpenSSL本身开源,且不时地报出安全隐患,再加上频繁升级,工程维护工作量的增加使得依赖该组件的系统升级变得越来越频繁。
本文基于SM9算法实现轻量级协议安全防护,通过改造IEC 104协议的结构,对协议本身做较少地改动,实现协议安全所需的功能,相较于TLS协议防护属于轻量级的安全防护,且协议的握手协商也没有TLS的复杂、耗时,体现了协议的便捷、轻量及安全性。
调度主站与远动机是基于TCP协议建立连接,TCP 3次握手建立连接后,需要进行双向身份认证与密钥协商,根据测试目的,搭建测环境,其主要软硬件资源的配置信息如表8所示。
表8 设备配置信息Tab.8 Device configuration information
基于上表软硬件配置的测试环境,验证协议的双向安全认证与密钥协商机制,通过建立5次连接进行双向安全认证与密钥协商并记录相关测试数据,测试结果如表9所示。
表9 安全认证密钥协商时效性Tab.9 Timeliness of security authentication key agreement
通过表9的实验结果可以看出,在原有IEC 104协议通信前增加双身份认证与密钥协商机制,实现通信双方端到端安全认证,由于认证过程主要是SM9签名、验证操作,所增加的时间是毫秒级,平均总耗时约在600 ms左右。文献[22]指出基于国密SM2算法与调度证书建立TLS协议需增加的时间范围在2~4 s,TLS协议流程复杂且需进行多次证书交换与密钥协商,而本文基于SM9算法进行协议层轻量级安全防护,在安全认证和密钥协商方面具有一定的时效性优势,再加上调度与远动机的连接操作并不频繁,因此,从实际业务角度考虑连接所增加的耗时是可以接受的。
本文基于CPU主频2.6 GHz、内存8 GB、操作系统CentOS7.1作为SM9算法的测试环境,对算法进行120多次签名验证,并参考相关文献[23]和文献[24],得出验证结果如表10所示。
表10 SM9算法性能验证Tab.10 SM9 algorithm performance verification
通过表10的实验结果可以看出,SM9算法的签名与验证操作总耗时约在62 ms左右,在实时性要求不是很高的业务环境下,基本可以忽略不计。
协议的安全认证与密钥协商是用来保护后续协议报文的机密性、完整性及不可抵赖性。通过3.1节中的图5可以看出,调度主站与远动机的双向身份认证流程是基于随机数的安全签名机制实现,双方各自用自己的私钥对随机数进行签名,并各自用对方的ID及算法验证,这样由于攻击者没有通信双方的私钥而不能篡改、伪造认证协议报文,因此身份认证过程是安全的。密钥协商过程是由调度生成16 Byte随机数并通过远动机的ID与SM9算法加密,再利用调度私钥对密文签名并一起发送远动机,远动机利用调度ID及算法验证密文的安全性,包括是否被篡改、伪造等情形,并利用远动的私钥对随机数密文解密生成16 Byte随机数明文,此16 Byte随机数可作为后续报文加密密钥。密钥协商过程运用了SM9的公钥加密算法来保护16 Byte密钥的安全传输,由于对方只能用自己的私钥解密,因此这一过程也是安全的。
协议报文的安全是由加密密钥的安全来保证,由于调度与远动机每进行一次连接都将生成一个新的随机动态密钥,因此利用SM4算法基于动态随机密钥对报文加密,其安全性也是可以保证的。
本文基于SM9标识密码算法实现了调度到变电站的安全通信,是一种基于新的密码体系的尝试。在调度到变电站通信前增加身份认证、密钥协商安全流程,实现了通信双方的身份鉴别并产生加密密钥;在调度与变电站协议报文传输前可利用加密密钥对协议报文加密并签名,实现了调度到变电站通信的端到端安全认证;同时也杜绝了协议报文在传输过程被窃取、伪造、篡改及重放的可行性。
基于国密SM9标识密码算法建立调度级的密钥中心,为调度主站与变电站签发身份密钥,为调度与变电站的安全通信奠定了基础安全平台。采用标识密码体系与基于PKI体系的CA数字证书有本质的区别,首先,通信双方不需要管理复杂的数字证书,只需要拥有对方身份ID即可完成对方的身份的鉴别;其次,基于标识密码算法的密钥协商也不是基于数字证书实现,省去了证书的传递和验证,提高协商效率;最后,基于标识密码算法也是对现有调度到变电站通信基于纵向加密认证装置的一个安全补充。