邓清唐, 蔡田田, 陈波, 杨英杰
(南方电网数字电网研究院有限公司, 广东 广州 510663)
随着我国电力系统的信息化与网络化的发展,智能电能表逐步地替代了传统电表, 解决了人工抄表浪费人力、 错抄漏抄等问题。 智能电能表以智能芯片为核心, 利用通信和计算机等技术, 可实现计量、 计费等功能, 此外还能完成用电管理等工作。智能电能表给电力部门和用户带来极大便利的同时, 也带来了网络安全性问题。 为了更好地发挥智能电能表的作用, 智能电能表的安全性成为了国家电网关注的重要问题[1-2]。
智能电能表是电网的一部分, 如果智能电能表受到攻击, 那么整个网络都会暴露给入侵者, 因此需要严格地保护智能电能表的安全。 在智能电网中, 入侵者可以采用硬件或者软件工具直接对智能电能表进行攻击, 在智能电能表被攻破后就能读取各种接口上的各类信息。 入侵者也可以在网络接入点破解网络中的加密文件, 进而窃取智能电能表中储存的重要数据, 从而获知智能电能表中使用的网络通信协议, 通过修改通信协议攻击者可以进行多次数据的窃取。 此外, 入侵者还能控制电源, 导致城市的大面积停电, 甚至会使数百万家庭的安全受到威胁。
智能电能表可以采用基于DES、 RSA 的加密算法加密数据和身份认证等方式来保证数据通信的安全性。 随着国密算法的推出, 我国逐步地推出了基于国密算法的安全芯片, 并将其用于智能电能表中[3-4]。 国密算法是我国自主研发创新的一套数据加密处理系列算法, 分别实现了对称、 非对称和摘要等算法, 完成身份认证和数据加解密等功能,目前国密算法已经用于安全芯片的身份验证和数据保护中[5-7], 但是这些芯片多数是针对某一种国密算法的研究, 没有给出融合多种国密算法的安全设计方案。
为了更好地发挥国密算法对电网的安全保护作用, 解决智能电能表的安全问题, 防止入侵者通过攻击智能电能表而获取整个电网的数据和保密性文件, 本文对比分析了各种不同的国密算法, 给出了智能电能表的安全芯片硬件框架设计, 提出了一种基于国密安全芯片的智能电网安全机制, 从而保证了智能电能表的身份认证和用户数据的加密传输。
智能电能表除了计量功能外, 还要传输多种数据, 电力部门可以利用这些数据分析出用户的用电习惯, 并对用电进行管理。 智能电能表可以分为单相智能电能表和三相智能电能表[8], 我们以单相电表为例介绍智能电能表的组成, 从而说明了智能电能表实现各种功能的基本思路。
单相智能电能表由微控制单元(MCU: Micro Controller Unit)、 计量芯片、 安全芯片、 实时时钟和各种接口等组成, 如图1 所示。
图1 单相智能电能表的组成
在图1 中, 智能电能表在MCU 的控制下, 通过计量芯片准确地获得电网运行的各个实时参数,并依据相应的费率等要求对数据进行处理, 其结果保存在存储器(memory) 中, 并随时通过通信单元进行数据交换。 计量芯片实现对电压和电流采样, 并将采集的信息转换为实际电能的数字数据(电能脉冲) 输出。 实时时钟模块为系统提供时钟,作为电量冻结、 费率切换的依据。 存储模块用来存储电能表参数、 电量和历史数据等。 显示模块用来显示电量和相关数据。 通信模块用来与远程的管理系统进行通信, 提供数据传输的通道。 电源模块负责给电能表提供工作电源。
智能电能表内还包括了安全芯片, 用于实现电能表数据的安全存储、 数据加/解密、 双向身份认证、 存取权限控制和线路加密传输等安全控制功能。 在对智能电能表进行参数设置、 预存金额和下发远程控制命令操作时, 通过嵌入式安全接入模块(ESAM: Embedded Secure Access Module) 进行安全认证、 数据加/解密处理以确保数据传输的安全性和完整性[9]。 ESAM 保存电表费率时段、 表号、客户编号、 购电金额、 购电次数等与计量计费相关的关键数据, 修改时需要认证或认证+消息认证码(MAC: Message Authentication Code), 保障数据存储的安全性。
国密算法即国家密码局认定的国产密码算法。近年来, 国家有关机关和监管机构从国家安全和长远战略的高度提出了推动国密算法应用实施、 加强行业安全可控的要求, 摆脱对国外技术和产品的过度依赖, 增强我国行业信息系统的安全可控能力。2010 年底, 国家密码管理局公布了我国自主研制的“椭圆曲线公钥密码算法” (SM2 算法), 并于2011 年要求公钥密码基础设施电子认证系统和密钥管理系统应使用国密算法。
常用的国密算法主要有包括SM1 (SCB2)、SM2、 SM3、 SM4、 SM7、 SM9 和祖冲之密码算法(ZUC) 等。 其中, SM1、 SM4、 SM7 和ZUC 是对称算法; SM2、 SM9 是非对称算法; SM3 是哈希算法。 目前, 这些算法已被广泛地应用于各个领域中。
在国密算法中, SM1、 SM7 算法不公开, 调用该算法时, 需要通过加密芯片的接口进行调用; 其他算法已公开, 可以用软件实现。 其中, SM2 为基于ECC 的非对称加密, 其签名速度与密钥生成速度都快于RSA。 256 位的ECC 安全强度比RSA 2 048 位高, 但其运算速度比RSA 要快; SM3 是消息摘要, 其安全性要高于MD5 算法和SHA-1 算法。 SM4 无线局域网标准的分组数据算法, 用于实现数据的加密/解密运算以保证数据和信息的机密性; SM4 算法在安全性上高于3DES 算法。
根据国家电网的智能电能表信息交换安全认证技术规范, 智能电能表需要支持用户身份认证和数据加密保护, 做到数据机密性和完整性保护, 有效地防止重放攻击和非法操作。
身份认证包括本地身份认证功能和远程身份认证功能。 在对智能电能表进行参数设置及用户充值时, 应先进行本地身份认证, 认证通过方可进行后续的操作。 远程身份认证通过后, 智能电能表才能进行远程充值、 参数设置、 密钥更新、 数据回抄、远程控制和电能表清零等操作。
数据加密保护是指智能电能表支持明文+MAC和密文+MAC 设置参数的功能。 智能电能表应先验证MAC 校验的有效性, 验证通过方可进行后续的操作。 电能表应采用解密和验证MAC 的方式来验证数据的有效性, 具有防攻击能力。
安全芯片是进行密钥生成、 加解密的装置[7],能够从硬件层面为密钥和数据安全问题提供可靠的解决方案, 向上层应用提供完整的身份认证、 安全存储等功能, 抵御各种类型的安全攻击。 目前安全芯片支持的密钥长度种类中可达2 048 位, 大大地降低了密码破解的概率。
为了满足智能电能表的安全需求, 安全芯片必须支持数字签名、 数字信封和消息加密, 支持外部接口进行远程通信和应用加载。 所设计的智能电能表安全芯片的基本功能如图2 所示。 图2 中所示的各种功能描述如下所述。
图2 安全芯片的基本功能
a) 安全芯片唯一标识的存储
智能电能表安全芯片需要包含一个全球的唯一标识, 以区分不同的智能电能表。
b) 密钥的存储与分发
安全芯片需要存储系统的公钥和每个安全芯片特有的私钥, 以完成个性化和密钥发行操作。
c) 数据加密和解密
安全芯片负责把明文数据加密成安全报文, 加密时用对应业务的密钥加密并进行签名。 如果收到的数据为加密报文, 也要用对应业务的加密算法的密钥进行解密。
d) 记录读取
如果上报或下发时指定了对应业务, 那么读记录时只有该业务能够掌握会话密钥并对数据进行解密。
如第1.2 节所述, 国密算法一方面具有自主产权, 另一方面具有更好的安全性或者加密速度, 因此本文研究了适用于基于国密算法的安全芯片及其安全机制。 采用基于国密算法的安全芯片是一种支持多种国密算法 (如SM1、 SM2、 SM3、 SM4、SM7、 SM9 和ZUC) 的系统级芯片, 最重要的密码数据都储存在安全芯片中, 安全芯片通过外设接口与智能电能表的其他模块进行通信, 然后配合MCU 完成各种安全保护工作。 由于具有独立的处理器、 内存及储存单元, 安全芯片通常完成安全储存、 加密算法和可信的身份认证等功能, 具有可靠的通信加密、 防篡改和防抵赖等安全特性。
在国密算法中, 基于ECC 的非对称加密的SM2 算法具有签名速度与密钥生成速度快、 安全性强等特点; 而SM4 适合数据传输。 因此, 本文提出了一种联合使用SM2 和SM4 国密算法来实现智能电能表安全芯片的方法, 并提出了相应的安全认证机制。
在数据上传与下发的过程中, 智能电能表内置的安全芯片会参与每一条上行与下行指令的加密、解密、 签名和验签等工作。 针对每块智能电能表,安全平台也提供了激活授权、 应用定制和应用远程激活等管理功能, 在线管理智能电能表的安全应用, 实现应用远程加载和密钥远程分发。 依靠安全芯片的有力支撑, 安全平台保证了业务数据及密钥信息在线传输的机密性、 完整性和真实性。
当智能电能表需要向远程管理系统上传数据时, 智能电能表首先使用安全芯片中的两组SM4密钥对数据进行加密, 并生成消息认证码; 然后,打包发送给远程管理系统。 管理系统在收到数据包后, 调用安全平台中的业务安全接口系统, 获取相应的SM4 密钥, 进行消息认证和解密。 当管理系统需要向智能电能表下发数据时, 分别使用SM4密钥和SM2 私钥对数据进行加密并签名后将数据打包发送给智能电能表, 智能电能表在收到数据包后, 分别调用安全芯片内储存的SM2 国密算法公钥和SM4 密钥进行消息验签和解密, 如图3 所示。
图3 智能电能表和远程管理间的数据安全机制
图3 中的SM4 加密算法由32 次迭代运算和1次反序变换R 组成。 设明文输入为(X0, X1, X2,X3) ∈(Z322)4, 密文输出为(Y0, Y1, Y2, Y3) ∈(Z322)4, 轮密钥为rki∈Z322, i=0, 1, 2, …, 31。加密算法的运算过程如下所述。
a) 32 次迭代运算
Xi+4=F (Xi, Xi+1, Xi+2, Xi+3, rki), i=0, 1, 2,…, 31
b) 反序变换
(Y0, Y1, Y2, Y3) =R (X32, X33, X34, X35) =(X35, X34, X33, X32)
解密算法的解密变换与加密变换结构相同, 不同的仅是轮密码的使用顺序。 解密时, 使用轮密钥的顺序为(rk31, rk30, …, rk0)。
本文进行了智能电网的安全分析, 探讨国密算法在智能电能表安全芯片中的应用, 此外还给出了基于国密安全芯片的智能电网安全机制, 实现了智能电能表安全信息的加密存储和用户数据的加密传输, 提升了整个智能电网的安全性能。 所提的算法结合智能电网和国密算法的特点, 提出了融合SM2 和SM4 国密算法的安全芯片设计和安全认证机制, 分析表明所研究的算法能够快速、 安全地保证智能电网的安全。