Smart Contract-Based Access Control for the Internet of Things

警告
本文最后更新于 2019-05-14,文中内容可能已过时。

Zhang Y, Kasahara S, Shen Y, et al. Smart contract-based access control for the internet of things[J]. IEEE Internet of Things Journal, 2018.

被引:35 次

该论文调查了物联网中的访问控制问题。提出了一个基于智能合约的访问控制框架,该框架包括多个访问控制合约(access control contracts, ACCs),一个判决合约 (Judge contract, JC),一个注册合约(register contract, RC),来实现物联网中分布式和可信任的访问控制。每个 ACC 为一个 subject-object 提供一个访问控制方法,并通过检测 subject 行为实现基于预定义策略的静态访问权验证和动态的访问权验证。JC 则通过接收来自 ACC 的恶意行为汇款,进行行为判决并返回相应的处罚策略,从而实现 ACCs 的动态验证。RC 记录 ACC 和恶意行为判决方法信息,并提供管理这些方法的相关功能,如注册、更新和删除。最后使用一台台式机,一台笔记本,两台树莓派,基于以太坊智能合约实现了该架构。

Section2 介绍该论文考虑的物联网系统

Section4 介绍基于智能合约的访问控制框架

Section5 介绍该框架实验

IoT 系统可能遭受入侵,导致相关资源(数据、服务、存储单元、计算单元等)的合法权限被获取,访问控制是阻止未授权实体对资源非法访问的主要方式。传统的 IoT 访问控制方案主要建立在一些著名的访问控制模型上,如 RBAC、ABAC 和 CapBAC。RBAC 方案中,访问控制基于组织中主体的角色,通过为角色关联一组访问权限,并将角色分配给主体,可以建立一个主体和访问权限间的多对多关系。ABAC 的访问控制基于策略,该策略结合不同类型的属性,如主体属性、客体(实体或实体持有的资源)属性和环境属性等来表示在什么样的情况下可以授予主体权限。CapBAC 中基于权能的概念授予主体访问权限,权能是可转让而不可变的权限令牌,为每个主体描述了一组访问权限。

以上的方案中,验证主体的访问权限一般有中央权威进行,存在单点故障问题。分布式 CapBAC 被提出解决这一问题,其中访问权限验证由被请求的 IoT 对象自己来指向而不是中央权威。然而,IoT 对象通常能力不足而会被入侵者轻易控制,所以它们无法作为访问权限验证实体被完全信任,因此,分布式 CapBAC 模型可能无法解决不可信 IoT 环境下的访问控制。作者提出使用区块链和智能合约来实现用于 IoT 的分布式和可信的访问控制,本文的访问控制框架由一个注册合约(RC)、一个判决合约(JC)和多个访问控制合约(ACC)组成,其中每个 ACC 提供一个 subject-object 对的访问控制方法,并同时实施基于预定义访问策略的静态权限验证和基于检测 subject 行为的动态权限验证。ACC 还提供添加、更新、删除访问控制策略的功能。一旦 ACC 被调用,它将被区块链系统的所有参与者验证,确保访问控制的可信。为了实施动态验证,JC 提供了错误行为判决方法,它接收来自 ACC 的关于 subject 的恶意行为报告,进行判决并返回相应的判决结果。为了管理访问控制和恶意行为判决方法,RC 可以注册方法的相关信息,提供注册新方法、更新和删除已有方法的功能。

https://ieeexplore.ieee.org/mediastore_new/IEEE/content/media/6488907/8709863/8386853/zhang1-2847705-small.gif

  • 服务器。与 IoT 设备 / 存储设备链接,为用户提供服务。交互方式包括
    1. 从传感器收集环境数据,
    2. 向执行器发送命令执行某些操作,
    3. 从存储设备查询数据或将数据存到存储设备
  • 存储设备。存储对其它各方有用的数据,包括服务器运行数据,传感器收集的环境数据,用户配置文件等。
  • 用户设备。例如 PC,Laptop,smart phone,享受服务器提供的服务,如查询当前温度,并可从存储设备读写数据。
  • IoT 网关。连接大量 IoT 设备,作为它们的代理
  • IoT 设备。感知环境数据发给 server/storage device,执行来自用户的命令

典型的物联网应用中,每个节点都拥有一些其它节点需要的资源(服务、数据、存储空间等)。因此,资源所有者需要实施访问控制阻止未经授权的访问,例如,服务器需要能阻止未注册用户的访问请求,或已注册用户对未订阅服务的请求。未来阻止对存储空间和数据的非法使用,存储设备必须能限制来自未授权节点查询数据或存储数据的请求。IoT 设备也必须能拒绝未授权而对其数据的检索或对执行器的控制。

该论文使用下面论文中的访问控制矩阵抽象了访问控制问题。

R. S. Sandhu and P. Samarati, “Access control: Principle and practice,” sIEEE Commun. Mag., vol. 32, no. 9, pp. 40–48, Sep. 1994.

其中,定义希望访问其它节点资源的 subject 集合 S,持有资源的 object 集合 O。每个属于集合 O 的 object (称为 o),都有资源集 R0(例如,文件和程序)。每个属于资源集 R0 的资源 r0 都与访问权集合 Ar0(如读、写、执行)关联。对于每个 subject(称 s)和给予它的资源 r0,构成映射 G (s,r0),该映射属于访问权集合 Ar0。

访问控制矩阵只给了一个抽象的定义,该论文中使用访问控制列表实现,列表中每条包括 subject,object 的资源,subject 执行的操作,以及对操作的许可(allow 或 deny)。主要目的是基于该模型处理物联网中的访问控制问题。

每个 ACC 实现一对节点的访问控制,JC 进行恶意行为判决,RC 存储 JC 和 ACCs 信息并提供管理合约的功能。如下图所示。

https://ieeexplore.ieee.org/mediastore_new/IEEE/content/media/6488907/8709863/8386853/zhang3-2847705-small.gif

ACC 由 object 部署,这个 object 想要控制来自 subject 的访问请求,假设一个 subject-object 对就访问控制方法达成一致,并且每个访问策略由一个 ACC 实现,则该 subject-object 对与多个 ACCs 关联,但一个 ACC 仅可以和一个 subject-object 对关联。框架中,为了控制来自 subject 的访问请求,每个 ACC 的实施不只是通过检查预定义策略进行的静态访问权验证,而且检查 subject 行为进行动态验证。

一个 ACC 例子如下表,每行都是一个确定的(resource, action)对,Permission 字段可用于静态验证,ToLR(Time of Last Request)字段可用于动态验证,如 subject 短时间发起大量请求的恶意行为。

https://ieeexplore.ieee.org/mediastore_new/IEEE/content/media/6488907/8709863/8386853/zhang.t1-2847705-small.gif

为了记录 subject 的恶意行为,ACC 还维持一个恶意行为列表如下

https://ieeexplore.ieee.org/mediastore_new/IEEE/content/media/6488907/8709863/8386853/zhang.t2-2847705-small.gif

Misbehavior 字段也可能描述恶意行为的细节,便于 JC 进行判决。ACC 还提供一些函数接口如下以便管理策略和实施访问控制

  • policyAdd()
  • policyUpdate()
  • policyDelete()
  • accessControl ():接受访问控制请求并返回结果和惩罚。
  • setJC()
  • deleteACC ():自我销毁

只有 ACC 创建者可以添加新策略,更新和删除已有策略,设置 JC 和删除 ACC。

JC 接收到 ACC 发来的恶意行为报告是,基于 subject 的恶意行为历史来基于惩罚,并将判决结果返回 ACC。一个 JC 示例如下,Object 是遭受恶意行为的节点:

https://ieeexplore.ieee.org/mediastore_new/IEEE/content/media/6488907/8709863/8386853/zhang4-2847705-small.gif

JC 还接收 misbehaviorJudge () 和 deleteJC () 两个函数接口进行恶意行为报告和自毁。

RC 管理访问控制和恶意行为判断方法。因此,RC 维护一个查找表,该表注册所需信息以查找和执行所有方法,查找表示例如下:

https://ieeexplore.ieee.org/mediastore_new/IEEE/content/media/6488907/8709863/8386853/zhang.t3-2847705-small.gif

JC 的 subject 和 object 字段留空。依据查找表,RC 提供以下函数接口

  • methodRegister()
  • methodUpdate()
  • methodDelete()
  • getContract ():接收 MethodName 并返回合约地址和和合约 ABIs

包括注册、更新和删除访问控制方法;注册和更新恶意行为方法;添加、更新和删除 ACC 策略,进行访问控制等。基本都是通过调用相应的合约函数实现。

两台电脑,两套树莓派。电脑作为用户设备,树莓派作为 IoT 网关。在树莓派间考虑访问控制,一个作为 subject,一个作为 object。每个设备上都运行 geth,并配置所有设备形成私有区块链网络。两台电脑能力较强所以作为矿工。

主要是 ACC、JC、RC 合约逻辑

就是进行各种调用查看结果

主要考虑了各操作的 gas 消耗和执行时间。

本文研究了物联网中的访问控制问题,为此我们提出了一个基于智能合约的架构来实现分布式和可信赖的访问控制。该框架包括用于系统中多个 subject - object 对的访问控制的多个 ACC,一个用于在访问控制期间判断 subject 的恶意行为的 JC,以及一个用于管理 ACC 和 JC 的 RC。还为物联网系统中的访问控制提供了案例研究,其中包括一台台式计算机,一台笔记本电脑和两台 Raspberry Pi。案例研究证明了所提架构在实现物联网分布式和可信赖访问控制方面的可行性

支付宝
微信
0%