这篇文章是关于区块链用于物联网访问控制的总结,有两个目的,一是梳理脑子里的思路,指导接下来的研究方向,二是作为之后要完成的小论文的参考。

在开始正文前,我们首先需要来定一个基调:区块链和智能合约只是一种实现访问控制的手段,我们可以用它来实现 ACL,也可以用它来实现 RBAC、ABAC、CapBAC 等其它任何访问控制模型。研究过程中遇到的很多问题,比如属性和策略的定义方法、属性发现机制、策略挖掘机制、策略冲突解决机制等,说到底,都是传统领域中研究这些模型已经出现过的问题,通常已有成熟的解决方案,直接拿来用就好,但不应当作为一个创新点来讨论;另外,这些模型间自身的区别,比如 RBAC 比 ACL 好在哪里、ABAC 又解决了什么问题、CapBAC 解决了什么特殊领域的问题,依然是传统方向已经深入讨论的问题,甚至是这些模型的开创者就在论文中详细阐述过的,我们没有必要继续阐述,当然也不能作为自己的创新或优势,不能说我将 ABAC 与区块链结合,就比你的 RBAC 和区块链结合好,它们都有各自的适用场景。我们真正应该关心的,是区块链用于实现物联网访问控制有哪些好处,我们设计的方案如何充分发挥了这种结合的优势,又如何解决了它们结合所产生的问题,这才是创新点应当所在之处。

还有一个需要明确的问题,是我在研究过程中逐渐意识到的一点:再小的一个方案,涉及到的方向都很多,有些是我们必须解决的,有些不是,对于那些必须解决的问题,如果不是我们关注的重点,可以直接使用别人的设计或方法,这是不可避免的,人的精力也是有限的, 不可能在每个方向都有突破,但是,我们需要重点突出自己所做的改进,解决了什么问题,相比别人的方案有什么优点,这就是创新点,这种点,有2-3个就够了。举个例子,物联网和区块链结合,在吞吐量、存储、结合方式等太多方面有可做的事了,有些比如 PoW 对资源的需求和物联网设备的有限能力的冲突,是所有人都要面对的,但如果不是我们当前方案重点解决的问题,那么直接用别人设计好的方法就行,把精力放在自己重点关注的问题上。

1. 背景

毫无疑问,物联网已经走进了我们工作和生活的方方面面,智能工厂、医院、车联网、智慧城市、智能电网、家里的智能家居,甚至我们身上的可穿戴设备,然而,物联网的快速增长带来了巨大的安全隐患。

  1. 物联网设备会生成、处理和交换大量安全相关的数据和隐私敏感的信息,而且一些设备本身承担的功能十分重要,受到攻击后造成的危害也更大,比如一辆行驶中的汽车的控制权被夺取,可能威胁到驾驶员的生命;
  2. 现有物联网设备朝着能耗低、重量轻的方向发展,其能量和计算资源主要用于执行核心程序,只有很少的一部分能配给处理安全和隐私问题,尤其是,对于传感器、执行器、RFID 标签等,自身完全没有能力处理相关逻辑;
  3. 传统的解决安全与隐私问题的结构是集中式的,无法应对分布式的大规模物联网设备以及巨大的流量,还面临单点瓶颈和故障问题,并且往往代价较高,不适用于物联网

针对传统物联网访问控制的局限性,区块链具有如下优点,这些优点多是基于分布式、不可篡改、可追溯等特性。

  1. 保证访问权限归属于用户。这点其实主要是针对手机App来说的[1],但对工业场景如车联网也是适用的,汽车制造商会为车主提供各种服务,因此涉及到权限和隐私问题。总的来讲,凡是涉及服务提供方的场景,都可得益,这种归属权具体指代的是:1)服务商只能获取用户授予的权限,系统不是黑盒,用户的授权过程确实有效;2)用户可随时撤销权限,不受服务商阻挠。其缺点在于,链上的信息对所有区块链的参与者是完全公开的,但这种公开可以为我们带来对非法操作的追溯与惩罚,具有两面性。其局限性在于,服务商可以做出不授予权限就不提供服务的设计,即使这种权限是不必要的,区块链对这种情况无能无力。
  2. 解决集中式的单点故障问题和可扩展性问题。由于分布式的特性,这种优点是显而易见的,虽然传统IoT访问控制中也有如CapBAC等分布式方案,但这些方案中轻量级设备无法保证自身安全性,无法应用在不可信环境下,区块链依然具有显著的优点。虽然区块链当前也面临可扩展性问题,但随着研究人员的不断努力,这一问题已取得较大进展,分片方案已经得到大量使用,并在持续不断的改进。
  3. 保证访问控制权限不受篡改。基于不同的实现方案,可能指权限,也可能指实体属性、访问控制策略等,这一点有以下几方面的含义:1)无论服务提供商还是用户,防止一方以欺诈方式拒绝执行区块链的判决结果,实际上指的是依据链上内容的不可篡改性,对历史数据进行审计的过程;2)防止恶意第三方(黑客或其它)非法获取权限以谋取利益,这种抵御能力有时不仅限于对不可信环境(各方合作)有益,对信任域(电网系统、公司、工厂内部)也有意义,因为这种信任域在当前依然有着艰难的处境,攻击事件屡发不止。论文[3]有一部分描述是相关的。
  4. 跨组织、跨域访问控制问题。这是区块链最能发挥自身优势的地方,涉及明显的信任问题,[2]描述了跨组织角色认证的问题,使用的是RBAC模型。

以及一些对区块链完成物联网访问控制的理解:

  1. 访问控制的实质是将区块链看作了分布式权限数据库,因此而言,物联网数据量庞大的问题并不会在该领域造成困扰,因为数据本身并不会存入区块链。而如前所述,区块链不仅具有常规分布式数据库的优点,还具有自身的特性,抗攻击能力较高、容灾而且审计方便。
  2. 正如普通互联网应用中涉及的访问控制,区块链的访问控制也理应是区块链应用(Dapp)的基础
  3. 如果物联网和区块链是天然可结合的,是必然的发展方向,那么未来就不会继续使用原有的访问控制系统,遵循简单原则,使用同一套区块链系统完成访问控制是最好的选择
  4. 访问控制的针对目标必然包含数据,但不仅限于此,对物联网而言,设备的执行权限也是访问控制的一部分。因此,访问控制的研究是和数据共享的研究有一部分重合的,但不等同,不过可以借鉴数据共享领域的前沿研究。
  5. 传统访问控制的优点是吞吐量和存储。区块链在访问控制的速度上由于交易确认时间的存在,有着先天的缺陷,只能逐渐通过其它手段优化,而存储的高额代价,尤其是区块链中的存储只能增加不能减少,相比传统存储方案也是一个劣势。

最后谈论应用场景问题。最为相关的一篇论文是[14],基于属性的访问控制设计作为Dapp的一部分,用于医疗机构中对手术器械RFID标签的访问,并且最终设计目标是供应链,显然,这一案例涉及到了与我们相关的所有概念,是一个绝佳的参考。[7]中提到的场景是多个智能家庭之间彼此的访问控制,[7]的作者Dorri的另一篇区块链与车联网的论文则涉及保证权限归属用户这一优点。综上,我们将应用场景分为两类:

  1. 同一信任域内。显而易见的私链情况,现在依然存在大量关于私链是否有意义的讨论,这种情况私链单纯的作为一个分布式数据库存在,相比于传统分布式数据库的优点是抵御攻击的能力和智能合约,智能合约意味着可以在这个分布式数据库上编写和运行各种应用,这是最大的优势。
  2. 不同组织间的协作。最典型的是供应链场景,但不止于此,同一集团位于各地的分公司和代理机构、公司与服务提供商、充电桩涉及的电动汽车网络、[10]中提到的产品个性化定制等,都是潜在的应用场景。我们在此对两个场景做具体描述,选择一个进行实验设计
    • 以工厂为核心,设备供应商(维修商)、原材料供应商、监管机构、其它合作商等一同组成的联盟,涉及对彼此间设备信息的访问。(参考Dennis MillerBarco You
    • 供应链。区块链记载货物的位置和时间信息,作为货物的装运证明和交付证明。这样可以最大限度地减少装运延迟,更准确地预测货物地交付时间,更好地实时检测库存水平。位置数据由IoT传感器捕获,IoT传感器将数据转发到IoT平台。供应链的参与者包括原始设备制造商(OEM),供应商,第三方物流提供商,托运人和仓库。每个参与者都可以根据参与者的角色查看区块链中的相关货运数据。制造商使用物流管理系统来查询区块链的装运数据,并向区块链提供额外的装运信息。这一描述来自论文[25],这里显著的会涉及访问控制。

对于实际应用场景的考虑,区块链本质解决的是信任问题,一些详细的内容可以参考[9]和[10]两篇论文的描述。实验的设计与考虑查看第6节。

2. 引入智能合约

[1, 3-6]都是利用比特币解锁与锁定脚本完成访问控制的论文,Ouaddah A在[4]中提出的FairAccess是一个典型的解决方案,已被大量的研究者认可和引用,这是一个基于区块链技术用于物联网场景的访问控制模型。然后,Ouaddah A在论文[5]中对涉及的流程进一步做了详细的解释,因此我们基于论文[5]说明这一类访问控制的基本方法和存在的问题。

比特币脚本存在的意义是自动化地验证交易的合法性,分为锁定脚本和解锁脚本两种。举个例子,假设Alice要向 bob支付0.015比特币, Alice会用到一个UTXO(假设是单输入,单输出),这个UTXO带有一个锁定脚本,为交易设置“障碍”。 bob如果要接收这笔比特币,就要给出一个解锁脚本,然后解锁脚本和锁定脚本组合后执行的结果为真才能确认交易有效,换个说法就是Bob证明了对这笔比特币的所有权。

比特币的脚本是简单的堆栈语言,是非图灵完备的,当把这种脚本语言推广到图灵完备的逻辑时,就是智能合约。因此智能合约可视作比特币脚本语言的超集,它可完成脚本语言本身的职能,同时还能做到其它的事情,但我们使用智能合约并不仅仅因为这一点。

来看看利用脚本语言完成访问控制的过程,假设设备A向设备B请求一个资源的访问权,它需要首先获取一个访问令牌。这一操作通过如下过程完成:

  1. 设备A向设备B的所有者发送请求,声明要访问的资源和在资源上执行的操作
  2. 设备B将访问控制策略以锁定脚本的形式封装到授权交易的输出中,以设备A的地址为接收者,发送授权交易。该交易的实质是比特币的转账,访问令牌的实质是签名后的UTXO,也就是比特币。
  3. 授权交易被整个区块链确认后,设备A就获得了资源的访问权。

以上是策略定义的整个过程,当需要实际发起访问时,设备A发起访问交易,过程如下

  1. 访问交易的输入是设备A未花费的输出(UTXO的基本原理),之前授权交易将访问令牌发送给了设备A,因此,此时访问令牌在这一笔交易的输入中。
  2. 设备B利用解锁脚本确认设备A拥有访问权限
  3. 访问交易经整个区块链确认,访问控制完成。

FairAccess中利用比特币完成的访问控制基本流程如上所示,Zyskind G在[1]中使用区块链账户公私钥利用密码学知识构建的复合身份体系,完成访问控制的过程与FairAccess是相似的,其它几篇类似。这种方案存在很明显的问题:

  1. 每一次访问都要先获取访问令牌(即定义策略),其后的访问控制会消耗掉该访问令牌。这是一种极为原始的体系,甚至连ACL(访问控制列表)都不如,设备(资源所有者)每次都要对特定请求者进行判断然后定义策略,物联网难以承受这种非自动化的访问控制方式
  2. 定义策略与访问控制交易成对出现意味着交易的数量翻倍,最终会导致区块链体积的快速增长
  3. 一次访问控制需要两次交易确认过程,确认时间的翻倍为提升访问控制的速度、尽可能实现实时性带来了更大的困难。

除此之外,还有一些其它的设计,比如Dorri A在[7]中的方案,访问控制的策略定义在区块中,该论文在普通区块结构中区块头的基础上,新添了策略头结构,用来存储访问控制策略,并在Cluster Header(分层管理结构中的管理者)中维护可访问者的公私钥列表作为辅助,实现访问控制。但这种方式的本质依然是ACL(访问控制列表),严重依赖于人的参与,只能应对设备数量不多的情况。

基于智能合约实现的访问控制,智能合约本质只是一个载体,其图灵完备的特性,允许我们实现已有的成熟访问控制模型如ACL、RBAC、ABAC、UCON等,在区块链分布式、不可篡改的特性上结合传统模型的优点。因此我认为并不存在完全新的访问控制模型,仅仅是利用区块链和智能合约替换了原先的XACML、OAuth和UMA等实现方式。

3. ABAC模型

如上节所述,基于智能合约实现的访问控制,实质上区块链和传统模型的结合,因此,选择合适的模型利用智能合约实现是考虑的核心。依然是Ouaddah A,在[8]中,详细的分析了各传统模型在物联网环境下的适用性,结论中包括:

  1. RBAC 将角色和一组权限关联在一起,用户根据系统所赋予的角色获取相应的权限 。 但是 RBAC 作为一种静态的访问控制方法,无法提前预设{用户,角色}、{角色,权限}的对应关系,因此无法解决物联网节点动态接入的问题
  2. ABAC 是一种动态的访问控制模型,使用属性作为访问控制的关键要素,而属性是主体和客体内在固有的,通过实体属性发现机制 可以挖掘出独立、完备的主体、客体等的属性集合,因此不需要管理者手工输入,然后通过自动化的属性-权限 关联关系发现机制可以快速挖掘出{属性,权限}.因此,ABAC 不仅可以解决物联网中节点的动态接入问题,而且 对于节点移动和访问数据变化带来的动态性也可以完美解决.
  3. UCON 不仅解决了节点动态接入问题,而且还在访问控制过程中考虑 了连续性和可变性两个重要属性.连续性体现在访问控制会对请求者访问资源的整体过程进行实时监控,可以随时撤销其资源使用权限;可变性是指属性在访问控制过程中是可变的
  4. CapBAC 在物联网环 境中已经实现了轻量级的分布式的访问控制,而且支持动态性和可扩展性.虽然 CapBAC 分布式的设计避免了使用集中式服务器所带来的单点故障问题,但是 CapBAC 在物联网中轻量级的设备上实现 分布式的访问控制决策时,轻量级设备并不能保证自己的安全性,有可能会被攻击者通过安全性薄弱的物联网 设备作为突破口威胁到访问控制的安全,因此,分布式 CapBAC 无法解决在不可信环境下的物联网访问控制.

因为区块链的分布式特性同CapBAC是重合的,甚至可以解决CapBAC无法解决的不可信环境访问控制,不予考虑。最终考虑ABAC和UCON,理论上采用智能合约实现UCON是最佳选择,但考虑到UCON是ABAC的扩展,因此先实现一个ABAC模型作为测试

在具体的实现之前,先来看看当前使用智能合约实现的访问控制都是如何做的。[2]中利用智能合约实现了一个典型的RBAC模型,用来解决跨组织的用户角色认证问题,而且权限的判定过程是在链下进行的,智能合约只起到确认角色身份的作用。[11]中的智能合约则提供了设备的注册和策略添加、权限判定的完整功能,但其访问控制策略的定义是一对一的,本质上是一张访问控制列表,[12]声称实现了动态的访问控制,但仅仅是在[11]的基础上添加了一个在发起访问控制前查询是否存在相关的访问控制策略的过程,如果不存在相关策略,则请求设备管理者添加此策略,这种动态在设备数量较多时是效率低下的。[9]清晰的划分了设备注册、访问控制、行为判决等基本功能,通过良好的设计实现了对物联网设备的访问控制,但其策略的定义依然是一张访问控制列表,所有的权限需要事先定义,缺乏动态性,难以应对大量的访问控制请求。这些论文利用智能合约实现的访问控制无一例外都依然面临着传统模型在物联网环境下面临的问题,仅仅利用区块链提供了分布式的信任。

既然如此,接下来考虑一些同样实现基于属性的访问控制的论文,有6篇[3, 13-17]。[14]针对的是特殊场景:医院设备,访问控制涉及的属性和策略也完全基于RFID标签来定义与执行,这一实现提供了一个良好的范例,但其策略执行的过程是在链下进行的,虽然在医院这个特殊场景中适用,但其它的常规物联网场景恐怕不很合适。[3]使用比特币脚本完成基于属性的访问控制,[13]所描述的方案更类似于一个新的密码学协议,需要经过双方的多次交互,[15]则倾向于利于基于属性的加密来完成数据共享.

这部分工作还没有完成,论文[16]仍未完全理解,而且可预见的短时间内无法理解,[17]处于刚刚发现的状态,但鉴于发表自2017年,并不抱希望,已简略总结的几篇基于属性的访问控制也还需要进一步的阅读和对比。因为涉及的论文比较多,本周在其它部分的论文回顾和总结上花费了大量精力,到这里已经时间不够了。留待下周做

本部分未完待续…

4. 面临的问题

上述模型的考虑仅仅是为了完成访问控制这一基本功能,以及应对设备数量多,访问控制请求频繁这一特点。而物联网环境下的访问控制难题不止于此,总结为三个:

  1. 物联网设备计算和存储能力较弱。 物联网中的终端设备如智能摄像头、传感器、可穿戴设备、智能家居、智能汽车等都有大小不一的计算和存储能力,但这些计算和存储能力主要是为物联网设备自身的功能服务的,无法为访问控制提供足够的计算和存储能力。
  2. 物联网节点数量多、种类多、数据类型多,产生的数据量庞大
  3. 物联网动态性问题,即部分节点具有移动性,及节点的动态接入问题

传统方案中

  1. 访问控制涉及的计算与存储由集中式的服务器完成,解决节点能力不足问题;
  2. RBAC将角色与权限分离,通过管理角色,减少ACL的存储数,适应了少量特定物联网场景,ABAC基于属性完成访问控制,完全适用物联网节点数量多、种类多、数据类型多的特点,CapBAC等其它模型也可以应对某些特定的物联网场景;
  3. 一些改进的RBAC添加了上下文感知和上下文约束,实现了角色和权限的实时动态管理;ABAC作为动态访问控制模型天然支持节点动态接入;UCON在节点动态接入的基础上,加入连续性和可变性两个因素,可以实时监控整个访问控制过程,动态调整属性和资源使用权限[18, 19]

目前区块链解决这一问题的方案总结如下:

Blockchain-Based Access Control for IoT
Blockchain-Based Access Control for IoT

由此可见,使用区块链替代集中式的中央权威的同时,结合分层管理的方式,已经一定程度解决了节点能力弱的问题,唯一在细节上的区别是区块链仅用于提供存储能力还是同时提供存储与计算能力,这里存储指代的内容大致包括设备收集或产生的数据、访问控制记录、ACL、(属性-权限)关联关系和属性集等内容,计算指在区块链中完成权限的比较与授予。之前提到的论文中,一部分仅将权限存储在区块链内,权限的比较(即策略的执行过程)是在链下进行的,这称作仅利用了存储功能,将权限、策略执行过程全部放在区块链中执行,称为同时利用了区块链的存储与计算功能。后一种方式充分发挥了智能合约的能力,在智能合约中执行访问控制策略,有助于防止设备恶意拒绝已授予的访问权限。

分层管理在解决节点能力弱的问题的同时,也解决了节点数量多,管理不便的问题。但区块链存储的高额代价、较慢的交易确认速度,都与物联网快速增长的数据量冲突,这一问题属于在实现基本的访问控制功能上的优化,可通过链下存储数据、链上存储数据哈希,压缩存储,设计更好的共识来完成。然而当前主流的共识

动态接入的问题主要指的是在物联网系统中,设备的加入和退出比较频繁的场景,但区块链本身的特性就足以应对这种情况。ABAC模型应对的动态性主要指的是实现了访问控制的合约自动应对访问请求而尽量减少管理者后续的参与的情况,管理者只需要针对性的更新属性和策略,不必对每个请求都专门定义策略。两者相互补充。

除了上一部分提到的问题外,区块链还引入一些新的问题

  1. 模型设计及实现。一个好的访问控制模型设计或实现仍然能带来很多好处,这里主要指智能合约实现访问控制模型的方式,比如[9]就进行了良好的功能划分。同时,由于主要的功能都基于智能合约实现,合约的安全性急剧上升,虽然区块链提供不可篡改特性,但合约代码本身的安全漏洞仍然存在,而且导致了漏洞发现后无法及时的更新,因此合约部署前的安全性检查至关重要。
  2. 区块链存储的访问控制策略或交易数据本身的隐私。利用了区块链提供的信任,取代了传统的中央权威,将权限和策略存在了区块链中,但区块链的数据是对整个区块链网络的用户公开可见的,这种情况可能在某些场景中不适用,为了满足需求,需要可选的实现对交易以及合约的隐私保护。Quorum的隐私交易管理器是能找到的最好方案,我们也不必去做重复造轮子的工作。
  3. 跨链访问。区块链可以轻松实现跨域访问控制,但仅仅是小范围的,用于一个商业联盟。一条链提供全世界的访问控制显然不可能,跨链访问控制是后续一个必须进行的工作。

5. 可参考的方案设计

1
Ali Dorri.  Blockchain in Internet of Things:Challenges and Solutions

Ali Dorri设计的架构由smart home, overlay network, cloud storage三部分组成

Ali的方案架构
Ali的方案架构

1
Oscar Novo. Blockchain Meets IoT:An Architecture for Scalable Access Management in IoT

这篇论文中IoT设备不属于区块链网络,通过Management Hub与区块链交互。这种方法使IoT设备不再收到有限能力的限制,并且减小了延迟。另外,该论文中的方案针对可扩展性进行了优化,可支持大批量设备的加入退出和地理上位于不同位置的传感器网络的统一管理。

去中心化的访问控制系统
去中心化的访问控制系统

IoT设备在Manager的控制下注册,一个IoT设备可以属于多个Manager。注册完成后Manager通知Management Hub,同时将Management Hub的地址传递给设备。Management Hub需要能找到最近的区块链节点,从而获取策略信息。

合约中设备和管理者注册结构是mapping,策略定义是一个设备对另一个设备的资源是否有访问权,设备由公钥标识,资源由资源名标识,权限则包括查看、修改、执行。

该方案中为了可扩展性和实时性做了妥协,但这种结构下管理中心的存在是最大的危险,在可扩展性、吞吐量和延迟等方面存在分片、雷电网络等解决方案。无独立能力的物联网设备在Manager控制下注册的思路值得借鉴。智能合约中注册和策略的定义实现方式也值得学习。

我们对上述两个方案做了一点比较,首先是架构方面,具体表格如下

  1. Ali自己设计了区块链,Oscar使用以太坊
  2. Ali的方案中一共涉及三种区块链,其中Shared BC是一个人管理多个智能家庭的特殊情况,以下比较不考虑(BC是Blockchain的简称)
  3. Ali方案中的Local BC实际上只是用了区块链的结构,但本身是集中式的,只有一个或少数几个高资源设备维持链
  4. 两人的方案中,普通的有资源限制的物联网设备都不参与BC
比较的方面OscarAli:Local BCAli:Overlay BC
区块链可见性论文中的验证实现是Private,但方案的最终目标是PublicPrivatePublic
BC参与者Manager,以及其它的以太坊BC节点一个或少数几个高资源设备智能家庭miner,智能家庭的其它高资源设备,用户的智能手机或个人电脑
共识机制PoW
涉及的交易类型设备注册,访问控制策略定义与修改store, access, monitor, remove, genesisaccess, store, genesis
存储方式未提及,猜测是传统的集中式集中式(Local storage)集中式(cloud storage)
BC是否保存IoT设备产生的数据是,但非实时是,但非实时
访问控制实现方式智能合约策略头请求者,被请求者和转发三个公钥列表
权限查询和执行management hub从最近的区块链节点查询并执行miner从策略头查询并执行CH进行公钥匹配,并执行
IoT设备识别公钥设备ID公钥
对BC的控制权没有人智能家庭所有者没有人
对miner/CH/manager的信任信任级别相同信任级别相同信用有等级
如何选择miner/CH/manager自选屋主选择簇中节点选举
激励机制

其次是实现方式

  • Ali Dorri的方案中,访问控制机制的核心是Local BC中的策略头(policy header),权限由智能家庭的主人直接定义在策略头中,交易发生之前先由miner在策略头中查询是否拥有权限,再执行。Overlay BC中因为有cluster和cluster header,维持着三个公钥列表,执行着一部分的权限控制。

  • Oscar Novo的方案中,权限定义在智能合约里,由manager与智能合约交互完成权限的定义与修改,由management hub与BC任意节点交互完成权限的查询和执行

再次是安全方面

首先分析对安全和隐私的需求是否得到实现以及如何实现。关于信息安全框架,国外主要从机密性、完整性和可用性三方面分析,国内从内容安全、数据安全、运行安全和实体安全四层分析。Ali的论文中是前者。

需求Ali如何保证Oscar如何保证
机密性通过对称加密实现采用CoAP的C语言实现LibCoAP,通过利用tinydtls框架实现安全通信
完整性通过哈希实现未采用相关机制保证
可用性通过限制设备和miner可接受的交易实现通过CH维持的三个公钥列表过滤交易
用户控制通过在本地BC中记录交易实现通过manager与智能合约交互定义和修改权限实现
身份鉴别通过使用策略头和共享密钥实现manager和manager管理下的IoT设备都需要再区块链中注册

然后分析两方案对各种常见的攻击是否能有效应对。

AliOscar
Sybil一个智能家庭内的设备有自己的设备IDmanager和IoT设备都要注册,且IoT设备由公钥唯一识别
spoofing访问权限是由屋主直接定义的,如果家里的设备被屋主信任,那么不会出现欺骗,如果不被信任,不会授予权限,唯一的问题是屋主要手动定义权限manager和IoT设备都会进行注册,但智能合约的地址以及management hub要寻找最近的区块链节点的地址,这两种地址可能不可靠,带来的后果也很严重。
tampering覆盖网络中的交易是签名的,访问权限是不可篡改的,由区块链保证,但IoT设备提供的数据难说
DDoS首先,攻击者不可能直接在智能家居设备上安装恶意软件,因为所有的交易都由miner检查,所有的设备都无法直接访问。其次,假设设备被感染,称为恶意节点,由于所有传入传出的请求都由miner通过检查策略头授权,构成DDoS攻击流量的请求是不会被授权的CH会匹配公钥,从而阻止这种攻击,但使用不同的公钥,这种攻击有可能达成可能
repudiation会达成,但会被发现,从而簇中节点重新选举CH可能,management hub是否执行策略,区块链无法检查

然后是隐私

  • Ali为了防止Linking攻击,允许用户将任意交易发到覆盖网络,并且每个交易的ID和公钥都可变。

  • Oscar的方案区块链和物联网是分离的,没谈论隐私的问题

最后是性能

Ali Dorri的方案中,区块链不存储传感器数据。作者通过使用Cooja仿真器仿真智能家居场景,和没有使用加密,哈希和区块链的场景做对比,结果如下,虽然引入了额外的开销,但作者认为相比于该方案带来的安全性和隐私性,额外引入的这些开销是可以接受的。

  1. Packet 开销:多一个策略头,比原本的大
  2. 时间开销:由于额外的加密和哈希操作,需要更多的时间,但引入的额外时间最多不超过20ms,可以接受。
  3. 能量开销:能耗几乎增加了一倍。

Oscar Novo的方案中,区块链也不存储数据,而是只存储访问策略,所以处理实时数据和非实时数据没有区别,因为权限都能实时查询到,基本没有延迟。在实验仿真中,考虑不同数量的并发客户端(management hub或IoT 设备)每秒请求数及消息数的变化,该方案能支持大量的并发请求,满足物联网的需要。

1
A Blockchain-Based Solution for Enhancing Security and Privacy in Smart Factory

该文结合区块链技术提供轻量级和可扩展;利用白名单和非对称加密提高安全和隐私;引入安全和隐私模型帮助分析架构。文中提到的数据库是存放数据的地方,指的确实是云,但是是由多个管理中心的存储设备结合形成的分布式的云。区块链由管理中心维护,因此,管理中心的存储中同样存放着区块数据。

问题:传感层的微型计算机和网关的区别。文中描述为管理中心是智能边缘网关和云的结合。是网关?那这些微型计算机呢

架构解释:传感器收集数据,交给微型计算机,微型计算机在管理中心为设备注册唯一的身份,并预处理设备数据。然后,微型计算机向管理中心申请存储权限,吧数据放入缓冲池,数据量累积到一定程度后,管理中心完成工作量证明,将数据加密存入数据库。所有的权限许可都会生成区块记录并存在区块链中。动态验证是指权限是有时间限制的,一段时间后需要重新申请。数据库正是云,云基于这些数据提供如可视化等多种服务,用户节点需要访问时,要先经过白名单和动态认证,然后才能获得访问权限,同样,用户节点也需要周期性的重新申请权限。

访问控制的实现:主体、对象、访问矩阵、访问属性,权限级别

1
Smart Contract-Based Access Control for the Internet of Things

访问控制由三个合约:访问控制合约ACC,判决合约JC,注册合约RC实现。相比其它方案的优点时加入了处罚机制。

抽象结构为访问控制矩阵。实际实现是访问控制列表,列表中每条包括subject,object的资源,subject执行的操作,以及对操作的许可(allow或deny)。

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

给我们的借鉴是恶意行为记录,判决,处罚,以及如何在时间上做限定。

1
Decentralizing Privacy:Using Blockchain to Protect Personal Data

关注隐私问题,利用访问控制确保用户对他们数据的所有权。确保数据的透明性和可审计性(即用户对自己的数据和如何访问这些数据都很清楚)。原先无限期的权限授予更改为可由用户随时撤销。访问控制的策略存在区块链不允许篡改,只允许用户更改。

该论文主要针对的是手机应用程序的隐私问题,区块链用来保存访问控制策略。应用的服务请求权限,用户授予权限。

两种交易:Taccess,用于访问控制管理;Tdata,用于数据存储和检索。实际上,调用智能合约的过程就是发起一个指向智能合约的交易。

同样使用数据存储在链下的方式,采用的是LevelDB的键值数据库存储。数据在节点间充分随机化并复制从而保证可用性。当然,可以选用其它的链下存储方案。但集中式的云存储需要对第三方的信任,虽然它在扩展性和已部署方面有优势。

这篇论文的启示是为了增加隐私,使用了复合身份,由此想起可以使用暗拍智能合约中那种多次出价只有一次为真的方式来保护身份隐私。该文中有详细的合约算法设计。

6. 可参考的实验设计

对众多论文仿真实验的方式做总结,从而为自己的仿真实验的实现提供参考。

1
 BAD: a Blockchain Anomaly Detection solution

该实验的目的是检测对等节点上由日蚀攻击引起的分叉,然后分享给信息给其它节点从而构建一个参考模型,从而检测未来可能出现的同样的攻击。

实验设计

为了简单和清晰起见,我们在这里描述了一个已经在我们的真实系统上部署和运行的模拟环境。该环境由两个分离的私有IP网络A和B组成,两个网络通过一个路由器连接。在A(B也一样)中部署两个全节点和一个轻客户端。一方面,两个全节点A1和A3(B中为B1和B3)运行在一个拥有4GB RAM和Ubuntu 16.04系统的虚拟机上,并且都运行在regtest实验模式下(该模式中创建的本地测试环境可以按需即时的生成区块和无实际价值的数字资产),A3(B中为B3)由恶意用户控制。另一方面,我们使用比特币Java版钱包BitcoinJ作为轻客户端,运行在具有4GB RAM和win8系统的机器上。该钱包即A2(B中为B2)在日蚀攻击中扮演受害者。A1和A3彼此连接,这意味着它们可以交换区块信息并达成最长链共识。A和B中的节点维护同一条区块链。

攻击检测和防御

我们对A2做日蚀攻击,强迫其只与恶意节点A3通信,A3不与A1交换区块信息从而避免被网络A中其它节点检测到(通过将A1的IP地址从连接节点列表中删掉)。然后A发送给A2三个包含虚假或恶意交易的区块,区块被A2接受并连接到A2认为的最长链上。因为这3各区块包含A3创建的恶意交易,所以A2此时实际上已被攻击。攻击结束后所有连接重新建立,A2接收到了其它节点的正确的区块链信息,但不丢弃三个恶意区块,并且,这些恶意区块的信息会广播给其它节点,本实验中指B2。接下来,一旦在网络B中执行相同的攻击,因为B2有能检测到B3发送的区块信息中包含A2发送过来的恶意区块相似或相同的交易,就可以拒绝接受这些区块,从而避免受攻击。然后,B2同样会把接受到的恶意区块信息在对等网络中共享。

问题

实验中描述的情况,第一,两次攻击包含的恶意交易是相同的,所以才能在第二次检测到,局限性应该很大。第二,网络中不仅要广播正常的区块,还要广播恶意区块,网络负载很大。第三,每个节点最后都会维护一个恶意信息库,并且在接受到区块的时候查询库做比对,不管是存储的开销还是比对的时间开销都很大。

1
Work-in-Progress: Integrating Low-Power IoT devices to a Blockchain-Based Infrastructure

该实验是要模拟低资源的物联网设备如何接入基于区块链的物联网基础设施,部署的区块链是以太坊私有区块链,目的是将LoRa网关和区块链通过基于事件的通信机制集成起来。

实验设计

本实验中,一个低功耗的物联网设备发送位置信息到LoRa网关,然后,LoRa网关通过基于以太坊客户端geth将位置信息发送到智能合约,从而存储在私有的以太坊区块链中。使用连接到Dragino LoRa / GPS Hat的Raspberry Pi 2构建发送位置信息的物联网终端设备,使用IMST的名为iC880A的LoRa集成开发板连接到Raspberry Pi 3构建LoRa网关。

为了实现这样的双向LoRaWAN-Ethereum代理,网关应当同时运行LoRa协议软件和终端设备通信,运行以太坊客户端上传数据到区块链网络。另外,建立一个私有的以太坊网络,设置较低的挖矿难度换取更快的响应时间。

为了使网关和区块链交互,在区块链里部署一个智能合约。最后,还开发一个智能代理,一遍从LoRa的包转发器捕获所有数据,并通过JSON-RPC接口提供给geth并调用智能合约。

智能合约“Bridge"有两个事件(Process和Notify),两个函数(request()和activate())以及相应的构造和销毁方法。无论何时网关收到数据,区块链客户端都会调用querry()方法,将收到的数据作为参数,该调用合约的交易会被挖矿并收集到区块,变成区块链的一部分。节点们监听Notify事件从区块链客户端获取callback,从而采取相应的动作。相似的,其它节点也可以调用activate()发送消息给网关远程激活物联网终端设备。网关将一直监听Process事件,只有被寻址的网关对收到的消息采取行动。

合约执行流程

smartCcontractExecution
smartCcontractExecution

1
When mobile blockchain meets edge computing

针对边缘物联网节点算力不足的情况,提出从边缘服务器借算里的思想

实验设计

在移动区块链网络中,节点(如移动设备和物联网设备)需要在边缘服务器上执行挖矿。实验使用了一台Intel Xeon CPU E5-1630工作站作为边缘服务器提供算力,多台安卓设备作为移动节点,节点安装了移动区块链客户端应用,扮演矿工的角色。客户端会使用内部传感器(GPS或加速度传感器等)记录数据,发起交易并在网络中传输数据。有两台屏幕显示以太坊数据,移动节点使用客户端通过网关连到边缘服务器。基本的挖矿步骤如下:矿工从边缘服务器请求算力来挖矿,挖到的区块可以通过以太坊的功能来访问和分发。

实验模型

Real mobile BC mining experimental
Real mobile BC mining experimental

7. 我们的方案

考虑到了上述提到的所有问题,我们的设计与实现的要点包括

  • 通过智能合约实现ABAC,同时利用区块链提供的存储与计算能力,存储实体属性和访问控制策略,并且在合约中进行权限判定而非链下。

  • 合约的实现基于[9]的工作,对功能进行良好的划分

  • 采用分层管理

  • 采用共识速度高的PBFT

  • 采用Quorum提供合约隐私和交易隐私

后续可能加入压缩存储的工作,用来应对区块链数据的快速增长。

虽然上面的五点已经是特殊的工作,但还是要和原型论文[9]以及其它使用智能合约实现的基于属性的访问控制做对比,方案的特殊性如下

  1. 完全基于智能合约实现整个访问控制过程,属性集和策略全部定义在链上,而非其它方案设计复杂的密码协议或将策略定义在链下
  2. 同原型[9]的区别是每个设备关联有个访问控制合约,基于属性完成访问控制两点,目的是减小运行压力和实现动态性
  3. 使用联盟链Quorum进行实验,IBFT共识提高交易速度,隐私交易管理器实现交易和合约隐私

上面提到的东西都是抽象性的,我们需要把这些东西放到一个实际的应用场景下,待选的应用场景在第1节已经做了描述,这里讨论一下实验设计。

工业供应链场景,涉及的角色包括:工厂、设备维修商、监管机构、产品运输和分销过程涉及的接触者。访问控制权限应分两方面:访问数据、请求某IoT设备执行。工厂内,所有设备的运行数据通过传感器(震动传感器)收集,维修商有权查看它们并做出评估[25];生产过程可能涉及不同设备间的互访问,或者请求某些设备执行操作(看过的某篇论文有提到车间之间的关系);产品运输过程,温湿度、GPS、时间等属性信息,决定了不同参与者的访问权限。

  1. Arduino连接震动传感器收集数据,维修商角色有权访问,工厂有权撤销访问权限;
  2. Arduino连接小电机,请求对小电机的执行权限
  3. Arduino或树莓派连接温湿度传感器、GPS Hat,根据角色、时间决定权限授予情况

为了完善场景描述和实验设计需要重新回顾的文章

  1. Figueroa S, Anorga J, Arrizabalaga S, et al. An Attribute-Based Access Control Model in RFID Systems Based on Blockchain Decentralized Applications for Healthcare Environments[J]. The first computers, 2019, 8(3).
  2. Miller D. Blockchain and the Internet of Things in the Industrial Sector[J]. IT Professional, 2018, 20(3): 15-18.
  3. 那篇工厂车间之间产品传送场景的描述(先把论文找出来)

如何充分利用IoT设备的属性,充分利用区块链的优势,证明使用区块链的好处,使用基于属性的访问控制的必要性,继续考虑

下一步的研究方向

1、补全当前方案

  • 细化工作,因为当前返回的结果仅仅是对访问控制请求同意还是拒绝,可以分两种情况分别细化
    • 对数据,存储到链下,访问控制通过时直接返回哈希(类似于data share方向)
    • 对控制命令,直接执行并在执行完毕后返回结果
  • 架构调整,比如Judge合约其实可以删除,其功能合并到ACC
  • 用docker实现 & 区块链实时状态查看
    • 主要是当前的quorum区块链浏览器都是基于docker的
  • 新加入的节点如何获取ether用于gas消耗的问题
  • 基于属性的访问控制进一步自动化必须的属性和策略规则的自动发现机制
  • 合适的前端页面

2、异常检测

继续先前异常检测的工作,主要是协作异常检测,利用智能合约和当前的访问控制结构,每个设备的ACC(访问控制合约)本地运行检测模型,然后有一个单独的合约进行合并统计

3、区块链压缩

基于区块链不断增长的容量,修改共识源码,过滤不相干数据,并在每轮共识前先进行一次压缩

4、性能测试工具

编写区块链的性能测试工具

中期总结

中期答辩的时候在纸上做了一些总结,现在把这些内容记录到这里。

首先,要讲清楚的几件事是

  1. 做了一个什么样的工作;
  2. 为什么做这个工作;
  3. 创新性在哪里;
  4. 需要哪些方面的数值结果、如何分析这些结果

所作工作的关键词是:blockchain, IoT, smart contract, ABAC, misbehavior detect, reputation

1、海量设备管理问题(Done)

IoT 设备性能不足以作为区块链节点;节点越多达成共识时间越长;对联盟链来说,投票权很重要,设备数量更多的企业会拥有更多投票权

解决方法:分层结构

2、访问控制实现(Done)

原始论文使用了访问控制矩阵,为每一个 subject-object 对都定义了一个合约,这样会导致区块链体积快速增长,而且当遇到没有预定义的访问控制权限时,需要即时的定义

解决方法:使用 ABAC,为每个设备定义合约,从而减少合约数量,未设定访问控制策略标记为 Not applied

总结:一个功能上的完善,一个存储性能上的优化

3、恶意行为检测

基于信誉阻止短时间大量访问和其它几种恶意行为,利用 require 阻止非法增删改(Done)

应当测试奖励、惩罚、容忍、报警四个功能(Doing)

应当有数值结果进行衡量,比如公平性(基尼系数)和网络拥塞程度(Doing)

根据 subject 历史行为、操作严重性做决策,优化决策算法(Todo)

4、数值结果

和其它基于属性的、用智能合约实现的访问控制方案相比,比较如下方面的内容

  1. 存储:各种方案对区块链造成的存储压力的不同;
  2. Gas 消耗,如果都是基于以太坊的,大家的 Gas 消耗的不同;
  3. 时间
    • 各种增删查改、访问控制操作需要的时间,这之前要确定这些时间是受合约设计的影响更大,还是受区块链同步速度的影响大;
    • 属性的数目、策略条目的数目对访问时间的影响。

参考文献

[1] Zyskind G, Nathan O, Pentland A, et al. Decentralizing Privacy: Using Blockchain to Protect Personal Data[C]. ieee symposium on security and privacy, 2015: 180-184.

[2] Cruz J P, Kaji Y, Yanai N, et al. RBAC-SC: Role-Based Access Control Using Smart Contract[J]. IEEE Access, 2018: 12240-12251. 链接

[3] Maesa D D, Mori P, Ricci L, et al. Blockchain Based Access Control[C]. distributed applications and interoperable systems, 2017: 206-220.

[4] Ouaddah A, Elkalam A A, Ouahman A A, et al. FairAccess: a new Blockchain-based access control framework for the Internet of Things[J]. Security and Communication Networks, 2016, 9(18): 5943-5964.

[5] Ouaddah A, Elkalam A A, Ouahman A A, et al. Towards a Novel Privacy-Preserving Access Control Model Based on Blockchain Technology in IoT[J]. Advances in intelligent systems and computing, 2017: 523-533. 链接

[6] Jemel M, Serhrouchni A. Decentralized Access Control Mechanism with Temporal Dimension Based on Blockchain[C]. international conference on e-business engineering, 2017: 177-182. 链接

[7] Dorri A, Kanhere S S, Jurdak R, et al. Blockchain for IoT security and privacy: The case study of a smart home[C]. pervasive computing and communications, 2017: 618-623.

[8] Ouaddah A, Mousannif H, Elkalam A A, et al. Access control in the Internet of Things[J]. Computer Networks, 2017: 237-262.

[9] Zhang Y, Kasahara S, Shen Y, et al. Smart Contract-Based Access Control for the Internet of Things[J]. arXiv: Cryptography and Security, 2018.

[10] Angrish A, Craver B, Hasan M, et al. A Case Study for Blockchain in Manufacturing: “FabRec”: A Prototype for Peer-to-Peer Network of Manufacturing Nodes[J]. arXiv: Computers and Society, 2018.

[11] Novo O. Blockchain Meets IoT: An Architecture for Scalable Access Management in IoT[J]. IEEE Internet of Things Journal, 2018, 5(2): 1184-1195.

[12] Hwang D, Choi J, Kim K, et al. Dynamic Access Control Scheme for IoT Devices using Blockchain[C]. international conference on information and communication technology convergence, 2018: 713-715.

[13] Ding S, Cao J, Li C, et al. A Novel Attribute-Based Access Control Scheme Using Blockchain for IoT[J]. IEEE Access, 2019: 38431-38441.

[14] Figueroa S, Anorga J, Arrizabalaga S, et al. An Attribute-Based Access Control Model in RFID Systems Based on Blockchain Decentralized Applications for Healthcare Environments[J]. The first computers, 2019, 8(3).

[15] Zhang Y, He D, Choo K R, et al. BaDS: Blockchain-Based Architecture for Data Sharing with ABS and CP-ABE in IoT[J]. Wireless Communications and Mobile Computing, 2018: 1-9.

[16] Lin C, He D, Huang X, et al. BSeIn : A blockchain-based secure mutual authentication with fine-grained access control system for industry 4.0[J]. Journal of Network and Computer Applications, 2018: 42-52.

[17] Pinno O J, Gregio A, Bona L C, et al. ControlChain: Blockchain as a Central Enabler for Access Control Authorizations in the IoT[C]. global communications conference, 2017: 1-6.

[18] Park J, Sandhu R. The UCON ABC usage control model[J]. ACM Transactions on Information and System Security, 2004, 7(1): 128-174. 链接

[19] Zhang G, Gong W. The Research of Access Control Based on UCON in the Internet of Things[J]. Journal of Software, 2011, 6(4): 724-731. 链接

[20] Alansari S, Paci F, Sassone V, et al. A Distributed Access Control System for Cloud Federations[C]. international conference on distributed computing systems, 2017: 2131-2136. 链接

[21] Hashemi S H, Faghri F, Campbell R H, et al. Decentralized User-Centric Access Control using PubSub over Blockchain.[J]. arXiv: Cryptography and Security, 2017. 链接

[22] Rifi N, Rachkidi E, Agoulmine N, et al. Towards using blockchain technology for IoT data access protection[C]. ieee international conference on ubiquitous wireless broadband, 2017: 1-5. 链接

[23] Outchakoucht A, Essamaali H, Leroy J P, et al. Dynamic Access Control Policy based on Blockchain and Machine Learning for the Internet of Things[J]. International Journal of Advanced Computer Science and Applications, 2017, 8(7). 链接

[24] Kokoriskogias E, Jovanovic P, Gailly N, et al. Enhancing Bitcoin Security and Performance with Strong Consistency via Collective Signing[C]. usenix security symposium, 2016: 279-296. 链接

[25] Miller D. Blockchain and the Internet of Things in the Industrial Sector[J]. IT Professional, 2018, 20(3): 15-18.