MQTT和区块链分片:一种提高安全性和效率的用户可控数据访问方法
前置知识:MQTT
物联网中大多数引入的是MQTT协议,这种协议不同于传统的HTTP协议(点对点),而是需要有一个中间代理人转发。
报警器、烟雾检测器:烟雾监测器是发布者,报警器订阅了烟雾检测器的消息。烟雾检测器发布消息,需要经过中间代理服务器,中间代理服务器了解到 报警器 是其消息的订阅者,转发消息。
为什么需要代理人?
- 消息受众有多个——性能
比如一楼的烟雾检测器发现火情,那么不仅仅需要传递给一楼的报警器,可能也需要传递给2楼的
但是,物联网模组的处理性能低,全部信息发布都累计在烟雾检测器上,会导致其计算性能达到瓶颈。当有大量设备需要通信时,代理可以帮助管理这些通信,代理服务器只需要发送一次(类似计网的组播),确保单个设备不会因为消息过载而崩溃。
- 解耦发布者和订阅者
发布者不需要知道谁订阅了特定的主题(传统方案,需要知道目的是哪里,可能需要维护一张路由表),确保了消息的匿名信。
这样,发布者只需将消息发送到代理,而订阅者可以独立地订阅感兴趣的主题。这种模式简化了消息传递的复杂性,并允许更灵活的通信模式。
- 故障容错
即使在网络中断或设备故障的情况下,代理也可以帮助确保消息不会丢失,并在连接恢复时重新分发。
- 优化传输路径
同时,对于远距离传输 代理可以优化消息的传递路径,并减少不必要的消息复制。
传统挑战
安全挑战
IoT传输信息时的隐私泄露和攻击
- 隐私泄露——在传统的物联网协议中,消息传输的安全程度低,攻击者很容易窃取信息
- 攻击——例如伪造数据,此时订阅者不能判断发送方的好坏。
为了增强MQTT通信的安全性,传统方案依赖(TLS)【非点对点】协议进行加密。然而,TLS增加了额外的计算和资源负担,对于资源受限的IoT设备来说,这可能是一个挑战。
性能挑战
IOT计算性能、存储性能都非常低
如何在有限的资源中保证安全性和性能。
架构提出:代理结点与区块链的融合
- 采用区块链加密来保护数据的隐私性和完整性(可追溯性)
- 使用区块链分片技术来提高系统的可扩展性和性能,降低计算开销。
- 通过用户访问控制,确保只有授权用户才能访问敏感数据。
- 结点分类
- 客户端结点
- 发布者:负责 创建消息、私钥加密、生成哈希
- 订阅者:负责 接收消息 验证消息(公钥验证)
- MQTT Broker:
- 接收来自发布者的消息
- 转发至对应的订阅者
- 代理结点:
- 接收来自发布者的加密和哈希消息。然后与区块链网络进行交互,
- 根据当分片逻辑将消息随机放置在不同片区中。
- 分片存储消息后,代理节点向订阅者广播数据放置信息。
- 客户端结点
流程
- 发布者A 向 订阅者B 发布一则消息M(消息已经使用公钥加密)
- 在数据发送到区块链之前,首先进行加密处理,并生成一个哈希值。这样,即使数据被拦截,未经授权的第三方也无法解读数据内容。
- broker接收到 发布者A 的消息
- 并将其转发至代理结点
- 记录当前时间
- 随机选择一个片区将信息进行上链
- 保证了数据分布的均衡性,防止了特定分片的过载
- 并记录用户信息
- 代理节点将新数据通知订阅者。
- broker 将数据转发至订阅者B
- 并将其转发至代理结点
- 订阅者B 接收到
- 来自broker的信息——进行验证
- 来自代理结点的信息——知道存储在那个片区中
分区
区块链分片技术通过将区块链网络分割成多个较小的分片来提高网络的可扩展性和性能。每个分片都可以独立处理交易,从而提高了整个网络的处理能力和吞吐量。在IoT环境中,这意味着可以同时处理来自大量设备的通信,而不会导致网络拥堵或性能下降。
- 每个分片分区独立运行
- 其验证器、规则和存储都是独立的。
- 因此,可以针对不同种类的数据设计不同的存储方式、查询方式、验证方式等。
- 可扩展性高
- 各个分片分区可并行处理
- 物联网数据的信息是海量的
- 可以解决 涉及大量数据流和众多连接设备的 物联网场景中通常遇到的可扩展性瓶颈
- 相比集群化处理时间更加短
- 分区独立安全性
- 分片结构允许在不同的分片中存储敏感数据,从而提高了数据隐私性。即使某个分片受到攻击,其他分片的数据仍然是安全的。
- 每个分片分区更小
- 更容易管理
【分片方法】
- 基于 随机数生成器 进行结点分片
过于随机,恶意结点怎么办,可以划分为高信誉值低信誉值这样的。
用户访问控制
智能合约存储订阅者的访问权限,并在订阅者尝试访问数据时进行验证。这种机制确保了只有授权的用户才能访问特定的数据,从而提高了数据的安全性和隐私性。
- 每个分片保存一张 用户信息表
- 智能合约中包含权限控制代码
未来研究方向:
- 动态分片策略:根据实时的通信模式和数据流量动态调整分片的数量和大小,以优化性能和资源利用率。
- 跨分片消息处理:处理跨多个分片的消息,需要开发新的协议和机制,以确保消息的一致性和完整性,同时避免数据冗余和不一致性。
创新点/可参考的点
区块链分层思想
- 分链:双链、跨链
- 分区:
- 不同区域相互独立,但是又没有那么独立
- 通过将工作量分散到多个节点上,以提高现有区块链的处理能力和扩展性。
- 分片不涉及创建新的区块链,而是在现有的主链内部进行分区。每个分片包含一部分数据和处理能力,节点被分配到不同的分片中,并行处理交易。
- 对一个区块体分片:一般是方便存储。
从MQTT协议看中间人思想——
- 中间人的思想其实已经有一定程度的应用
- 在车联网论文,TA就是一个代理人,但是是自己代理自己,负责把注册信息分别传输给私有链、联盟链和OBU
- 跨链 的 “公证人”
- 实现了双链之间消息的预检(判断是否合法)
- PBFT的领导者
- 把网状共识转换为 星型共识,减少了网络通讯量
- 实现了双链之间消息的预检(判断是否合法)
- 在车联网论文,TA就是一个代理人,但是是自己代理自己,负责把注册信息分别传输给私有链、联盟链和OBU
- MQTT协议有一个中间人作为中间站转发
- 在区块链中,“中间人”可以实现信息预检、消息分发
- 例如在跨多条链的场景下,部分数据可能需要多个区块链同时来存储,就可以引入中间人进行转发实现高效的数据分发。
- 发送方无需知道接收者是谁,减少传输消息的占用空间,确保了收发的匿名性
- 同类消息可以进行合并运算(例如:紫色消息和红色消息如果有重合之处,是否可以合并?)
- 中间人的思想其实已经有一定程度的应用
【原文】MQTT and blockchain sharding: An approach to user-controlled data access with improved security and efficiency 2023年 3区