23.09论文笔记8:FPDA: Fault-Tolerant and Privacy-Enhanced Data Aggregation Scheme in Fog-Assisted Smart G

FPDA: Fault-Tolerant and Privacy-Enhanced Data Aggregation Scheme in Fog-Assisted Smart Grid | IEEE Journals & Magazine | IEEE Xplore

FPDA:雾辅助智能电网中的容错和隐私增强数据聚合方案

于2022年4月发布在IEEE物联网期刊。

一.引言

        智能电网这个词在许多地方出现了,如图中所示,它实际上是要把传感,计算,通信,控制以及其他技术贯穿于整个电网中,形成双向的互相反馈的电力流和信息流。目的是为了提高电力系统的经济效益,安全性和稳定性。  

        通过周期性地采集耗电数据,管理人员可以更好地改善智能电网性能,如进行负载预报,窃电检测,故障维修和设备管理等工作。

        但是设备采集的精细用户耗电数据,会严重威胁用户的隐私。如图所示,通过住宅耗电数据,可以很容易地推断用户的日常生活;或者通过电动汽车充放电的数据推断出用户的社交活动和经济状况,会威胁到用户的生命健康和财产安全。综上,这些耗电数据必须得到保护。

那么应当如何兼顾数据的隐私性和功能性?

对于这类数据,当前最常用的方法是隐私保护数据聚合(PPDA)。

智能电表将数据加密后发送给网关或者其他负责聚合的成员,由其聚合后发送给控制中心,控制中心对其进行解密,并获得聚合结果。而为了保护个体数据不被控制中心解密,常用的方法是向其添加盲化因子,聚合过程中盲化因子会被抵消。

但目前使用盲化因子技术的PPDA存在以下几个问题:

有智能电表出错时 无法成功聚合 原因为盲化因子需要组内的所有智能电表提供密文,才能成功抵消。

为了解决这个问题,现有的工作采取了各种措施,但都有或多或少的缺陷。

1.分组进行数据聚合,删除包含故障电表的组,会丢失大量数据。

2.平衡盲化因子,要求所有用户重新提交密文

3.需要可信第三方在线辅助

4.每次故障后需要重新分配密钥份额

为此,本文提出一个支持错误容忍的雾辅助隐私保护数据聚合方案,相比之前的方案还有以下改进。

除了故障电表外,无数据缺失;

只需要节点与部分电表进行交互,降低计算和通信成本。

成功聚合后,密钥份额依然可用;

不需要可信第三方的实时参与。


二.预备知识

首先回顾一下,FESDA方案,使用Paillier同态加密,本方案是在其基础上进行改进的

系统由四种实体组成:

1)受信任的权威TA:其职责是启动Paillier密码系统,并分别为CC和SMs派生私钥;

2)智能电表:每个用户都配备一个SM,收集其耗电数据并在加密后定期将其报告给FN;

3)雾节点:它们负责聚合并将结果转发给CC;

4)控制中心:它使用其解密密钥执行解密。

准备阶段:

1.TA运行Paillier密码系统以获取公钥Kpub =(N; g =(N + 1))和私钥Kpri =(λ;μ)。

λ是p-1和q-1的最小公倍数 μ由于g的选择 解密过程不需要用到

2.它随机选择xi ∈ Z∗N作为SMi的私钥,发送给SMi

3.然后计算x0以满足x0 + n i=1 xi ≡ 0 mod λ。通过安全通道,TA将x0发送给CC。最后,TA计算Ti = H(TS)N·xi mod N2(i = 1, 2,..., n)并将它们转发给CC,其中TS是每个报告周期的时间戳,H是SHA-256散列函数。注意TA需要为在住宅区域的每个SMi在每一个时间段Ts生成Ti。

普通的聚合过程:

加密阶段:

SMi进行加密 :mi为明文信息,ci为密文

聚合阶段:

雾节点计算

解密阶段:

C为添加了盲化因子的聚合密文,需要先消除。

由先前条件可知x0 + i=1,n xi ≡ 0 mod λ 可以解出:

V=

因为g=n+1 根据二项定理

容错聚合:

FN聚合正常用户的密文,并标注缺失用户集合U*

CC根据缺失用户集U* 找到对应的等价密文Ti 并聚合等价密文 然后将其与普通聚合密文相乘,并消除盲化因子。

分析普通密文和等价密文的结构可知, 二者只相差加密部分,盲化因子部分仍可以相乘然后被x0抵消。

可以看出FESDA方案实现了不需要在故障后重新分配密钥的过程,因为CC未公布故障电表的份额,且容错聚合部分不需要额外交互,但经过本文证明,其存在被恶意CC攻击并侵犯个体用户隐私的漏洞。

攻击步骤 :

1. 当其被ui传输给FN时 CC拦截密文ci

2.由于ui在失联用户集中,TA会发送Ti给CC 由于离散对数难题CC无法从Ti中恢复xi。

假如恶意TA计算模n2下Ti的乘法逆元 再与ci相乘就可以抵消盲化因子 从而解得明文

本文给出了模n2下Ti的乘法逆元存在的证明。


三.系统架构

下面是本文FPDA方案的构造

其系统模型以及所假定的攻击者模型与FESDA相同,FNs和CC是诚实但好奇的。此外,SMs是诚实且防篡改的。

在密钥生成过程中,除了发送给SM本身之外,每个私钥会被随机分成两个部分。第一部分交给CC,而不是FESDA中总私钥派生的一次性值。第二部分分成多个份额,分布给不同的SMs。


四.协议构造

而分配份额部分,本文使用了主密钥安全可重用的阈值秘密共享方案

1.设置:P为选择的大素数,p和q是P-1的两个大质数因子 g是GF(P)中阶数为N的生成元,N=pq,g是GF(P)中阶数为N的生成元

2.分享份额:分享方将主密钥S分割,将份额yi发送给参与者

随机选择k-1个系数,构建一个次数为k-1的多项式,令a0为S

yi=f(xi) xi为参与者序号

将份额yi发送给参与者

3.重建:

与普通的阈值秘密共享方案相比,收集者从k或更多用户获得盲化后的份额 r为对时间戳求哈希

由g是阶数为 N的 GF(P)的生成元,

方案细节:

1.系统设置:

根据安全参数k 选择大素数p q使其长度为k  N=pq g=N+1 P = α · N + 1

α是一个小整数

Kpub = (N, g, α, H) Kpri = (λ, μ)

2.实体注册:

SM CC在TA中注册 选择xi为SMi的私钥 计算x0 =

为CC私钥 对于私钥xi 拆分成两部分 满足xi=xi1+xi2 从同一住宅区随机选择n*个用户 ,通过使用扩展shamir阈值秘密共享,将xi2分成n份xi2j  j=(1,n)发送给对应的uj

将配对的(ui,Ui)发送给FN 也就是某个电表它的第二部分私钥是被哪个集合保管。

对于每个用户ui和对应时间序列Tk TA计算

发送给FN

3.报告阶段:

SM计算

4.聚合阶段:

FN同样标记失联用户集U* 如果其不为空 则对于其中的每个ui,根据之前的配对(ui,Ui),向拥有失联用户第二密钥份额的电表集合发送请求。

收到请求后,uj需要确认SMi故障后,返回

 收集到前k个份额后 FN计算:

聚合密文

发送C和丢失用户集合U*给CC

5.解密阶段:

如果U非空 计算否则

1) 第二部分等效密文的重建:

2) 聚合密文的解密:

五.安全性分析

正确性:成功恢复概率:

假设SMs的故障概率独立且相同,为β。只要有k个或更多的SMs在线且愿意诚实提供相应的份额,第二个部分等效密文就可以正确重建

六.总结

计算成本以每个SM加密、FN聚合和CC解密所需的时间来衡量。如果所有用户都成功提交,本方案与FEDSA完全相同。因此,它们的计算成本是完全一致的。该图显示了整体数据聚合的计算时间。在不同数量的SMs下提供了加密、聚合和解密的时间消耗。实验结果显示,聚合时间与SMs的数量成正比,而解密时间和每个SM的平均加密时间波动较小。

可以在表中看到详细的通信成本和存储成本。大多数处理用户故障的计算和通信开销发生在一个雾计算网络中,而SMs计算和通信成本较低,符合其资源受限的特性。

假设SMs的故障概率是独立且相同分布的,它们被假设为1%,2%,5%和10%。对于不同的阈值(13,20)和(3,5),本文计算了所有SMs生成其份额所用的时间,FN执行秘密重建和聚合所用的时间,以及CC解密不同数量的SMs下的聚合结果所用的时间。图5显示,总的计算成本随着增加更多的SMs而大致线性增长。阈值和更高的故障概率越大 处理用户故障就需要越多的时间。

最后本文将其方案与几个相关的容错方案[1]、[4]、[9]–[12]在表中的一些重要特性进行比较。

F1指的是方案是否需要在线TA。

F2表示聚合结果是否与正常用户的消耗之和完全相等。

F3指的是方案是否对个别用户的数据进行隐私保护。

F4表示当用户失败时方案是否需要与TA进行交互。

F5表示SMs的消息在传输过程中是否未经授权被更改或修改。

F6表示密文是否确实来自所声明的实体。使用身份验证或签名等技术实现,和FESDA方案相同。

F7和F8分别表示是否会检测到FDI攻击和重放攻击。

F9表示为处理当前用户故障提供的信息是否会影响先前密文的保密性。

F10和F11是采取什么措施以及由谁执行。

本方案不需要更新份额的情况下构建等效密文,由雾节点和有限数量的电表执行。

F12和F13是所选方案的主要优点和缺点。

FPDA可以重建一个等效密文,以恢复系统免受用户故障的影响,而且无需更新份额或中央TA的帮助。此外,计算和通信仅涉及FN和有限数量的用户。因此更加高效和实际。

Scikit-opt是Python中一个用于求解优化问题的库,其中包含了求解旅行商问题的算法。旅行商问题(TSP)是一个经典的组合优化问题,它的目标是在给定的一组城市和城市之间的距离矩阵下,找到一条最短的路径,使得每个城市都被恰好访问一次,最后回到起点城市。 在Scikit-opt中,可以使用遗传算法、模拟退火、蚁群优化等算法来求解TSP问题。以下是使用遗传算法求解TSP问题的示例代码: ```python from sko.GA import GA_TSP import numpy as np # 城市坐标 coordinates = np.array([[16.47, 96.10], [16.47, 94.44], [20.09, 92.54], [22.39, 93.37], [25.23, 97.24], [22.00, 96.05], [20.47, 97.02], [17.20, 96.29], [16.30, 97.38], [14.05, 98.12], [16.53, 97.38], [21.52, 95.59], [19.41, 97.13], [20.09, 94.55], [22.55, 95.09], [24.38, 97.03], [25.23, 98.12], [25.53, 97.24], [22.00, 94.10], [24.05, 95.10], [23.09, 96.09], [25.23, 96.08], [24.38, 94.03], [22.53, 93.09], [20.47, 93.48]]) # 城市距离矩阵 distance_matrix = np.zeros((len(coordinates), len(coordinates))) for i in range(len(coordinates)): for j in range(len(coordinates)): distance_matrix[i][j] = np.sqrt(np.sum(np.square(coordinates[i] - coordinates[j]))) # 定义TSP问题的适应度函数 def tsp_func(solution): return sum([distance_matrix[solution[i-1]][solution[i]] for i in range(len(solution))]) # 定义遗传算法对象 ga_tsp = GA_TSP(func=tsp_func, n_dim=len(coordinates), size_pop=50, max_iter=500, prob_mut=0.1, prob_crossover=0.9) # 运行遗传算法求解TSP问题 best_solution, best_fitness = ga_tsp.run() # 输出最优解和最优适应度值 print('最优解:', best_solution, '最优适应度值:', best_fitness) ``` 在上面的代码中,我们首先定义了一组城市的坐标和城市之间的距离矩阵。然后定义了TSP问题的适应度函数,它的返回值是从起点出发,经过所有城市一次后回到起点的路径长度。接着创建了一个GA_TSP对象,并设置了算法参数。最后运行遗传算法来求解TSP问题,并输出最优解和最优适应度值。 需要注意的是,这里的遗传算法只是其中一种求解TSP问题的算法,Scikit-opt中还包含了其他优化算法可以用来求解TSP问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值