基于区块链的电力网络安全系统仿真与研究
2023-01-11刘世良
刘世良
(国网青海省电力公司 信息通信公司,青海 西宁 810008)
随着信息和通信技术的不断发展,电力公司和客户[1-2]之间实现了双向通信。智能电表[3-4](smart meters,SM)已广泛应用于电力服务。为了实现最优调度,在用户家中安装了大量的短信息系统,以按需或按计划收集近实时的用电量数据。根据采集到的数据,控制中心可以提供动态电价,用户可以通过改变用电行为从中受益。比如,一些用户在用电高峰时段,如果意识到用电成本过高,就会调整用电行为。此外,还可以根据总用电需求提前制定用电计划。
然而,SM收集的近实时用电数据和用电请求可能会泄露用户的隐私[5-6]。例如,通过分析用户的耗电情况来推断用户的行为,这对用户隐私构成了不可忽视的威胁。此外,用于制定功率计划的功率消耗请求可能会在将来披露用户的活动计划。再如,窃贼可能从电源请求中发现用户何时不在家,并在此时实施盗窃行为。
尽管在智能电网隐私保护方面已经做了许多工作,但仍有一些挑战有待解决。其一是数据聚合[7-8]的信任方的可用性;其二是隐藏用户真实身份和匿名之间的联系[9];其三是身份验证效率较为低下[10]。由于智能电网是一个庞大而复杂的系统,传统的认证机制因计算量大、时延大而不适用于智能电网。
为解决上述问题,笔者提出了基于区块链的电力网络安全系统。该系统能够在缺乏可信第三方进行数据聚合的情况下,在每个时隙随机选择一个用户来聚合所有用户的数据,并将这些数据记录到区块链中以确保消息的完整性。
1 隐私保护数据聚合方案
1.1 系统模型
基于区块链的电力网络安全系统模型如图1所示,其是一个由邻域网(neighborhood area networks,NAN)和广域网(wide area networks,WAN)组成的多层智能电网通信网络。NAN由附近大量的智能电表组成。SM将其仪表读数发送到挖掘节点进行数据聚合,每个组的聚合数据通过广域网发送到中心单元。
图1 基于区块链的电力网络安全系统
根据用户的用电类型将用户分为不同的组。在每个时隙中,根据平均用电量数据选择一个用户作为挖掘节点。挖掘节点负责聚合数据并将这些数据记录到私有区块链中。
密钥管理中心(key management center,KMC)主要负责为用户初始化所有密钥。KMC为每个用户生成多个公钥和私钥,并将公钥作为用户的匿名。然后,通过收集匿名为每个组创建一个布隆过滤器,并将布隆过滤器发送给相应组中的所有用户。
每个组的聚合数据将通过广域网发送到控制中心。控制中心根据聚合的近实时数据绘制电力消耗曲线,用于电力规划和动态定价。
计费中心负责在计费日期到来时,根据每个组的区块链计算每个用户的计费数据。
1.2 系统初始化
KMC负责从一开始就引导整个系统。具体来说,KMC执行以下系统初始化过程。所提方案的执行过程如图2所示。
图2 系统执行过程
(1)密钥生成。密钥生成选取RSA算法,具体过程描述如下:①KMC选择两个大素数p和q,计算n=pq;②选择一个整数e,满足1 每个用户将其ID发送到KMC进行注册,并通过运行RSA算法获取公钥和私钥。每个用户可以获取多对公钥和私钥,并将公钥作为其匿名。 (2)布隆过滤器。布隆过滤器是一种用于快速身份验证的快速查询算法,可以快速确认身份ID在系统中是否合法。根据用电类型将用户分为不同的组,KMC为每个组创建布隆过滤器。系统中布隆过滤器过程描述如下:① KMC设置一个具有θ位的数组;②使用k个哈希函数计算同一组中所有匿名的哈希值;③将索引值等于hi(pk)modθ的映射值设置为1;④KMC将布隆过滤器发送给同一组中的所有用户。 为了对同一组中的其他用户隐藏身份,使用匿名代替用户的真实身份,每个用户可以用多个匿名绑定自己的用电量数据,进一步加强数据安全。 在每个时隙,如15 min,每个用户随机将自己的用电量数据拆分为不同的匿名关联,并在群组中发布自己的用电量数据mi、匿名pki和EKski(mi|t|pki)。其中,EKski(mi|t|pki)表示电量数据mi、时间戳t和匿名pki的串联,且由发送方的私钥ski进行加密。 值得注意的是,分配的数据可能是负数。因此,用户的隐私敏感数据可以在非高峰时间(如午夜)得到保护。此外,每个用户都可以根据实际需要将用电量数据或多或少进行匿名处理。最后,用户将在群组中发布{mi,t,pki,EKski(mi|t|pki)}。 1.4.1 用户匿名可信度 在攻击者伪造用户匿名的情况下,通过零知识证明[11]来验证用户匿名的可信度。当一个用户收到另一个用户发送的{mi,t,pki,EKski(mi|t|pki)}时,其使用发送者的匿名pki来验证签名{mi,t,pki,EKski(mi|t|pki)}。如果{mi,t,pki,EKski(mi|t|pki)}能被pki正确解码,则证明该匿名是可信的。 1.4.2 用户匿名验证 当一个未注册的攻击者构造一个匿名并向系统发送虚假数据时,系统使用布隆过滤器验证用户匿名。对于每个接收到的匿名,接收者将使用零知识证明验证用户合法性。如果所有验证均通过,则证明匿名是合法的。否则,该匿名将视为非法用户,并由接收方删除。 身份认证完成后,所有用户都会确定挖掘节点,并对自己的用电数据进行聚合,将这些数据记录到区块链中。首先,每个用户根据所有接收到的数据计算平均用电量数据。其次,选择数据最接近平均值的节点作为挖掘节点。可能有多个匿名的平均用电量数据与平均值的距离相同,这意味着所有匿名都将是该时隙中的挖掘节点。然而,这种特殊情况并不影响新块的生成,因为每个挖掘节点生成的新块是相同的。在从组中的所有用户收集数据之前,没有人知道平均值的具体数字,因此,恶意攻击用户很难成为挖掘节点。 区块链是一个按时间顺序排列的区块,可以看作是一个复制的状态机。对于每个块,事务在Merkle树中散列。Merkle树的根哈希和前一个块的哈希记录在块头中。由于这些块是通过前一个块的散列来连接的,因此任何想要更改回溯事务的人都必须修改该块和后面的所有块。由于实用终端设备只支持轻量级操作,笔者设计了一个简单的随机选择挖掘节点的解决方案,选择数据最接近时隙平均用电量数据的用户作为挖掘节点。由于在接收到所有用户的数据之前,没有人能够确定平均用电量数据的值,因此可以保证挖掘节点选择的随机性和唯一性。 1.6.1 区块链建立 建立的区块链结构如图3所示。选择挖掘节点后,将用电量数据记录到区块链中,并在该组所有用户中发布,进行消息认证。具体过程描述如下:①利用Merkle树中的挖掘节点对用电量数据进行哈希处理;②挖掘节点将根哈希值、时间戳、前一个块的哈希值、匿名和平均值记录到块头中;③将新块发布给组中的其他用户进行消息认证;④重复上述过程,直至处理完所有节点。 图3 区块建立过程 1.6.2 区块链验证 在接收到新块之后,每个用户开始验证记录的真实性。如果新块中的记录正确,用户将这个块附加到保存在数据集中的区块链上。如果新区块中没有人对记录进行比对,挖掘节点会将用电量数据的总和发送给控制中心。 为了满足智能电网中的实时调度,每个用户只需对自己数据的相关记录进行验证,即可离线进行验证。因此,区块链技术将实现以分散的方式聚合接近实时数据的方法。 控制中心在收到各组用电量数据总和后,进行调度处理,鼓励用户调整用电行为。在每个计费周期(如一周或一个月),每个组的私有区块链将发送到计费中心。在不同时间内动态定价描述为p0,p1,…,pf,计费中心可根据以下公式计算用电费用psum: psum=E0p0+E1p1+…+Efpf 式中:E0,E1,…,Ef表示区块链中记录的不同时隙中的用电量数据。区块链能够保证数据的完整性,因此可以方便地实现准确的计费。 对所提系统的性能进行验证与评估,执行仿真时环境为:服务器为CPU i5的联想工作站,内存32 GB,操作系统为windows10×64;客户端为CPU i5,内存8 GB,操作系统为windows7×64;系统开发环境使用JAVA中Spring框架作为输入来开发架构的工作原型。实验时将布隆过滤器的错误概率设为0.01,假设一个组中的用户数在0到200之间,同时利用多组服务器模拟多层智能电网通信网络,网络总带宽为100 MB。 首先,与传统不采用布隆过滤器的认证方案的时间复杂度进行比较,结果如图4所示,可以看出在身份认证过程中,所提方案的时间复杂度远低于没有布隆过滤器的传统方案。 图4 不同方法时间复杂度对比结果 进一步,将所提方案与PPM-HAD[12]和DG-APED[13]方法在计算成本上进行了比较,结果如图5所示,可以看出所提方案明显优于PPM-HAD和DG-APED,当用户数量为200时,计算量分别减少了86.25%和68.57%。 图5 不同方法计算复杂度对比结果 (1)基于区块链技术对电力网络数据信息管理及安全进行研究与分析,提出了一种基于区块链的电力网络安全系统实现电力数据的隐私保护。 (2)在仿真分析时,研究仅保护网络匿名攻击行为,对于其他网络攻击尚未研究。同时,未来可对DOS攻击、加密算法等进行研究,进一步提升系统性能。1.3 数据收集
1.4 身份验证
1.5 挖掘节点选择
1.6 区块链
1.7 调度和计费
2 仿真与分析
3 结论