基于区块链的物联网节点位置隐私保护模型

2020-01-17 03:07陈建森顾志豪
应用科学学报 2020年1期
关键词:白名单区块联网

佘 维,陈建森,顾志豪,田 钊,徐 力,刘 炜

1.郑州大学软件学院,郑州450001

2.郑州大学互联网医疗与健康服务河南省协同创新中心,郑州450001

智慧医疗、智慧城市和智能家居等典型的物联网应用给人们的生产和生活带来了极大的便利[1-2].然而,在各类物联网应用中潜在的信息安全问题也逐渐暴露出来,并为人们所重视[3].2014年,经电子邮件泄露证实:许多国家的情报和调查机构要求一个意大利黑客团队开发一套利用物联网设备漏洞进行监视或检查的工具[4].2017年,机密文件的主要出版物Vault 7 泄露了维基解密(WikiLeaks)情报机构活动的信息.其中,物联网节点位置信息的使用和保护是一类非常特殊的问题:一方面,位置信息是一种标定数据,常用作定位与导航、距离测算、周边服务等应用的基础数据,有很高的精度要求;另一方面,位置信息又是一种非常敏感的数据,在个人出行安全、防骚扰、防恶意侦测等方面都需要保护或混淆化.

在物联网节点位置敏感信息保护方面,文献[6]提出一种结合区分节点、精确聚类、RSA、多签名和区块链的物联网安全与隐私保护新方法,能有效区分物联网中活动节点和非活动节点,增加了攻击的难度,充分保护了物联网节点和数据的安全和隐私;文献[7]提出一种基于区块链的分布式k-匿名(k-anonymity)位置隐私保护方案,惩罚具有位置泄露和欺骗行为的用户使其作为请求者时不能成功构造出匿名区,达到约束其自利性的目的,从而有效保护用户的位置隐私;文献[8]提出了一种基于差异隐私策略的工业物联网大数据位置隐私保护方法.该方法构建多级位置信息树模型以满足差异隐私约束的要求,有效保护位置数据隐私,但是攻击者依然能得到物联网中的网络拓扑结构并根据网络中的流量情况攻击流量薄弱节点,从而导致整个物联网的瘫痪.

以上方法均未涉及IoT 节点真实位置敏感信息匿名保护,在物联网位置服务场景下难以满足节点位置敏感信息隐私的需要.本文提出基于区块链的物联网节点位置隐私保护模型,利用区块链不可篡改和一致性的特性维护所有节点中白名单的一致性,借助分布式哈希表的网络结构特征及其逻辑地址转换,在保证网络通信正常的前提下隐藏物联网的真实拓扑结构,并基于k-匿名方法泛化位置信息,可在正常提供位置服务的同时实现敏感位置信息匿名化.

1 相关技术

1.1 区块链技术

区块链是一个自治节点的网络,也称为分布式事务存储账本.区块链自下而上分为数据层、网络层、共识层、激励层、合约层和应用层.其中,数据层利用哈希算法、数据加密和时间戳等技术封装了区块链底层区块;网络层则包括P2P 技术、节点间的交互及广播协议和节点的数据验证机制;共识层能保证各节点间在没有信任的前提下达成共识,主要共识算法有工作量证明(proof of work, PoW)和权益证明(proof of stake, PoS)等机制;激励层通过发行机制和分配机制激励节点积极参与区块链系统的维护;合约层主要封装了各类脚本和算法,是区块链可编程特性的基础;应用层主要是为用户提供区块链服务.

区块链技术主要有4 个核心功能.首先是一致性,如PoW、PoS 等共识机制验证网络的节点行为使所有节点保持一致性;其次是分布式账本,它提供了网络中完整的交易细节并保证记录不可篡改;再次是密码学,它确保了账本和网络中的所有数据信息都是加密的,只有授权用户才能解密信息;最后是智能合约[11],其运行原理如图1所示,它是区块链的核心要素,是运行在区块链数据账本上的一段可执行的程序,是通过事件触发执行的,一旦执行便不可更改.

图1 智能合约运行原理Figure 1 Operation principle of smart contract

1.2 分布式哈希表

分布式哈希表[12](distributed Hash table, DHT)是一种分布式存储方法,这种网络不需要中心节点服务器.每个客户端负责一个小范围的路由并存储了少部分数据,从而实现整个DHT 网络的寻址和存储.在DHT 所采用的算法中,最有名的是Kademlia 算法,其原理和实现简单,维护网络拓扑的开销小,也可用于以太坊网络.

在Kademlia 算法14]中,两个节点之间的距离并不是依靠物理距离和路由跳数来衡量的,而是通过两节点ID 的二进制进行异或运算得到的逻辑地址.异或计算距离满足4 个特点:1)这个距离是节点和它本身之间的异或距离;2)异或距离是对称的,即从A到B的异或距离与从B到A的异或距离是等同的;3)异或距离符合三角形不等式;4)对于一个给定的距离,距离A只存在一个唯一的节点B,即单向性.在异或计算节点距离的基础之上,Kademlia 算法还可以将整个网络划分成一个二叉前缀树,每个节点映射为二叉树上的某个叶子,如图2所示.

图2 网络拓扑结构Figure 2 Network topology

为了保证系统的鲁棒性,Kademlia 算法又引入了K桶[15](Kbucket)机制.节点在完成拆分子树以后需要记录每个子树上的K个节点.K桶实际上就是路由表,每个节点按照自己的视角进行拆分得到N个子树,此时需要维护N个路由表来对应N个K桶,如表1所示.

表1 K 桶表结构Table 1 K bucket table structure

Kademlia 协议[16]包括以下4 种远程RPC 操作:PING、STORE、FIND_NODE、FIND_VALUE.具体说明如下:

1)PING 操作能够探测一个节点,用以判断其是否仍然在线;STORE 操作可以通知一个节点存储一个对,便于以后查询需要;3)FIND_NODE 操作,消息的接收节点将K个节点返回给请求节点,其中K个节点是距离请求节点最近的节点;4)FIND_VALUE 操作与FIND_NODE 类似,不过当请求的接收者保存有请求者所请求的键时,它将返回相应键的值.

1.3 k-匿名方法

k-匿名[17]是一种基于位置服务(location based service, LBS)的隐私保护中最常见的方法,实际上是一种在服务的可用性和用户信息的隐私性之间相互妥协的算法.k-匿名首先将数据集分成显示标识符、准标识符、敏感属性、非敏感属性.显示标识符能够唯一确定一条用户记录;准标识符能够以较高的概率结合一定的外部信息确定一条用户记录;敏感属性是指需要保护的信息;非敏感属性通常指可以直接发布的信息.k-匿名[18]即用L(M1,M2,···,Md,N1,N2,···,Nt)来表示物联网中一个传感器所收集的数据表,简称函数L(d),其中d为准标识符的数目,t为敏感属性的数目.若表中的任意一个记录至少与表中的k −1 条记录的准标识符一致,则称数据表L(d)符合k-匿名定义.

现有的匿名保护技术主要是泛化和抑制[19],泛化是指对数据进行更加概括而抽象的描述,而抑制则是指不发布某些数据项.泛化技术分为全局算法和局部算法.全局算法是在整个属性列上进行泛化,易造成数据表的泛化过度而使信息失真度较大;局部算法是将同属性列中的元素泛化到不同的等级,并将匿名表中的数据损失量控制到最小.

k-匿名[20]能够保证以下3 点隐私要求:1)攻击者无法知道某个人是否在公开的数据中;2)对于给定的一个人,攻击者无法确认他是否有某项敏感属性;3)攻击者无法确认某条数据对应的是哪个人.

2 基于区块链的节点位置隐私保护

2.1 BC-LIP 模型

基于区块链的物联网位置信息保护模型(location information protection for IoT based on blockchain,BC-LIP)是一个3 元组,即BC-LIP=(N,C,S).其中:N={Nmine,Nrout,Nledger,Napp}是IoT 节点的集合,包含所有参与节点的角色;C是基于白名单的DHT 网络,为BCLIP 模型提供节点通信安全;S是为IoT 网络提供相应的应用服务.

BC-LIP 模型架构如图3所示:在网络层,本文基于白名单的DHT 网络构建P2P 网络以完成区块链IoT 节点的通信.在交易层构建双层区块结构,将节点加入和离开网络的过程与交易过程共同记录在区块中.然后在合约层针对位置隐私服务制定特定的k-匿名合约,保证用户的信息隐私安全,并允许用户根据自身服务的特点制定特定的合约功能,满足用户多样化需求,保证系统的可扩展性.最后在应用层用户通过Dapp 应用与其他用户节点进行交互.

图3 BC-LIP 模型架构Figure 3 BC-LIP model architecture

2.2 BC-LIP 节点

在BC-LIP 模型中,每个IoT 设备都是区块链网络中的对等节点,如图4所示.对于硬件性能(如CPU 和RAM)足够好的设备可以进行简单挖矿完成账本存储,将有限硬件资源的物联网设备(手机和Pad 等)作为区块链客户端通过API 与区块链节点进行交互通信.所有节点实时交互以维护整个物联网安全通信.

在BC-LIP 的模型中,每个物联网设备都参与到区块链事务中,节点总共承载4 个角色:挖矿、路由、数据账本、Application.

1)挖矿功能是指对于硬件性能足够好的设备,运行本文提出的共识算法,通过算法竞争获得记账权,从而维护网络的一致性.

2)路由功能是所有节点都必须参与的,这个功能可以保证区块链物联网的节点正常通信.不具备路由功能的设备是不能加入网络的.

3)数据账本功能是针对存储空间足够的设备,需要保存本文的全部账本信息.

4)Application 功能对设备硬件需求不高,所有节点都可以运行轻量级客户端,便于节点间数据共享的同时提供位置服务接口.

图4 BC-LIP 节点Figure 4 BC-LIP nodes

2.3 基于白名单的DHT 网络

在BC-LIP 模型中,区块由区块头和区块体构成,其结构如图5所示.区块头包含区块的版本号、前一区块的哈希、时间戳以及交易账本和白名单等信息;区块体分两层数据结构,分别是Merkle 树和字典.交易账本使用Merkle 树结构存储交易信息,将所有交易哈希递归存储到交易账本根;白名单使用字典存储,记录节点注册的设备识别号、注册账号和注册密钥信息.

区块体的白名单是字典结构,记录的是所有设备信息的白名单,用于验证一个设备的可靠性.而区块头的白名单是将设备信息进行Hash 计算得到Hash root,只是记录一个Hash 值,这样减小了区块头的存储空间,使区块链中的轻节点方便查询.所有轻节点通过校对区块头中的白名单即可验证白名单是否被篡改或者设备是否存储在区块链的白名单中.

图5 BC-LIP 区块结构Figure 5 BC-LIP block structure

IoT-LIP 的网络拓扑结构以DHT 网络为基础通过Kademlia 协议通信,并使用XOR(异或)运算来计算节点之间的距离,将节点位置映射为二叉树结构,这样就可以避免真实的物联网拓扑结构暴露.每个节点都可以从自己的视角对二叉树进行拆分,首先找到距离自己最近的节点,然后将这些节点对应的白名单信息维护在自身的K桶中.DHT 网络运行与维护如图6所示,当有新节点加入时,新节点需要网络中的种子节点作为引导进行加入申请,然后种子节点在网络中不断广播新节点信息直到广播至全网,最后新节点通过返回的信息完成自身需要的K桶信息并进行维护,此时新节点加入网络成功,其他节点维护新节点信息并进行K桶更新.

图6 DHT 网络维护与更新Figure 6 DHT network maintenance and update

DHT 网络运行的具体步骤如下:

步骤1加入网络

步骤1-1新节点A首先需要一个种子节点B作为引导,并把该种子节点加入到对应的K桶中,之后随机生成一个节点ID 和密钥对.

步骤1-2向节点B发起FIND_NODE 请求,请求信息包括自己的ID、公钥和设备唯一识别号.

步骤1-3节点B收到该请求后,把A的信息加入自身维护的K桶,然后广播至全网使挖矿节点记录此交易并将节点A的信息加入白名单,同时在全网中找到K个离A最近的节点,并返回给节点A.

步骤1-4节点A收到这K个节点的ID 之后,把它们加入自己的K桶.

步骤1-5节点A继续向这K个节点发送FIND_NODE 请求,直至建立足够详细的路由表.

步骤2定位节点

步骤2-1首先由发起者确定目标ID 对应路由表中的K桶位置,然后从自己的K桶中筛选出K个距离目标ID 最近的节点,并同时向这些节点发起FIND_NODE 的查询请求.

步骤2-2被查询节点收到FIND_NODE 请求后,从对应的K桶中找出自己所知道的最近的K个节点,并返回给发起者.

步骤2-3发起者收到这些节点后更新自己的结果列表,并再次从收到的K个节点中挑选未发送请求的节点重复步骤2-1,直到无法获取比发起者当前已知的K个节点更接近目标节点ID 的活动节点为止.

步骤3-1首先发起者查找自己是否存在数据对,如果存在则直接返回,否则就返回K个距离key 值最近的节点,并向这K个节点ID 发起FIND_VALUE 请求.

步骤3-2对于收到FIND_VALUE 请求的节点,首先也要检查自己是否存储了数据对,如果有直接返回value,如果没有,则在自己对应的K桶中返回K个距离key 值最近的节点.

步骤3-3发起者若收到value,则结束查询过程;否则发起者收到这些节点后更新自己的结果列表,并再次从其中K个距离key 值最近的节点,挑选未发送请求的节点再次发起FIND_VALUE 请求,直到获取到value 或者无法获取比发起者当前已知的K个节点更接近key 值的活动节点为止,此时表示未找到value 值.

步骤4保存资源

步骤4-1发起者首先定位K个距离目标key 值最近的节点.

步骤4-2发起者对这K个节点发起STORE 请求操作.

步骤4-3接收到STORE 请求的节点将保存数据.

步骤4-4执行STORE操作的K个节点每小时重新发布自己所有的对数据.

步骤4-5为了限制失效信息,所有对数据在发布24 h 后过期.

从不同灌溉模式来看,2016年水稻季W1和W0处理下的灌水量差异不大,而2017年水稻季W0处理比W1处理灌水量平均多210.0 mm。W1和W0处理下2016年水稻季的排水量差异不大,而2017年水稻季W0处理下的排水量是W1处理的2倍,可见W1处理在平水年可减少灌水量及排水量。

步骤5网络维护

步骤5-1任何节点都可以发起FIND_NODE 请求,并根据最新区块的白名单刷新K桶中的节点信息.

步骤5-2当接收到其他节点发送过来的请求(如:FIND_NODE、FIND_VALUE),先验证该节点是否在白名单中,如果在则把该节点ID 加入K桶,如果不在则拒绝请求.

步骤5-3发起PING 请求,判断K桶中某个节点是否在线,然后清理K桶中那些下线的节点.

2.4 位置信息服务——泛化合约

为了解决链接攻击所导致的隐私泄露问题,本文基于BC-LIP 模型提出了k-LIP 智能合约.首先,IoT 设备收集数据事件触发k-LIP 合约,使k-LIP 合约自动执行;然后该合约运用泛化技术发布精度较低的位置信息,使得同一个准标识符至少有k条记录,这样攻击者无法通过准标识符连接记录轻易获得用户位置信息与个体间的关联关系;最后该合约根据匿名数据集提供位置服务.

算法 k-LIP=LIP-Contract(data,k)

输入data 表示IoT 收集的数据集;

k表示k-匿名的限制.

输出k-LIP表示针对data 中的IoT 设备的位置信息泛化后的匿名数据集.

算法步骤如下:

LIP-Contract 算法

begin

1)由数据集data 中生成初始等价类,使等价类中各个元组在准标识符上值相等

2)循环,直至不存在元组数目小于k的等价类

①随机选择一个小于k的等价类C

②计算C与其他所有等价类的距离

③找到距离C最近的等价类C′

④将C和C′合并为一类,并泛化C和C′

循环结束

3)返回匿名数据集

end;

位置服务过程如图7所示,具体步骤如下:

步骤1位置信息服务商

本文模型主要研究物联网设备安全,不涉及上层服务应用,所以在整个模型中提供位置信息服务接口api,并由第3 方机构进行完善.

步骤2位置信息服务请求

网络模型中的任何节点都可以请求位置信息服务,比如统计某区域发病率、推荐周边服务等.当一个节点发起位置信息服务请求时,该节点将设备唯一识别号peerID、服务接口api 和该设备泛化后的数据集k-LIP 发送至自身维护K-桶中的K个节点并发起FIND_VALUE 请求,而收到该请求的节点继续将接收到的请求信息发送至自身维护的K个节点,直至广播全网.

步骤3请求处理

当节点接收到请求消息时,首先在自己维护的白名单中查找请求节点,如果白名单中有该节点则响应请求,如果白名单没有该节点的信息则拒绝该请求.接收节点检查自己是否满足请求节点的需求,如果满足则将自身的资源信息返回给请求节点.此交互在区块链中记为交易,并记录在区块链账本中.

3 仿真实验及分析

3.1 实验设计

在IoT 设备收集个人医疗健康数据的场景,构造一个基于区块链的物联网节点位置隐私模型仿真实验.在仿真实验中,首先构建基于白名单的DHT 网络,该网络实现节点加入及白名单权限认证、节点之间安全共享数据的需求;其次搭建了区块链平台,使用k-匿名算法实现了区块链中的k-匿名智能合约,该合约保护了实验收集的个人敏感数据的隐私.实验使用Java 语言模拟基于白名单的DHT 网络,并完成k-LIP 合约.

3.2 DHT 网络构建

3.2.1 节点加入网络并连接

本文首先在网络中模拟4 个节点,然后随机创建一个新节点加入网络.新节点与其他节点完成连接,并将其他节点信息加入本身维护的K桶.以其中一个节点为例,查看其路由表的信息维护过程.如表2所示:桶深度为0 的有1 个节点,表示自身节点;深度为2 的有3 个节点,表示距离自己为2 的3 个节点.当新节点加入网络时,网络中其他节点会将新节点信息添加到自身维护的路由表中,如表3所示.采用异或计算得到新节点与自身节点的距离为2,然后在深度为2 的桶中添加新节点的信息.在该过程中,节点的ID 是经过Hash 处理的,可以保护节点的信息,同时节点连接过程是通过异或距离连接的,这样IoT 设备不需要真实位置信息就可以连接通信,避免了真实路由拓扑结构的暴露.

图7 位置信息服务流程Figure 7 Location information service process

表2 原始路由表Table 2 Original routing table

表3 新增节点的路由表Table 3 Routing table for new node

3.2.2 在网络中共享数据

在该仿真阶段,如表4所示:首先创建两个节点node1 和node2,然后node2 向网络中共享数据;node1 通过网络来检索资源,不仅检索到资源目标同时检索到了资源的来源信息.来源信息中的node2 的ID 是原始ID 进行Hash 加密的匿名ID,这将提高了节点的隐私信息,同时资源信息也是通过Hash 加密得到资源key,保护了数据的隐私.

表4 数据共享Table 4 Data sharing

3.3 位置信息匿名处理

当物联网设备向网络中共享收集的数据时,触发k-匿名合约.自动执行k-LIP 算法,将需要共享的数据进行泛化处理,使攻击者不能从其中任何一条数据确定个人的相关信息.表5给出了物联网设备收集到的原始数据,当节点共享这些数据时,自动执行k-LIP 合约.根据数据统计的需求对邮编进行泛化处理,从而将邮编泛化至需要统计的地区范围,如表6所示.如果要统计某市区内的患病情况,就需要给出统计的地区范围.首先获得此地区的邮编,然后将邮编泛化至此范围内,在不暴露个人数据信息的前提下进行数据统计分析.

表5 原始数据Table 5 Raw data

3.4 实验数据分析

在BC-LIP 模型中,首先将所有IoT 设备通过DHT 网络连接到区块链网络中.其中所有设备节点的所有行为,包括节点加入、节点请求以及数据共享等都记录在区块链账本中,这样可保证节点的作恶行为不可篡改.当其他节点发现有一个节点有作恶行为时,在白名单中取消该作恶节点,并取消该节点的访问权限.其次,当设备加入区块链网络时,应将该设备的唯一识别号、注册账号和密钥对记录在区块链白名单中,便于区块链网络中的所有设备根据白名单随时更新自身维护的K桶;当节点进行通信时,必须根据白名单进行访问权限控制以保护网络.然后当所有设备节点通过DHT 网络进行通信时,可以采用节点ID 的逻辑地址进行通信,这样避免真实路由拓扑的暴露,防止攻击者轻易攻击网络.最后,采用LIP-Contract 算法实现k-LIP 合约,在不暴露个人数据隐私的前提下在应用层提供数据统计分析服务.在BC-LIP 模型中的应用层,用户可以凭借合约制定特定的位置信息服务,保证模型的可扩展性.

表6 数据泛化处理Table 6 Data generalization

3.5 模型对比与分析

将本文模型与已有的为解决物联网安全问题的模型进行对比分析,如表7所示.文献[7]提出了构造匿名区的方法对物联网设备位置进行匿名处理,保护了物联网设备的位置信息;文献[8]提出了基于差异隐私策略的工业物联网大数据位置隐私保护,该方法构建多级位置信息树模型以满足差异隐私约束的需求,从而保护IoT 设备的安全.然而,文献[7]提出的构造匿名区的方案只是对IoT 设备的真实位置进行匿名处理,并未针对IoT 设备收集的数据以及设备之间的数据共享进行保护;文献[8]基于差异隐私策略对设备收集的敏感数据进行安全处理,而未对节点真实物理位置信息进行匿名化.本文模型首先基于白名单的DHT 实现区块链网络保护IoT 设备的真实位置信息,然后以k-LIP 合约对收集的数据中的敏感属性进行匿名保护,最后设置客户端层与合约层的API 实现模型的服务可扩展性.

表7 本文模型与现有模型对比Table 7 Comparison between proposed model and existing models

4 结 语

现有的物联网安全方案并不能有效保护IoT 设备的位置信息隐私,为此本文提出了基于区块链的物联网设备隐私保护方案.本文方案将传统物联网映射成P2P 网络,借助区块链技术的匿名方法和白名单的权限控制将物联网的真实网络拓扑实现隐藏,并对IoT 设备进行访问控制,该方法提高了物联网设备的安全性;同时采用k-匿名合约来提高物联网设备信息的隐私性,从而在隐藏IoT 设备物理位置及泛化数据信息的情况下保证了IoT 设备的位置信息隐私安全.

猜你喜欢
白名单区块联网
“身联网”等五则
《物联网技术》简介
《物联网技术》简介
核电厂仪控系统安全防护策略研究及应用
区块链:一个改变未来的幽灵
UAC提示太烦 教你做个白名单
区块链:主要角色和衍生应用
2019年“移动互联网应用自律白名单”出炉
抢占物联网
区块链将给媒体业带来什么