TrustWallet安卓版下载

Trust钱包app下载 基于区块链的智能电表身份认证方案

发布日期:2025-05-01 06:50    点击次数:88

0 引言

随着太阳能和风力发电技术的不断发展, 其应用成本也在不断降低, 使得太阳能和风力发电以分布式能源的形式广泛应用于社区和家庭[1].传统的电能消费者开始具备了供电能力, 同时售电市场的改革使各种分布式电源等主体参与电力市场竞争成为未来发展的趋势.智能电表作为用户和电力系统的连接点, 在电力系统中属于终端设备, 具有身份属性, 不仅能够完成用户的身份认证和记录用户的实时用电量, 而且要能够根据用户的实时电量信息进行电能的双向传输, 实现用户和能源系统的有效交易.

而现有的传统电力系统是以大型发电厂为中心, 采用中心式管理和数据集中储存的运行模式, 电力公司具有最高权限.在交易过程中电力公司知晓用户的真实身份, 同时具有用户细粒度的实时用电数据, 攻击者通过获取这些数据, 可以将用户的身份和实时用电数据进行关联, 进而分析出用户的日常用电习惯, 对用户造成一定的潜在危险.除此之外, 现有的中心式能源网络中, 所有数据被集中存储和管理, 一旦遭受攻击, 容易造成数据被篡改或丢失的后果, 不能保证数据的真实性、完整性和有效性.

因此, 本文提出了基于区块链的智能电表身份认证方案, 利用Merkle树原理将用户身份信息进行处理并存储在区块链中, 使用户在身份认证过程中身份信息不被篡改, 同时破坏了用户身份信息和实时电量数据之间的关联性, 在一定程度上解决了目前智能电表隐私保护所面临的问题.区块链通过数据加密、数据链式钩稽、多副本存储和分布式共识等机制, 实现去中心化的分布式数据管理技术[2], 具有信息不可篡改等特点, 解决了传统中心化机构的高成本、低效率和数据存储不安全的问题[3].将区块链技术运用到能源系统中不仅能够提高交易的可信程度, 还能建立一套完整的可追溯交易体系, 对发生的交易进行监管, 避免传统电力市场中存在的假账和错账问题.

1 相关工作

针对智能电表的隐私保护, 研究人员根据不同的应用场景提出了很多解决方案, 目前主要通过身份匿名和数据聚合两种方式实现.

Cheung等[4]采用盲签名的方法, 通过使签名者不知道签名内容而生成认证凭证的方式实现身份认证. Afrin等[5]提出了匿名单元, 建立了不依赖于第三方的电力消费数据匿名机制. Yu等[6]利用环签名实现智能电表的身份认证和用户的隐私保护, 但计算复杂性和通信开销较大. Lee等[7]提出的证书验证方案, 采用可信第三方给智能电表颁发证书的方式进行身份验证, 但不能实现智能电表和电力公司之间的认证. Fan等[8]提出了保护用户隐私的电力数据聚合方案, 能够抵御电网的内部攻击. Li等[9]提出了基于同态加密的数据聚合方案, 利用同态加密的方法保护用户的电力数据隐私.张少敏等[10]利用改进的无证书环签密方案, 使用户身份和电力数据不能关联来达到保护隐私的目的.

Li等人[11]基于Merkle哈希树提出了一种认证和隐私保护方案, 将电量信息划分为若干部分作为Merkle树的叶节点, 内部节点值是从它们的子节点派生的, 最后获得根节点的值, 通过记录关联节点的值来验证节点信息的完整性. Liu等人[12]提出了一种轻量级通信方案, 使用Lagrange多项式公式进行消息发送者认证, 相比Li等人的方案具有更好的性能.但是这两个方案并没有解决一些安全问题. Abbasinezhad等人[13]提出了一个非常轻量级的通信方案, 可以有效地应用于智能电表和临近网关之间的安全双向通信. Saxena等[14]提出了一种基于轻量级云信任权限的集中分布式认证协议, 以分布式方式在智能电网实体之间提供相互认证.

学术界关于区块链应用在能源领域的研究还处于初级阶段, 主要是对其可行性进行了研究[15].张宁等[16]探讨了区块链在能源互联网中的研究框架及可行应用.曹寅[17]介绍了区块链和能源互联网之间的特性匹配情况, 并提出了一些典型的应用场景.李彬等[18]提出了弱中心化管理电力交易的方法, 利用区块链技术, 以智能合约的形式自动执行资金转移和交易信息存储.国内外也有一些企业在尝试将区块链技术应用到能源领域.美国能源公司LO3 Energy与比特币开发公司Consensus Systems在布鲁克林街区为一些用户建立了一个基于区块链技术的可交互电网平台, 具有新能源发电设备的用户在满足自身电力需求的同时, 可以将剩余的电能在平台上进行交易, 而不依赖任何第三方中介[19].欧盟Scanergy项目旨在基于区块链系统实现用户绿色能源的直接交易, 该项目设想在交易系统中每隔一段时间检测一次网络的生产与消费状态, 并向能源的供应者提供一种电子货币作为奖励, 该项目尚未投入实际运行[20].

2 方案设计

本节首先介绍了智能电表工作的系统结构, 然后对系统初始化过程中的密钥分配和智能电表身份注册进行了说明, 最后详细介绍了智能电表的身份认证方法和交易过程.

2.1 系统结构

随着能源互联网的发展和相关技术的应用, 以家庭或社区形式出现的分布式能源将会大量接入到能源系统中, 从而实现能源的双向流通, 这就使得传统的中心式电力系统结构很难适用.因此, 根据现有能源系统的特点和发展趋势, 本方案将系统分为三部分:注册机构(Registration Agencies, RA), 区域管理器(Regional Manager, RM)和智能电表(Smart Meter, SM).系统结构如图 1所示, 注册机构负责对区域管理器和智能电表进行身份注册, 提供智能电表身份认证凭证, 但不参与交易和认证过程.智能电表是用户端的电量记录和控制设备, 一般安装在具有产消电能能力的家庭或社区内, 可以根据用户的发电和用电情况向区域管理器发出购电或售电请求.区域管理器是某个地区的电能管理中心, 可以验证智能电表的身份信息, 并对智能电表的请求进行响应, 也可以根据本地区的电量需求与其他区域管理器进行电量交易.

图 1 系统结构 Fig.1 System model

根据智能电表计算和存储能力差的特点, 智能电表在整个系统中被视为一般结点, 只记录自身和区域管理器之间的交易信息和数据, 并存储在区块链中.而区域管理器具有较强的计算和存储能力, 能够与其他区域管理器和本区域内所有的智能电表进行通信和电量交易, 因此在系统中将其视为特殊结点, 所有区域管理器组成联盟链, 记录全网的交易信息.

2.2 系统初始化

系统初始化包括注册机构对区域管理器的认证和联盟链的组成, 以及对智能电表身份的注册.这里主要考虑智能电表的身份注册和认证, 对区域管理器的身份认证和联盟链的组成过程不进行讨论.

2.2.1 密钥分配

注册机构负责密钥的分发工作, 当区域管理器和智能电表提出注册申请时, 注册机构为其分发主密钥对, 区域管理器和智能电表根据主密钥对计算自身的公钥和私钥, 通过这种方式可以避免密钥的泄露, 具体步骤如下.

区域管理器提出身份认证请求, 注册机构向其发送主密钥对$(MPU_{1} , MPR_{1} )$, 区域管理器选择随机数$\lambda $并结合主密钥对$(MPU_{1} , MPR_{1} )$生成自身公钥$PU_{RM} =f(MPU_1, \lambda )$和私钥$PR_{RM} =f(MPR_1, \lambda )$.

智能电表提出注册申请, 注册机构向其发送主密钥对$(MPU_2, MPR_2 )$.智能电表选择一个随机数$r$并结合主密钥对$(MPU_2, MPR_2 )$生成自身的公钥$PU_{SM} =f(MPU_2, r)$和私钥$PR_{SM} =f(MPR_2 , r)$.

2.2.2 智能电表身份注册

为保护用户隐私, 并保证智能电表身份信息在认证过程中的有效性, 我们利用Merkle树[21]原理对智能电表的注册信息和认证信息进行了处理. Merkle树的主要思想是建立基于单向加密哈希函数的树, 通过相关路径结点的信息可以验证每个叶节点的数据完整性, 下面通过一个例子对Merkle树的原理进行说明.

如图 2所示, 将信息$D_i $的哈希值$H_i =h(D_i )(i=1, \cdots, 8)$作为Merkle树的叶节点,TrustWallet安卓版下载 内部结点的值是其两个子结点的哈希值, Trust钱包官网下载 例如$H_{12} =h(H_1, H_2 )$.依次计算, 最后生成根结点$H_{18} =h(H_{14}, H_{58} )$.通过构建的Merkle树, 每个叶结点数据的完整性都可以通过根节点和相关结点进行验证.当要验证$D_1 $时, 只需获得根节点$H_{18} $和结点$(H_2, H_{34} , H_{58} )$的值, 并依次计算$H_1 =h(D_1 )$, $H_{12}=h(H_1, H_2 )$, $H_{14} =h(H_{12}, H_{34} )$, ${H}_{18}' =h(H_{14}, H_{58} )$, 最后验证计算得到的${H}_{18}' $和原存的根哈希值$H_{18} $是否相同, 只有相同时才能说明数据是正确的.由于只进行哈希计算, 所以验证的成本非常低.

图 2 Merkle树 Fig.2 Merkle-tree

智能电表身份注册过程如图 3所示, 智能电表将真实合法的身份信息用注册机构的公钥加密, 比如用户姓名, 身份证号码, 家庭住址, 手机号等信息, 获得密文$\phi _1 =E_{PU_{RA} } (name, ID, address, number)$.然后智能电表在所有的身份信息中选择某一单一元素用自身公钥进行加密, 比如姓名, 获得密文$\phi _2 =E_{PU_{SM} } (name)$.智能电表将密文$\{\phi _1, \phi _2 \}$发送给注册机构.

图 3 智能电表身份注册 Fig.3 The registration of SM

因为$\phi _2 $是智能电表用自身公钥加密得到的密文, 所以只有智能电表的私钥才能进行解密.注册机构接收到信息$\{\phi _1 , \phi _2 \}$后, 只能用自身私钥$PR_{RA} $对$\phi _1 $进行解密, 得到用户的详细身份信息$(name, ID, address, number)=D_{PR_{RA} } (\phi _1 )$.

注册机构验证智能电表的注册信息, 如果合法, 则分别计算$\phi _1, \phi _2 $的哈希值$H_1 =h(\phi _1 )$, $H_2 =h(\phi _2 )$.将$(H_1, H_2 )$作为叶子结点, 计算得到根哈希值$H_0 =h(H_1, H_2 )$.根据Merkle树原理, 获得$( {H_0, H_1, H_2 } )$中的根哈希值和叶节点中的任意一个值, 就可以验证另一个数据的完整性和有效性.注册机构将$H_0 $返回给智能电表, 并将$( {H_0, H_1 } )$在区域管理器的联盟链中进行广播, 记录在区块链中.

例如, 用户Bob需要进行智能电表身份注册, Bob将详细的身份信息用注册机构的公钥加密$\phi _1 =E_{PU_{RA} } (Bob, 12345678, China, 3)$, 并选择姓名Bob用自身公钥加密作为认证信息$\phi _2 =E_{PU_{SM} } (Bob)$.智能电表将密文$\{\phi _1, \phi _2 \}$发送给注册机构.注册机构对Bob的注册信息进行解密$(Bob, 12345678, China, 3)=D_{PR_{RA} } (\phi _1 )$, 验证注册信息的合法性.若合法, 则分别计算$(\phi _1 , \phi _2 )$的哈希值$H_1 =h(\phi _1 )="E0789A1498A220AD828E54A5491BF8D6"$, $H_2 = h(\phi _2 )="B47F40C3269FD01F8FA402E4EFDC3BD0"$.将$(H_1, H_2 )$作为叶子结点, 计算得到根哈希值$H_0 =h(H_1, H_2 )="DF73C66D2B5977A4F33469C648D7A97F"$.注册机构将$H_0 $返回给智能电表, 并将$( {H_0, H_1 } )$在区域管理器的联盟链中进行广播, 记录在区块链中.

2.3 智能电表身份认证

智能电表在和区域管理器进行交易前, 需要进行身份认证, 如图 4所示.当智能电表向区域管理器发出交易请求时, 首先将自己选取的单一身份认证信息用公钥$PU_{SM} $进行加密${\phi}_2' =E_{PU_{SM}} (name)$, 然后将交易信息$\{{\phi }_2', H_0, T, R\}$用区域管理器的公钥$PU_{RM} $进行加密得到密文$MSG_{SM} =E_{PU_{RM} } ({\phi }_2', H_0, T, R)$.智能电表将密文$MSG_{SM} $发送给区域管理器, 其中$T$是系统时间戳, $R$是交易请求内容.只有在有效时间内的请求才会被响应, 通过添加时间戳可以防止重放攻击.

图 4 智能电表身份认证 Fig.4 Authentication of SM

同样以Bob为例, Bob将自己选取的认证信息用公钥$PU_{SM} $进行加密${\phi }_2' =E_{PU_{SM} } (Bob)$, 然后将$({\phi }_2' , H_0 )$添加在信息中, 用区域管理器的公钥$PU_{RM} $加密后发送给区域管理器, 其中$H_0 ="DF73C66D2B5977A4F33469C648D7A97F"$.区域管理器对密文解密后, 先验证信息的时效性, 然后在区块链中根据$H_0 $找到与之对应的$H_1 =h(\phi _1 )="E0789A1498A220AD828E54A5491BF8D6"$, 然后计算${\phi }_2' $的哈希值${H}_2' =h({\phi }_2' )="B47F40C3269FD01F8FA402E4EFDC3BD0"$.根据$(H_1, H_2 ^\prime )$计算得到根哈希值$H_0 ^\prime =h(H_1, H_2 ^\prime )="DF73C66D2B5977A4F33469C648D7A97F"$, 因为计算得到的根哈希值$H_0 ^\prime $和$H_0 $相同, 所以智能电表身份认证成功.

2.4 交易过程

智能电表身份认证完成后能够和区域管理器进行能源交易, 可以出售剩余的电量, 也可以向区域管理器购买电量.以往的能源交易中, 用户和电力公司的交易数据由电力公司记录并集中保存, 用户对自己的交易数据没有掌控权, 使得交易过程存在不公平性.并且数据集中存储, 很容易受到攻击或被篡改.在本方案中, 智能电表身份认证之后, 和区域管理器的每次交易都由区域管理器在联盟链中进行全网广播, 其他区域管理器将交易记录保存在自己的缓存区块中, 等待获得记账权限后对数据进行验证并生成区块链.

区域管理器不仅能够和智能电表进行能源交易, 不同的区域管理器之间同样能够进行能源交易, 因此, 找到一种合适的共识机制非常重要.比特币中采用的是工作量证明(Proof of Work, PoW)的机制, 通过"挖矿"来获得记账权, 并保证区块链的正确性[22].为了避免PoW带来的算力消耗和能量消耗, 提出了PoS(Proof of Stake, PoS)共识机制, 验证结点随机产生, 并由其生成区块, 通过奖励机制鼓励参与结点成为验证结点.

而在本方案中, 区域管理器组成联盟链, 结点相对较少, 各结点的可信度较高, 因此我们提出采用信誉值的方式获得记账权限.若规定区域管理器联盟链的记账周期为10分钟, 则在一个记账周期内, 由当前信誉值最高的区域管理器获得记账权.区域管理器的当前信誉值由以往信誉值和本周期信誉值计算得出.

每个区域管理器注册之后都具有相同的初始信誉值$C_0 $.区域管理器每次和智能电表进行交易后, 智能电表需对本次交易进行评价, 评价结果会用于区域管理器的信誉值计算.若智能电表对该次交易持认可态度, 则返回的评价结果$C_{approval} $为正值, 智能电表用自身私钥对评价结果进行加密, 并添加系统时间戳$T$, 然后将密文$E_{PR_{SM} } (C_{approval} , T)$发送给区域管理器, 区域管理器将密文和交易记录一起进行全网广播.若智能电表对某次交易结果不认可, 则返回的评价结果$C_{blam} $为负值, 智能电表用自身私钥对评价结果进行加密, 并添加系统时间戳$T$, 然后将密文$E_{PR_{SM} } (C_{blam}, T)$发送给区域管理器, 区域管理器将密文和交易记录一起进行全网广播.智能电表将评价用私钥加密, 使区域管理器不能伪造评价, 添加的时间戳可以防止区域管理器利用过期的评价来代替当前评价.

当一个记账周期到来时, 区域管理器对本周期内的所有评价进行解密, 并根据下式计算本周期所获得的总评价$D$.

$ D=\frac{1}{n}( {k\cdot C_{approval} +(n-k)\cdot C_{blam} } ), \quad k\in \{0, 1, \cdots, n\}. $ (1)

其中: $n$为交易次数; $k$为获得的评价结果为$C_{approval} $的次数.这种取平均值的计算方式使信誉值的计算不受区域内智能电表数量的影响, 适用于不同地区的区域管理器.

设第$i$个记账周期时区域管理器的信誉值为$C_i $, 则当前第$t$个周期的信誉值可由公式(2)计算得出.

$ C_t =\sum\limits_{i=0}^{t-1} {C_i }{\rm e}^{-(t-i)}+D, $ (2)

其中公式(2)的第一项为往期信誉值对当前信誉值的影响值.根据现实生活的规律, 时间越早的事件对当前事件的影响越小, 因此为了减少以往行为对当前信誉值的影响, 我们需要引入一个递减函数, 使得以往信誉值的权重随时间的变化而降低, 比如${\rm e}^{-x}$.因此, 以往信誉值对当前信誉值的影响值由公式(3)计算得出.

$ \sum\limits_{i=0}^{t-1} {C_i } {\rm e}^{-(t-i)}. $ (3)

区域管理器在联盟链中广播自己的当前信誉值, 并对获得最高信誉值的区域管理器的信誉值进行验证.验证通过后, 具有最高信誉值的区域管理器获得本次记账权限, 完成本周期内交易区块的生成, 并能得到一定的奖励.若发现区域管理器的信誉值出现伪造行为, 则取消该结点的记账权.

3 安全性分析

首先, 基于区块链的系统结构, 智能电表拥有了更多的主动权, 同时每笔交易数据被记录在区块链中, 并分布存储在各个结点上, 使数据不能被篡改, 提高了数据的安全性和可靠性.

在用户身份隐私方面, 用户的注册信息被注册机构公钥加密后储存$\phi _1 =E_{PU_{RA} } (name, ID, address, number)$, 只有注册机构用自身私钥才能解密, 外部攻击者不可能获得用户的详细身份信息.智能电表在交易过程中的认证信息$\phi _2 =E_{PU_{SM} } (name)$不同于注册信息, 是注册信息中的单一元素, 并用自身公钥进行加密, 即使被攻击者获取, 也很难精准地对用户进行定位, 有效保护了用户的身份信息.根据Merkle树原理, 注册机构对智能电表的注册信息和智能电表的认证信息进行哈希计算获得根哈希值$H_0 =h(H_1, H_2 )$, 并将$( {H_0, H_1 } )$记录在区块链中, 使得任何一方都不能对智能电表的身份进行修改, 确保了智能电表身份信息的有效性, 使认证过程更加安全可靠.

https://www.scsd2dzdd.com

在身份认证过程中, 若单纯采用密钥进行身份认证, 认证者需要获得信息发送者的真实身份和密钥的对应关系才能完成认证, 这无形中就会使密文内容和发送者的真实身份进行了关联.通过Merkle树对智能电表身份信息进行处理, 认证者不需要获得发送者的任何真实身份信息即可完成认证过程, 避免了信息内容和身份信息之间关联的可能性, 更有效地保护了用户的隐私.

在交易过程中, 注册机构只负责用户身份的注册和存储, 并不参与电能的交易, 不能得到用户的详细用电信息.区域管理器在和智能电表进行电能交易时, 虽然具有相关的电量信息, 但获取的身份认证信息是用户某一单一信息的密文和相关哈希值.因此, 系统中的任何一方都不能将智能电表的有效身份与电量信息进行关联, 有效抵御了内部和外部攻击, 确保用户隐私不被泄露.

区域管理器将每笔交易都在区块链中进行广播, 由信誉值较高的结点进行验证并生成区块, 使交易数据不能被篡改, 同时具有可追溯性, 解决了传统电力系统中数据不安全的问题.采用信誉值共识机制避免了因结点挖矿而造成的资源浪费, 而且区域管理器的信誉值由往期信誉值和当前周期参与交易的智能电表共同决定, 其他结点也能够对每个结点的当前信誉值进行验证, 这增加了结点伪造区块的难度, 保证了区块链的正确性.

智能电表在发送的信息中添加了系统时间戳$T$, 区域管理器接受到信息后首先验证时间戳的有效性, 只有在有效时间内的请求才会被响应, 避免了重放攻击的发生.

本文提出的智能电表身份认证方案和其他方案的安全性对比如表 1所示, 本文提出的智能电表身份认证方案能够抵御电力公司等内部参与者泄露用户隐私, 具有更好的安全性.表中"yes"表示能够抵御此类攻击, "no"表示不能抵御该种攻击.

表 1 安全性对比 Tab.1 Security comparison 4 结论

根据能源系统的发展趋势, 智能电表将具有大量用户隐私数据, 基于区块链的智能电表身份认证方案, 使用户身份信息得到了有效保护, 使内部和外部攻击者不能将用户身份信息和实时电力数据关联.区块链技术的应用使交易过程更加公平和安全, 同时数据分布式存储, 提高了系统的安全性和可靠性.提出的信誉值共识机制有效避免了区块链结点因"挖矿"造成的资源浪费, 使系统能够更加清洁高效地运行.



Powered by TrustWallet钱包官网下载 @2013-2022 RSS地图 HTML地图

Copyright Powered by站群 © 2013-2024