Blockchain Meets IoT:An Architecture for Scalable Access Management in IoT
Novo O. Blockchain Meets IoT: An Architecture for Scalable Access Management in IoT[J]. IEEE Internet of Things Journal, 2018, 5(2): 1184-1195.
DOI: 10.1109/JIOT.2018.2812239
keywords: Access control, Blockchain, IoT, smart contracts
摘要
物联网所面临的一个问题是部署在全球的数十亿的设备如何去管理,现有的访问管理技术是基于一个中心化的模型。这篇论文提出了一种在物联网中用于仲裁角色和权限的新的架构。这种新架构是基于区块链技术的全分布式的访问控制系统。该体系结构由概念验证的实现支持,并在实际的物联网方案中进行评估。结果表明,区块链技术可以用作特定可扩展物联网场景中的访问管理技术。
1. 引言
IoT设备数量迅速增长并逐渐对许多关键领域产生重要影响,可预见的是,许多物联网服务将建立在数百万IoT设备的互联互通基础上,而限于IoT设备本身的能力限制和现有的中心化访问控制系统,实际应用依然面临许多挑战。
传统的互联网场景下,设备位于同一信任域内,因此需要中心化的访问管理结构。但相比于传统场景,一些物联网场景是动态的,这句话主要含义有两个
- IoT设备可能是移动的,在生命周期中可能属于不同的管理实体,
- IoT设备可以同时由多个管理实体管理。
此外,许多IoT设备和管理实体在CPU,内存和电池等方面能力都有限,无法支持当前管理系统的正常运行。另外,在访问控制查询和更新请求频繁时,中心化结构中的访问控制服务器可能成为性能瓶颈,因此需要新的方法来解决问题。
这篇论文提出了一种用于管理IoT设备的新架构,建立了一个能将位于不同地点的传感器网络连接起来的分布式访问控制系统。这一解决方案基于区块链技术,访问控制策略则由区块链强制执行,通过采用区块链,能替代原来的中心化管理方式。与传统中心化结构相比,这篇论文的方案有如下优点:
- 灵活性(Mobility):该架构可用于相互隔离的管理域。因此,每个管理域都有自己的自由来管理物联网设备,而访问控制策略仍然由区块链中的规则强制执行。
- 可访问性:一些物联网设备拥有休眠模式,这使得持续的访问是不可行的。这种解决方案则使访问控制规则随时可用。此外,某些管理服务器中的故障不会破坏对信息的访问,所有访问控制信息都是分布式的。
- 并发:同一物联网设备可能同时拥有多个manager,并且这些manager能同时访问或修改访问控制策略
- 轻量:现有的IoT设备无需任何改动即可采用该方案,另外,管理实体和IoT设备间的通信通过区块链实现,可以实现跨平台的通信。
- 可扩展性:管理实体可以使用该方案操纵多个IoT设备,因为设备对访问控制信息的读取是通过区块链完成的,不直接访问管理实体。另外,该方案支持众多的物联网设备通过不同的网络连接到同一条区块链。
- 透明:该系统隐藏了物联网设备的位置及访问资源的手段。
本文的方法与其它方案的不同之处在于没有把区块链集成到物联网设备中,从而避免了IoT设备能力限制带来的问题,能用在更广泛的物联网场景中。与其他解决方案相反,该设计在单个智能合约中运行,简化了区块链网络中的整个过程,并减少了节点之间的通信开销。另外,访问控制信息被实时提供给IoT设备。总之,这种方案是专门针对可扩展性设计的,并且能取得比无论是传统的还是同样基于区块链的方案更好的性能。
文章的其余部分组织如下,第二部分描述架构,第三部分描述架构实施,第四部分描述评估方案并给出评估结果,第五部分分析系统安全性,第六部分介绍物联网中相关的访问控制技术,最后是结论。
注:作者将区块链主要特性 总结为分布式、透明、防篡改和可审计。
2. 方案
这篇论文提出的架构是一个分布式的访问管理系统,访问控制信息通过区块链存储和分发。
除了IoT设备和管理中心(Management hub)节点,所有实体都是区块链的一部分。区块链网络的每个节点都包含整个区块链的副本,而区块链的规模会随着时间推移逐渐变大,IoT设备受限于存储能力无法保持整个区块链副本,因此这篇论文没有将IoT设备纳入区块链网络,而是额外定义了管理中心节点来代替IoT设备发起和接收访问控制请求。
这篇论文的方案还使用一个智能合约定义访问控制涉及的所有操作,该合约是唯一的且无法从区块链中删除,管理者(Manager)与智能合约交互来定义访问控制策略。整体架构图如下
2.1 涉及的角色
整个架构由无线传感器网络、管理者、代理节点、智能合约、区块链个和管理中心六部分组成。
无线传感器网络:属于无线传感器网络的IoT设备在计算能力、存储和电池等方面性能都有限制。由于IoT设备不属于区块链网络,因此需要在区块链网络中全局唯一地标识所有设备,使用公钥生成器产生大量唯一的随机数解决该问题。主要通过使用现有的IoT加密技术自动为每个设备创建公钥,使用强制加密连接确保拥有唯一标识。·
管理者:管理者是负责管理一组物联网设备的访问控制权限的实体。通常,管理者被认为是系统中的轻量级节点。轻量级节点不存储区块链信息,也不像矿工节点那样验证区块链的交易。因此,有能力限制的设备也可以成为系统中的管理者,而不会由于其硬件限制造成障碍。此外,使用我们的方法的管理者不需要一直连接到区块链网络,这有助于减少其硬件资源的使用。
任何实体都可以注册成为管理者。但是,作为IoT设备注册的设备必须在管理者的控制下注册。这是为了避免管理者在未经设备允许的情况下注册到它们控制的设备上。此外,系统中所有已注册的IoT设备必须属于至少一个已注册的管理者。否则,没有人能够管理该设备。已注册的IoT设备可以同时属于多个管理者。
物联网设备在管理者控制下注册后,管理者可以为它们定义特定的访问控制权限。
代理节点(Agent Node):代理节点负责部署唯一的智能合约。为了与智能合约进行交互,区块链网络中的所有节点都需要知道智能合约的地址,该地址在合约部署时返回给代理节点
智能合约:唯一且无法从系统中删除。所有访问控制策略都在智能合约中定义,并由区块链交易触发。除此之外,为了在系统中更新或添加访问控制策略,还必须考虑到管理者是唯一能够与智能合约进行交互的实体。
区块链网络:为简单起见,我们架构中的区块链网络是一个私有区块链,可以在评估系统时为我们提供了更可靠的结果。但是,在实际情况中,应使用公共区块链来实施方案。
管理中心:如前所述,物联网设备不属于区块链网络。并且,大部分物联网设备由于CPU、内存和电池等能力的限制无法成为区块链节点,即使已有一些解决方案无需保存整个区块链的副本,但物联网设备的能力仍无法满足。所以该论文选择使用称为管理中心的节点。管理中心可以将IoT设备在CoAP消息中编码的信息转换为区块链节点可理解的JSON-RPC消息。它直接与区块链节点(例如矿工)相连。多个传感器网络可以连接到一管理中心节点,多个管理中心节点可以连接到同一个区块链节点。物联网设备只能使用管理中心从区块链请求访问信息。
与此同时,管理中心节点不能像物联网设备一样有能力限制,因为它服务于众多的物联网设备的请求。
在最简单的情况下,不需要身份认证,任何物联网设备都可以直接连接到任何管理中心并访问区块链网络。但是,在许多情况下仍需要访问控制。因此,物联网设备将只能连接到某些特定的管理中心节点。将IoT设备添加到系统后,该设备的管理者必须通知相关的管理中心节点有关该设备的凭据,以及通知设备管理中心节点的位置
IoT设备注册在管理者控制下完成,注册后的凭据交给管理中心,并将管理中心的地址交给设备。
2.2 合约接口
本节更详细地说明了智能合约中定义的操作以及管理中心节点用来从区块链查询访问控制策略的接口。
智能合约:I是管理者m公钥集合,G是物联网设备s公钥集合,P是策略集,每个策略代指公钥标识的设备s对另一个设备s’的资源r由权限。智能合约中定义如下操作:
- 注册管理者
- 注册设备
- 为设备添加管理者
- 移除设备的某个管理者
- 添加访问控制策略
- 删除管理者
- 删除设备
- 取消权限
- 查询管理者
- 查询权限
如上,管理者和物联网设备可以由系统通过公钥识别。资源由资源名识别。另外,资源是可从物联网设备获取的任何东西,权限包括查看、修改、执行等。
Management hub
管理中心并非通过交易获取策略信息,而是直接从区块链节点的存储中查询,所以查询操作实时且无交易费。
2.3 交互流程
介绍架构中不同部分间的交互,如下图3,分为四阶段。图中未列出所有交互,但下文会有详细列举。这些交互是注册后系统中的访问控制策略的修改和注册后设备的管理者的修改
Network Set-up
在此阶段,访问管理系统在区块链网络中创建。在区块链网络创建后,代理节点将智能合约部署到区块链网络中。这个智能合约定义了访问控制管理系统的所有操作。一旦智能合约被接纳到区块链网络中,代理节点就会收到智能合约的地址。该地址用于识别访问管理系统中的智能合约,区块链网络的其他组件需要智能合约的地址与其进行交互。例如,系统中的所有managers都将与此智能合约进行交互,以注册为manager或修改物联网设备的控制访问规则
management hub将与区块链网络中最近的可用节点连接,如图3中的矿工节点。该矿工持有区块链的副本。此外,它还使RPC端口可以侦听请求,并允许management hub连接到它。management hub还必须有一种方法来查找它们旁边的可用节点。该信息可以从Internet中的中心化系统获得,但在我们的特定实现中,可以在每个management hub手动设置。
Registration
访问管理系统中的任何区块链节点都可以注册为manager。为了使区块链节点将自己注册为manager,它需要知道智能合约的地址。一旦获得该信息,它就可以将交易发送到智能合约中定义的函数RegisterManager来注册自己。此后,一旦交易成功被接纳到区块链中,manager将收到其注册地址。该地址将标识访问管理系统中的manager
Manager节点还可以在manager的控制下注册IoT设备。物联网设备可以拥有的manager数量没有限制。因此,物联网设备可以随时拥有多个manager。与前一种情况一样,manager将收到注册设备的地址,该地址将用于标识访问管理系统中的设备。物联网设备应该能够在区块链中接受操作之前验证manager控制下的注册。否则,任何manager都可以注册其控制下的任何设备。为简单起见,我们的实施避开了验证。这种假设使得我们的系统在有恶意manager的情况下基本上不安全,但我们的目标是证明架构的可行性而不是安全性
Management Modification
如前所述,每个IoT设备必须属于至少一个manager。此外,我们的系统支持多个manager控制同一设备。我们的系统有多种方法可以将管理控制权从一个manager转移到另一个manager,或者从系统中添加或删除多个manager。
在我们的模型中,我们选择了一个最简单的方式,系统中的每个manager节点都可以将其自身作为其控制的设备的manager。相反,manager不能从系统中删除其他manager。只要IoT设备至少受另一个manager节点的控制,系统将始终让manager从物联网设备中移除自己。否则,智能合约将不允许该操作,将被取消。
另一方面,只有控制IoT设备的manager节点才能在该设备的控制下注册其他manager。
我们解决方案的一个优点是,转移物联网设备的管理控制权是一个简单的过程,因为系统中的所有操作都是使用单个智能合约定义和实施的,而manager不需要与每个操作进行交互。其他。manager只需知道设备的地址和智能合约的区块链地址即可修改管理关系
Policy Definition
manager可以为其物联网设备的资源定义访问控制规则。可以通过多种方式定义权限。但是,我们的实现中的权限列出了有权访问特定资源的设备。此后,manager不仅需要知道其控制下的设备的地址,还需要知道有权访问其IoT设备的设备的地址。manager可以执行策略,使用所有信息为智能合约创建交易。
Policy Modification
与策略定义类似,manager可以随时修改和删除策略。该方法类似于策略定义中描述的方法。如果manager使用AddAccessControl操作添加现有策略,则会自动修改该策略
Policy Discovery
当图3中的设备S2希望访问由设备S1托管的资源时,S2发送请求S1的资源信息的CoAP消息。因此,S1可以通过managemnt hub请求S2的访问控制信息。在物联网设备可以连接到最近的managemnt hub之前,设备首先需要发现managemnt hub的IP地址。可以有多种机制来发现最近的managemnt hub节点,但我们实现中使用的方法假设每个设备都有一个默认位置。然后,managemnt hub将设备的消息转换为RPC消息,并将其发送给与其相连的区块链网络中的矿工。该操作查询来自存储在矿工中的区块链的信息。从本质上讲,这意味着该操作不是交易,也不存储在区块链中。因此,操作立即处理,不会产生任何费用。一旦矿工将S1的访问策略通知managemnt hub,managemnt hub就将答案转换回S1。S1根据managemnt hub收到的信息采取相应的行动。图3示出了成功的答案,因此,S1将资源的信息发送到S2
2.4 系统限制
本文的解决方案改进了物联网设备的管理方式,但区块链技术本身有一些技术限制,以下详细解释并描述一些可能的克服的方法
交易费,该方案中只有manager节点能代表设备创建交易,也因此必须支付交易费,其它节点不属于链中节点,不需要支付交易费。
处理时间,区块链的交易是有确认时间的,该方案中management hub查询权限是实时的,但manager创建交易需要等待确认,这个延迟可能会出现安全问题,比如访问控制不被接受,该交易被撤销前,这一小段时间可能被利用该权限进行非法访问。可能的解决办法是在智能合约中加入时间信息令其自动撤销,或者增加撤销操作的交易费,从而减少该操作的产生。
3. 实现
虽然最终的目标是公有区块链网络,但这篇论文仅仅是概念验证,所以作者选用以太坊搭建了一个私有区块链。智能合约的设计结构如下,IoT设备信息、管理者信息,访问控制策略的细节都存在如下图所示的两个不同结构中,这个结构很相似于哈希表
管理中心可帮助IoT设备与区块链网络连接,通过JavaScript语言调用Web3 JavaScript API与以太坊节点通信,并使用名为node-coap的CoAP JavaScript库与IoT设备连接。
设备则使用LibCoAP库实现, LibCoAP是CoAP的C实现,它可以利用tinydtls框架支持传输层安全性。LibCoAP代码已修改为每个设备自动生成公钥/私钥。密钥长度为20个字节,用于唯一标识管理系统中的设备。该库实现CoAP客户端和CoAP服务器。CoAP服务器用于在CoAP客户端创建CoAP请求消息时侦听CoAP请求并对其进行响应。
4. 评估
因为对以太坊性能的评估已有相关论文存在,这里只进行管理中心和IoT设备的评估,主要是评估管理中心的引入是否会成为该方案的技术限制。CoAP的评估使用了名为CoAPBench的工具,因为该工具能力不足,做了一定修改。
在两个场景下评估,一个是独立评估管理中心从区块链查询信息的性能,一个是很多IoT设备向同一个设备请求资源时管理中心的性能。结果证明,两种情况下延迟都可以接受,并且单位时间可完成的并发量在传感器网络场景下足够适用。
作者同样分析了设计的方案能否防范以下几类安全威胁,1) spoofing; 2) tampering; 3) repudiation; 4) information disclosure; 5) denial of service; and 6) elevation of privileges。表格中的是首字母缩写
S | T | R | I | D | E | |
---|---|---|---|---|---|---|
Management Hub | X | X | X | X | X | |
Manager | X | |||||
IoT Device | X |
尽管区块链提供了数据完整性和可靠性,但物联网节点在该方案中并不属于区块链的一部分,它依赖于管理中心的访问控制信息,而恶意的管理中心可能完成以上前五种任意一种恶意行为,这只能通过引入一个第三方的安全证书发放机构来避免。物联网节点通过验证管理中心的证书验证其身份。
同样由于物联网设备、管理中心与区块链的隔离,区块链无法验证管理中心是否正确的实施了其访问控制规则,另外,由于物联网设备的所有权不断更换,其信息也难以追踪和审计。可以通过强制把管理中心的查询请求作为区块链中的交易执行,会导致性能下降,但提升了安全性。
方案中管理中心需要找到最近的区块链节点以及管理者需要找到智能合约地址,这两件事中都必须保证地址的可靠。
物联网设备在系统中注册,恶意的管理中心可以声称有其控制权,所以物联网设备必须验证自己的注册信息在注册信息被区块链接受前。一个物联网设备也可能冒充另一个物联网设备,也就是欺骗,但这种情况由于使用了安全的DTLS而被阻止。
5. 总结
提出了一个可扩展性比较高的基于区块链的方案,用于物联网设备的访问控制,该方案将设备和区块链网络分离以提供高扩展性,但同时也失去了区块链的安全特性。其最大优点就是能适用于更广泛的物联网场景。