背景
在工业物联网范式中,设备产生的数据量快速增加,这为应用程序使用数据共享的方式提高服务质量开辟了新的可能。然而,安全和隐私问题(例如数据泄露)是数据提供者在无线网络共享其数据的主要障碍。
在大多数现有的数据共享方案中,集中式管理员的存在增加了数据泄露的风险,特别是在分布式应用中。主要有两个障碍:一是管理员需要处理来自各方的聚合数据,包括一些未知的新数据;另一种是,这些数据提供方都不信任他人,因此担心数据泄露。
系统模型
本文的目标是设计一种安全的数据共享机制,既可以在分布式的多个用户之间智能的共享数据,同时又可以有效地维护数据隐私。
假设有N个数据持有者和一个联合数据集D。对于任何一个pi,他都包含一个本地数据集Di∈ D,R=r1,r2...rm是请求者提交的共享数据的请求。我们不返回原始数据,而是提供这些查询的计算结果进行共享。然后,所有与请求相关的参与者根据相应的学习算法训练一个全局模型M,而不泄露任何私有数据。最后将训练好的全局数据模型M返回给数据请求者。利用接收到的模型,数据请求者可以获得所需要的数据R(M)
本文容易受到三种类型的威胁。1.提供数据的质量。不可靠的提供者可能向请求者提供有偏见或不准确的结果,从而降低整个共享数据的可用性。2.数据隐私问题,提供者和接收者可能会试图从共享数据中推断出其他人的私有数据,这可能会导致来自数据提供者的不必要的敏感数据泄露。如果一组参与者试图推断其他参与者的数据,那么也存在共谋的威胁。3.数据权限管理。一旦原始数据被共享,数据所有者将失去对这些数据的控制,并且这些数据可能会被一个不诚实的参与者共享给其他未经授权的实体。
本文提出的数据共享体系结构如图。该系统由区块链和联邦学习两个模块组成。区块链通过加密记录在所有终端设备之间建立安全连接,该记录由配备计算和存储资源的实体维护,命名为超级节点,如基站。
一个数据请求者启动一个数据共享请求,其中包含一组查询Fx = {f1,f2,...,fx }到附近的超级节点SNreq。附近的超级节点首先搜索区块链,以检查该请求之前是否被处理。如果发生命中,该请求被转发已缓存结果的节点,缓存的结果作为回复发送给请求者。否则,对于新的数据请求,执行多方数据检索过程,根据注册记录查找相关各方。本文将这个节点视为委员会节点,他们负责推动共识地进行。然后委员会节点通过联邦学习训练一个全局数据模型M。一旦模型被训练好,数据请求者r使用Req = {f1,f2,...,fx }作为M的输入,并得到相应的共享结果M(Req)。
区块链和联邦学习的安全数据共享
非结构化数据,比如文本占数据的大部分,同时这一部分的研究也是有限的。为了填补这一空白,本文重点关注共享场景中的非结构化数据-文本数据。
本文利用图来表示原始数据,保留更多的结构和上下文信息。
加权上下文图G = {V,E}由一组节点V和一组边E⊆V×V组成。每个节点ni包含一个文本术语tni和它的权重。每个边eij连接节点ni和nj,权重weij表示相关度。使用权值矩阵A = [aij]来表示图。所有文本都转移到加权上下文图{G1,G2,...,Gn }中。
第二步,本文序列化这些图。虽然图保留了大量的上下文信息,但他们很难被机器学习算法作为输入进行进一步处理。我们通过将图序列化为一个有序列的向量来将图映射到线性向量中。将这些图合并成一个全局图G = G1∪G2,...,∪Gn。对于全局图G = {V,E},设k为有代表性的顶点的个数。然后,节点的标准化属性的大小为k,边的标准化属性的大小为k×(k−1)/2。利用Jaccard相似度作为距离函数,用k-means算法对文档进行聚类。在归一化加权图和定义的距离度量的帮助下,根据文本相似度将数据集{D1,...,Dn }聚类为不同的类别,还根据他们的数据将参与的用户分成不同的组。
多方检索机制
所有的参与方根据它们所拥有的数据类别被分为不同的组,同一组内拥有相同的数据类别。每个组会维护一个本地检索表,记录所有的组。
组中的每个节点也会维护一个本地检索表,这个表记录距离该节点一定距离范围内的其他节点。例如,节点1会在自己的本地检索表中,记录距离自己为1的节点,距离自己为2的节点......距离自己为n-1的节点等,节点的本地检索表结构如图所示,每个虚线框代表一个节点,一个bucket表示在该距离内的所有节点。其中距离结合了物理距离和逻辑距离
检索过程
某个用户向邻近的超级节点Pi提交数据分享请求,跟节点Pi同组的所有节点向它们本地检索表中一定距离(如距离为1)的其他节点也发送该请求,开始数据检索过程,直到相关距离内的所有节点都被遍历才结束。
通过该检索过程,我们得到了与该请求相关的节点集合,这个集合被称为委员会节点,委员会节点负责实现共识过程以得到最终分享的数据模型。
数据分享过程
为了保护数据的隐私,数据分享并不是直接分享数据而是分享数据训练出来的模型。具体的数据分享步骤如下:
(1)初始化
在一个节点加入之前,根据他的本地数据类别将他分到不同的组,每组都会被序列化成向量来表示,并会根据其序列化向量给它生成一个ID,以确保拥有相似数据的节点具有相似的ID。同时,节点也会被分成不同的组,同样也是根据不同节点之间的相似度。
(2)注册
一旦节点加入区块链,它首先要向邻近的超级节点发送它的公钥和其所拥有的数据信息(数据类别、数据量等)以完成注册。然后,该节点产生数据检索记录并向区块链中的其他节点进行广播,其他节点对收到的所有记录进行验证,通过后,写入区块链中。
(3)加载数据分享需求
(4)数据检索
(5)模型训练
委员会节点运行联邦学习从而得到全局模型M。
(6)产生数据分享记录
数据分享记录由数据需求者和数据提供者共同产生,并在区块链中进行广播,所有记录被收集成块,由收集节点进行加密和签名。
(7)达成共识
委员会节点中运行PoW(工作量证明,简而言之,若干节点同时开始解一个数学难题,第一个解对的节点称为矿工节点,获得记账权,即可以向区块链中写入的权利)机制,矿工节点将自己的区块广播,其他节点负责验证,验证通过后,矿工节点将自己的区块加入到区块链中。
共识机制:质量证明(Proof of Training Quality)
(1)模型训练
选择训练样本:数据所有者向请求集R选择相关数据D,并将其转化为归一化图向量Vec。
差分私有局部模型训练:将由灵敏度s校准的噪声添加到局部数据Veci中。利用机器学习算法对所选的噪声数据Veci,对局部数据模型ˆmi进行局部训练。
协作多方学习:将拉普拉斯机制应用于局部数据模型mi,以实现差异隐私
然后,将噪声添加模型ˆmi作为区块链的交易广播给其他参与者进行联合学习。这个过程不断重复,直到联邦模型的性能达到阈值或训练时间耗尽。
委员会节点是所有参与者的一个子集。通过只向委员会节点而不是向所有节点发送一致消息,减少了通信开销。然而,节点数量的减少也使达成共识更具挑战性。为了平衡开销和安全性,本文提供了数据共享共识培训工作的证据
委员会的领导是根据训练模式的质量来选择的。由于每个委员会节点都训练一个本地数据模型,因此模型的质量应该在共识过程中进行验证和测量。用MEC表示
在响应数据共享请求时,一个委员会节点Pi将其训练好的模型mi和MAE(mi)传输到下一个委员会节点。
γ是表示Pj对全局模型的贡献的权重参数