文/张祥
电力系统属于我国社会、经济发展过程中非常重要的基础设施。当前基于国密算法的安全芯片被应用在电力系统的数据安全管理过程中,可在信息交互过程形成安全的交互体系,经交互双方确认安全模块之后,在主机网关上对设备操作者进行身份确认,促使数据交互过程安全可靠。
SM2签名又称数字签名,其是签名者利用数据展开的数字签名,最终通过验证者对签名进行验证。当签名生成之前,需要使用密码式杂凑函数压缩签名信息,同时,在验证之前,还需要利用杂凑函数压缩验证消息。
密码学当中,SM2公钥算法呈现出的椭圆曲线和实际曲线不同。在SM2加密算法中,椭圆曲线在密码算法中呈现出的计算理念是按照多倍点算法,将产生的公钥与私钥参数获取出来。
国密算法中的SM3算法常应用在商业密码当中,主要是利用数字签名与验签过程。应用此技术时,随着生成验证码、验证码应用、产生随机数等过程,能扩大密码使用范围,保障信息安全。
2.1.1 终端加固
针对配电终端,可在系统其中应用安全模块,对硬件安全、特征等利用数字证书进行检查,防止存在不安全的终端接入。对安全模块的使用者进行身份验证,还可在网关交互的主机之上使用公钥数据、数据校验、密钥交换等技术展开协商,实现网关与模块之间双向的身份验证,进而制定出随机数据传输会话密钥,避免信息遭受破坏或者被篡改。
2.1.2 传输通道
数据传输安全通道的建立可保障网关与终端之间信息传输过程数据的完整性。
(1)通过对密钥进行协商,获取交流随机密钥,也称协商密文;
(2)当交互双方的身份确定之后,利用随机密钥展开数据的传输交流,此时和公私密钥没有关系。
2.1.3 安全传输
在硬件方面,要保障硬件平台具备安全性,使用国产平台安全控制系统,并使用国密加密卡对数据进行加密和解密;在操作系统方面,其作为网关中各程序正常运行的主要环境,可使用国产的,并且经过安全验证的操作系统;在数据的访问保护上,可将重要文件使用密文方式进行储存,当核心文件处于异常被传输状态时,可及时预警;在进程控制方面,只允许和电力系统业务相关的进程运行。
2.2.1 数据获取
在外网的前置机位置处设计定向路由,这样在内网主站中的各样业务数据就可畅通无阻地向交互网关中流入。同时在安全传输网关中利用PF-ring,此技术可截取传输数据包,之后按照协议对数据分类,并展开对应操作。
2.2.2 建立安全传输通道
安全通道的建立使用SM2加密、SM3杂凑、安全协议三种技术共同完成。在建立过程中,先建立TCP连接和交互网关。在安全网关上利用PF-ring获取交互数据,之后发送到终端TCP,当PF-ring将请求包截获之后,网关将使用libnet形成报文,向终端TCP发出连接请求,实现代理通信,为信息交互过程设置一道加密屏障。
2.2.3 交互流程
从内网向终端IP发出的数据包,通过路由发送到安全网关,交互网关对数据包截取之后,进行解析和组装,之后转发到配电终端,当终端接收到数据之后,作出对应回复,并将回复信息传输到网关,网关按照数据寻找内网套接主站,对数据进行分组,传输到前置机中,实现数据的安全交互。
使用Nginx平台可对电力系统中终端数据获取和分析,之后完成组装,从而完成多元化的网络数据处理,将网关性能有效提升。在网关构建时,可使用多线程形式,将CPU与master核数相同的worker进程启动,并和CPU相互绑定。在master的管理下,worker进程可稳定工作。从终端发出的数据包直接传输给应用程序,通过对mmap的查询找出IP端口,直接发送到内网主站。
电力系统网络安全交互是通过事件驱动架构实现业务处理。传统通信程序当中,常应用此处理方式受到建立TCP、关闭TCP等事件方面的制约,导致连接建立之后一直到关闭以前不能对其他事件进行驱动。这样使数据处理方式弱化,同时占用大量系统空间,导致数据处理事件相对较长,浪费资源。
对此,为提升系统对数据处理效率,需要建立信息模块,将数据传输过程加以细分,分段处理。
(1)使用驱动模块处理网络事件。
(2)处理过程分别在process事件处理方法加入pfringrecv事件和timers事件参数。
对posted事件调用之后要对timer与flags这两个重要参数准确设置,提升事件处理效率。调用process和timers时,程序中可将数据传输进程连接数判断出来,从而计算出负载阈值。此阈值系统默认为负值,一旦阈值变为正数时,需要将值减1,此时系统将主动放弃数据截取权利,转向process事件执行过程。当阈值为负数时,不会触发负载机制,这时系统可将pfringrecv中的数据包进行调取,之后通过进程竞争方式才可将pfringrecv解锁,将其中的事件处理完之后,将锁释放,继续执行timers与posted等事件列队,此种数据处理方式可涉及到电力系统各项业务数据的处理,在信息模块建立之后,形成网络数据安全交互时各项事件处理的驱动机制。
在电力系统外网与终端之间增设安全网关可防止在网络数据传输过程中,被泄露和被篡改等安全风险,进而在终端与交互网关之间形成双向的加密信息传输通道。图1为加密通道交流图。
从图1中可以看出数据传输整个过程。在网关位置产生r1这个随机数,通过终端公钥使用SM2算法对r1进行加密,得到报文2,将报文1和报文2之间相连接,并通过SM3国密算法实现对报文连接进行hash计算。使用网关当中使用者私钥进行签名,签名报文为结3,其有64字节,最终将所有报文加以组合,形成密钥,向终端设备发出协商请求。当终端接受信息之后,先利用网关密钥对报文3展开验签,通过验证之后即可获取两个hash值。同样使用SM3算法计算报文1和报文2,之后得到hash2,对比和之前获得的值是否相一致。如果不相符,应立即将报文内容丢弃。当通过验证之后,两次得到的hash值相等时,应继续对报文2适用国密SM2算法继续解密,最终得出随机数r1,此时终端也会形成随机数r2,进而得出DK值和随机数r1和r2之间的关系。当报文的结构相似时,如图1中的报文7、报文8、报文9,可将此种报文加以组合,共同形成密钥协商的回答,随报文发出。当网关位置接收到系统的回复报文以后,和以上流程相似,通过使用国密算法进行验证,利用hash算法进行计算,得到相等的hash值之后,即可对随机数r2进行解取,展开DK与随机值之间的操作,最终将确认信息向终端发送。
电力系统的网关数据在传输过程主要对其并发量作出测试。具体测试流程为,使用网络测试仪对终端进行模拟,然后接入到网关当中,将测试仪中的脚本当做新建连接,发出32字报文,和接收报文作对比,观察二者是否一致,之后将连接关闭。测试过程中,测试仪不能按照人为设定的安全协议展开协商报文的发送,因此,需要在安全交互过程中将密钥协商调取出来。
对数据交互完整的测试流程为,将内网主站向终端发出的数据包通过安全网关进行截获,之后在终端之间建立双向的数据加密通道,将信息发送到终端,由终端对数据进行解密,并将其中的信息读取出来,之后按照原来的传输路径返回到内网主站当中,将发送信息和接收信息之间做对比,如果信息完全一致,说明信息传输交互成功。数据交互时,可对网关获取到的数据帧进行解析,主站向终端发送的数据可通过太网数据帧的形式显示出来,并将主站与终端端口数据找出,通过wireshark获得的数据和显示太网数据相一致时,完成解析。
在电力系统具体业务当中,配电终端端口位置的IP存在差异,因此在实际分析数据传输过程系统荷载情况时,可通过在实验室当中,对两台服务器中20000个连接端口的数据交互情况与系统荷载情况进行模拟,测试图如图2所示。
在这些终端当中10000个终端在相同IP与不同端口,序列号10000~19999,20000~29999。在电力系统中,内网主站主要使用libevent与协商程序,可实现20000TCP同时连接。网关中程序可同时允许12启动个进程,并将从CPU0~CPU11分别绑定。当到达20000个连接的状态时,对网关中安全交互情况以及荷载情况等进行观察。在电力系统各项配电业务正常运行时,在加密技术的应用下CPU与系统内存的性能良好,荷载情况良好时,说明网关具有的荷载均衡能力较强。
图1:为加密通道交流图
图2:模拟数据交互图
国密算法的安全芯片在电网终端的应用,促使信息交互过程的安全性有进一步提升。在配电终端、信息传输通道以及网关平台安全等方面将技术应用其中,完善安全设计方案,促使电力系统的安全性不断提升,形成性多级保护以及完善的信息防护体系。