专栏首页魏晓蕾的专栏【NDN IoT】NDN-ACE: Access Control for Constrained Environments over Named

【NDN IoT】NDN-ACE: Access Control for Constrained Environments over Named

NDN-ACE:Access Control for Constrained Environments over Named Data Networking

命名数据网络中约束环境下的访问控制

Wentao Shang*, Yingdi Yu*, TengLiang+, Beichuan Zhang+, Lixia Zhang*

University of California LosAngeles, University of Arizona

摘要

访问控制问题,包括认证和授权,对物联网络中的安全和隐私至关重要。本文中,我们提出了NDN-ACE,一个命名数据网络(NDN)约束环境下的轻量级访问控制协议。NDN-ACE使用对称加密方案来验证约束设备上的动作命令,将密钥分发和管理任务卸载到一个更强大的可信的第三方机构。NDN-ACE使用层次化的NDN名字来表示细粒度的访问控制策略,该访问控制策略将命令发送者的身份和它们授权访问的服务绑定起来。NDN-ACE中的密钥管理协议允许发送者周期性地更新他们的访问密钥,而不需要设备之间的紧密同步。评估显示NDN-ACE相较于基于IP的体系结构,在整个网络体系结构中需要更少的消息交换,使用更少的组件。“概念证明”原型也证实了NDN-ACE框架的可行性和高效性。

1.引言

访问控制是物联网系统的一个关键组件,以保证关键的和敏感的资源的安全。OWASP列出了“不充足的验证和授权”作为2014年排名前十的物联网缺陷之一。本文中,我们聚焦于物联网系统中访问控制的一个特定方面:动作,一方向远端设备发送一条命令,以调用该远端设备的特定动作。动作系统在延迟和验证方面有严格的要求,必须将动作命令从发送者及时传送到接收者,命令接收者必须验证命令的正确性。然而,物联网的约束环境使这两个要求很难得到满足。包丢失变得很常见,低功率设备通过无线信道相互通信,而为了节约能量,设备不总是在线状态,有限计算能力的物联网设备上实现复杂验证策略也通常不可行。而且,物联网系统可能涉及大量的拥有配置约束的接口的设备,配置更新也越来越困难。

绝大多数现存的基于IP体系结构的解决方案或者扭转网络层,或者构建额外层次来处理这些问题。另一方面,一些正在进行的工作,如文献[2][3],已经提出数据中心通信模型比基于IP信道的通信模型能够更好地适应物联网。在本文中,我们提出了NDN-ACE,一个直接构建在以数据为中心的因特网体系结构(命名数据网络(NDN))上的物联网动作框架。NDN-ACE将动作命令封装在网络层包中。该包装载有足够的内容作为命令验证,并由HMAC链进行保护,因此,命令接收者能够立即验证包中的命令,而不管包在哪里交付、怎样被交付。结果,NDN-ACE在命令交付过程中能够获得低延迟,在命令验证过程中能够以很低的计算和通信开销执行最小权限。

本文如下组织:第二部分介绍了NDN和IoT环境的背景。第三部分描述了NDN-ACE能够应用的应用程序场景和设计目标。第四部分描述了NDN-ACE协议设计的细节。第五部分分析了协议的安全特性。第六部分讨论了各种各样的设计和实现问题。第七部分将NDN-ACE和IETF ACE WG的两个相关提议做比较。第八部分呈现了系统的原型实现。第九部分简要评论了当前工作。第十部分总结全文并讨论未来工作。

2.背景

A. 物联网

物联网通常指的是不同类型的计算设备的互连,以支持不同类型的模拟控制应用程序。一个物联网络通常包含大量的通过无线信道通信的设备。由很低的制造开销和大规模部署驱动,物联网设备的计算能力通常是很有限的(例如,10s-100s MHz CPU,10s-100s KB的内存和闪存容量)。物联网设备的能源限制也导致了低能源无线技术的广泛采用,这些低能源易丢包的网络通常提供很低的带宽(10s-100s kbps),由包丢失引起的干扰使得网络通信成为一个很昂贵的操作。

物联网应用程序的一个主要类型是动作系统。在这样的系统中,设备可能接收到控制命令来执行特定的操作。由于许多物联网设备与周围环境有密切交互,一些设备(例如烟雾检测器和火灾报警装置)甚至是指定的生活必备任务,因此开发安全动作系统势在必行,以便仅仅来自授权实体的控制命令能够被执行。然而,物联网设备的资源约束性质使得高计算量和高通信开销的安全解决方案变得不可行。此外,大规模的物联网部署也意味着一个合适的安全解决方案必须是高可扩展性的。

传统的基于IP的物联网解决方案通常依赖于安全信道(例如,TLS和它的数据报变体DTLS)来保护设备之间的通信。然而,这样的基于信道的安全模型不能表示特定应用程序的权限。结果,接收方应用程序需要在安全信道顶部实现单独的命令验证逻辑。但是物联网设备有限的计算能力限制了需要提供细粒度访问控制的逻辑的复杂性。

维持安全信道不可避免地要介绍到能源消耗,然而动作系统的通信模式通常是断断续续的,仅仅涉及到一些包的交换。由于建立信道的开销大,而且密钥协商为特定的动作系统引进了额外的不期望的延迟,因此按需建立安全的信道也不会缓解问题。另外,基于信道的通信在易丢包的环境下执行效率低下;包丢失检测和恢复可能明显地影响延迟,并消耗更多的计算资源。

B. 命名数据网络

命名数据网络是一个新的网络体系结构,在网络层提供以数据为中心的通信语义。NDN以获取个人数据片方式来通信。为了使该通信模型可用,NDN在层次化命名空间中命名每个单独的数据片。数据提供者把数据和名字放在网络层包中,叫做数据包。数据消费者发送请求,叫做兴趣包,兴趣包中携带着期望的数据的名字。基于请求数据的名字,网络转发每个兴趣包到响应数据包可能存在的位置。

(1)基于内容的安全:NDN将生产者的数字签名加入到每个数据包中,使每个数据包单独可验证。结果,数据的真实性独立于数据获取的位置和方式。为了进行数据验证,每个数据包包含一个签名信息域,该域指出可以验证签名的公钥的名字。公钥是拥有名字的另一种类型的数据,由于每个数据包有一个签名,携带公钥的数据包成为一个证书,并能够像其他数据包一样以同样的方式被获取和验证。

为了验证一个数据包,我们需要一个信任模型,该信任模型定义了哪个密钥被授权签名哪个数据片,并指定一个或更多的信任密钥来启动信任引导程序。命名数据和密钥允许我们依据数据名和密钥名定义信任模型。层次化结构使得NDN名字有高度的表现力,能够为数据验证提供充足的上下文环境,我们的早期工作已经证明我们可以在任何粒度下使用NDN名字来容易地指定权限。

除了真实性,通过直接加密数据包,NDN也支持基于内容的机密性。数据生产者在生产时加密数据,并分配相应的解密密钥到授权的消费者。以这种方式,数据的机密性不依赖于中间设备,便获得了真正的端到端机密性。

(2)NDN的动作:NDN的兴趣包/数据包语义类似于动作系统的请求/响应语义。Burke等提出了一个在光照控制系统中支持NDN兴趣包/数据包通信的行动命令框架。他们使用一个特殊的签名兴趣包来在名字中携带请求命令。不像正常的兴趣包,签名兴趣包也携带一个签名和签名的元信息,允许命令的接收者验证命令。除了数字签名,签名的兴趣包也包括一个时间戳和一个随机值来防止重放攻击。为了检测这样的攻击,通信的两端必须同步时钟,或者接收端需要保持关于最近接收的时间戳的每个发送者的状态。

3.应用程序场景

我们以一种应用程序场景为目标,在这种场景中所有设备通过NDN互连。一个存在约束限制的客户(C)在网络上使用签名兴趣包机制调用一些被存在约束限制的执行机构提供的特权服务。例如,一个智能开关可能发出远程命令来打开智能电灯或者关闭智能电灯。客户知道需要访问哪个服务,而动作执行者不知道客户的身份直到他看到请求命令。由于资源的限制,动作执行者执行验证,并将任务授权到可信的第三方,叫做授权服务器,授权服务器通常运行在比存在约束限制的物联网设备拥有更多计算能力的专用机器上。由于计划休眠,客户和执行机构可能一直是离线的,而假定授权服务器拥有足够能源保持一直在线,除了网络或者主机失效情况。

假定:我们假定客户和动作执行者使用引导指令已经和授权服务器建立了信任关系。设备和授权服务器之间也交换他们的公钥,该公钥可以用来验证他们之间的通信。动作执行者信任授权服务器来遵从被应用程序定义的访问控制策略,并发放访问密钥到授权客户。访问密钥由在授权服务器和动作执行者之间建立的预共享密钥生成。客户信任授权服务器来为它想访问的服务提供有效的访问密钥。我们也假定网络上的所有设备和服务器有同步时钟(例如,通过共享相同的时间源)。这允许动作执行者在没有跟踪签名兴趣包的每个客户时间戳的情况下检测重放命令。

攻击者模型:我们考虑一个攻击者能够偷听和篡改在网络上传输的包,或者将恶意包注入网络。例如,攻击者可能记录通过网络发送的动作命令,并试图提取验证信息;攻击者可能通过拦截并修改包中内容执行中间人攻击;攻击者可能也会注入无效动作命令来欺骗执行机构执行未授权的操作。然而,我们不考虑DDoS攻击,比如干扰物理通信信道或者将物联网设备淹没在兴趣包洪泛中。我们也不会考虑任何设备或网络上的物理攻击,比如毁坏、移除或者关闭物联网设备或者网络路由器。我们也不会考虑攻击者闯入授权设备的情况,并接管运行在那台设备上的物联网应用程序的控制。

4.协议设计

在这一部分,我们描述NDN-ACE协议的设计。我们以协议操作的概述开始介绍,然后我们描述NDN-ACE中授权的细节和命令验证,最后,我们讨论密钥管理问题,比如密钥分发和更新。

这里我们列出了我们想要达到的设计目标列表,以便使NDN-ACE可应用于物联网环境:

(1)客户和命令执行者之间动作命令的验证和授权。

(2)细粒度的访问控制策略。

(3)通信消息中的低开销和在约束节点上的存储中状态。

(4)加密操作中的低计算代价。

A. 概述

NDN-ACE协议包括三个主要的部分,这三个部分包括不同设备之间的信息流,像在图1中描述的那样。

A-AS:动作执行者通过与授权服务器共享一个每服务密钥种子,来执行访问控制任务给可信的授权服务器。授权服务器周期性地从行动执行者获得新的种子来替代旧的种子,并扩展代理关系。当种子在网络中分发时,总是被加密。

C-AS:当客户请求对服务的访问时,授权服务器验证它的身份,并使用相应的服务种子为客户生成访问密钥。客户周期性地从授权服务器获得新的访问密钥,来替代旧的密钥,并更新它的访问权限。当通过网络分发时,访问密钥总是被加密。

C-A:客户发送认证命令给动作执行者来访问一些服务。命令兴趣包是用发送者的为那个服务生成的访问密钥HMAC签名的。签名证明一个有效的访问密钥的客户拥有关系,因此表明了客户已经被授权服务器授权。

网络中的每个设备(C、A和AS)都有一个设备前缀,这通常通过将网络前缀和本地全网唯一的设备标识符连接起来来构建。设备标识符可以是一个被网络管理员指定的名字,一个被设备制造商创建的序列号,或者是设备首次使用时生成的随机ID。图2显示了一些例子。本文中,我们假定所有的设备连接到同一个网络,共享相同的前缀。这个框架也可以被扩展到支持跨域验证和授权,只要在不同域间存在信任关系。

动作执行者在基于NDN的物联网络中提供了一些服务,它将设备前缀宣告到路由系统,并等待进来的拥有服务名的命令兴趣包。服务名通常由路由前缀组成,后跟服务ID。图3显示了一些例子:/home/livingroom/light123/setStatus命令能够设置light123或者为打开状态,或者为关闭状态;/home/livingroom/light123/readStatus命令将light123的当前状态返回到客户。

B. 授权

动作执行者生成一个对称密钥作为每服务种子,并与授权服务器共享密钥,以便执行访问控制任务。每个种子有一个序列号,当种子每次被更新时,被动作执行者增加。种子的值可以被一些伪随机函数计算,这些函数以服务名,种子序列号和主密钥(或者一些其他的熵)作为输入。

在访问服务之前,客户需要获得访问密钥作为来自授权服务器授权的证明。访问密钥由服务种子加密绑定到服务名和客户身份导出。访问密钥也有一个序列号,当密钥每次被更新时,由授权服务器增加。

为了计算访问密钥,授权服务器首先构建一个NDN名字,使用下面的命名约定为客户传达访问控制策略(单词SEED和KEY是为所有名字固定的特殊的名字组件):

图4中的访问密钥名传达了下面的授权信息:客户switch01被授权访问setStatus服务,动作执行者为light123,在通信服务种子有效性期间,种子的序列号是456,访问密钥的序列号是789。

访问密钥的值通过访问密钥名作为HMAC计算,访问密钥名是使用NDN有线环境下名字格式的二进制编码,使用种子作为HMAC密钥。访问密钥和(访问密钥的和种子的)通信序列号被返回到客户,使用密钥分发机制,该机制我们将在第四部分D节中描述。

C. 命令验证

客户访问由被动作执行者使用签名的兴趣包提供服务。签名兴趣包的名字由目标服务名指定(例如/home/livingroom/light123/setStatus),如果需要,可能包含额外的组件来加密命令参数(例如,/home/livingroom/light123/setStatus/on)。兴趣包也携带一个HMAC签名,该签名由客户的访问密钥签署。由于动作执行者没有维护每客户密钥的东西,兴趣包自身必须携带足够的信息以便动作执行者能够重新计算来自服务种子的访问密钥。为了达到这个目的,在签名兴趣包的签名信息组件中,我们设种子序列号为SS,客户标识符和访问密钥序列号为SK。按照惯例,我们用这三个组件加密这三个信息片作为NDN名字,以便动作执行者能够容易地提取每个信息片。

当动作执行者接收到签名的兴趣包后,他从签名信息中提取出序列号和客户ID。动作执行者检查SS匹配他当前正在维护的本地种子的序列号。然后他跟随着图4中的命名约定,构建访问密钥名,并使用本地种子作为密钥计算结果名字的HMAC,这将返回与命令相关的访问密钥。最后,动作执行者使用计算出的访问密钥验证签名兴趣包的HMAC签名。

如果命令验证成功,动作执行者将执行命令,并向客户回复确认消息。这个确认消息是用同样的访问密钥用HMAC签名的,该访问密钥用来签名此命令,并允许客户验证确认消息的真实性。如果命令验证失败,动作执行者可能用NACK回复。NACK可能包含错误码和其他相关的信息,该信息可以帮助客户从失败中恢复。验证的命令操作如图5中所示。

D. 密钥管理

在验证和授权协议中,一个通常的研究挑战是密钥管理,例如,怎样安全地分发密钥到通信各方,怎样周期性地更新密钥。在这一小节中,我们描述NDN-ACE中的密钥管理机制。我们首先讨论怎样更新种子和访问密钥,然后,我们讨论在NDN上分发这些密钥的协议。

(1)密钥更新:周期性地更新种子和访问密钥高效地保护了系统,防止系统遭受难于检测的密钥妥协的危害。在NDN-ACE中,每个访问密钥与一个定时器和一个使用计数器相关联,该计数器由密钥接收者维护。不论何时访问密钥被用来计算签名,密钥计数器都会增长。客户可以选择密钥可以被使用的次数上界,当上界达到时,可以从授权服务器请求一个新的密钥。同时,应用程序可以选择一个密钥生存时间的上限,如果密钥在这个生存时间内没有被更新,客户可以请求一个新的密钥,而不管使用计数器值。这个新的密钥与之前的密钥有同样的名字,除了序列号增加了1。

授权服务器使用的一个相似的机制是控制动作执行者生成的种子的更新。然而,不像经常在线的授权服务器,动作执行者经常不得不周期性地休眠以节约能源。结果,由于动作执行者可能并不可用,当更新触发时,基于计数器的更新不再可行。结果,授权服务器仅需要根据定时器周期性地更新种子,该定时器通过动作执行者的休眠计划被仔细安排。

当种子被更新时,所有的由之前种子生成的访问密钥也必须被更新,而不管它们当前的定时器或者计数器值。这产生了一个“密钥翻转”问题,客户可能不知道种子已被更新,而继续使用旧的密钥来发布命令。NDN-ACE解决了通过让动作执行者保存最后的种子来解决这个问题,并生成一个新的种子序列号。如果客户发出签名兴趣包,该兴趣包包含签名信息中之前种子的序列号,动作执行者将使用旧的种子验证命令。如果验证成功,动作执行者将执行该命令,并向客户发回确认通知消息,告诉客户访问密钥已经过期,并告诉客户当前种子的序列号。确认消息起反馈作用,帮助客户及时更新密钥。因为当客户休眠时,密钥很有可能会改变,因此,作为一个简单的优化,所有的休眠客户在醒来之后,应该总是更新它们的访问密钥。

(2)密钥分发:当种子或者访问密钥被更新时,它需要被安全地分发到密钥接收者。这本质上是一个内容分发问题,在许多之前的工作中已被研究。一个通常的解决方案是加密内容,以便仅仅具有解密密钥的接收者可以访问内容。NDN-ACE使用同样的技术在不可信的网络上分发种子和访问密钥。这里,我们使用访问密钥分发这个例子来阐述这个过程。种子分发过程也大致相同。

NDN-ACE的密钥分发过程仅需要一轮兴趣包/数据包消息交换。我们使用典型的Diffie-Hellman密钥交换算法来生成加密密钥。当客户请求一个新的访问密钥时,NDN-ACE生成一个Diffie-Hellman公钥,并发送一个签名的兴趣包到包含它的Diffie-Hellman公钥的授权服务器,以作为命令参数。兴趣包被客户的RSA/ECDSA私钥签名,来防止模仿攻击。

一旦接收到请求,授权服务器将执行下面的操作步骤:

(1)他使用客户的RSA/ECDSA公钥验证签名兴趣包的签名。

(2)如果验证成功,它将生成自己的Diffie-Hellman公钥,计算来自两个DH公钥的共享密钥(另一个包含在请求里),并使用标准密钥生成函数生成密钥加密密钥(KEK)。

(3)然后生成一个新的访问密钥,并更新序列号,像在第四部分B小节中描述的那样。

(4)最后,使用KEK加密访问密钥,并向客户返回加密密钥和(新密钥和种子的)序列号和它自己的DH公钥。响应被授权服务器的RSA/ECDSA私钥签名。

一旦得到响应,客户使用授权服务器的RSA/ECDSA公钥验证签名,然后由两个DH公钥生成同样的KEK(另一个在响应中包含),最后,解密新的访问密钥。该过程如图6所示。如果兴趣包和数据包在此过程中丢失,客户必须通过生成一个新的短暂的DH公钥来重新启动该过程,并使用一个新生成的签名兴趣包向授权服务器传输该密钥,该兴趣包拥有新的时间戳和随机值。

5.安全分析

在这一部分,我们讨论NDN-ACE协议该怎样设计来防止几种类型的攻击。这里我们假定用在HMAC操作中的哈希函数的安全特性包括以下几点:

(1)不可猜测性:没有相应的签名密钥,要在一个给定的消息中生成正确的HMAC签名,它是计算上不可行的。

(2)不可逆性:给出一个消息和签名,要逆转该HMAC函数以获得签名密钥,它是计算上不可行的。

A. 模仿攻击

通过从网络包中提取受害者的访问密钥,攻击者不能模仿授权客户。首先,通过授权服务器分发的访问密钥用加密密钥加密,该加密密钥由在客户和授权服务器之间用Diffie-Hellman密钥交换生成,密钥交换过程通过客户和授权服务器签名他们传输的包,以免遭受MITM攻击。第二,命令不包含访问密钥自身,但仅仅HMAC签名用访问密钥计算。

攻击者也不能模仿动作执行者以欺骗客户或者授权服务器来向攻击者揭示访问密钥或者种子。首先,种子由合法的动作执行者生成,并分发到授权服务器,而不是相反。其次,由于HMAC的不可逆性,不可能从命令签名中提取访问密钥或者种子。

NDN-ACE也防止攻击者模仿AS,并从动作执行者处获得种子,因为密钥分发过程需要授权服务器为种子签名该请求。假定动作执行者已经和真正的授权服务器在执行引导指令过程中建立了信任关系,攻击可以通过使用可信的授权服务器的公钥来验证请求签名被容易地检测。

B. 授权

在NDN-ACE中,客户从授权服务器那里得到访问密钥,并禁止将自己的访问权限授予其他人。这通过使用不可逆的HMAC函数由种子生成访问密钥来保证。以这种方式,获得访问密钥的客户不能提取种子,也因而不能为其他人生成新的访问密钥。

技术上,我们可以修改NDN-ACE来使得客户扩展HMAC链,并由自己的密钥生成三层的访问密钥。这样做可以允许客户在不知道种子的情况下独立地授予权限,并在授权链的根部保持无状态的可验证性(例如,动作执行者)。(确实存在一个框架,为云应用程序实现了这个形式的分布式授权)。然而,我们感到这样的授权链使得简单的NDN-ACE信任模型复杂化,因而选择保持设计简单。

6.讨论

在这一部分,我们讨论没有包含在前面章节中的设计和实现问题。

A. 适用于CoAP

NDN-ACE设计在命名数据网络的顶层,并受益于许多NDN的特性,比如兴趣包-数据包交换,基于名字的转发和数据对象安全。然而,由于NDN-ACE本质上可以被看作一个应用程序层的安全解决方案,通过在应用程序层协议,比如CoAP,的顶部实现NDN通信语义,将NDN-ACE映射到IP网络并不困难。CoAP对支持NDN-ACE并不合适,因为:首先,CoAP是为约束环境设计的;第二,CoAP和NDN都支持同样的通信语义,这是物联网的本质属性。第三,很容易将CoAP扩展到支持对象安全。

在CoAP中,资源名字表示为URI。主机和端口组件用于将请求路由到资源服务器,而路径和查询组件在已连接的资源服务器范围内识别资源。为了在CoAP上分发访问密钥,客户能够沿着指向密钥分发服务(KDS)的路径发送CoAP请求到授权服务器。查询组件包含必需的参数来生成访问密钥:

coap://as1.livingroom.home:55555/kds?rid=light123&svc=turnOn&sid=switch01&aseq=56789

该响应包含加密的密钥,并在NDN-ACE中签名。

当发送命令时,客户能够加密与验证相关的名字组件,或者使用路径,或者使用查询。命令签名可以是base64编码的,并与URI编码兼容:

coap://light123.livingroom.home:55555/turnOn?sseq=1234&sid=switch01&aseq=56789&sig=QUJDMTIz

动作执行者将简单地解析CoAP请求,并像之前一样验证签名。在这个设计中,我们没有使用DTLS来保护通信信道,因为NDN-ACE本质上是基于对象安全的。

B. 命名工程

命名是NDN-ACE设计的中心工作。设备使用名字来表示它们的身份和他们提供的服务。授权服务器使用名字来表示访问密钥生成的访问控制策略。另外,密钥的版本也在名字里作为序列号明确地表示。考虑到名字的重要性,NDN-ACE中的命名方案需要被仔细设计,以便适应来自应用程序和底层网络的需求。

在本文中,我们将描述两个主要的对于NDN-ACE名字方案的关注点。第一个是在约束网络中冗长名字的使用。人类可读的组件,ASCII编码,可以产生出很长的名字,这增加了网络节点的处理开销,并导致包很大。存在几种处理长名字问题的方法。首先,应用程序能够为名字组件定义高效编码,而不需要是人类可读的。另外,如果设备能够负担得了额外的计算开销,它们可以压缩与路由不相关的名字后缀,意图仅能被应用程序翻译。

第二个主要的关于NDN-ACE命名方案的问题是隐私。在一些应用程序场景中,我们可能希望避免将网络包中的接口或者一些服务的语义暴露出来。在NDN-ACE中,服务命令默认由名字中的明文编码。这可能允许攻击者嗅探包,并提取网络中服务的敏感信息。通常的解决方案是将加密应用到需要保护的名字组件中。例如,客户可能将命令名字、时间戳、随机值和签名信息加密到一个单独的难以理解的组件,并将签名信息附加其后。

C. 作为差错容忍

NDN-ACE中的授权服务器是一个认证和授权过程中的密钥组件。它为所服务的动作执行者维护服务种子。它也不得不保持在线来应答来自客户的密钥更新请求。授权服务器的失效将会使访问控制框架和应用程序操作瘫痪。为了避免这样的单点故障问题,我们在授权服务器失效时,可以部署备份服务器来替代主授权服务器。授权服务器不保存任何的软状态,除了种子信息。因此,当备份服务器接管时,它可以从动作执行者简单地请求新的种子,并使用它们来为客户生成新的访问密钥。

为了在失效恢复时实现自动移交,我们需要预先建立所有的物联网设备和认证服务器之间的信任关系。这能够通过增加一个共同的可信锚点作为间接的一层来获得。当一个新的节点(设备或服务器)加入到网络中,引导程序进程将在新节点上安装可信的锚点,也会使用可信锚点来为那个节点签名身份证书。这允许新节点被网络中所有的其他节点信任,而这些其他节点已经安装了可信的锚点。

7.评估

在这一部分,我们比较了NDN-ACE与两个IETF ACE WG提出的访问控制方案:DCAF和OAuth 2.0物联网分析。DCAF是一个简单的验证和授权框架,允许两个约束节点通过将DTLS预共享密钥生成和分发到可信的第三方来建立DTLS连接。DCAF将授权服务器的角色分成两部分:客户授权管理器(CAM)和服务器授权管理器(SAM),来分别代表客户和服务器节点。DCAF假定预建立的DTLS连接的存在,该连接存在于客户和其服务器授权管理器(CAM)之间,以及服务器和服务器授权管理器(SAM)之间。为了获得对服务器上资源的访问,客户通过CAM从SAM请求一个DTLS PSK。PSK被SAM包裹进访问票据中,该访问票据或者包含加密的PSK,或者包含能帮助服务器生成PSK的信息。密钥和票据都通过安全DTLS信道上的CAM被转发回客户。在DTLS PSK交换数据期间,客户将票据交给服务器,服务器根据票据生成PSK,并建立DTLS信道。

OAuth2.0物联网分析将基于HTTP的OAuth 2.0协议应用于基于CoAP的物联网环境中。它使用OAuth 2.0所有权证明令牌携带验证和授权信息。当客户请求资源服务器的访问权限,授权服务器创建所有权证明令牌,该令牌用来加密资源服务器,并被授权服务器签名。令牌包括授权信息(特权、有效期等)和访问密钥信息(对称加密密钥或者公钥指纹)。当发出资源请求时,客户在请求中包含所有权证明令牌,并使用相应的访问密钥来签名请求。一旦收到请求,资源服务器能够对令牌进行验证,从令牌中提取访问密钥,然后验证请求的签名。如果所有的验证成功,资源服务器将会向客户返回保护的资源,或者执行请求的动作操作。

该部分的其余部分,我们在两个不同的方面比较了三种验证和授权协议:通信开销和体系结构的复杂性。

A. 通信开销

表1显示了在发送者从授权服务器获得授权之后,需要启动动作命令通信来进行消息交换的比较。如果使用URL代替IP地址来确定命令接收者,DCAF和OAuth物联网分析都需要执行DNS查询。这将花费至少1个发送者和DNS服务器之间的往返时延RTT。这之后,DCAF需要2个额外的RTT时间来进行DTLS PSK交换。最后,命令通信(CMD/ACK)再花费1个RTT时间。假定在网络传输过程中没有包丢失。NDN-ACE能够立即开启网络层通信,而DCAF和OAuth分析在发送单独的RTT动作命令之前必须花费额外的RTT时间。

一个可能的争论是,DNS解析结果可能被客户缓存以作为未来使用,DCAF中的DTLS连接可以被未来的动作命令保存和重新使用。然而,在资源约束的物联网设备上维护这些软状态是一个有挑战性的工作。设备必须或者限制通信双方的总数量(因此牺牲了可扩展性),以便在存储容量范围内保存那些状态的大小,或者根据一些替代策略丢弃那些状态,并在将来根据需要重建状态。相反,NDN-ACE不会带来任何此类开销。

B. 体系结构复杂性

体系结构复杂性对物联网方案的可行性有明显影响。图7比较了物联网设备需要实现的整个协议栈,以便支持NDN-ACE和基于IP的解决方案(DCAF和OAuth物联网分析)。基于NDN的物联网协议栈更加简单,因为NDN内在地提供了本质上是物联网环境下的通信语义。因此,在NDN层顶部直接构建物联网框架和应用程序成为可能。相反,基于IP的物联网协议栈在IP顶部必须集成多种从属协议,比如UDP,DTLS,IPv6邻居发现协议,DNS和CoAP,在传达应用程序层逻辑,比如验证、授权和资源访问之前,是可能的。这个额外协议栈的复杂性不仅仅导致每个物联网节点程序大小的膨胀,而且在网络基础设施中引入多种依赖,比如DNS服务。这些问题在实现和部署物联网应用程序时都成为了明显的负担。

8.原型

我们在Python中实现了NDN-ACE,并在Raspberry Pi 2平台上部署了这个原型,以作为概念的证明。我们选择Raspberry Pi代替更多约束设备的原因是从原型快速、测试容易和硬件可扩展性中受益。我们使用的设备装配有四核ARM Cortex-A7 CPU和1GB内存。CPU通常为600MHz主频,可以在高工作负载下以超过900MHz被启动(由于Raspberry Pi自动的超速运行特性)。每个Raspberry Pi有一个WiFi适配器,通过一个USB端口连接,该适配器被用来和网络中的其他设备互连。所有的外围感知器通过GPIO针连接,并可以被Raspberry Pi上的应用程序直接访问。

作为NDN-ACE的功能展示,我们实现了一个简单的光照控制系统,该系统实现在Raspberry Pi平台上,允许远程设备连接到LED灯。测试环境由3个Raspberry Pi设备构成,分别作为客户、动作执行者和授权服务器。为了简化网络配置,我们将所有的设备连接到相同的WiFi访问点上,使用多播在这些设备之间转发兴趣包。我们使用PyNDN2库来实现与NDN相关的操作。在我们的例子程序中,每个命令兴趣包被动作执行者接收,该兴趣包被传递到一个回调函数中,用以下6步来处理这个命令:

(1)兴趣包解析:解析收到的命令兴趣包并读取包中的域。

(2)验证和授权:使用访问密钥验证命令签名。

(3)GPIO访问:通过GPIO接口执行请求命令。

(4)确认包生成:创建确认包,并填充各域。

(5)确认包签名:使用访问密钥签名确认包。

(6)确认包发送:把确认包送到发送队列。

尽管我们的原型没有经过性能优化,我们仍然对在命令处理管道的每一步花费多少CPU时间感兴趣。为了评估这些,我们对客户编程,向动作执行者发送1000个命令兴趣包,并使用Python分析器测量命令处理函数的每个定义中的细粒度的CPU使用时间。客户以一个很低的发送速率发送命令,以便动作执行者的CPU不会被淹没,并保持在整个实验中600MHz的操作频率。

表2汇总了测量结果。动作执行者每命令处理的总CPU时间是20.2ms。令人惊奇的是,大约90%的CPU时间花费在兴趣包分析和确认包生成上。NDN-ACE命令验证和确认包签名仅仅占据大约5%的总CPU时间,这显示出基于HMAC验证过程的效率。使用一个不同的编程语言库(C或C++)可能提高与NDN相关的操作性能(和命令处理的整体性能)。我们把这作为未来工作。

9.相关工作

在计算机网络的验证和授权过程中使用加密的想法可以追溯到20世纪70年代,大约与公钥加密算法被首次提出是同一个时间。Needham等人提出了一个基本的框架,在该框架中,他们使用对称或非对称加密算法在分布式网络中进行验证。同步加密变体依赖于一个授权服务器,该授权服务器在通信双方A和B之间维护共享密钥。当A初始化验证时,授权服务器为A和B创建会话密钥K,用A的和B的密钥都加密K,并把此加密密钥传回A。A进一步传递加密密钥到B(不知道B的密钥),并且通过检查B是否能够被K解密来认证B的身份。这之后,双方可以使用K来开启安全通信。

受到Needham认证协议的启发,Kerberos诞生,Kerberos是计算机网络最古老的标准认证协议之一。当前的Kerberos的版本(V5)在文献[26]中定义。Kerberos实现了与Needham协议同样的机制,但是扩展了框架以允许单独的开始指令和跨域验证。然而,两个协议都仅支持验证:授权语义留作上层定义。

OAuth是一个广泛使用的授权协议,允许第三方访问Web应用程序保护的资源。它定义在HTTP语义顶部:HTTP包中以令牌的形式携带有授权信息(与HTTP Cookies相似)。在OAuth 1.0中,每个令牌由一个共享密钥组成,验证HTTP请求包含一个HMAC签名,向资源服务器证明了令牌的所有权。在OAuth 2.0中,在请求中使用签名的请求从基本的框架中移除,使得OAuth 2.0完全依赖于底层信道的安全保护(例如HTTPS)。之后,IETF OAuth工作组开发出一个新的体系结构,用来代替OAuth 2.0中的拥有所有权证明的bearer令牌,该体系结构使用Kerberos形式的密钥分发机制,并不依赖于安全信道。

ACE是IETF新建立的工作组,聚焦于为约束环境开发验证和授权方案。假定CoAP(拥有DTLS保护)作为资源访问协议。基于存在标准,比如Kerberos和OAuth,的经验,工作组已经建立了一个通用的体系结构。在这个体系结构中,客户(C)和资源服务器(RS)都运行在约束节点上,依靠授权服务器(分别依靠CAS和AS)来代表它们为验证和授权信息通信。NDN-ACE可以被视作这个通用框架的实例化,它将CAS和AS结合进一个单独的角色中。ACE-WG当前工作在两个不同的提议中,DCAF和OAuth 2.0物联网分析器中,这个我们已经在第七部分描述了。

OSCAR是一个通过约束物联网设备进行内容分发的对象安全体系结构。它的设计理念受CCN/NDN很大的影响:代替安全通信信道,OSCAR通过直接加密确保数据对象的安全,并对被保护的资源签名,因此保护了端到端的安全。像许多其他的相关工作,OSCAR利用三方授权体系结构,在该体系结构中,约束设备信任更强大的授权服务器来进行访问令牌管理。然而,OSCAR是基于CoAP的,并仍然依赖于DTLS信道来分发密钥。不像NDN-ACE那样,OSCAR没有考虑设备动作操作的访问控制语义。

Macaroons是一个云环境中的分散的授权协议。尽管设计目标和目标应用程序不同,Macaroons和NDN-ACE使用相同的安全结构:HMAC链。在Macaroons中,访问控制策略使用caveats构造层表示。每层被HMAC签名,每层使用前一层的签名作为签名密钥,最终签名附加在macaroon上面。第一层由最初发布者创建,由根密钥签名。这个拥有HMAC链的的层次结构允许接收者将特权授予其他人,接收者通过向macaroon增加更多的caveats,扩展对云应用程序特别有用的HMAC链。Macaroons和NDN-ACE之间关键的不同是NDN-ACE仅仅只利用NDN层次化命名方式来表示访问控制策略,并分配授权特权,而没有为此目的新建额外的数据结构。NDN-ACE也通过仅允许一层代理(从授权服务器到命令发送者),简化了授权过程,这对我们的目标应用程序已经足够了。

10. 结束语

在本文中,我们描述了NDN-ACE,一个在基于NDN的约束环境中的设备行为的验证授权框架。NDN-ACE使用层次化命名表达了细粒度的访问控制策略,将访问密钥绑定到策略,并进行加密。它将访问密钥分发到网络中可信的授权服务器,但仍允许命令接收者验证命令签名,在没有维护每接收者访问密钥信息或者为验证接触授权服务器。NDN-ACE用最小的延迟获取命令通信,相较于基于IP的体系结构,使用更简单的协议体系结构。衡量标准基于原型实现,意味着相较于包操作,NDN-ACE验证操作的开销是微不足道的。

NDN-ACE当前仅支持点对点命令通信。未来,我们计划扩展NDN-ACE的框架来支持多点控制应用程序(例如,使用一条命令打开一组灯)。多点命令通信需要一个有效的命令传送机制,该机制适用于约束环境中,一个可扩展的密钥管理协议能够分发种子到相同服务组的多个接收者。我们也改进了NDN-ACE的原型实现,并使其能够应用于更多的物联网应用程序中。

参考文献

[1]OWASP, “OWASP Internet of Things Top 10 Project,” https://www.owasp.org/index.php/OWASPInternet of Things Project, accessed: Oct 2, 2015.

[2] Z.Shelby, K. Hartke, and C. Bormann, “The Constrained Application Protocol(CoAP),” Internet Requests for Comments, RFC Editor, RFC 7252, June 2014.[Online]. Available: http://www.rfc-editor.org/rfc/rfc7252.txt

[3] L.Seitz, G. Selander, E. Wahlstroem, S. Erdtman, and H. Tschofenig, “Authorizationfor the Internet of Things using OAuth 2.0,” Internet Draft, IETF Secretariat,Tech. Rep. draft-seitz-ace-oauth-authz-00, October 2015. [Online]. Available: http://www.ietf.org/internet-drafts/draft-seitz-ace-oauth-authz-00.txt

[4] V.Jacobson, D. K. Smetters, J. D. Thornton, M. F. Plass, N. H. Briggs, and R. L.Braynard, “Networking Named Content,” in Proceedings of the 5th InternationalConference on Emerging Networking Experiments and Technologies, ser. CoNEXT’09. New York, NY, USA: ACM, 2009, pp. 1–12. [Online]. Available:http://doi.acm.org/10.1145/1658939.1658941

[5] NDNTeam, “Named Data Networking (NDN) Project,” Named Data Networking Project,Technical Report NDN-0001, October 2010.

[6] L.Zhang, A. Afanasyev, J. Burke, V. Jacobson, k. claffy, P. Crowley, C.Papadopoulos, L. Wang, and B. Zhang, “Named Data Networking,” ACM SIGCOMMComputer Communication Review (CCR), vol. 44, no. 3, pp. 66–73, Jul 2014.

[7] H.Krawczyk, M. Bellare, and R. Canetti, “HMAC: Keyed-Hashing for MessageAuthentication,” Internet Requests for Comments, RFC Editor, RFC 2104, February1997. [Online]. Available: http:

//www.rfc-editor.org/rfc/rfc2104.txt

[8] C.Bormann, M. Ersue, and A. Keranen, “Terminology for Constrained-Node Networks,”RFC 7228 (Informational), Internet Engineering Task Force, May 2014. [Online].Available: http://www.ietf.org/rfc/rfc7228.txt

[9] J.Vasseur, “Terms Used in Routing for Low-Power and Lossy Networks,” RFC 7102(Informational), Internet Engineering Task Force, Jan. 2014. [Online].Available: http://www.ietf.org/rfc/rfc7102.txt

[10] T.Dierks and E. Rescorla, “The Transport Layer Security (TLS) Protocol Version1.2,” Internet Requests for Comments, RFC Editor, RFC 5246, August 2008.[Online]. Available: http://www.rfc-editor.org/rfc/rfc5246.txt

[11] E.Rescorla and N. Modadugu, “Datagram Transport Layer Security Version 1.2,”Internet Requests for Comments, RFC Editor, RFC 6347, January 2012. [Online].Available: http://www.rfc-editor.org/rfc/rfc6347.txt

[12] Y.Yu, A. Afanasyev, D. Clark, k. claffy, V. Jacobson, and L. Zhang, “SchematizingTrust in Named Data Networking,” in Proceedings of the 2Nd InternationalConference on Information-Centric Networking, ser. ICN ’15. New York, NY, USA:ACM, 2015, pp. 177–186.

[Online]. Available: http://doi.acm.org/10.1145/2810156.2810170

[13] J.Burke, P. Gasti, N. Nathan, and G. Tsudik, “Securing instrumented environmentsover content-centric networking: the case of lighting control and NDN,” inComputer Communications Workshops (INFOCOM WKSHPS), 2013 IEEE Conference on,April 2013, pp. 394–398.

[14] NDNTeam, “NDN Packet Format Specification: Signed Interest,” http: //named-data.net/doc/ndn-cxx/current/tutorials/signed-interest.html,accessed:Oct 2, 2015.

[15] ——,“NDN Packet Format Specification: Name,” http://named-data.net/doc/ndn-tlv/name.html,accessed: Oct 2, 2015.

[16] W.Shang, Q. Ding, A. Marianantoni, J. Burke, and L. Zhang, “Securing buildingmanagement systems using Named Data Networking,” Network, IEEE, vol. 28, no. 3,pp. 50–56, 2014.

[17] Y.Yu, A. Afanasyev, and L. Zhang, “Name-Based Access Control,” Named DataNetworking Project, Technical Report NDN-0034, October 2015.

[18] W.Diffie and M. Hellman, “New Directions in Cryptography,” Information Theory,IEEE Transactions on, vol. 22, no. 6, pp. 644–654, Nov 1976.

[19] A.Birgisson, J. G. Politz, U´ . Erlingsson, A. Taly, M. Vrable, and M. Lentczner,“Macaroons: Cookies with Contextual Caveats for Decentralized Authorization inthe Cloud,” in Network and Distributed System Security Symposium, 2014.

[20] G.Selander, J. Mattsson, F. Palombini, and L. Seitz, “Object Security of CoAP(OSCOAP),” Internet Draft, IETF Secretariat, Tech. Rep.draftselander-ace-object-security-03, October 2015. [Online]. Available:http://www.ietf.org/internet-drafts/draft-selander-ace-object-security-03.txt

[21] S.Gerdes, O. Bergmann, and C. Bormann, “Delegated CoAP Authentication andAuthorization Framework (DCAF),” Internet Draft, IETF Secretariat, Tech. Rep.draft-gerdes-ace-dcaf-authorize-04, October 2015. [Online]. Available:http://www.ietf.org/internet-drafts/draft-gerdes-ace-dcaf-authorize-04.txt

[22] P.Hunt, J. Richer, W. Mills, P. Mishra, and H. Tschofenig, “OAuth 2.0Proof-of-Possession (PoP) Security Architecture,” Internet Draft, IETFSecretariat, Tech. Rep. draft-ietf-oauth-pop-architecture-05, October 2015.[Online]. Available:http://www.ietf.org/internet-drafts/draft-ietf-oauth-pop-architecture-05.txt

[23] NDNTeam, “NDN client library with TLV wire format support in native Python,”https://github.com/named-data/PyNDN2.

[24] R.M. Needham and M. D. Schroeder, “Using Encryption for Authentication in LargeNetworks of Computers,” Commun. ACM, vol. 21, no. 12, pp. 993–999, Dec. 1978.[Online]. Available:

http://doi.acm.org/10.1145/359657.359659

[25] B.Neuman and T. Ts’o, “Kerberos: an authentication service for computernetworks,” Communications Magazine, IEEE, vol. 32, no. 9, pp. 33–38, Sept 1994.

[26] C.Neuman, T. Yu, S. Hartman, and K. Raeburn, “The Kerberos Network AuthenticationService (V5),” Internet Requests for Comments, RFC Editor, RFC 4120, July 2005.[Online]. Available: http://www.rfc-editor.org/rfc/rfc4120.txt

[27] E.Hammer-Lahav, “The OAuth 1.0 Protocol,” Internet Requests for Comments, RFCEditor, RFC 5849, April 2010. [Online]. Available:http://www.rfc-editor.org/rfc/rfc5849.txt

[28] D.Hardt, “The OAuth 2.0 Authorization Framework,” Internet Requests for Comments,RFC Editor, RFC 6749, October 2012. [Online]. Available:http://www.rfc-editor.org/rfc/rfc6749.txt

[29] E.Rescorla, “HTTP Over TLS,” Internet Requests for Comments, RFC Editor, RFC2818, May 2000. [Online]. Available: http://www.rfc-editor.org/rfc/rfc2818.txt

[30]IETF, “IETF ace Working Group Charter,”https://datatracker.ietf.org/wg/ace/charter/. [Online]. Available: https://datatracker.ietf.org/wg/ace/charter/

[31] S.Gerdes, L. Seitz, G. Selander, and C. Bormann, “An architecture forauthorization in constrained environments,” Internet Draft, IETF Secretariat,Tech. Rep. draft-ietf-ace-actors-02, October 2015. [Online]. Available:http://www.ietf.org/internet-drafts/draft-ietf-ace-actors-02.txt

[32] M.Vucinic, B. Tourancheau, F. Rousseau, A. Duda, L. Damon, and R. Guizzetti,“OSCAR: Object Security Architecture for the Internet of Things,” CoRR, vol.abs/1404.7799, 2014. [Online]. Available:http://arxiv.org/abs/1404.7799

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Uni-app中几种常用的提示框

    魏晓蕾
  • 【机器学习】CS229课程笔记notes1翻译-Part II分类和logistic回归

          我们现在谈论分类问题。分类问题与回归问题类似,区别是在分类问题中,我们现在想要预测的y值只取少量的离散值。现在,我们聚焦于二值分类问题,y只取两个值...

    魏晓蕾
  • 适配器模式、单例模式、工厂模式及其Go语言实现

    (1)什么是适配器模式? 适配器模式作为两个不兼容的接口之间的桥梁,将一个接口转换为我们希望的另一个接口。 适配器模式其实是一种结构型模式,我们读源码过程中...

    魏晓蕾
  • 昨天,A站受黑客攻击千万条用户数据外泄,量子加密能救得了吗?

    大数据文摘
  • 原创:用zabbix api批量添加web监控

    用户1057912
  • OpenBSD SMTP漏洞分析报告

    安全人员在OpenBSD SMTP中发现了一个存在长达4年的漏洞,攻击者可利用该漏洞远程执行代码,多个linux发行版本受到影响。

    FB客服
  • 安全事件频发,如何避免不必要的安全漏洞?

    不管你有没有注意到,安全事件在互联网行业其实一直屡见不鲜。2017 年,虾米的客户端被曝出一段“嘲讽”未付费用户的注释,本应该是机密的代码被流出;2019 年 ...

    IDO老徐
  • Python思维导图(一)—— 基础

    思维导图并不能涵盖所有知识点,只是梳理某个知识点下我们需要重点关注的分支;根据自己的情况可以进行拓展学习

    小菠萝测试笔记
  • 半小时读懂互联网广告新生态

    互联网广告产业链的概念普及,涉及广告网络(Ad Network),互联网广告交易平台(Ad Exchange),  实时竞价(RTB,Real Time Bid...

    辉哥
  • Http状态码分析

    开发过程中经常需要与后台配合调试接口,在调试过程中后台会返回一些Http状态码,程序员可以通过状态码分析接口是否调通以及如果失败问题在哪。因此了解Http状态码...

    Locker

扫码关注云+社区

领取腾讯云代金券