APP下载

智能电网AMI中无证书轻量级分布式认证方案

2021-07-20曹若愚祖向荣

网络安全技术与应用 2021年6期
关键词:敌手电表密钥

◆曹若愚 祖向荣

(华北电力大学(北京)控制与计算机工程学院 北京 102206)

高级量测体系(Advanced metering infrastructure,AMI)的主要特点是利用安全、可靠的通信网络实现用户与供电之间的双向数据交换,有效实施互动用电,是智能电网实现需求响应、能源管理等功能的基础,其可靠部署与安全运行是电网智能化的关键。智能电网是一个由分布式服务器和IoT 设备组成的复杂系统,先进的IoT 和M2M技术与智能电网的融合产生了许多新的不可预见的挑战,导致安全漏洞和恶意威胁。AMI 主要由三部分组成:智能电表(Smart Meter,SM),数据集中器(Data Concentration Unit,DCU)和计量数据管理系统(Metering data management system,MDMS)。SM 采集的用户用电数据经过DCU 传输到MDMS。SM 可定时或者实时获取用户侧的多种计量值,如用电量、用电功率、电压和电流等信息,然后由通信网络传输到DCU。DCU 将从智能电表收集到的计量值传输到MDMS 进一步处理。然而,SM 是AMI 网络的重要组成部件,是信息域、物理域和社会域多域融合的接口,在传输计量数值的过程中,不管是设备还是传输的数据都会面临各种威胁,例如窃听、节点伪造、重放攻击和拒绝服务攻击等,设备也可能会遭受人为的物理上的损毁,或设备本身老化影响其正常功能。因此应当设计合适的信息安全方案来保证数据和系统安全。

AMI 网络众多设备节点计算及存储资源受限,无法应对传统的通信和安全协议。因此,应认真考虑满足AMI 通信、计算与存储等具体开销要求的实用、轻量级的认证机制,在设计认证方案时必须综合考虑包括密钥分配与获取,密钥存储空间占用,加解密算法的选用,认证实现方法的复杂度等问题。本文基于分布式认证、密钥预分配和秘密共享,并综合考虑AMI 中各设备实体有限的计算资源与通信开销,提出了一种采用对称密钥算法,利用密钥分片实现轻量级的AMI分布式身份认证的方法。

密钥预分配,即预先生成一个大密钥池,并对密钥进行编号。对每个节点,随机选取一部分密钥预先存储,当双方需要通信时,相互交换密钥序号信息,以发现共有密钥[1]。密钥预分配已得到广泛的应用和改进,例如,文献[2][3][4]中,分别基于Reed-Solomon 码和整合二进制Goppa 码、网格传感器网络和正交数组的汉明距离对密钥与分配方案进行了改进。秘密共享最早由Shamir 和Blackly 在1979年提出。文献[5][6]基于中国剩余定理分别结合素数分布定理和整数环改进了秘密共享方案。分布式认证更适用于资源受限设备,其基本思想是借助目标节点的后续节点认证目标节点的真实性[7]。可在安全路由方法中应用全分布式认证方案[8]。无线传感器网络(Wireless Sensor Network,WSN)中的认证方案在智能电网中同样有参考意义,主要是借助经典数学计算难题和单向哈希函数实现网关间的认证[9],利用群成员状态向量的群密钥协商方法[10]。基于时间认证设计的WSN 伪身份双向认证方案[11],分布式物联网中WSN 的两阶段认证协议[12]以及Ad hoc 的WSN 认证方案[13]。可扩展和密钥降级的认证方案基于设备特性生成并分配一个tag,利用此tag 完成认证[14]。Jung Young-Ae 首次设计了有关DCU 的认证方案[15]。利用可验证随机函数和椭圆曲线加密设计SM 的认证[16]。认证方案中加密算法的选用会影响方案的性能,一次性密码(OTP)在认证协议中有非常重要的作用[17]。此外,Meulenaer GD 等人对设备的能耗进行了检测[18]。

综上所述,以上研究与基本理论对认证方案的设计有深刻意义,但仍存在一定的问题。密钥预分配会占用节点过多的存储空间,且无论哪个节点被攻破,攻击者都会获取其他节点的密钥,对系统产生更恶劣的影响。秘密共享方案依赖于较复杂的数学运算并不适合。分布式认证[7]需要参加认证的节点过多,缺乏灵活性。针对上述问题,本文进行了改进。本文设计的认证方案参考了秘密共享的思路,将设备的密钥分为若干个密钥片,同时参考了密钥预分配的思路,在初始化阶段将设备的部分密钥片分配到其他SM 和中心节点DCU 中,能够避免预分配密钥泄露的问题,还可缓解DCU 的存储压力。认证过程中只使用对称密钥加密算法,借助其他SM 实现分布式认证。提出的认证方案不依赖数字证书,避免了使用复杂加密算法,认证完成的同时也可以完成双方通信密钥的传递,并且通过性能分析,把方案的能耗和通信量以及存储消耗均维持在较低水平。

1 AMI 实体架构和敌手模型

1.1 AMI 实体和实体架构

AMI 实体由三部分组成:分别是智能电表SM,数据集中器DCU和计量数据管理系统MDMS。

MDMS:有足够的计算与存储资源,管理系统所有实体信息,包括实体ID、实体属性、注册时间等,为每个实体生成的密钥和随机数,每一个DCU 与SM 的对应关系,每个簇中的电表分组,每个SM 与存储其密钥片的SM 间的对应关系。

DCU:SM 与DCU 通信时,默认DCU 可信。DCU 计算与存储资源相对SM 较强,能够存储与其通信的SM 的ID、随机数和部分密钥,存储簇中电表分组情况以及每个SM 与存储其密钥片的SM 间的对应关系。

SM:每个SM 只与一个DCU 进行通信。可存储同簇同组的其他SM 的密钥片,接受来自DCU 的指令和信息,参与对同组中某一SM 的认证,SM 之间不通信。

AMI 实体架构如图1所示,其中,连接到同一个DCU 的SM 记为一簇,该DCU 也被称为中心节点。属于同一个簇的SM 又分为多个组,每个组中只有少数的电表,提出的认证方案在组中实现。

图1 AMI 实体架构

1.2 敌手模型

敌手模型可以进行与任意实体相同的运算,可获得实体使用的加密解密函数,可截获和篡改SM 和DCU 之间通信时传播的任何信息,可模仿任意的实体;但是敌手模型不能获得实体中存储的随机数和密钥,也不能够窃听或者截取各实体初始化阶段的任何信息。

2 利用密钥分片的认证方案

为了进一步说明提出的认证方案,本节将对初始化和认证两个阶段进行详细介绍。假设以某DCU 为中心节点的一个SM 分组中有SMm,SM1,SM2,...,SMn 等电表,以认证SMm 为例,初始化和认证流程如图2所示;图中符号及其含义如表1所示。

图2 系统实体初始化和认证流程

表1 方案中符号和含义

2.1 实体初始化

如图2 上半部分所示,设备初始化流程如下。

(1)SMm 和DCU:SMm 向MDMS 提供有关SMm 的信息:SMmID、time、attrs;DCU 向MDMS 提供有关DCU 的信息:DCUID、time、attrs;SMn 向MDMS 提供有关SMn 的信息:SMmID、time、attrs。

MDMS 根据SMm,DCU 和SMn 提供的信息,需要:

1)生成密钥SMmkey 和随机数rSMm 连同DCUID 返回给SMm,其中SMmkey 用于与DCU 通信,rSMm 用于密钥生成器(GenE()或GenD())的唯一种子,生成认证过程中需要的密钥。

2)生成密钥DCUkey 和随机数rDCU,将DCUkey、rDCU 和MDMSID 传输给DCU 存储,然后,将SM 的分组情况及每个SM 的随机数和SMmkeyc0 发送到DCU 存储。

3)生成密钥SMnkey 和随机数rSMn 连同DCUID 返回给SMn,另外MDMS 将SMmkey 分为“1+n”个片段:SMmkeyc0,SMmkeyc1,SMmkeyc2,...,SMmkeycn。将SMmkeyc1 和SMmkeyc2 放入SM1存储,SMmkeyc2 和SMmkeyc3 放入SM2 存储,...,将SMmkeycn和SMmkeyc1 放入SMn 存储。

(2)MDMS:计量数据管理系统MDMS 需要先生成自身的密钥MDMSkey,用于生成各个实体的密钥,在各AMI 实体初始化完成后,记录各个实体的ID、密钥和随机数,每个DCU 和SM 的从属关系,记录每一簇SM 的分组关系以及每个SM 与存储其密钥片段的其他SM 的对应关系,最后还需要存储各个实体注册时的信息。

2.2 实体认证

当有SMm 要传输信息时,首先要通过身份认证,认证过程如图2 下半部分所示。

(1)SMm 先将rSMm 作为加密密钥生成器的唯一种子,生成用于向DCU 证明身份的密钥rSMmEkey=GenE(rSMm);然后截取与DCU 的通信密钥的前半段得到halfSMmkey,计算SMmX=E(rSMmEkey,halfSMmkey);将得到的信息(SMmID,SMmX)发送给DCU。

(2)DCU 接收到SMmA 后,先生成用于向各个电表请求密钥片的密钥 RSMnEkey= GenE(RSMn);然后计算 DCUXn= E(RSMnEkey,SMmID,SMmX);将(SMmX,DCUXn,SMmID)发送到SMn(n=0,1,2,...n)。

(3)SMn 先生成用于处理 DCU 密钥片请求的密钥rSMnEkey=GenE(rSMn);然后计算DCUxn= E(rSMnEkey,SMmX,SMmID);将DCUxn 与DCUXn 对比,如果不一致,则拒绝响应此密钥片请求,如果一致,则根据SMmID 查找对应的SMmkeycn 并加密,即SMmkeycne=E(rSMnEkey,SMmkeycn),将其发送到DCU。

(4)当DCU 接收到其他电表返回的加密密钥片之后,首先将其解密,即计算SMmkeycned= D(RSMnDkey,SMmkeycne);然后结合已有的SMmkeyc0,将所有密钥片进行拼接,得到SMmkeyg,进一步可得到halfSMmkeyg;再根据SMmID 查找对应的RSMm,计算认证SMm 需要的密钥RSMmEkey=GenE(RSMm);最后将halfSMmkeyg 进行加密,得到结果 SMmXg= E(RSMmEkey,halfSMmkeyg)。将SMmXg 与SMmX 进行对比,如果一致,说明认证成功,同时说明SMmkey=SMmkeyg,并可进行下一步通信,否则终止认证失败。要注意,此次数据传输完成后,DCU 就将SMmkeyg删除。

若最终认证成功,则SMm,SMn 会将自身的随机数即rSMm 和rSMn 加1 并分别计算rSMmEkey 和rSMnEkey,DCU 将RSMm 和RSMn 加1,并且计算新的RSMmEkey,RSMnEkey,下一次通信时可以直接使用,节约时间。

3 性能和安全分析

本节将以64bits 密钥长度的DES 加密算法为例,从计算次数、通信量、能耗以及DCU 内存消耗等方面对提出的方案进行分析。然后对如何抵御攻击和应对设备故障进行阐述。

3.1 性能分析

(1)计算次数。提出的方案完成一次认证所有SM 需要的加解密次数如表2所示。横向表头代表参与认证的其他电表个数,其中2≤n≤64,通常取较小的值,纵向表头代表各个实体、以及每个设备的总计和平均计算次数。因为每次认证过程中用到的密钥可在设备空闲时生成,所以不计入认证过程的计算次数。

表2 一次认证需要的加解密次数

(2)有效通信量和能耗。实体ID 长度设置为16bits,完成一次认证所有实体之间的通信量如表3所示。横向表头代表参与认证的其他电表个数,其中2≤n≤64,通常取较小的值,纵向表头代表数据在实体之间的流向,最后统计总通信量和所有节点平均通信量。对于长度小于64 bits 的密钥片,加密结果仍然是64 bits。按照MICAz 规范,发送和接收1bit 数据的能耗分别为0.6µJ 和0.67µJ[18],结合表3 容易计算节点能耗,在此不再赘述。

表3 一次认证的有效通信量(bits)

其他一些认证和密钥协商算法的通信量如表4所示。可看出,提出的方案中当参与认证的其他电表个数不多于5 个时,本文方案的通信量要少于其他三种方案,这也符合方案设计的初衷,如果有太多的电表参与认证,则一方面通信的负担会增大,另一方面容易出现因电表本身的故障而认证失败的情况。

表4 认证通信量对比(bits)

(3)DCU 存储消耗。本方案与传统方案中DCU 存储密钥所需的存储空间对比如表5所示。横向表头代表参与认证的其他电表个数,其中2≤n≤64,通常取较小的值。可以看到,在本文提出的方案中,中心节点DCU 存储密钥所需的空间是几乎不变的,因为初始化时MDMS 将SMmkey 分为1+n 片,对于每一个SM,DCU 需要存储的密钥片长度为,又因为该组中SM 个数为1+n,所以理论上DCU 存储密钥所需的存储空间就是单个密钥长度,即64bits。而传统方案中,存储密钥所需的空间随着参与认证节点个数的增加而线性增加。

表5 DCU 存储密钥所需空间(单位bits)

3.2 抵抗攻击和应对设备故障

(1)抗重放攻击。我们提出的认证方案可以抵御重放攻击。首先,SMm 向DCU 发出通信请求时,需要先生成新的密钥rSMmEkey,然后计算SMmX,认证成功后rSMm 会增加1,因此每次获得的rSMmEkey 不同,进而每次的SMmX 也是不同的,所以敌手无法对设备进行重放攻击;其次,当DCU 向SMn 请求密钥片时也使用了类似的方法。

(2)预防窃听。当SMm 请求与DCU 通信时发送SMmX,敌手可以窃听SMmX,但是无法获得rSMm 和SMmkey,所以无法获得传输的加密信息。其次,DCU 向SMn 发送密钥片请求时也是类似的情况。最后,当SMn 向DCU 发送加密密钥片时,也是先利用随机数生成密钥,然后再对密钥片进行加密,因此密钥片并不是明文传输,并且敌手模型不能获取rSMn,所以,当SMmkeycne 被窃听时,不会导致密钥的泄露。如果敌手通过暴力求解获得了某些密钥片段,仍然无法重组完整的密钥,因为在初始化时每个SM 都有一个密钥片段存储在DCU。

(3)辨别虚假SM。假设敌手伪造一个与正常电表功能完全相同的“伪电表”,同样具备密钥,随机数以及相应的对称加密算法,但不能得到关于合法节点的随机数和密钥片。因为每个SM 与DCU 通信所需的随机数和密钥在初始化阶段已经赋值完毕,因此敌手无法获得任何实体的随机数和密钥及密钥片,也就无法获得任何密钥;当伪造节点伪造密钥片请求时也需要用到随机数,因其无法获得与SMn相关的随机数rSMn,SMn也无法搜索出与伪造电表相对应的随机数,无法对伪造的请求做出回应。

(4)防篡改。DCU 收到通信请求时,需要先获得组合密钥,再验证通信请求是否正常,如果通信请求被篡改,最终能够分辨。当SMn 收到密钥片请求时,首先需要用自身随机数进行计算以验证请求是否合法;如果DCU 接收到篡改的密钥片也很容易分辨,因为将密钥片重组后需要计算SMmXg 并与SMmX 对比,获得不同的结果则认证失败,不难排查是否是密钥片被篡改。

(5)应对设备故障。提出的方案中,需要多个其他电表参与某一个电表的认证,由于电表部署在开放环境中,所以有必要应对参与认证的电表出现故障的情况。在此举例说明本方案中提出的应对方法。

1)当3 个其他电表SM1,SM2 和SM3 参与认证目标SM 时,按照本文的方案,在初始化时先将密钥分为4 片,记为p0,p1,p2和p3,然后进行如下操作:

(p1,p2)----->SM1(将p1,p2 存入SM1 中),

(p2,p3)----->SM2,(p3,p1)----->SM3,p0----->DCU,

正常认证时,DCU 向其他电表请求密钥片,SM1,SM2 和SM3分别返回p1,p2 和p3,DCU 可以获得完整密钥。

现在假设SM3 故障,第一次密钥片请求后会缺失p3,那么DCU需要向提供p2 的电表(即SM2)发出对p3 的请求,如果可以获得p3,那么便可以得到完整的密钥。如果仍不能认证成功,就说明至少有两个电表故障,需要人工干预检查。

2)当4 个电表SM1,SM2,SM3 和SM4 参与认证时,密钥分为5 片:p0,p1,p2,p3 和p4,然后进行如下操作:

(p1,p2)----->SM1,(p2,p3)----->SM2,(p3,p4)----->SM3,

(p4,p1)----->SM4,p0----->DCU,

电表故障时应对方法同上。当参与认证的电表数变化时,密钥片分配方法以此类推。如果某些电表或者某地区的电表故障率较高,可在一个电表中适当地存储多个密钥片,具体一个节点中需要存储几个密钥片可根据实际情况而定。

4 结语

本文根据AMI 中实体的网络结构和信息传输方式以及实体的客观情况,提出了一种基于分布式认证,密钥预分配和秘密共享的轻量级AMI 实体的身份认证方案。方案将SM 密钥分片存储到其他SM中,中心节点DCU 的密钥存储压力被分散到各个SM;借助同组的其他SM 对目标SM 进行认证,充分利用了同组的其他SM,不需要另设的可信第三方参与,也不需要复杂的数字证书,同时可在一定程度上应对设备出现故障的情况;考虑到无论使用任何复杂或者精巧的加密算法,都改变不了某些AMI 实体计算资源有限的客观情况,因此方案只使用相对简单的对称加密算法,结合分布式认证思路,实现了较低的复杂度,通信量和能耗开销;完成认证时,通信双方可获得共同的对称通信密钥,无须另外进行协商。目前方案尚处于理论分析和模拟实现阶段,并没有真正部署在真实环境中,下一步工作将注重在实际环境中的应用。

猜你喜欢

敌手电表密钥
幻中邂逅之金色密钥
与“敌”共舞
电表“对”与“错”归类巧掌握
密码系统中密钥的状态与保护*
不带着怒气做任何事
Cartoons
“蹦叭”跳动电表数
TPM 2.0密钥迁移协议研究
一种对称密钥的密钥管理方法及系统
如何测电表的量程