APP下载

高级计量基础设施网络中隐私数据聚合的改进方案

2021-10-18陆翔宇羡慧竹刘士峰中国电网北京电力科学研究院北京100162

计算机应用与软件 2021年10期
关键词:电表读数电能表

陆翔宇 李 蕊 羡慧竹 丁 宁 刘士峰(中国电网北京电力科学研究院 北京 100162)

0 引 言

当前电网与物联网[1]的联系越来越紧密,这要求在电力企业和智能电能表之间建立支持双向通信的基础设施,且能够自动制定决策。一般情况下,智能电能表将测量的细粒度用电数据发送至电力企业,并接收电力企业的指令。但对于普通用户来说,细粒度用电数据的采集和存储会带来安全隐私问题[2]。

对于用电数据安全性问题,一般使用数据聚合技术来隐藏个体电表读数,同时减少高频计量数据在网络中产生的分组业务[3]。其理念是数据包从电能表路由至网关时,在网络内执行聚合,每个中间电能表执行一次聚合。但这会使得特定电能表的私人数据暴露给网络中的另一个电能表,因为聚合是在未加密电能表读数上执行的。为解决该问题,一些研究者建议使用部分同态加密(Partial Homomorphic Encryption,PHE)[4-5]、全同态加密(Fully Homomorphic Encryption,FHE)[6-7]、安全多方计算(Secure Multiple Party Computation,SMPC)[8-9],以隐私保护的方式在隐藏数据上执行特定的算术运算。文献[10]以Paillier同态加密与盲因子相结合的方式对用户的多维数据进行加密,使得即使攻击者获得了解密密钥也无法解密单个用户的加密信息,更加体现了数据聚合的本质。

在同态加密系统[11]中,PHE被广泛用于简单聚合,支持加密数据上的加法运算,但PHE无法在加密数据上执行其他运算,这可能会影响到其他配电侧操作,例如状态估计、直接负荷控制等。FHE和SMPC系统支持加密数据上的加法和乘法运算,提高了应用的灵活性,同时保护用户隐私。但FHE系统会产生较大的密文和较长的计算时间,特别在应用乘法时更是如此。这使其不适用于高级计量基础设施(Advanced Metering Infrastructure,AMI)网络中的内聚合。SMPC方法是轻量级方法,但其要求大量消息传递,而AMI网络中不支持所有成员之间的直接通信,因此可行性不高。

为此,本文提出解决上述问题的必要机制,提出基于安全MPC的协议,大幅降低了消息传递复杂度,主要工作和创新总结如下:1) 为了将FHE系统适应到AMI网络,提出了当使用TCP作为底层传输协议时,降低密文大小并处理分组重组问题[12]的机制。由于TCP预先不知道分组的大小,无法对到达接收器的流进行切割。为此,提出一个解决方案,在传输层之上加入了一个新的表示层,以在发送方包含分组大小信息。2) 为了使SMPC适配AMI网络,本文提出降低消息复杂度的机制。经典的SMPC协议使用密钥共享技术,每轮数据采集在电能表之间交换子密钥,缺点是该协议会消耗大量带宽。为此,提出隐私感知的通信协议,以降低带宽需求。具体来说,电能表使用伪随机数生成器(PRNG)在本地计算子密钥。由此,电能表不需要在每轮数据采集前交换子密钥,提高了带宽和其他网络资源的使用效率。

1 用于AMI网络的FHE方案

1.1 TCP下的分组重组问题

鉴于智能电能表数据的关键性,本文使用TCP以确保可靠性。此外,使用FHE在TCP连接上传输数据包时,在接收端会产生分组重组问题。具体来说,TCP连接中的数据流由TCP报头中的窗口尺寸(Window Size,WS)字段所控制。报文段的接收方表明愿意接收多少字节的数据,该报文段的发送方所发送的数据不会超出WS字段中声明的数值。由此对连接的每个方向的数据流进行调节,以使得主机不会收到超出其处理能力的数据(即流控制)。但在该调节中,由于WS值的改变,可能会造成要传输的分组的一些部分处于不同报文段,特别对于较大的分组更是如此。这种情况常会发生在FHE系统中,因为较大的密文被分割为许多报文段。在接收端,需要从采集到的报文段中对分组进行重组,以将其与来自其他子电表的其他分组聚合。这种情况下,接收方(电表)不知道特定发送方所发送的分组的大小,因此无法确定从哪里切割字节流(包含多个报文段)。需要指出的是,当子表有着不同数量的子表时,每个接收方的子表可能发送不同大小的分组。这就是分组重组问题。为克服该问题,本文提出一个协议,使接收方电表能够知道其将要接收的分组总大小。该协议在TCP层之上的表示层中开发,如图1所示。提出的分组重组协议(PRP)使聚合电能表能够从报文段中重组分组。该协议在发送端向分组添加了一个包含分组大小的最小报头,并在接收端移除该报头、读取分组大小、收集该大小的字节以重组分组。

由此,一个PRP分组包含PRP报头和应用层分组,保持报头最小化(4字节),其中包括了应用层分组大小和电表标识符。接收方电表总是先接收第一个报文段,因为TCP确保了字节流的有序传递。由此,电表能够通过其接收的第一个报文段中的报头信息,知道整个分组大小。

1.2 协议伪代码

PRP实现了两个重要函数:Send和Receiver。Send函数由应用层调用,用于将电表的应用层分组发送至另一个电表。当接收缓冲区中存在分组时,传输层调用Receiver函数。算法1给出了Receiver函数的伪代码。该算法首先检查是否存在专用于分组来源(from)的缓冲区(buffer)。若不存在这样的buffer,则按接收的报文段(segment)大小创建buffer,并将segment推入该buffer。若segment的大小超过buffer,则将超额字节放入字节数组residualBytes。若buffer已满,则从buffer中的segments中创建应用层分组(appPacket)。将appPacket发送至应用层,并从bufferMap(即缓存映像,其中包含各个分段的可用性信息)中删除专用于from的buffer。若residualBytes数组中存在任何数据,则从residualBytes中创建分段resSegment,并调用Receiver(resSegment,from)函数,以递归方式处理多余字节。

算法1PRP的接收方函数

1. buffer←bufferMap.RetrieveBuffer(from)

2.ifbuffer==nullthen

3. header←segment.GetPRPHeader()

4. buffer←CreateBuffer(header.GetPacketSize())

5.endif

6. residualBytes←buffer.Add(segment)

7.ifbuffer.IsFull()then

8. appPacket←CreateAppPacket(buffer)

9. ReportUpperLayer(appPacket)

10. bufferMap.RemoveBuffer(from)

11.ifresidualBytes.Size()≠0then

12. resSegment←CreateSegment(residualBytes)

13. Receiver(resSegment, from)

14.endif

15.endif

2 适应AMI网络的SMPC

2.1 安全多方计算

安全多方计算使用密钥共享来实现数据聚合。密钥共享与PHE&FHE的区别在于隐藏数据的方式不同。密钥共享中,将1个密钥分割为若干个子密钥,并分发至一组参与者,以使得密钥无法被重建(除非一定数量的参与者合谋)。而在PHE或FHE中,只要获得私钥,就可以对使用与该私钥相对应的公钥加密的任何消息进行解密。

2.2 协议框架

如2.1节所述,SMPC要求在所有节点间通信(需要交换n(n-1)条消息),这不但会增加通信复杂度,而且无法在AMI网络拓扑中实施。需要对SMPC进行修改,使其可用于AMI网状网络拓扑,且不会显著增加开销。为此,本文参照了文献[14]的理念。让每组两个电表协商一个共享密钥(而非交换子密钥),使用该密钥作为伪随机数字生成器(Pseudo Random Number Generator,PRNG)的初始输入,在本地计算出将要从其他电表接收到的子密钥。密钥可在电表上预先加载,或使用Diffie-Hellman密钥交换协议[15]进行私钥共享。

图2给出了协议的基本概况,其中:g表示一个多项式;priv表示电能表私钥;pub表示电能表公钥;Req()为网关请求函数。

图2 本文协议的基本框架

(1)

由此可推导出多项式Fi(X):

(2)

根据式(2),电表i可通过将式中的X替换为xi,计算出该电表的子密钥。现在已计算出所有子密钥,将其加在一起,并将结果发送至网关。网关在接收到的Fi数值上建立多项式。该多项式的常数项为所有ri值的总和。

2.3 分层SMPC

由于SMPC的特性,每个电表计算子密钥之和(包括由其他电表计算出的子密钥),并直接将其发送至网关。网关验证接收到的分组的签名,并在子密钥上推导出新的多项式,该多项式的常数项为电表读数聚合值。最后,网关签名并将聚合值发送至电力企业。

但AMI网络为多跳网络,可在网络节点之间定义分层关系。由此,本文利用了网络内处理,并对协议进行了修改,使其以多跳的方式工作。具体来说,本文作了以下改动:由网关计算的拉格朗日多项式可由每个电表计算得出。这些电表计算其子密钥之和(图2中的Fi),并将其乘以相关的拉格朗日多项式li(0)。然后,电表签名并将其发送至其父电表,父电表验证进行过乘法运算的子密钥总和的签名,并将其与自身经过乘法运算的密钥进行聚合。父电表对结果签名,并发送至其自身的父电表。该过程一直持续至网关,网关验证做过乘法运算后的子密钥总和,并将其与自身做过乘法的密钥相聚合。最后,网关对结果签名并发送至电力企业。使用该协议,可进一步降低网关处的总带宽使用和计算开销。

3 实验与性能评价

3.1 实验设置

本文使用网络模拟器ns-3对提出的协议进行了性能评价。创建大小为N的随机多跳网络拓扑,其中N∈{36,49,64,81,100}。对于每个拓扑,1个网状节点作为网关/数据采集器,N-1个网状节点则作为智能电能表,智能电能表每60 s向网关周期性地发送报告。假定智能电能表生成的数据大小为16位,该大小足以支持电能读数。同时,假定网络将全局时钟同步以具有可靠的时间戳机制。对于每个N,本文建立了30个随机网络拓扑,并给出了这些随机网络拓扑的均值。对于TCP,设最大报文段(Maximum Socket Segmentation,MSS)长度为1 500个字节。

文献[16]为SG AMI网络定义了两种数据聚合机制。本文实施了这两种机制:端到端(End to End,EtoE)聚合和逐跳(Hip by Hip,HbyH)聚合。在HbyH聚合中,由网关电表得到网络的最小生成树,如图3所示。网关电能表基于该聚合网络树,制定每个电能表的父子关系。网络中的叶电表将其电表读数周期性地发送至父电表,父电表将其自身读数与从子电表接收到的读数聚合在一起,其后将得出的数值再发送至其自身的父电表,持续该过程直至到达网关电表。最后,网关将其读数与从子电表接收到的聚合读数再进行聚合,并将结果发送至电力企业。在EtoE聚合中,所有电表直接将其读数发送至网关。网关将自身读数与从其他电表接收到的读数进行聚合,并将结果发送至电力企业。

图3 聚合网络树示意图

3.2 评价与度量

本文仿真中,在EtoE和HbyH聚合中均采用了SV方案和SMPC协议,SV方案[17]属于公钥密码族,包括密钥生成、加密、解密、加法/乘法和重新加密函数,生成密钥对为公钥和私钥。其独特之处在于公钥的一部分被用于进行重新加密,且密钥以KB为单位,远大于传统方案中以位为单位的密钥。文献[18]是SV方案的一种改进,主要优化了计算复杂度和信道带宽分配方面,其方案主体架构不变。因此,SV方案已被证明在AMI网络的隐私计算中具有较好的效果。对于EtoE和HbyH聚合,SV方案[17-18]和SMPC协议分别表示为SV-EtoE、SV-HbyH、SMPC-EtoE和SMPC-HbyH。本文将SV方案和SMPC协议的性能与利用Pallier PHE[10]的基准进行了比较,以分析FHE方法与PHE方法的性能差异:1) Paillier&EtoE聚合(Pai-EtoE),该测试中,利用Paillier密码[10]系统对电表读数进行加密,并直接发送至网关;2) Paillier&HbyH聚合(Pai-HbyH),该测试中,利用Paillier密码系统对电表读数进行加密,并在中间电能表处进行数据聚合。

在性能评价中,本文使用了以下度量:

1) 分组投递率(Packet Delivery Rate,PDR):传递到网关的分组数与SMs发送的分组数之间的比率。

2) 吞吐量(Through Put,TP):网关每秒接收到的总数据量。

3) 平均数据采集完成时间(Completion Time,CT):一轮数据采集中,在网关处接收所有SMs的所有电能读数所耗费的平均时长。CT在应用层测量,因此考虑到了密码系统/拉格朗日插值的运算。

在评价PDR时仅考虑EtoE聚合机制,因为HbyH机制采用了网络内计算,从而降低了吞吐量,因此网关吞吐量无法与EtoE相比。

3.3 分组投递率

本文仅针对EtoE机制测量了PDR。如图4所示,对于所有方法,在81节点拓扑之前,PDR几乎都是100%。在64节点拓扑之后,Pai-EtoE和SV-EtoE方法的PDR出现非常小幅的下降。这是因为这些方法中生成的分组大小比SMPC-EtoE要大,数据越大,则发生拥塞的可能性越高。总体来看,在提出的方法中增加电表数量,不会造成PDR性能的显著降低。

3.4 吞吐量

通过吞吐量(TP)性能可分析所提方法的带宽使用情况,目标是尽量减少带宽使用,以容纳其他类型的流量。图5和图6分别给出了EtoE和HbyH机制的吞吐量。总体来看,HbyH的TP值低于EtoE的TP值,这是因为在HbyH机制中,网关接收来自其子电表的读数;而在EtoE机制中,网关接收来自网络中所有其他电表的读数。

如图5所示,EtoE的TP值会随着网络中电表数量的增加而上升。这些方法基于其生成的数据包的大小而产生TP,因此,SMPC-EtoE产生最小TP是符合预期的,因为与其他方法相比,SMPC-EtoE生成的数据包较小。

图6给出了HbyH机制下的TP值。对于所有方法,36和49节点拓扑的TP值几乎没有变化,然后在81节点拓扑之前不断下降,最后在100节点拓扑处开始上升。电能表直接将读数发送至网关,因此电能表数量和网络内分组投递延迟是影响TP值的重要因素。随着网络中电能表数量的增加,网关接收聚合电能表读数所需的时长也会增加,但网关的子电表的数量并没有以相同比例增加,这就造成TP的下降。100节点拓扑时TP的增加是得益于网络子电表数量的显著增加。出于同样原因,SMPC-HbyH再次得到了最低的TP值。

3.5 吞吐量平均数据采集完成时间

对于一些AMI应用(例如需求/响应),平均数据采集完成时间是一个重要度量。图7和图8分别给出了EtoE和HbyH机制的仿真结果。从中可以观察到,对于所有方法,CT值均随网络规模增加而上升。此外还可发现,SV方法无法以60 s的间隔进行电表读数采集。因此,本文运行了另一个仿真,将电表读数采集间隔设为120 s,以分析其对CT的影响。图中使用了-60s和-120s后缀以进行区分。与SV-EtoE/HbyH-60s和SV-EtoE/HbyH-120s方法相比,Pai-EtoE/HbyH和SMPC-EtoE/HbyH完成一轮数据采集的时间更少,这是因为Paillier密码系统和PRNG生成的数据包比SV方案要小得多。数据包增大,将导致TCP根据窗口大小将数据分割为较小的分组,这就增加访问信道进行数据传输时的冲突概率,每次冲突都会增加退避等待时间,从而导致更长的采集完成时间。

图7 EtoE机制下的CT值

图8 HbyH机制下的CT值

与Pai-EtoE/HbyH相比,SMPC-EtoE/HbyH需要更多时间,因为电表需要从网关接收ck,以计算将要从网络中其他电表接收到的子密钥。该程序增加了SMPC-EtoE/HbyH的数据采集完成时间。在比较数据采集机制时,与HbyH机制相比,EtoE完成一轮采集的时间较长,这是因为大量电表要将读数发送至同一个电表(即网关)。同时将读数发送至网关的电表,会造成EtoE机制的退避等待时间比HbyH机制更长。而在HbyH机制中,在中间聚合电表处对电表读数进行聚合,与EtoE机制中采集电表数据的网关相比,这些聚合电表接收相对较少数量的电表读数,由此降低了访问介质的争用,从而减少冲突。

如图7和图8所示,SV-EtoE/HbyH-120s方法能够在120 s内完成数据采集。在两种机制下,60 s和120 s方法均表现出非常相似的趋势,这是因为电表试图同时发送读数,由此会造成相同的延迟。这会导致访问介质上的争用是相同的,产生相同的退避时间。从36节点拓扑至64节点拓扑,SV-EtoE-60s/120s性能优于SV-HbyH-60s/120s。这是因为HbyH机制在中间电表处采用了分组重组程序。PRP为用于EoE机制,因为加密电表读数的大小是固定的,且对于每个电表是相同的。EtoE机制中数据聚合过程会造成网关处的计算开销,在60节点拓扑之后,网络计算开销会超过分组重组程序的开销。因此,在81节点和100节点拓扑中,SV-HbyH-60s/120s性能优于SV-EtoE-60s/120s。

3.6 安全性分析

安全目标1:设mi,i∈{1,2,…,n}为电表i的读数值,该数值在传输之前使用电力企业的公钥(PKUC)进行了加密,即EncPKUC(mi)。

对细粒度电表数据进行网络内聚合,并将得出的数值(cGW)通过网关传递至电力企业。

即使对该数值(cGW)进行解密,也不可能从聚合数据中得到单个电表读数。

这同样适用于SMPC协议,因为所有运算均在隐藏数据上进行(电表读数的分布式子密钥)。在操作过程中,电力企业仅能得到所有电表读数的总和。

安全目标2:智能电能表传递的隐藏数据包并不反映实际电表读数。因此,即使窃听者捕捉到数据包,其也无法正确推导出用户活动。对于PHE或FHE,为得到实际读数,窃听者需要知道仅为电力企业所持有的私钥。对于SMPC协议,窃听者需要知道目标智能电能表生成的作为其他智能电能表的子密钥的n-1个256位随机数。

安全目标3:由于本文使用的协议能够在隐藏数据上执行数据聚合,其不会泄漏实际数值(对执行数据聚合的智能电能表来说也是如此)。

安全目标4:提出的SMPC协议基于网关发送的数据采集请求进行数据采集。由于所有智能电能表在传输数据包时使用身份验证机制,即椭圆曲线数字签名算法(ECDSA),可以通过验证数字签名来确认数据包发送方的身份,且无法在不知道创建签名的私钥的情况下伪造签名。此外,修改数据包内容会使得签名失效,从而提供了数据完整性。即:

{EncPKUC(mi),SigSKi(EncPKUC(mi))}

安全目标5:由于所有数据包均包含时间戳,可以通过检查数据包的时间戳(TS),来确认其是否为当前数据采集轮的数据包。即:

{〈EncPKUC(mi),TS〉,SigSKi(〈EncPKUC(mi),TS〉)}

4 结 语

本文针对AMI网络应用了FHE和安全MPC,提出一个在表示层的协议,以克服分组重组问题,还提出SMPC协议,能够利用HbyH机制执行数据聚合。为了提供安全和隐私保护的通信环境,本文方法实现了几个关键目标,如:所有消息均包含时间戳以防止重放攻击,并通过签名进行消息的身份验证;通过读数加密,或将读数分割为在多项式上计算的子密钥,隐藏了实际电表读数,由此防止窃听者捕获用电信息。

实验结果表明,在两个数据采集机制中,SMPC协议消耗的信道带宽均少于SV方案。SV的数据采集周期较长,使其在带宽使用方面更易被接受。在平均数据采集完成时间上,在两种数据采集机制下,SMPC协议均优于SV方案。特别是在HbyH机制下,两种方法的时间差异较大。

猜你喜欢

电表读数电能表
“0”的读法和要领
电能表的计算分类解析
“蹦叭”跳动电表数
法国人抗议智能电表或监控隐私
停电那点事儿
物理电功率专题练习
例谈高中物理常见读数问题
细说电能表
轻松面对 “电能表
仪器工作原理决定了仪器的读数规则