1.本发明涉及一种基于联盟链和联邦学习的用户窃电行为检测方法及系统,属于区块链和联邦学习技术领域。
背景技术:2.长期以来,电网中的窃电漏电行为难以根除,不仅损害相关电力公司的利益,而且危及周边人民的生命财产安全,危害电网的稳定传输。传统的防窃漏电举措不仅需要巨大的人力物力资源成本,而且收效甚微。为此已有许多研究通过机器学习算法来构建用电异常检测模型,可以高效准确地对相关用户的日常用电方式进行检测。然而,传统的机器学习方法通常需要大量的有效数据来训练算法模型,而实际情况下,部分电力公司由于设备落后,终端报警误报漏报等原因导致训练的模型性能较差,无法达到上线运行的标准。一般采取将不同电力公司的数据收集到数据中心的方法来解决该问题,但这不仅造成大量的通信开销,还会引发对于数据隐私问题和安全问题的广泛担忧。
技术实现要素:3.为了克服传统窃电检测模型训练所采用的“数据收集”方法的弊端,本发明提供一种基于联盟链和联邦学习的用户窃电行为检测方法及系统模型。
4.为解决上述技术问题,本发明所采用的技术方案如下:
5.一种基于联盟链和联邦学习的用户窃电行为检测方法,参与联邦训练的各参与方、代理节点为同一联盟链的不同节点,包括如下步骤:
6.1)各参与方作为联盟链peer节点通过提交组织认可的合法身份凭证进入系统;
7.2)初始全局模型参数信息写入创世块,各参与方响应训练;
8.3)密钥管理机构生成门限同态密钥对并分发;
9.4)被选中的参与方下载全局模型并通过本地优化策略迭代,加密后将密文发送给代理节点;
10.5)满足门限阈值的代理节点集群联合恢复出解密密钥,并调用智能合约执行两阶段聚合,结果共识后上链;
11.6)模型更新全局迭代满足条件之后,全局训练结束,窃电检测模型更新。
12.7)客户端提交用户一段时间内的用电数据记录作为窃电检测模型的输入,窃电检测模型输出其是否是窃电用户。
13.步骤6)中,若经过对当前全局模型性能的检测,未满足所述模型更新条件,返回步骤4)的本地训练步骤,直到当前全局模型性能的检测的结果满足模型更新条件。
14.在上述步骤1)中,只有联盟链中的peer节点需要通过身份凭证向系统注册,代理节点在联盟链中作为super节点,具有写权限,由各组织选择共同授权的节点担任,执行区块链的共识机制,具有链上记账的权限。代理节点并不完全可靠,也可能存在掉线等风险。
15.上述步骤2)中,在系统初始化阶段,初始全局模型参数信息会作为第一笔交易信
息写入创世块;在后续窃电检测模型更新的初始化阶段,直接以上一版本的最终模型作为新一轮版本训练的初始全局模型,将模型更新条件的训练参数打包入新的区块,各参与方响应训练。
16.上述步骤3)中,密钥管理机构生成的密钥对是基于paillier的门限变体算法生成的,密钥管理机构需要将公钥广播给所有的peer节点,并将私钥份额分别分发给各代理节点,之后下线。
17.上述步骤4)包括:
18.4.1)每轮按照一个固定的比例c从peer节点集群中选择参与方;
19.4.2)本地训练中的本地优化策略,包括优化方法、本地迭代次数和本地学习率等可以连同初始全局模型一并从区块链中下载;
20.4.3)peer节点依照本地优化策略训练完本地数据集之后得到本地模型更新,利用密钥管理机构下发的公钥采用paillier算法的门限变体对本地模型更新进行加密;
21.4.4)加密之后的密文发送给任一代理节点。
22.上述步骤5)中,5.1)两阶段聚合包括,在预聚合阶段,由各参与方的本地样本数加权,得到预聚合全局模型;在正式聚合阶段,权重分为两部分,第一部分同样根据参与方的本地样本数加权,第二部分根据预聚合阶段的全局模型密文与每个本地模型密文之间的欧氏距离加权;5.2)结合门限paillier变体方法,在假定系统内诚实且稳定的节点数量的基础上,设定一个门限阈值,只有收集到的私钥份额数超过该门限值才可以恢复解密密钥;5.3)代理节点对解密后的全局模型进行打包,并在代理节点内部进行raft共识,将共识成功的交易块添加到所述区块链的末端。
23.上述步骤6)中,每轮全局模型生成之后,代理节点需要对照链上所记录的模型更新条件对模型进行检测,如果满足模型更新条件,则全局训练结束;代理节点在将交易块添加到区块链末端之后,加上训练结束的标志,并为其添加新的窃电检测模型版本,作为下一次训练的初始模型。
24.上述步骤7)中,作为窃电检测模型的输入,客户端向系统提交窃电检测请求,可以选择提交某个用户一段时间内的用电数据记录,也可以批量输入一批用户的用电数据。由代理节点收集客户端的检测请求,并利用当前最新版本的模型进行检测,模型输出其是否是窃电用户,代理节点将检测结果返回给客户端。
25.一种基于联盟链和联邦学习的用户窃电行为检测系统,包括:
26.peer节点:拥有实际用电数据的第一实体作为训练实体参与横向联邦训练,在区块链中具有读取链上的数据的权限;每一轮从代理节点处下载全局模型之后,利用本地数据进行迭代训练,并利用门限paillier算法加密训练后的本地模型参数,加密之后的密文发送给任一代理节点,如此循环迭代直到全局模型满足模型更新条件;
27.代理节点:第二实体收集各peer节点提交的模型更新密文并联合解密,执行模型密文聚合过程;
28.组织:第三实体组织第一实体参与系统模型的训练,负责peer节点在区块链中的准入。第二实体须通过系统中的组织共同授权;密钥管理机构:第四实体负责生成密码算法所需的密钥对并下发;
29.系统初始化生成的全局模型结构和本地迭代策略写入创世块,后续的迭代轮训练
初始化则只需要添加本地迭代策略,密钥管理机构生成后续密码算法所需的密钥对,公私钥分别下发;每一轮选择一定比例(本地迭代策略中设置的参与方比例)的peer节点进行本地训练,被选中的节点按照下载下来的当前全局模型以及本地数据集得到新一轮的本地模型更新,利用分发的公钥进行加密并发送给代理节点;代理节点调用智能合约先后执行两阶段聚合算法和解密算法,得到当前轮的全局模型,其中解密密钥须得有超过门限阈值个代理节点提供私钥份额方可恢复;重复执行从本地训练到全局聚合的步骤,直到所得全局模型满足模型更新条件,训练结束,将新版本的全局模型标记记录到区块链中;在执行检测任务时,客户端向系统提交用户一段时间内的用电数据记录作为窃电检测模型的输入,代理节点利用当前最新版本的模型进行窃电检测,并将模型输出其是否是窃电用户的结果返回给客户端。
30.上述系统的四个实体中:
31.1)第一实体和第二实体主要承担在模型训练阶段的横向联邦训练任务,并分别作为联盟链中的peer节点和super节点,分别具有读权限和读写权限。第二实体执行区块链中的共识算法。
32.2)第三实体负责给予第一实体系统的准入权限,并且联合对第二实体进行授权。
33.3)第四实体负责基于paillier的门限变体算法执行系统中的密码算法初始化,密钥管理机构将公钥广播给所有的peer节点,并将私钥份额分别分发给各代理节点。
34.上述系统包含模型训练过程和窃电检测过程,两个过程互不冲突。
35.上述系统的初始化阶段中,全局模型结构和本地迭代策略被写入创世块,在后续窃电检测模型更新时,以上一版本模型作为初始模型,再添加本地迭代策略,如每轮选定的peer节点参与比例c。训练初始化结束后,peer节点对本次训练进行响应。
36.上述系统训练过程的本地训练阶段包括:
37.1)按照区块链上的本地迭代策略中的比例c随机从peer节点集群中选定每轮参与训练的节点;
38.2)被选中的参与方首先从区块链中下载本地优化策略,包括优化方法、本地迭代次数和本地学习率,继而依照本地优化策略训练本地数据,并通过paillier算法的门限变体加密得到的模型参数,密文发送给任一代理节点。
39.上述系统训练过程的两阶段聚合阶段包括:
40.1)在预聚合阶段,采用联邦平均算法(fedavg),即聚合权重与参与方的本地样本数呈正相关,由此得到预聚合全局模型;
41.2)在正式聚合阶段,聚合权重分为两部分,第一部分与参与方的本地样本数呈正相关,第二部分与预聚合阶段的全局模型密文同每个本地模型密文之间的欧氏距离呈负相关,结合两部分共同加权。
42.得到聚合模型后,代理节点执行联合解密,根据门限paillier变体方法的特性,联合解密的代理节点数需要超过门限值才可以成功恢复解密密钥;解密后的全局模型被打包为一个交易,在代理节点内部进行raft共识,共识成功的交易块被添加到所述区块链的末端。
43.上述系统训练过程的全局检测阶段包括:
44.1)代理节点需要对每轮生成的全局模型进行检测,若满足链上所记录的模型更新条件,则全局训练结束;代理节点将新生成的交易块添加到区块链末端之后,加上训练结束
的标志,并记录新的窃电检测模型版本号,作为下一次训练的初始模型。
45.2)若未满足所述模型更新条件,返回上述的本地训练步骤,直到当前全局模型性能的检测的结果满足模型更新条件。
46.上述系统的窃电检测过程中,系统接收客户端提交的窃电检测请求,包括某个用户或者一批用户一段时间内的用电数据记录;由代理节点收集客户端的检测请求,并利用当前最新版本的窃电检测模型进行检测,代理节点将检测结果返回给客户端。
47.通过执行本发明,可以打破各电力公司的数据孤岛,在广泛收集数据进行联邦训练的同时保障了训练过程的安全性,并可以实现用户窃电检测模型可持续的迭代和更新。
48.本技术中所用符号及定义下:peer节点表示为pi,其所拥有的数据集样本数每轮选择的peer节点比例为c;代理节点表示为pri,代理节点总数为nr,诚实且稳定代理节点的数量为t。e为本地迭代次数,η为本地学习率;解密需要的门限值k=n
r-t+1;在第l轮,全局模型为gw
l
,pi的本地模型为基于样本数的聚合权重为ws,基于模型实际性能的权重为w
p
。加密算法中的公钥为pk,私钥为
49.本发明未提及的技术均参照现有技术。
50.本发明提供的基于联盟链和联邦学习的用户窃电行为检测方法及系统模型,各参与方可以在数据不出本地的情况下参与检测模型的训练,既可以获得具有超越本地单独训练的性能的模型,又可以兼顾本地数据的隐私性;与此同时,联盟链可以在一定程度上对节点的准入进行筛选,并充当模型的不可篡改记录账本;进一步地,为了防止敌手通过本地模型更新推测出样本中的敏感信息,对各参与方提交的本地模型进行加密,并设计门限密码算法防止代理节点掉线、勾结等恶意行为;两阶段模型聚合算法还可以更好的评估各本地模型的性能匹配相应的权重,从而规避较差本地模型对全局模型训练进程的影响。
附图说明
51.图1为本发明基于联盟链和联邦学习的用户窃电行为检测系统模型的示意图;
52.图2为本发明基于联盟链和联邦学习的用户窃电行为检测方法的流程图;
53.图3为本发明仿真中所采用的一种可选的联邦学习模型(cnn)实施例;
54.图4为本发明与基线方法fedavg实验的对比结果;
具体实施方式
55.为了更好地理解本发明,下面结合实施例进一步阐明本发明的内容,但本发明的内容不仅仅局限于下面的实施例。
56.需要说明的是,在本发明的描述中,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性。
57.一种基于联盟链和联邦学习的用户窃电行为检测方法,用如图1所示的联邦学习系统,参与联邦训练的各参与方、代理节点为同一联盟链的不同节点,
58.本发明实施例提供了一种基于联盟链和联邦学习的用户窃电行为检测系统,如图1所示,参与联邦训练的各参与方、为同一联盟链的不同节点,由联盟链中的智能合约代替传统联邦学习系统中的server端,系统模型中的实体包括:
59.peer节点:拥有实际用电数据的第一实体作为训练实体参与横向联邦训练,在区块链中具有读取链上的数据的权限;每一轮从代理节点处下载全局模型之后,利用本地数据进行迭代训练,并利用门限paillier算法加密训练后的本地模型参数,加密之后的密文发送给任一代理节点,如此循环迭代直到全局模型满足模型更新条件;
60.代理节点:第二实体收集各peer节点提交的模型更新密文并联合解密,执行模型密文聚合过程;
61.组织:第三实体组织第一实体参与系统模型的训练,负责peer节点在区块链中的准入。第二实体须通过系统中的组织共同授权;密钥管理机构:第四实体负责生成密码算法所需的密钥对并下发;
62.系统初始化生成的全局模型结构和本地迭代策略写入创世块,后续的迭代轮训练初始化则只需要添加本地迭代策略,密钥管理机构生成后续密码算法所需的密钥对,公私钥分别下发;每一轮选择一定比例(本地迭代策略中设置的参与方比例)的peer节点进行本地训练,被选中的节点按照下载下来的当前全局模型以及本地数据集得到新一轮的本地模型更新,利用分发的公钥进行加密并发送给代理节点;代理节点调用智能合约先后执行两阶段聚合算法和解密算法,得到当前轮的全局模型,其中解密密钥须得有超过门限阈值个代理节点提供私钥份额方可恢复;重复执行从本地训练到全局聚合的步骤,直到所得全局模型满足模型更新条件,训练结束,将新版本的全局模型标记记录到区块链中;在执行检测任务时,客户端向系统提交用户一段时间内的用电数据记录作为窃电检测模型的输入,代理节点利用当前最新版本的模型进行窃电检测,并将模型输出其是否是窃电用户的结果返回给客户端。
63.在一可选实施例中,第一实体和第二实体作为模型训练阶段的横向联邦训练任务的主要承担者,并分别作为联盟链中的peer节点和super节点,分别具有读权限和读写权限。第二实体执行区块链中的共识算法。
64.在一可选实施例中,第三实体负责给予第一实体系统的准入权限,并且联合对第二实体进行授权。
65.在一可选实施例中,第四实体负责基于paillier的门限变体算法执行系统中的密码算法初始化,成功系统模型训练过程中所需的公私钥对,其中私钥被拆分为与代理节点数等量的份额。密钥管理机构将公钥广播给所有的peer节点,并将私钥份额分别分发给各代理节点。
66.在一可选实施例中,上述系统包含模型训练过程和窃电检测过程,两个过程互不冲突。
67.在一可选实施例中,系统首先开始模型训练过程,全局模型结构和本地迭代策略在上述系统的初始化阶段被写入创世块。一旦当前版本的窃电检测模型无法满足检测需求,或检测成功率降低,则重新开始联邦训练初始化。后续的训练初始化阶段,以上一版本模型作为初始模型,再添加本地迭代策略,如每轮选定的peer节点参与比例c,优化方法,本地迭代次数等。训练初始化结束后,peer节点对本次训练进行响应。
68.在一可选实施例中,本地训练按照区块链上的本地迭代策略中的比例c随机从peer节点集群中选定每轮参与训练的节点。被选中的参与方首先从区块链中下载本地优化策略,包括优化方法、本地迭代次数和本地学习率,继而依照本地优化策略训练本地数据,
多次迭代得到新一轮的本地模型参数。peer节点通过paillier算法的门限变体加密得到的模型参数,密文发送给任一代理节点。
69.在一可选实施例中,上述系统训练过程的两阶段聚合包括预聚合阶段和正式聚合阶段:在预聚合阶段,采用联邦平均算法(fedavg),即聚合权重与参与方的本地样本数呈正相关,由此得到预聚合全局模型;在正式聚合阶段,聚合权重分为两部分,第一部分与参与方的本地样本数呈正相关,第二部分与预聚合阶段的全局模型密文同每个本地模型密文之间的欧氏距离呈负相关,两部分等比例共同加权。
70.得到正式聚合的全局模型密文后,代理节点通过提交汇总私钥份额进行联合解密,根据门限paillier变体解密算法的必要条件,所收集的私钥份额数需要超过门限值才可以成功恢复解密密钥;
71.解密后的全局模型被打包为一个交易,在代理节点内部进行raft共识,共识成功的交易块被添加到所述区块链的末端,以供下一轮参与方读取。
72.在一可选实施例中,代理节点需要对每轮生成的全局模型进行检测,若满足链上所记录的模型更新条件,则全局训练结束;代理节点将新生成的交易块添加到区块链末端之后,加上训练结束的标志,并记录新的窃电检测模型版本号,作为本次训练的最终模型。
73.若未满足所述模型更新条件,返回上述的本地训练步骤,如此直到当前全局模型性能的检测的结果满足模型更新条件。
74.在一可选实施例中,在系统的窃电检测过程中,系统接收客户端提交的窃电检测请求,包括某个用户或者一批用户一段时间内的用电数据记录;由代理节点收集客户端的检测请求,并利用当前最新版本的窃电检测模型进行检测,代理节点将检测结果返回给客户端。
75.如图2所示,基于联盟链和联邦学习的用户窃电行为检测方法包括:
76.步骤s1:各参与方作为联盟链peer节点通过提交组织认可的合法身份凭证进入系统。
77.在一可选实施例中,基于联盟链的准入机制,各peer节点第一次加入系统需要提交自己的身份凭证来注册成为区块链中的合法节点,这个凭证需要由组织为满足条件参与训练的peer节点准备,这将一定程度上减少恶意敌手加入系统的可能。如果一个新的组织需要加入系统,则需要向系统提供整个组织的证书链及所携带各peer节点的身份凭证。
78.在一可选实施例中,各peer节点加入系统后,作为训练实体参与横向联邦训练,他们拥有大量用户用电数据,可以训练本地模型并上传,任一方都无法获取其他参与方具体的数据样本信息;他们在区块链中从属于自己的组织,且只能读取区块链上的数据,没有记账权。每一轮从代理节点处下载全局模型之后,利用本地数据进行迭代训练,并利用门限paillier算法加密训练后的本地模型参数,加密之后的密文发送给任一代理节点,如此循环迭代直到全局模型满足收敛条件。
79.在一可选实施例中,只有所述联盟链中的peer节点需要通过身份凭证向系统注册,代理节点在联盟链中作为super节点,具有写权限,由各组织选择共同授权的节点担任,执行区块链的共识机制,具有链上记账的权限。代理节点并不完全可靠,也可能存在掉线,勾结等威胁。
80.在一可选实施例中,系统中的组织不执行具体的联邦学习任务,但作为联盟链中的区域划分单元,负责组织所在区域内的peer节点参与窃电检测模型的训练,并授予其参与到系统内的准入凭证。一旦所管辖区域内的peer节点存在“搭便车”等不诚信行为,将予
以追责。
81.步骤s2:初始全局模型等参数信息写入创世块,各参与方响应训练;
82.在一可选实施例中,由于整个窃电检测模型可能需要不断更新,所以每一次训练都可以以上一次的最终全局模型作为初始模型。在系统第一次训练开始前,初始化的全局模型gw0,终止条件,本地迭代次数e,每轮的参与方比例c以及第一轮参与训练的参与方id集合等作为第一笔初始交易写入创世块。其中第一次参与训练的参与方id由代理节点依据参与方的参与比例c调用随机选择算法生成。
83.在一可选实施例中,在后续窃电检测模型更新的初始化阶段,可以直接以上一版本的最终模型作为新一轮版本训练的初始全局模型,因此只需要提供模型更新条件等训练参数,将其打包入新的区块。
84.在一可选实施例中,参与方加入训练时需要调用智能合约中的party_confirm()函数提交自己的身份标识、本地用户数、参与训练的总样本数等,并签名作为参与训练的确认。每个组织为自己的peer节点所提交的数据背书。
85.步骤s3:密钥管理机构生成门限同态密钥对并分发;
86.在本实施例中,密钥管理机构需要执行paillier的阈值变体算法的密钥生成算法,在将密钥对下发之后,立即下线。
87.在本实施例中,密钥管理机构生成同态加密算法所需的公私钥,将公钥广播给所有的peer节点,令系统内代理节点数为nr个,则将私钥拆分为份额分发给代理节点。假设系统可以容忍的最小诚实且稳定代理节点的数量为t。则解密阈值为k=n
r-t+1。
88.步骤s4:被选中的参与方下载全局模型并通过本地优化策略迭代,加密后将密文发送给代理节点;
89.在本实施例中,在第l轮,被选中的参与方pi从区块链中下载当前轮的全局模型,并根据本地数据集进行训练,假设本地优化策略采用随机梯度下降算法,令损失函数为fi(w),若本地迭代e次,则本地迭代过程可以表示为
90.其中η为本地学习率。
91.e次迭代后得到本轮的模型参数为
92.pi使用密钥管理机构下发的公钥pk调用paillier算法的阈值变体对得到的本地模型更新进行加密:加密后的密文发送到任一代理节点pri。
93.在一可选实施例中,参与方在对本地模型更新进行加密时,采用paillier算法的阈值变体算法,其中,
94.keygen()
→
{n,si|i∈{1,2,
…
nr}}选取整数n满足n=pq,m=p
′q′
其中p,q为满足如p=2p
′
+1,q=2q
′
+1。明文空间是zn。选取d=0modm,d=1modn。从{0,
…n×
m-1}中选取ai构造多项式a0=d,其中0<i<k,k为解密门限值。若共有l
′
个解密实体,则第i个实体的私钥份额为si=f(i),公钥为n,g,其中g=1+n
95.encrypt(m)
→
c=g
mrn
modn2,随机选取加密得到明文m的密文。
96.每个解密实体通过密文计算解密份额其中δ=l
′
!,若收集到超过k个解密份额,令解密份额集合为s,则可计算其中由秘密共享算法得:
[0097][0098]
所以若设函数则:
[0099]
其中
[0100]
该算法所具有的同态性如下证明可得,设明文m1,m2[0101][0102]
步骤s5:满足门限阈值的代理节点集群联合恢复出解密密钥,并调用智能合约执行两阶段聚合,结果共识后上链。
[0103]
在本实施例中,每个代理节点收集到模型更新密文之后,向其他代理节点报告自己收到的模型更新数,并根据上传的peer节点id在链上查询其拥有的本地数据集的样本数,然后联合所有在线代理共同签名调用智能合约的two_stage_aggr()进行模型聚合。
[0104]
在一可选实施例中,执行两阶段聚合算法:
[0105]
在预聚合阶段,由聚合时各参与方的权重按照本地样本数加权其中n
p
为本轮选取的参与方id集合。为各参与方提交的本地样本数,认为样本数多的参与方具有更高的可能性训练出较好的模型,设置样本权重聚合的算法为
[0106]
在正式聚合阶段,为筛选出恶意参与方或未完全训练的参与方,将聚合时各参与方的权重分为两部分,第一部分和预聚合阶段相同,按照可以预估模型性能的本地样本数加权。第二部分按照模型实际性能加权,计算每个模型密文与预聚合的模型密文之间的欧式距离在系统内大部分都是诚实节点的前提下,可以认为距离预聚合模型越远的参与方具有较大的可能性是恶意参与方,或训练未完全的参与方,可能对全局模型的训练过程产生消极影响。因此将该距离的倒数作为权重第二部分的加权依据总的权重为因此最终的聚合算法为:
[0107]
[0108]
在本实施例中,各代理节点需要联合调用解密合约对得到的全局模型密文进行解密,调用该合约需要集合至少k=n
r-t+1个代理节点的私钥份额才能恢复出解密密钥,因此代理节点pri需要根据私钥份额ski计算解密份额并作为合约的输入。解密合约执行paillier算法的阈值变体的decrypt()函数解得全局模型的明文。
[0109]
在一可选实施例中,正式聚合后的全局模型在代理节点之间采用raft机制进行共识确认,其中,raft共识是一种比较适用于联盟链的共识算法。参与共识的节点有三种状态,即leader,follower和candidate。为了在分布式系统中实现同步,raft共识将时间以“任期”分段,在一个任期内有一个leader,负责该时间段内的记账。在区块链系统中所应用的raft共识记账过程包括以下过程:
[0110]
①
leader选举:当一个follower发现一个任期已到,则认为leader失效,其状态就可以转换为candidate,对自己投票,若获得超过半数节点支持则选举成功成为leader;否则选举失败。
[0111]
②
共识记账:leader将收到的命令写入本地日志,此时命令状态为uncommitted,接着向所有的follower同步日志;等到所有的节点都将该命令写入日志,leader就提交命令,并将结果返回。其他节点收到命令后,状态机执行该命令,所有的节点日志都保持了一致。
[0112]
在本实施例中,每一轮正式聚合后的全局模型在被写入区块链之后,代理节点需要对照链上所记录的模型更新条件对模型进行检测。
[0113]
若在验证完成之后,模型更新条件已经满足,则执行如下步骤:
[0114]
步骤s6:模型更新全局迭代满足条件之后,全局训练结束,窃电检测模型更新。
[0115]
在本实施例中,如果满足模型更新条件,则全局训练结束;所述代理节点在将交易块添加到区块链末端之后,需要加上训练结束的标志,并为其添加新的窃电检测模型版本。
[0116]
在本实施例中,如果未满足模型更新条件,则代理节点还需要调用步骤s2中的随机选择算法重新按照参与方比例c选定下一轮参与方的id。然后重复迭代进行步骤s4-s5,直到满足模型更新条件。
[0117]
步骤s7:客户端提交用户一段时间内的用电数据记录,作为窃电检测模型的输入,模型输出其是否是窃电用户。
[0118]
在本实施例中,利用当前系统中最新版本的模型进行窃电行为检测。作为窃电检测模型的输入,客户端向系统提交窃电检测请求,可以选择提交某个用户一段时间内的用电数据记录,也可以批量输入一批用户的用电数据。由代理节点收集客户端的检测请求,并利用当前最新版本的模型进行检测,模型输出其是否是窃电用户,代理节点将检测结果返回给客户端。
[0119]
在本发明提供的基于联盟链和联邦学习的用户窃电行为检测方法及系统中,各参与方可以在数据不出本地的情况下参与检测模型的训练,既可以获得具有超越本地单独训练的性能的模型,又可以兼顾本地数据的隐私性。与此同时,联盟链可以在一定程度上对节点的准入进行筛选,并充当模型的不可篡改记录账本。进一步地,为了防止敌手通过本地模型更新推测出样本中的敏感信息,对各参与方提交的本地模型进行加密,并设计门限密码算法防止代理节点掉线、勾结等恶意行为。两阶段模型聚合算法还可以更好的评估各本地模型的性能匹配相应的权重,从而规避较差本地模型对全局模型训练进程的影响。
[0120]
应用例
[0121]
本实施采用图1所示的基于联盟链和联邦学习的用户窃电行为检测应用场景,其中,设定联盟链系统中包含有500个peer节点,编号为{p1,p2,...,p
500
},代理节点10个,即nr=10,编号为{pr1,pr2,...,pr
10
},假设系统可以容忍的最小诚实且稳定代理节点的数量为t=nr/2=5,则解密阈值为k=n
r-t+1=6。本实例展示整个窃电检测模型的训练过程,包括各peer节点本地训练后将本地模型加密后发送给代理节点,并由代理节点按照两阶段聚合算法将模型聚合之后记录在区块链上的过程。
[0122]
系统中的安全参数设置为128,即大素数的选取会选择0~2
128
位的数。密钥管理机构在密钥生成阶段首先随机生成一个两个大素数:
[0123]
p
′
=40381822629508445329194325876161708563
[0124]q′
=79352408235426049959432545381794026419
[0125]
然后计算:
[0126]
p=2p
′
+1=80763645259016890658388651752323417127
[0127]
q=2q
′
+1=158704816470852099918865090763588052839
[0128]
n=pq=12817579498349279940142085707121137292846181805728973273359499808188713573553
[0129]
g=n+1=12817579498349279940142085707121137292846181805728973273359499808188713573554
[0130]
m=p
′q′
=3204394874587319985035521426780284323151678335999776070695561516418200525897
[0131]
为满足d=0modm,d=1modn,根据中国剩余定理,令ω=mn,则其中e1m≡1modm,e2n≡1modn,因此需要先求出m在模n下的乘法逆元
[0132]
e2=5977363971036351473180424920716591231307266244063897728080167121948391334922,然后将其与m相乘得到d。
[0133]
d=19153834472331794446342636971405433717619144009556340207690497801710872918643788689314864712418170761084059330217484543750900261794076249309538261475034
[0134]
之后计算10个代理节点的私钥份额,从{0,
…n×
m-1}中选取ai,其中a0=d,选取的随机数如表1所示。以此构造多项式其中0<i<6,k=6为解密门限值。
[0135]
第1个代理节点的私钥份额为
[0136][0137]
第2个代理节点的私钥份额为
[0138][0139]
以此类推,所有代理节点的私钥份额如表1所示:
[0140]
表1:密钥生成阶段的基本参数设置
[0141][0142]
[0143][0144]
至此密钥管理机构的密钥生成部分结束,将私钥份额分发给代理节点,并将公钥分发给所有的peer节点,之后密钥管理机构下线。
[0145]
假设系统初始化的全局模型为一个简单的卷积神经网络cnn,网络结构如图3所示,其中server端的优化器和client端的优化器均采用adam优化器,其中learning_rate=0.001,β1=0.9,β2=0.999,ε=10-7
,每轮选择的客户端比例为20%,每轮客户端本地迭代3次,batch大小为32。
[0146]
为模拟所提出模型的学习效果,采用mnist数据集的联邦版本进行测验,该数据集包含从0~9共10类手写数字的识别,共有训练集/测试集341873/40832,这其中包含3383个客户端,每个客户端所包含的样本量均不相同,在这里我们只取其中500个客户端的训练集共47981个样本,并取全部测试集。各参与方根据每轮下发的全局模型根据本地样本进行训练,将模型密文提交给服务器,在这里为了描述阈值paillier算法的具体实施例,取一个整数作为明文,完整加密和共享解密的过程如下:
[0147]
为简化我们的描述,我们设置明文m=6,选取随机数r=101960347371885113110184269182448853610901741345978585331634093808881646486067518415372985634215497110082422270547678345388931251516201211042381948980481,加密:
[0148]
c=g
mrn
modn2=16528152545340870770429405359833445371177443845098765007198974137821257489743712629717094782491383462635261741277562585112234290199582516286715080925467
[0149]
在解密的过程中,假设刚好有解密阈值k=6个代理节点(持有s1,
…
,s6)参与解密,则每个代理节点需要计算解密份额其中δ=nr!=10!=3628800:
[0150]
第一个代理节点:
[0151]
以此类推,所有代理节点的解密份额如表2所示:
[0152]
表2:解密阶段的计算参数
[0153][0154]
将所有解密份额联合解密计算其中
[0155][0156]
可解得
[0157]
为检测该算法的同态性,我们进一步对明文m1=2,m2=3进行加密,得到密文分别为
[0158]
c1=72398289451786246873548974563049369275674864655032764741387270887706172510620576154118858935541962081564646988846259513155400234985222470585299685827373
[0159]
c2=72107121812442184759626961110251146656102345188190211667954065780165677880418586846817157606163220695474215687776134086481280111347592798163349456853740
[0160]
c1×
c2=5220432276512399024515941325193760886448636890264413177773543111062891183229311845203613043265887592014238049874800155494841639413607883321214166957088599332894761714596067614967075286905364599242002182568332690304630330019623738020162771521340062744123917153689600710957874969029063374020043237349425020
[0161]
解密得d(c1×
c2)=5=m1+m2。
[0162]
服务器采用两阶段聚合算法进行各客户端本地模型的聚合,为表明所提方法的先进性,将基线算法(联邦平均算法)和本发明所提方法进行对比,测试了100轮中全局模型的准确率,如图4所示,可以看出所提方法可以在一定程度上避免客户端数据分布不均的问题,从而提高全局模型的准确率。
[0163]
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
[0164]
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0165]
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0166]
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0167]
最后应当说明的是:以上实施例仅用以说明本发明的技术方案而非对其限制,尽管参照上述实施例对本发明进行了详细的说明,所属领域的普通技术人员应当理解:依然可以对本发明的具体实施方式进行修改或者等同替换,而未脱离本发明精神和范围的任何修改或者等同替换,其均应涵盖在本发明的权利要求保护范围之内。
技术特征:1.一种基于联盟链和联邦学习的用户窃电行为检测方法,其特征在于,参与联邦训练的各参与方、代理节点为同一联盟链的不同节点,包括如下步骤:1)各参与方作为联盟链peer节点通过提交组织认可的合法身份凭证进入系统;2)初始全局模型参数信息写入创世块,各参与方响应训练;3)密钥管理机构生成门限同态密钥对并分发;4)被选中的参与方下载全局模型并通过本地优化策略迭代,加密后将密文发送给代理节点;5)满足门限阈值的代理节点集群联合恢复出解密密钥,并调用智能合约执行两阶段聚合,结果共识后上链;6)模型更新全局迭代满足条件之后,全局训练结束,窃电检测模型更新;7)客户端提交用户一段时间内的用电数据记录作为窃电检测模型的输入,窃电检测模型输出其是否是窃电用户。2.根据权利要求1所述的基于联盟链和联邦学习的用户窃电行为检测方法,其特征在于,步骤6)中,若经过对当前全局模型性能的检测,未满足所述模型更新条件,返回步骤4)的本地训练步骤,直到当前全局模型性能的检测的结果满足模型更新条件。3.根据权利要求1或2所述的基于联盟链和联邦学习的用户窃电行为检测方法,其特征在于,在步骤1)中,代理节点在联盟链中作为super节点,具有写权限,由各组织选择共同授权的节点担任,执行区块链的共识机制,具有链上记账的权限。4.根据权利要求1或2所述的基于联盟链和联邦学习的用户窃电行为检测方法,其特征在于,步骤2)中,在系统初始化阶段,初始全局模型参数信息会作为第一笔交易信息写入创世块;在后续窃电检测模型更新的初始化阶段,以上一版本的最终模型作为新一轮版本训练的初始全局模型,将模型更新条件的训练参数打包入新的区块,各参与方响应训练。5.根据权利要求1或2所述的基于联盟链和联邦学习的用户窃电行为检测方法,其特征在于,步骤3)中,密钥管理机构生成的密钥对是基于paillier的门限变体算法生成的,密钥管理机构将公钥广播给所有的peer节点,并将私钥份额分别分发给各代理节点。6.根据权利要求1或2所述的基于联盟链和联邦学习的用户窃电行为检测方法,其特征在于,步骤4)包括:4.1)每轮按照一个固定的比例c随机从peer节点集群中选择参与方;4.2)本地训练中的本地优化策略,包括优化方法、本地迭代次数和本地学习率连同初始全局模型一并从区块链中下载;4.3)peer节点依照本地优化策略训练完本地数据集之后得到本地模型更新,利用密钥管理机构下发的公钥采用paillier算法的门限变体对本地模型更新进行加密;4.4)加密之后的密文发送给任一代理节点。7.根据权利要求1或2所述的基于联盟链和联邦学习的用户窃电行为检测方法,其特征在于,步骤5)中,两阶段聚合包括,在预聚合阶段,由各参与方的本地样本数加权,得到预聚合全局模型;在正式聚合阶段,权重分为两部分,第一部分同样根据参与方的本地样本数加权,第二部分根据预聚合阶段的全局模型密文与每个本地模型密文之间的欧氏距离加权;结合门限paillier变体方法,在假定系统内诚实且稳定的节点数量的基础上,设定一个门限阈值,在收集到的私钥份额数超过该门限值时恢复解密密钥;代理节点对解密后的全局
模型进行打包,并在代理节点内部进行raft共识,将共识成功的交易块添加到所述区块链的末端。8.根据权利要求1或2所述的基于联盟链和联邦学习的用户窃电行为检测方法,其特征在于,步骤6)中,每轮全局模型生成之后,代理节点需要对照链上所记录的模型更新条件对模型进行检测,如果满足模型更新条件,则全局训练结束;代理节点在将交易块添加到区块链末端之后,加上训练结束的标志,并为其添加新的窃电检测模型版本,作为下一次训练的初始模型。9.根据权利要求1或2所述的基于联盟链和联邦学习的用户窃电行为检测方法,其特征在于,步骤7)中作为窃电检测模型的输入,客户端向系统提交窃电检测请求,提交某个用户一段时间内的用电数据记录,或者批量输入一批用户的用电数据;由代理节点收集客户端的检测请求,并利用窃电检测模型进行检测,窃电检测模型输出其是否是窃电用户,代理节点将检测结果返回给客户端。10.一种基于联盟链和联邦学习的用户窃电行为检测系统,其特征在于,包括:peer节点:第一实体作为训练实体参与横向联邦训练,在区块链中具有读取链上的数据的权限;每一轮从代理节点处下载全局模型之后,利用本地数据进行迭代训练,并利用门限paillier算法加密训练后的本地模型参数,加密之后的密文发送给任一代理节点,如此循环迭代直到全局模型满足模型更新条件;代理节点:第二实体收集各peer节点提交的模型更新密文并联合解密,执行模型密文聚合过程;组织:第三实体组织第一实体参与系统模型的训练,负责peer节点在区块链中的准入,第二实体须通过系统中的组织共同授权;密钥管理机构:第四实体负责生成密码算法所需的密钥对并下发;系统初始化生成的全局模型结构和本地迭代策略写入创世块,后续的迭代轮训练初始化则只需要添加本地迭代策略,密钥管理机构生成后续密码算法所需的密钥对,公私钥分别下发;每一轮选择本地迭代策略中设置的参与方比例的peer节点进行本地训练,被选中的节点按照下载下来的当前全局模型以及本地数据集得到新一轮的本地模型更新,利用分发的公钥进行加密并发送给代理节点;代理节点调用智能合约先后执行两阶段聚合算法和解密算法,得到当前轮的全局模型,其中解密密钥须得有超过门限阈值个代理节点提供私钥份额方可恢复;重复执行从本地训练到全局聚合的步骤,直到所得全局模型满足模型更新条件,训练结束,将新版本的全局模型标记记录到区块链中;在执行检测任务时,客户端向系统提交用户一段时间内的用电数据记录作为窃电检测模型的输入,代理节点利用当前最新版本的模型进行窃电检测,并将模型输出其是否是窃电用户的结果返回给客户端。11.根据权利要求10所述的基于联盟链和联邦学习的用户窃电行为检测系统,其特征在于,系统包含模型训练过程和窃电检测过程,两个过程互不冲突;第一实体和第二实体分别具有读权限和读写权限,第二实体执行区块链中的共识算法;第四实体负责基于paillier的门限变体算法执行系统中的密码算法初始化,密钥管理机构将公钥广播给所有的peer节点,并将私钥份额分别分发给各代理节点。12.根据权利要求10或11所述的基于联盟链和联邦学习的用户窃电行为检测系统,其特征在于,在系统初始化阶段,全局模型结构和本地迭代策略被写入创世块,在后续窃电检
测模型更新时,以上一版本模型作为初始模型,再添加本地迭代策略。13.根据权利要求10或11所述的基于联盟链和联邦学习的用户窃电行为检测系统,其特征在于,本地训练包括:a、按照区块链上的本地迭代策略中的比例c随机从peer节点集群中选定每轮参与训练的节点;b、被选中的参与方从区块链中下载本地优化策略,包括优化方法、本地迭代次数和本地学习率,继而依照本地优化策略训练本地数据,并通过paillier算法的门限变体加密得到的模型参数,密文发送给任一代理节点。14.根据权利要求10或11所述的基于联盟链和联邦学习的用户窃电行为检测系统,其特征在于,两阶段聚合算法包括,a、在预聚合阶段,采用联邦平均算法,聚合权重与参与方的本地样本数呈正相关,得到预聚合全局模型;b、在正式聚合阶段,聚合权重分为两部分,第一部分与参与方的本地样本数呈正相关,第二部分与预聚合阶段的全局模型密文同每个本地模型密文之间的欧氏距离呈负相关,结合两部分共同加权。15.根据权利要求14所述的基于联盟链和联邦学习的用户窃电行为检测系统,其特征在于,得到聚合模型后,代理节点执行联合解密,根据门限paillier变体方法的特性,联合解密的代理节点数需要超过门限值才可以成功恢复解密密钥;解密后的全局模型被打包为一个交易,在代理节点内部进行raft共识,共识成功的交易块被添加到所述区块链的末端。16.根据权利要求10或11所述的基于联盟链和联邦学习的用户窃电行为检测系统,其特征在于,代理节点需要对每轮生成的全局模型进行检测,若满足链上记录的模型更新条件,则全局训练结束;代理节点将新生成的交易块添加到区块链末端之后,加上训练结束的标志,并记录新的窃电检测模型版本号,作为下一次训练的初始模型;若未满足所述模型更新条件,返回本地训练步骤,直到当前全局模型性能的检测的结果满足模型更新条件。
技术总结本发明公开了一种基于联盟链和联邦学习的用户窃电行为检测方法及系统模型,检测方法包括顺序相接的如下步骤:1)节点注册;2)训练初始化;3)密钥分发;4)本地训练:被选中的参与方下载全局模型并通过本地优化策略迭代,加密后将密文发送给代理节点;5)模型聚合:满足门限阈值的代理节点集群联合恢复出解密密钥,并调用智能合约执行两阶段聚合,结果共识后上链;6)全局模型更新:全局迭代满足条件之后,全局训练结束,窃电检测模型更新;7)窃电行为检测。本发明既可以获得具有超越本地单独训练的性能的模型,又可以兼顾本地数据的隐私性,提高了安全性,并可以实现用户窃电检测模型可持续的迭代和更新。续的迭代和更新。续的迭代和更新。
技术研发人员:杨会峰 陈连栋 程凯 王乃玉 李轩 关志涛
受保护的技术使用者:华北电力大学 国家电网有限公司
技术研发日:2022.06.22
技术公布日:2022/11/1