文献标识码:A
DOI:10.16157/j.issn.0258-7998.2016.11.017
中文引用格式:余容,黄剑,何朝明. 基于SM4并行加密的智能电网监控与安全传输系统[J].电子技术应用,2016,42(11):66-69.
英文引用格式:Yu Rong,Huang Jian,He Chaoming. Smart grid monitoring and secure transmission system based on SM4 parallel encryption[J].Application of Electronic Technique,2016,42(11):66-69.
0 引言
智能电网通过各种总线协议将带有传感器的物理设备与计算机系统连接一起,组成一个综合监控管理系统,具有高效性、可靠性、便捷性等优势[1]。
虽然现代电力网给社会生活带来了便捷,但是现有系统在数据的终端采集上还存在很多不足之处,如现有许多监控系统只注重对设备数据的采集而忽略了设备管理的便捷性;其监控系统的稳定性不够,设备网络断开后不能自动连接;当电网规模扩大,监控设备随之增多,数据传输的实时性降低。此外,智能电网系统—旦受到恶意攻击,系统本身将会遭受严重的破坏,从而给社会生活、工业生产各方面带来巨大的损失。因此,智能电网系统的安全面临着更为严峻的挑战[2]。如何建立一个有效的智能电网安全监控系统,制定可靠的数据安全传输策略,有效地保障信息在釆集传输过程中的安全可靠性,已成为当务之急。
1 系统总体设计方案
设备数据监控系统设计成分层结构分为感知层、网络层和应用层,每层分别实现各自的功能,整体框架图如图1所示。
(1)感知层:主要是基于ModBus和IEC104协议的数据采集系统。系统通过读取站点配置文件,创建采集线程,采集线程不断地采集各个ModBus和IEC104设备的数据,并通过网络层传输给中心管理系统。
(2)网络层:主要是基于GPU的SM4并行数据加密传输系统。通过改进的并行加密技术对采集到的数据进行加密处理,提高数据加密的安全性和实时性。
(3)应用层:主要包含中心数据监控系统和设备控制系统。数据监控系统实现对采集到的数据存储、显示等,设备控制系统实现对ModBus设备和IEC104设备的统一控制功能。
2 智能电网监控系统实现
2.1 ModBus和IEC104协议
ModBus通信采用C/S通信方式。目前,工业中将 ModBus通过以太网结合TCP/IP协议组成ModBus TCP/IP网络进行通信[3],其应用数据单元(ADU)由供TCP/IP专用的ModBus应用协议头(MBAP)和通用的协议数据单元(PDU)组成[4]。
IEC104协议是为解决电力控制和高速网络传输的需求制定的一种采用TCP/IP网络协议进行传输的通信协议[5]。该协议采用C/S通信方式。客户端发送数据请求,而服务端进行应答请求;服务端也可以直接发送控制命令来修改客户端的数据,实现双向读写[6]。
2.2 数据采集控制模块实现
数据采集模块是采集系统的核心,该模块读取MsSQL数据库中的modbus_table和iec104_table配置表,配置表中保存了站点设备的配置信息。数据采集控制系统的主线程根据读取到的配置记录初始化内存数据,并创建ModBus数据采集线程、IEC104数据采集线程和设备控制线程。采用多线程的结构,可以实现设备的并行采集的功能。ModBus数据采集模块的主线程流程图如图2所示。
为了确保数据采集的完整性,在采集线程中引入了断线重连机制。一旦建立的TCP/IP连接发生断开情况,则立刻刷新连接,重新建立TCP/IP连接,继续发送采集请求。控制线程在启动后一直处于监听状态,等待上层管理系统发来控制命令。接到控制命令后,解析出是ModBus控制指令还是IEC104控制指令,随后对相应设备发起控制命令。
ModBus通信是基于TCP/IP协议。首先,查看连接状态,如果处于断开状态,则调用connect_site()函数进行连接,并更改状态为采集状态。当处于采集状态时,通过调用read_site_register()和read_site_bit()函数进行数据采集,采集流程图如图3所示。若采集返回出错,则重新设置连接状态,等待下次循环重新建立连接并采集数据。当处于关闭状态时,通过调用close_site()函数关闭TCP/IP连接并释放相应的资源。
IEC104数据采集线程的流程图如图4所示。首先建立TCP连接。然后初始化IEC104帧,发起总召唤命令,启动数据传输功能并等待数据的到来。当收到数据时,验证报文的合法性,通过验证的报文进入报文解析处理函数,然后根据报文具体功能回复相应命令;没有通过验证的报文直接丢弃。
2.3 设备控制模块实现
根据ModBus设备和IEC104设备控制命令的格式及特点对其进行了一次封装,提供给用户统一的控制命令接口,其控制命令格式如图5所示。
(1)设备ID:表示目标设备的ID号,所有的ModBus设备和IEC104设备统一进行编号。
(2)控制类型:当目标设备是ModBus设备时, 0表示写寄存器,1表示写线圈;当目标设备是IEC104设备时,0表示遥调命令,1表示遥控命令。
(3)目标地址:表示目标设备待操作的地址。
(4)数值:表示对目标地址进行写操作的数值。
(5)控制标志:用来表明本次控制操作的状态,0表示选择状态,1表示控制状态,2表示撤销状态。
设备控制模块主要由一个单独的控制线程实现对ModBus设备和IEC104设备的统一控制。控制线程在启动后一直处于监听状态,等待管理系统发来的控制命令。接到控制命令后,解析出是ModBus还是IEC104设备的控制指令,随后构造相应的控制命令帧,从而发起控制命令,具体流程如图6所示。
3 基于GPU的SM4并行加密
SM4 是一种分组密码算法,其分组长度和密钥长度均为128 bit。加解密算法与密钥扩张算法都采用32轮非线性迭代结构[7]。在数据量较大的情况下,使用SM4串行加密的耗时成为了采集系统实时传输的瓶颈。本文利用GPU[8]并行计算能力与SM4算法的结构特点,设计了基于GPU的SM4并行数据加密模块,将采集到的数据传送给GPU,GPU把加密后的结果送给数据转发模块,提高了加密运算的实时性。
SM4并行加密模块流程图如图7所示。首先,在CPU执行一次密钥扩展,生成轮密钥。然后,将输入数据和扩展密钥存储到GPU全局存储空间内。输入数据分成每块128 bit,通过调用cryptKernel核函数[9,10]实现每个GPU线程对数据块的并行加密。最后,加密输出的密文数据将再次被写到全局设备存储器内,随后,CPU程序将输出数据结果从GPU 的全局设备存储器内取回,整个加密过程完成。
4 系统测试与分析
为了测试系统的功能与性能,在主机上运行数据模拟器应用程序,作为客户端,用来产生ModBus和IEC104数据。以ModBus模拟器为例,运行数据采集系统对模拟器数据进行采集,通过中心数据管理系统显示采集到的数据,如图8所示。
通过运行设备控制应用程序,实现对ModBus或IEC104设备的控制。运行设备控制程序后,就可以在“〉”提示符下输入控制命令。下面分别对ModBus设备写线圈、写寄存器命令和对IEC104发起遥控命令,测试结果如图9所示。
以第二条命令为例。第二条命令是实现对ModBus设备寄存器值的写操作,即对1号设备地址为21的寄存器进行写数值“12”操作,返回值为零,表明写寄存器操作执行成功。为了验证命令的执行情况,通过对比模拟器在执行命令的前后状态,可以发现地址为21的寄存器值发生相应的变化,如图10所示。
5 总结
本文设计了一种智能电网监控与安全传输系统,采用与TCP/IP协议结合紧密的ModBus和IEC104协议进行数据采集,便于数据传输,并在系统中引入断线自动重连机制,完善系统功能。为了确保和提高批量数据传输过程中的安全性与实时性,有效结合SM4加密算法与GPU并行计算,提出基于GPU并行计算的SM4加解密基本架构。现场实验测试表明,系统运行状况良好,可有效提高数据传输时的安全性与实时性,最终,实现对设备数据进行实时采集与并行加密传输的功能,为工业监控系统提供了核心模块。
参考文献
[1] 刘汉宇,牟龙华.微电网CPS体系架构及其物理端研究[J].电力自动化设备,2012,32(5):34-37.
[2] 徐琳,温蜜,李晋国.智能配电网中具有隐私保护的数据安全认证方案[J].电子技术应用,2015(12):98-101.
[3] 金德刚,吴自然,吴桂初.基于Modbus/TCP的数字式电流互感器设计[J].电子技术应用,2014,40(6):93-95.
[4] 高秀兰.基于Modbus TCP/IP通讯综合监控系统的实现[J].仪表技术与传感器,2015(10):104-106.
[5] 陶学军,徐奉友,王艳领.IEC 60870-5-104协议在光伏电站中的应用[J].机电工程技术,2014(3):40-44.
[6] 马晓红,管荑,林祺蓉.104规约在调度自动化系统中的应用[J].山东电力技术,2011(6):002.
[7] WANG K,PENG D,SONG L,et al.Implementation of Modbus communication protocol based on ARM Coretx-M0[C].System Science and Engineering(ICSSE),2014 IEEE International Conference on.IEEE,2014:69-73.
[8] KANDROT E,SANDERS J.CUDA by example:an introduction to general-purpose GPU programming[M].Amsterdam:Addison-Wesley Longman,2010.
[9] IWAI K,NISHIKAWA N,KUROKAWA T.Acceleration of AES encryption on CUDA GPU[J].International Journal of Networking and Computing,2012,2(1):131-145.
[10] Shane Cook.CUDA并行程序设计GPU编程指南[M].苏统华,李东,译.北京:机械工业出版社,2014.