基于TLS1.3 协议的智能电表安全设计

2023-08-19 09:59季海涛张芳敏黄柳胜孙孟玉黄炳洁
电子设计工程 2023年16期
关键词:套件电表密钥

季海涛,张芳敏,黄柳胜,孙孟玉,黄炳洁

(1.上海电力大学电子与信息工程学院,上海 200000;2.江苏林洋能源股份有限公司,江苏 启东 226200)

智能电表作为电网中的终端设备,将信息流、业务流、电力流高度融合一体化,实现分布式计量、达到客户与电表终端双向互动服务。计量信息涉及用户与供电部门的利益,数据安全防护至关重要。信息安全解决方案在AMI 联网抄表系统及智能电网基础设施中得以广泛部署[1-2],从各国的智能电网系统环境结合电表通信的规划和应用分析,各批次智能电表因存储空间及CPU 等资源的局限性,更好地实现电表安全也因此受到限制。当下主流的安全方案也渐渐成为智能电表的需求。文献[3]研究了一种新的基于分布式区块链的保护方案,以增强电表抵御网络攻击的能力。IPsec 安全协议必须处理可靠性和分片的问题[4]。TLS 协议是应用最为广泛的安全通信协议,新一代TLS 协议1.3 版本的安全性和高速性得到很大提高[5-7]。TLS1.3 协议采用高强度的加密及认证机制实现了信息的安全防护。

由于主流安全协议的复杂性和处理开销,无法更好地应用于智能电表。该文从电力系统基础设施、电表所用芯片性能、成本及通信安全强度等方面进行综合考虑,在传统智能电表通信网络协议栈中嵌入TLS1.3 协议,设计了一套TLS1.3 协议在电表上的应用方案,实现电表的高强度安全通信,使电表更好地融入智能电网。

1 电表安全协议需求

当前智能电表愈加智能化和网络化,多数已知的安全漏洞都与通信媒介及协议相关[8-9]。电表作为电力信息采集的计量设备,一般采用RS485串口通信协议或其他方式连接终端设备,基于电表在智能电网中的实际应用,从以下方面分析电表安全协议需求。

1.1 电表响应时间

基于电表硬件性能的限制,在电表与主站系统的信息处理方面存在一定的不足,其业务处理能力受制于电表采用的微控制单元MCU 的性能。TLS1.3协议涉及密钥协商、数字签名、签名验证、公钥生成等算法[10-11]。在电表上采用TLS1.3 协议,需要考虑电表运行安全协议的速度,即电表对主站系统的响应时间。电表需要按规定时间响应主站系统的消息请求,当电表选择运行不同的密码套件、椭圆曲线类型或者握手子消息时,电表耗时差距很大,若电表MCU 主频较低时,TLS1.3 握手耗时长,可能出现超时处理,造成网络连接失败等。TLS1.3 协议在智能电表中的处理流程如图1 所示。

图1 TLS1.3协议在智能电表中的处理流程

1.2 安全强度

安全强度高的加密算法对电表MCU 的计算性能要求高。若MCU 主频较低,电表使用复杂的安全算法,虽然安全强度更高,但加密运算时间过长,无法及时应答主站,将会导致网络瘫痪等后果。方案基于电表MCU 性能,选择合适的TLS1.3 加密套件,结合TLS1.3 协议子消息的设计,使电表在保证传输安全的同时,及时响应主站请求。TLS1.3 协议根据已发生的攻击行为,删除了一些不安全的加密算法[12-14]。支持的加密套件,每个都有明显的优势,智能电表可根据算法的安全强度和硬件资源进行选择。方案选择密码套件的依据如下:

1)AES_128_CCM_8_SHA256 密码套件。CCM模式的标准认证标签为16 个字节,CCM_8 模式的密码套件将标签减少到8 个字节,从而节省了8 个字节的开销,但代价是更高的伪造概率。

2)若电表支持加密和认证硬件加速,优先选择AES_128_GCM_SHA256 加密套件,安全强度高且运算速度快。若电表只支持AES 硬件加速,优先选择TLS1.3 加密套件AES_128_CCM_SHA256,CCM 模式没有GCM 模式的输入大小限制,比GCM模式更容易实现。

3)智能电表若没有硬件加速资源,加密和认证算法采用纯软件来实现,AEC_GCM/CCM 算法运算速度慢,优先选择CHACHA20_POLY1305_SHA256套件。

4)若电表采用性能较高的MCU,追求更高的安全强度,可以选择TLS1.3 协议加密套件AES_256_GCM_SHA384,对于Grover 算法攻击有更高的抵抗力,可以使电表通信更加安全,但提高了成本,且对电表要求较高。

2 基于TLS1.3协议的应用方案

2.1 整体思路设计

TLS1.3 标准协议较为复杂,由握手协议和记录协议组成[15-16]。握手协议旨在通过认证密钥交换机制来协商密钥,负责电表与集中器协商会话状态的密钥参数。为了提高该电表安全方案的拓展性、复用性和灵活性,着重设计了TLS1.3 的握手协议。握手协议由众多子消息组成,可根据实际应用进行裁剪。记录协议负责加解密及封装数据,可依据协议标准进行设计,此处不做赘述。该方案的电表握手过程如图2 所示。

图2 电表握手流程

握手步骤可总结如下:

1)为与终端设备GateWay 密钥进行协商,智能电表解析了ClientHello 数据帧。ClientHello 数据帧中扩展extension 还会带有supported_groups 扩展,这个扩展表明了GateWay 支持的用于密钥交换的命名组,按照优先级从高到低,电表按照支持组件supported_groups 中得到的匹配项,匹配共享密钥key_share扩展中的类型。电表选择GateWay支持的椭圆曲线类型,使用椭圆曲线的基点计算电表的公钥。

2)电表提取ClientHello 中的key_share 扩展对应的公钥,计算主秘钥放在ServerHello 的key_share 扩展中,密钥协商计算完成后,电表以ServerHello 作为响应数据帧,向GateWay 传输电表协商成功的相关信息。该方案禁止电表重协商,若电表完成协商后又收到ClientHello 数据帧,将立即告警并断开连接。电表TLS1.3 握手协议中,ServerHello 需要携带supproted_versions 扩展,且包含自己supproted_versions 中选择的TLS 协议版本号。电表不作降级处理,GateWay 请求TLS1.3 协议连接,则电表以TLS1.3 协议响应,否则将断开连接。

3)在该方案中,电表从ClientHello 数据帧中获得密钥协商的相关信息,结合电表参数,完成椭圆曲线密钥协商,之后将使用握手层密钥加密握手信息。为保证电表的扩展信息安全,可将一些重要的协商参数放在加密扩展EncrypytedExtensions 帧中进行传输,但影响握手速度,增加了系统开销,因此可设置为空。

4)方案采用证书进行双向认证,为了加快身份认证,当电表向GateWay 发送证书请求消息时,同时从EEPROM 读取自己的证书并发送。该方式避免GateWay 向电表发送证书请求,减少设备认证耗时。

5)为防止上述信息被篡改,电表对之前的握手数据进行计算签名,并通过Certificate Verify 数据帧发送。该消息必须在Certificate 消息之后、Finished消息之前发送。

6)电表发送Finished 数据帧作为电表身份认证阶段的最后一条信息。若GateWay 通过验证电表的Certificate Verify 数据帧和Finished 数据帧,将发送应用层数据。

7)若终端验证电表证书成功,将响应电表的请求并发送证书。电表验证证书和Finished 数据帧成功后,握手完成。智能电表导出记录层所需的密钥材料,以交换通过认证加密保护的应用层数据。

2.2 扩展选项协商

GateWay基于主站系统组网要求,发送TLS1.3协议握手请求,为了与电表协商握手信息,ClientHello数据帧将携带大量的扩展信息。智能电表收到ClientHello 消息后,按照次序逐个解析扩展信息,依据电表的需求,处理并响应相关扩展,其余扩展为了降低电表开销而不作处理。

基于该方案设计的TLS1.3 握手流程,电表须响应的扩展类型信息如表1 所示,选择响应的扩展信息并作出响应。

表1 电表扩展信息类型

2.3 电表双向认证

基于PKI 体系的证书认证方式无法适用于电力基础设施薄弱的地区,如公司某海外项目。为了使电表完成TLS1.3 协议中的设备认证,在一定程度上简化了电表认证实现的复杂度。电表建立通信时,执行证书初始化,通过密钥协商生成加密密钥,主站系统向电表传输电表和GateWay 的两张证书及其对应私钥,电表解密成功并写入EEPROM。在证书预装过程中使用通信开销较低的对称加密和哈希函数,证书初始化完成后,电表与GateWay 进行TLS1.3 连接。

为降低系统开销,电表在TLS1.3 握手双向认证时,不完全解析GateWay 发送的证书,只与预装的GateWay 证书作比较,若一致则认证成功。

3 方案应用及性能分析

3.1 电表应用案例

该方案已用于公司项目,电表所用MCU 为FM33A048,主频最高达40 MHz,RAM 容量为32 kB,电表应用层为SML 协议,自动抄表系统底层通信协议为链路层。电表所用的MCU 性能较低。安全方案应用于项目的关键信息如下:

1)在保证安全强度的前提下,电表选择支持TLS1.3 协议AES_128_GCM_SHA256 加密套件和CHACHA20_POLY1305_SHA256套件,为减少电表与GateWay建立TLS1.3握手的耗时,电表执行TLS1.3密钥协商,优先选择CHACHA20_POLY1305_SHA256加密套件。

2)智能电表支持的曲线类型:secp256r1、secp384r1、BrainpoolP384r1。可根据客户方的电网需求进行选择。

3)电表对收到的证书未全面解析,只将其中的公钥取出,未作抄表客户端证书验证,只与证书初始化中传递过来的SGW 证书作比较。

4)智能电表的数据流采用内存复用方案,即采用应用层SML、TLS 层、物理层HDLC 三层数据流共用一个空间的形式来减少内存空间的使用,电表应用层将数据放入数据流时,根据TLS1.3 握手协商出的安全套件预留出不同的TLS1.3 头尾空间,以便TLS 层进行应用层数据加密。

3.2 性能分析

该电表安全方案采用纯软件来实现,TLS1.3协议中的ECC 算法运算量大、耗时较长,算法中使用不同类型的椭圆曲线,通过涉及的Compute Shared Secret、Key Generation、Public Key Validation、Signature Generation 和Signature Verification 算法运行过程耗时来体现,为了使电表及时响应和减少所需空间,通过调整window size、编译器优化等级和ECC 算法单次执行比特位stepNum 的大小,测试电表的最佳运行状态。

算法性能与密钥长度关系很大,由表2 中的信息分析可得,签名验证算法在电表运行中耗时最长,使用椭圆曲线BrainpoolP384r1 签名验证平均耗时约20 s。根据主站系统的响应时间要求选择ECC 曲线类型。

表2 windows size=2电表耗时

为了使电表运行在最佳状态,须确定ECC算法中滑动窗口的大小,以TLS1.3 协议Signature Generation算法为例进行说明,签名使用的椭圆曲线类型为BrainpoolP384r1,其他测试环境变量不变。由表2 和表3 的数据进行分析,相比电表在windows size=4,单次执行k的位数stepNum=10 的运行环境下,当选择的windows size=2 时,单次运行算法平均耗时增加约0.89 s,TLS1.3 总体握手协议运行时间增加约为10 s,但优势是空间节省了0.87 kB。

表3 windows size=4电表耗时

综上所述,电表密钥协商、签名生成及验证使用NIST P-256(secp256r1)、NIST P-384 (secp384r1)和BrainpoolP384r1 三条曲线进行测试。在本公司的项目中,滑动窗口大小设置为4 bit。编译器IAR 开启高级优化,经过批量测试,程序运行稳定;ECC 算法标量乘单次执行比特位StepNum 为10 bit,执行结束退出ECC 运算,并保存当前运算数据,在其他任务完成后再次进入退出时的断点继续进行运算,该数值依据MCU 的主频进行设置,若主频较高,可以增大单次执行比特位。经过长期大量测试,电表运行稳定。

4 结束语

在电网的建设中,接入大量性能各异的智能电表,随着电力公司对电表通信安全的要求不断提高,某些海外地区要求电表升级支持TLS1.3 协议,以对抗网络攻击。由于TLS1.3 协议庞大复杂,一些智能电表因节省成本而采用低端且无硬件加密的芯片,处理速度及硬件资源成为实施TLS1.3 协议的瓶颈。因此,该文对TLS1.3 协议进行二次开发,在安全强度、公私钥尺寸和计算速度等方面作出平衡,在电表上以纯软件实现TLS1.3 协议,设计TLS1.3 握手协议和认证机制以兼容现有的电力基础设施。该方案已用于德国智能电表,结果表明其满足实际安全需求,电表接入当地智能电网安全、稳定。

猜你喜欢
套件电表密钥
巧判电表测量对象
电表“对”与“错”归类巧掌握
基于维修费用的关键部套件分析
密码系统中密钥的状态与保护*
“龙吟套件”创作感悟
一种对称密钥的密钥管理方法及系统
基于ECC的智能家居密钥管理机制的实现
看电表
工业照明超频三天棚灯套件改造工程
CSRmesh开发套件加速物联网产品开发