【NDN安全】Security & Scalability of Content-Centric Networking 全文翻译

Security &Scalability of Content-Centric Networking 内容中心网络的安全性和可扩展性

Tobias Lauinger

Technische University Darmstadt

硕士毕业论文

2010.9

摘要

彻底清除当前体系结构的方法导致当前网络的巨变,并冒着引进新的攻击的可能。这些攻击的范围从新形式的拒绝服务攻击到攻击其他用户的隐私。在这篇论文中,我们从安全角度分析以内容为中心的网络体系结构。

一个对CCN的安全起决定性作用的特征是对多用途的缓存的引进,这个缓存被一小部分的用户所共享。我们显示了攻击者怎样利用这些缓存来模拟用户将取回什么内容。更通常的是,我们认为在网络效率和用户隐私间应该有一个折衷。基于缓存的隐私攻击的应对策略需要仔细考虑这个权衡。

目录

摘要(iii)

插图列表(vii)

表格列表(ix)

1 引言(1)

2 内容中心网络(3)

2.1 CCN的状态艺术(3)

2.2 CCN的研究议程(4)

2.2.1 可扩展性研究议题(4)

2.2.2 与安全相关的研究议题(8)

2.3 结论(11)

3 CCN的安全性(13)

3.1 系统模型(13)

3.2 威胁分析(13)

3.2.1 相较于TCP/IP的体系结构方面的冒险(14)

3.2.2 拒绝服务攻击的攻击树(15)

3.3 已知的攻击(16)

3.3.1 通过强制昂贵的计算的对路由器进行的拒绝服务攻击(16)

3.3.2 针对内容源的拒绝服务攻击(16)

3.3.3 拥有特殊比特位的拒绝服务攻击(17)

3.4 新的攻击(17)

3.4.1 缓存无用或非法数据(17)

3.4.2 通过减少缓存效率的拒绝服务攻击(18)

3.4.3 通过填充一个路由器的可用内存的拒绝服务攻击(19)

3.4.4 缓存窥探:列出缓存内容,模拟对象通路(使用路径),复制会话(19)

3.5 结论(20)

4 缓存窥探(23)

4.1 相关工作(24)

4.2 系统模型(26)

4.3 攻击目标(27)

4.4 拓扑智能(28)

4.4.1 时延测量(28)

4.4.2 缓存生存期测量(29)

4.5 攻击I:列出缓存内容(30)

4.6 攻击II:探测具体名字(31)

4.6.1 插入和取出时间探测(31)

4.6.2 推断访问速率(32)

4.7 攻击III:克隆会话(33)

4.8 应对策略(34)

4.9 结论(36)

5 评价(37)

5.1 CCN模拟器(37)

5.2 方案(38)

5.3 评估结果(39)

5.4 攻击流量(40)

5.5 结论和未来工作(41)

6 结束语(43)

术语表(45)

参考文献(47)

插图列表

3.1 CCN中拒绝服务攻击的攻击树(21)

4.1 在不同请求结点中CCN的消息交换(26)

4.2 第一个CCN缓存的时延测量(28)

4.3 缓存的特征时间估计(30)

4.4 三块的并行探测(32)

4.5 LRU缓存的请求速率测量(33)

5.1 Youtube科学技术分类中的视频文件流行度和长度(38)

5.2 从缓存中替换出的每对象缓存命中率的CCDF数量(39)

5.3 缓存的CDF特征时间(39)

5.4 特征时间的测量算法进展(40)

表格列表

3.1 攻击者类型(14)

1. 引言

当因特网被最初创建的时候,设计者主要关心的是连接和共享像大型计算机这样的昂贵资源。从那以后,因特网由一个学术的研究网络向一个被用作商业和娱乐的全球的基础设施进化。按字节来说,因特网今天主要的用途是内容检索。尽管真正的端到端协议,比如VoIP,SSH和chat仅仅只占流量的一小部分,因特网的机制和基础仍然是为在固定位置的终端系统寻找最优化寻址方式,而不是为不受位置约束的内容提供所需。

科学世界通过怎样处理以下情形来被划分:一部分支持使用进化的方法,认为当前的因特网应该被以增量形式改进并向后兼容;另一部分赞同使用彻底清除当前体系结构的方法,支持硬性转变到一个不受约束的下一代互联网体系结构。

在这些硬性清除当前体系结构的方法中,内容中心网络(CCN)是一个最近的最被强烈讨论的提议。CCN建议把网络的主要机制聚焦在内容的名字而不是内容的位置,遵循一个基于接收者的通讯模型,并在每个网络设备中引进缓存。论文的第2部分给出了CCN的介绍,评论当前的研究现状,确定与CCN的可扩展性和安全性相关的研究方向。

改变网络的体系结构有引进新的攻击的风险。例如,CCN路由器需要保持每个通讯状态,然而这个通讯状态可能会被拒绝服务攻击滥用。缓存包含能够被攻击者提取的潜在的敏感信息痕迹,从而危及用户的隐私。在第3部分,我们调查了CCN的体系结构特征在网络安全上的作用。我们利用这些新奇的特征举例说明了我们对网络攻击方面的发现。

在论文的主要部分,我们聚焦于攻击者怎样利用靠近用户的网络层缓存。CCN把任何形式的会话分解成独立的,可以被缓存的以内容命名的对象。即使这些内容对象可能被加密,隐私信息仍然可能通过其他方式泄露,比如内容的名字,测定的时间和内容对象的大小。因为仅仅很少的用户分享这样一个缓存,通过通讯轨迹揭露的个人信息的数量可能会非常多。为了证实我所说的威胁,我们在第4部分解释了攻击者可以怎样列出一个缓存的内容,监视一个特定内容对象的请求,复制两个客户端通过缓存进行的会话。更一般地,我们认为对这个隐私威胁的应对措施需要仔细地在通信隐私和网络性能之间做权衡。当我们在CCN环境下考虑这样的攻击时,我们相信这个问题可以应用在所有存在被一小部分用户所共享的缓存的网络体系结构中。

这些基于缓存的攻击的可行性依赖于缓存可以承载多少攻击流量,攻击者可以得出多么精确的结论。在第5部分,我们用一个方案评估这种攻击,这个方案由100个连接到同样的数字用户线接入复用器的用户组成,这些用户同时下载和观看类似于Youtube那样的视频。我们发现需要模拟一个视频请求的攻击流量很小以至于攻击能够被扩展到可以同时模拟大数量级的视频。

我们工作的总体目标是确定基本构件和概念怎样影响未来网络体系结构的安全性和可扩展性,使用CCN作为未来网络体系结构的研究实例。我们希望在我们工作中得到的经验教训能够对提高现有的和未来的网络体系结构提议有用。在结尾,这篇论文的贡献可以被总结如下:

(1)我们确定了几个在CCN环境下的安全性和可扩展性方面有前途的研究问题。

(2)我们通过描述一系列的利用体系结构的特征的攻击,分析了体系结构的特征和设计决定在网络安全方面的影响。特别地,我们认为更加强大的路由器(依据每个会话的状态、计算能力和缓存大小)增加了网络攻击的覆盖面,我们显示了缓存怎样被误用作存储器、拒绝服务和与隐私相关的攻击。

(3)在隐私攻击方面,我们提出了一个算法,该算法利用定时侧信道来持续地模拟对象请求,即使精确的缓存特征和它的环境以前并不知道。在我们的Youtube/DSLAM方案中,这个算法需要仅仅37.3bit/s的攻击流量。

2. 内容中心网络

这一章给出了一个对CCN的研究现状。我们首先回顾一下现在已有的关于CCN的文献,然后我们讨论在现在的研究中还没有提出的问题。

2.1 CCN的状态艺术

CCN是一个新的通信范型,被设计为一种新的网络体系结构来补充、最终代替现有的网络。更特别的是,与现在的TCP/IP体系结构和通信模型做对比,CCN在以下方面不同:

(1)基于接收者的通信模型:接收者通过发送兴趣包拉取信息。最多会对一个兴趣包发送一个响应数据包。通信是不可靠的,和软状态的。如果之前的兴趣包超时了,接收方的应用程序不得不重新发送基于内容的兴趣包。

(2)层次化内容命名规则:CCN不是基于主机的地址,而是基于与位置无关的内容对象。可以给定内容一个任意的,以类似于URL的层次化的用户定义的名字。兴趣包和内容匹配,或者通过最长前缀匹配可以路由到兴趣包所请求的内容。因为这些特性,接收者可以用当前还不存在的名字,以命名的方式表示兴趣包。这些兴趣包将会被路由到能够生成响应内容的数据源。

(3)基于缓存的体系结构:系统中的每一个参与者,比如端结点和路由器,能够缓存内容对象,并用以响应未来的请求。

(4)内容安全:每个在CCN中交换的内容包都是经过数字签名的。用这种方式,内容发布者证实内容和名字之间的绑定,并用来确保内容包的完整性和真实性。如果需要确保机密性,也可以使用加密。

(5)状态化的,更强大的路由器:CCN中的内容路由器需要保持每个兴趣包的状态来避免路由环路和以与兴趣包到来时同样的路径返回数据包。路由器能够核实内容对象的签名来避免内容欺骗攻击。CCN也支持一种路由器必须实现的限定的查询语言。

当一个CCN结点接收到兴趣包,它首先尝试用本地内容缓存里的内容满足兴趣包。典型的,这样一个缓存用最近最少使用(LRU)算法或者最近最不频繁使用(LFU)算法的替换策略。

如果没有发现合适的内容,兴趣包将会被转发。类似于路由表,FIB表被用来找到转发的出接口。FIB表可能包含到运行在相同主机上的应用程序的路由,或者是到物理接口的路由。CCN支持对同样的内容前缀的平行路由的多个连接。

每个已经发出的兴趣包被记录到PIT表中,以便返回的数据包知道兴趣包进来的接口,和避免多次转发相同的兴趣包。在CCN拓扑中,这个兴趣包的集合被用来确保效率和避免环路。

策略层被使用来适应CCN对不同传输介质和范型的不同参数和行为,比如固定网络、无线网络或延迟可容忍网络(DTN)。

CCNx项目,由PARC资助,开发了一个CCN的开源实现。这个早期的原型实现了CCN结点的基本功能,包括FIB、PIT、主要的内容缓存和静态路由的转发,也支持内容签名和签名验证,密钥管理、可选加密和解密。这个原型也包括一个持久稳固的基于磁盘的内容仓库,它可以用来保存文件和一些例子程序,比如CCN的语音实现,聊天应用,和用于数据传输的一些命令行工具。

2.2 CCN的研究议程

当前CCN的研究论文呈现了CCN一般的体系原则和定义了API的CCNx原型,以及CCN的本地通信。CCN能够在很大程度上有利于应用程序的使用,在这方面对CCN大规模的评价和路由选择的提议将是未来的工作。

这一部分通过讨论在设计中被提出的想法,概括了开放的CCN研究中存在的问题和需要未来调查研究的新思想。许多这样的问题都是互相关联的。首先,我们讨论为了使CCN广泛使用的与CCN可扩展性相关的问题,然后我们聚焦于与安全相关的研究问题。

2.2.1 可扩展性研究问题

CCN的路由器需要保持它所转发的每个兴趣包的状态。CCN结点可能一次把兴趣包转发到多个结点,并依据内容的名字路由而不是位置。所有这些与TCP/IP的不同可能对CCN的可扩展性产生影响并激发研究。这一部分讨论的研究问题涉及匹配的应用程序,路由选择,路由器设计和一些CCN的协议细节。

应用程序

CCN的部署需要对设备、网络工程师和程序员的教育进行重大投资。除了节省带宽,CCN期望能够使大量新的应用程序利用CCN灵活的命名寻址和发现机制。未来的研究应该识别这些应用程序。

至于已经存在的应用程序,我们假定面向内容的应用程序能够工作在CCN之上,并且受益于CCN。CCN上的语音实现(Voice-over-CCN)原型聚焦于显示传统的面向会话的协议,并能够在CCN上被移植。假设在会话中两边的用户都通过一个全球唯一的前缀可达,比如/domain/user。假定Alice想要给Bob打电话,下面的步骤将被执行用来建立电话通信。

(1)一个SIP Invite消息被用来请求电话。在VoCCN中,Alice向Bob发送一个请求包,并将SIP Invite消息编入请求包的名字。为了确保机密,名字可以被加密如下:/domain/sip/bob/encoded-invite-message。

(2)Bob在响应数据包中发送SIPresponse和请求的名字。

(3)实时传输协议(RTP)声音数据流被封装在CCN的数据包中。Alice发送Interest包来请求来自Bob的声音数据,反过来也一样。Interest包遵循方案:/domain/user/call-id/rtp/sequence-number。

当方案显示端到端的会话是可行的同时,方案也显示出了在CCN中,推送数据不是一个容易的工作。如果通过把数据编码成名字的方式,数据被推送到了目的地,目的地不能简单地发送数据包响应Interest包,因为数据包将会发送回所有数据作为它名字的一部分。因而,推的场景需要两边在一个全局唯一的名字下可达。

第二个关于端到端协议的问题是被参与者交换的消息将会被缓存,尽管在将来有些消息不太可能有任何缓存命中。在这种情况下,那些消息使用的缓存空间如果被用作其他可能会被再度使用的消息可能会更好。如果应用程序,比如声音或远程登录应该使用CCN,那么问题来了。

版本是在这个背景下的另一个问题。假定在/newspaper前缀下,一个拥有前页(头版)的报纸是可达的。明显地,头版将会经常改变。CCN允许内容名字承载特殊版本的标记。然而,客户端不能提前预知最近的版本号是什么,因而,在可能仍然被缓存的旧的复制中需要有一个算法来找出最近的版本号。

在CCNx邮件列表中,一个算法被提出,我们列出了一个稍稍修改的版本。

(1)请求内容没有版本标记,或者有客户端知道的最近版本号。

(2)从回复中接收的最近的版本号加1,再次请求同样的内容。

(3)反复迭代直到不会发现任何内容,这样最高可用的版本号就被确定了。

这个解决方案似乎不是令人满意的,因为它可能是效率低的,特别是当算法不得不频繁运行的时候。此外,以一种方式,这种方式提供一种保证使得最近的版本号真正被发现,以这种方式来实现这个算法是有挑战性的。如果被客户端请求的版本号太高,内容源不得不以“内容不可用”消息回复,这个消息有非常短的生存期,以至于重放攻击是不可行的。在没有这种响应的情况下,客户端不能区分是一个简单的超时还是其他情况。

广播或者多播协议,比如哪些用作IPTV的协议,关于它们能够怎样在CCN上被实现需要更多的调查研究。默认的,仅当一个Interest包被发送后,一个CCN结点才可能接受一个数据回复包。一个连接到广播链路的CCN结点能够无意中听到被其他结点发送的Interest包,并抑制自己的Interest包来减少流量。然而,这仍然意味着为了发送每个数据信息到多播组,必须先发送每个兴趣包,相比较于基于IP的协议,这增加了开销。

体系结构

通常,关于基于内容和缓存的路由,一个重要的问题是在哪一层这个功能被最好的实现。在CCN上运行任何协议,例如替换IP协议,具有提供一个通用的缓存基础设施的优势。另一方面,一些应用程序可能不会从缓存中受益,像上面所讨论的端到端通信,可能不会比有IP层更加有效。

或者,CCN可以运行在IP上面,仅仅被选择的应用程序可以利用CCN。这将提出一个问题,相比较于传统的内容分发网络和冗余消除技术,CCN将多大地提高效率。

路由

在CoNext文献中,Jacobson等人显示了一个例子,CCN将怎样映射到已存在的路由协议:内部路由协议中的链路状态路由协议使用本地资源前缀,比如持久稳固的内容仓库,和邻居连接来创建拓扑,对域间路由协议来说,作者建议在CCN的增量部署场景内在能够使用CCN的区域之间建立隧道,一个区域的网关能够寻找请求的CCN的名字的第一个组成部分作为DNS的名字。结果将会是其他区域的内容路由器的IP地址,这样一个UDP隧道就建立了。对一个全部使用CCN的部署,作者建议把CCN的前缀整合进BGP的公告中。然而,现在仍不清楚路由表会增长到多大,而且这个方案将会支持多少内容源的移动性。

上面总结的路由方法是相当保守的,它最接近当前互联网上的路由。然而,CCN可以容忍环路,并且支持多路径路由,向请求者回送至多一个数据响应包,因而CCN更加灵活。CCN的许多不同的路由协议是可以想象的,它们的选择主要依赖于系统的适应能力:支持内容源的可移动性,能够断开的操作,或者在系统的任何地方寻找缓存内容,而不是遵循到内容源的默认路径。

一种路由方法认为受欢迎的内容可能被在附近的路由缓存中找到,因此类似洪泛的路由协议是合适的。然而,这种方法很难定位不受欢迎的内容,并定位最初的内容来源。

更传统的方法反对的是,相较于总体的内容大小,主要基于内存的路由器缓存可能相对较小,因此它们可能不是一个可靠的内容来源,而是一个动态的可能短期的存储。因而,可能更需要去寻找一个相对稳定的位置,比如最初的内容生产者。

为了节省传输带宽,ISP能够建造一个拥有许多磁盘存储的大的服务器场地,依据他们的缓存策略来服务缓存的内容。因为这将在整个区域内发生,ISP能够按照它们的意愿配置这个系统从而强迫用户使用它。然而,相较于从数据在主存中的远程内容源直接获取内容,基于磁盘的缓存可能引起一个较高的延迟。

CDN不可能被淘汰,因为希望减少延迟的内容提供者可能需要接近他们的客户来配置应用程序。CCN的缓存不能提供自定义的应用程序逻辑和动态的内容创建。然而,CCN的内容名字路由能够被配置得比当前因特网更透明地包容CDN。

缓存

缓存是CCN体系结构的中心元素。CCN不仅能承载用户之间共享的静态内容,而且能够承载动态的非共享的内容。鉴于这些情况,我们可以识别下面这些关于缓存的研究问题。

(1)缓存的内容,比如缓存怎样合作和缓存怎样组织(层次,网状)。

(2)每个拥有线速功能的缓存的大小,或者它们在层次结构中的位置。

(3)缓存的替换策略。

(4)怎样评估缓存中数据的效用,例如,什么数据该缓存,什么数据不缓存。例如,动态内容不应该被缓存。

(5)缓存和路由算法怎样相互作用,哪些内容向外部公布,缓存怎样跨区域或跨ISP合作。

(6)当缓存插入和删除内容时,缓存应该知道CCN怎样把大的文件分割成块。

网络和传输协议问题

CCN在网络层最初的工作是提供不可靠的内容路由。研究需要为兴趣包转发定义策略,为特定流量定义优先级,以确保在所有的参与者之间共享网络资源。

迄今为止,CCN缺少一种传输协议来确保可靠性和公平性。一些CCNx工具以流水线方式传输数据包来获得一个更高的吞吐率,与TCP相似,但是,仍然需要正确定义一个协议。

如果没有在一个给定的窗口时间接收到回复,Interest包将超时。现在还不清楚这些超时时间怎样选择,哪个结点需要重传超时的Interest包。相比较于初始请求者重新发出Interest包,如果中间路由器重传了,协议可能会更加有效。然而,这也将使最初请求者为整个过程设置一个超时时间更加困难。

路由器设计

CCN需要比IP更加强大的路由器。CCN的路由器需要认证签名,处理拥有复杂查询特征的Interest包和为每个等待Interest包保存状态。路由器可能也必须运行算法来检测和防止拒绝服务攻击。更重要的是,CCN路由器必须以不差于今天的IP路由器的速度工作。

迄今为止,还不确定这样的路由器应该被怎样建造,这将会花费多少。解决这个目标的一个中间问题是为线速功能的CCN路由器决定处理能力和内存需求。特别地,Interest包的聚集和缓存命中怎样影响PIT需要的内存数量?这个问题是需要特别关注的,因为CCN路由器的状态与转发的Interest包的数量成比例。除了可能阻碍可扩展性,路由器的状态也提出了与安全相关的挑战,因为它可能被拒绝服务攻击滥用,就像我们在3.4.3部分中讨论的那样。

更多地,如果CCN包含的加密算法被破解或接近生存周期结束,它将会被替代。这提出了用硬件或软件怎样实现它们的问题。

依据缓存的目标大小,CCN路由器可能需要相当大的数量的RAM,把主存用一个大的但是更慢的磁盘备份可能是必需的。相比较于从远程的但是数据在内存中的内容源,这提出了怎样不增加总体请求延时,而将磁盘整合进体系结构中的问题。(对CCN内容路由器来说,主存和缓存是怎么配合的?)

能源效率

在文献中,Lee,Rimac,Hilt比较了内容分发网络(CDN和CCN的区别?)、nano数据中心和CCN体系结构的能量损耗。他们主要发现了CCN体系结构减少了跳数,因此减少了能量损耗。然而,作者使用了一个简化的系统模型,虽然增加了计算需求,但路由器没有消耗任何额外的电力。而且,作者假定了一个相当大的缓存,假定请求数据总是被缓存的。

我们相信这些假设被过渡简化了。CCN路由器需要额外的计算能力来认证签名,处理特殊的Interest包查询功能。此外,如果缓存基于主存实现来避免基于硬件磁盘的实现所带来的延迟增加,缓存的大小可能十分有限。(基于主存实现缓存和基于磁盘实现缓存有什么区别?)不同的路由协议可能对能源效率也有影响。我们相信所有这些原因激发了一个对CCN的能源效率的更加差异化的调查研究。

统计基础设施

内容提供者对他们的内容被怎样访问和被怎样的用户群体访问的统计感兴趣。这样的信息对决定广告的价格和优化他们对用户提供的服务必不可少。因为CCN不在Interest包中提供端结点认证,多个Interest包可以被聚集,内容可以从缓存中而不是内容源获取,所以内容提供者很难建立这样的统计。

一个解决方法是内容的数字版权管理系统,它需要用户与内容源交互来获取能够解密请求内容的密钥。反过来,内容也可以从缓存中得到服务。我们在下面的2.2.2部分详细说明。

如果内容源需要他的用户的地理信息,他需要用户来注册,并且在访问内容之前提供这个信息。然而,内容提供者也需要通过辅助渠道来核实这个信息。特别是对地理位置上受限制的内容,比如体育赛事,这种方式被视为足够安全,足够高效。在这种情况下,CCN的实现能够强迫用户用包括地理信息的key来标记他们的Interest包。信息的正确性能够被用户的ISP来认证,这种方法在下面的2.2.2部分讨论。

2.2.2 与安全相关的研究课题

被CCN运用的体系结构和通信范式的改变也改变了网络安全的许多方面。这一部分聚焦于一个高层系统的未解决的问题和设计观点,攻击将会在第三章更加详细地讨论。

密码学的应用

密码学技术的广泛应用是CCN的核心。因为内容与位置不绑定,所以内容必须被认证和完整地保护来避免基本的欺骗攻击。此外,CCN的访问控制是通过加密来提供的。攻击者可以相当容易地获得他感兴趣的内容的加密版本。CCN的安全是基于攻击者不能对明文内容下任何结论,并且不能利用辅助渠道。

然而,即使数据被加密,它仍然会泄露一些信息,比如内容大小,请求时间,内容名字。我们将在第4章更加详细地讨论这些问题。另一个密码学的应用来源于加密算法有限的生存时间的事实,通常假定为30年左右。这个时间之后,一个可以达到的计算将会增加强力破解加密内容的能力。这意味着30年后这些加密数据仍然是有价值的,可以获得加密数据的攻击者可以保存这些数据供以后分析。我们将在3.4.4部分讨论攻击者怎样克隆其他会话参与者的会话。

此外,一旦内容被发布,还不清楚它怎样被取消,内容的拷贝会在网络的很多地方被缓存。为了防止更多的用户获得取消的内容,路由器将会发布和执行一个取消列表。或者,内容将会被以相当短的生存时间发布,生存期过后路由器将不会再缓存内容拷贝。然而,这将意味着内容发布者的高负载,因为他不得不更加频繁的为内容拷贝提供服务。

在被用作内容签名的密钥环境中,取消问题特别重要。例如,如果密钥被破解了,密钥应该被标记为不可用。这个信息必须被及时地传播到拥有破解数据的所有消费者,甚至所有的路由器。

最后,密码学的应用需要关键材料的交换,特别是使用信任模型。需要定义一些策略来防止多方声明同样的命名空间。

拒绝服务

网络安全研究方面一个重复的话题是拒绝服务攻击机制。因为攻击者,特别是如果它们控制了大量的机器,能够简单的制作IP包并发送给受害者,而不论受害者的位置。这种类型的攻击很容易实施。

CCN有一些特性使得拒绝服务攻击更加困难。首先,数据包没有被路由,他总是沿着之前发送的Interest包的路径发送,对之前的一个Interest包,每个接口最多接收一个数据包。因此,如果一个攻击者想要用数据包淹没远程的受害者,他将不得不使受害者对请求兴趣包生成比他能够处理的数据更多的数据包,这是一个不可能实现的场景。

另一方面,Interest包是可以被路由的。如果攻击者选择了受害者内容源的前缀,每个兴趣包都有不同的后缀,来自缓存的响应将会被避免,由此产生的兴趣包将会被路由到受害者。然而,CCN的第二个特性使得应对措施可行。数据包由与兴趣包同样的路径传送。因此,路由器能够观察兴趣包中不存在响应数据包的前缀部分的比例。如果这个比例很高,将会检测出攻击,兴趣包将被丢弃。

这个算法将不得不被部署在中间路由器上,这个算法的有效实现和优化的攻击检测界限仍然有待研究。如果知道检测算法怎样工作,攻击者能够简单的选择一个低于攻击检测界限的攻击率来避免被检测到,但同时这个速率足够达到攻击的目标。这源于中间路由器不知道应用程序语义的事实,仅仅最终的目的地能够识别是否遭到了攻击。最后,Jacobson等建议使用攻击域让下游路由器抑制它们通过名字前缀转发的兴趣包的数量的机制。

一个至今还未讨论的拒绝服务攻击的目标是中间路由器。因为它们提供比IP路由器更加强大的功能,它们必须保存每个兴趣包的状态,CCN路由器有更多的攻击面,并可能成为拒绝服务攻击的受害者。我们将在第三章讨论这样的攻击。

隐私

CCN消息是自包含的命名对象。因此,相比较于从不透明的TCP流中获取的IP包,它们承载更多的语义信息。因此,这些对象被临时地保存在没有访问限制的缓存中,这意味着通信痕迹在所有的网络中游荡。

攻击者可以知道是否一个给定的数据对象被缓存在一个结点中,当数据对象被请求时,这个结点可以被测量响应时间。因此,甚至加密的数据也会通过元数据,比如名字、发布者的公钥泄露信息,或者通过辅助渠道,比如内容长度和请求时间。这种类型的攻击叫做缓存窥探,我们将在第四章讨论,并概述应对策略。

另一个用户隐私的威胁是恶意的ISP。通过监听接入路由器和记录客户请求什么名字,ISP可以很容易的了解客户。现在仍然不知道如果不禁用缓存,这能够被怎样技术性地防范。假定一个假想密码或者模糊构造能够把一个明文名字的成分c映射到模糊的名字o1,o2,……on,这个构造是单方面的,意思是这n个名字可以从明文名字推断,但反过来是不成立的。如果一个恶意的ISP看见了这样一个名字,他不能直接推断出这个名字的内容源是什么,因此就可以说实现了某种程度上的隐私。

为了允许转发这样一个模糊的Interest包,并能够缓存命中,必须有一个功能能够检测对同样的对象oi和oj的两个模糊的名字的匹配。然而,如果这样的功能存在,恶意的ISP能够建立一个被监视的内容源的模糊名字的字典,并用字典匹配进来的兴趣包。更坏的是,因为一个路由器总是看见兴趣包的响应数据包,恶意的ISP能够建立一个数据负载内容的指纹哈希的字典。这样,数据的隐私性将会很小。另一方面,如果这样的功能不存在,例如,如果名字和负载被每个用户独立地加密,数据的隐私性将会最大。这意味着缓存只在每用户基础上可操作,这相当大地限制了缓存的效用。

鉴于这些想法,研究问题就是是否可以找到一个机制使恶意ISP创建一个模糊名字字典不可行,但仍然允许转发和缓存的前缀匹配。此外,可以调查在用户隐私和网络效率之间是否可以找到一个权衡。更通常地,需要研究用户需要拥有什么隐私,他们信赖他们的ISP吗?他们需要技术上保证隐私的强制执行吗?他们对描绘的受欢迎内容还是不受欢迎内容的访问更关心?

问责基础设施

在TCP/IP体系中,如果一个主机受到攻击,对攻击来自哪里会有粗略估计。发送者的IP地址经常是伪造的,但是如果攻击者需要接收响应包,地址必须至少有一定的可信度。

相反,CCN没有端结点标识,当消息被接收,只有上一跳是已知的。数据响应包遵循PIT中的兴趣包留下的返回路径返回,当数据包被转发后,这个痕迹就消失了。结果,遭受攻击的CCN内容源不能追踪攻击来自哪里,他们不能选择性地阻塞攻击源。它们不能禁用接收有害数据包的路径,但这将可能断开一大群无辜的用户。

问题的原因是CCN废除了端结点标识和真正的端到端连接语义,但是仿真了相似的东西,比如动态生成的内容仍然需要访问一个特定的物理的机器。当用户和攻击者可以路由兴趣包到这个机器,机器不可能再识别连接的另一端。如果发生断续的连接或者请求者移动了,这个新的通信范式更加灵活但也付出了前面提到的问题的代价。

执法机构能够模拟接入路由器或者DSLAM,因为前一跳的位置就是终端用户。然而,关联在受害者这方观察到的攻击和在网络边缘收集到的信息不是一件容易的事。特别地,这仅工作在如果全世界所有的接入提供商都被监视的情况下。相反地,如果在接入路由器上观察到恶意兴趣包而没有受害者的投诉,想要找到兴趣包在哪里路由可能会很困难,因为网络状态(路由表,缓存内容)变化很快。

一个可能的解决方法强迫用户对兴趣包数字签名,或者在接入路由器上自动签名兴趣包。由ISP提供签名密钥,密钥会被经常改变,例如每天,来提供与现在动态IP地址相当的隐私保障。这个签名密钥包括例如ISP、地区或国家的名字等的联系信息。这个解决方法允许内容源选择性地阻塞一个特定的但是仍然匿名的用户,或者如果发生揭露用户身份的严重问题时联系用户的ISP并着手起诉。然而,在路由器上签名的兴趣包的聚合会更加困难,尽管它是可能的。

内容保护

内容提供者感兴趣于在可控的环境下使他们的内容可用。例如,赞助的内容将只能呈现在他们自己的广告页中,并防止第三方深度连接此内容,没有原始作者的同意不能将此内容用在其他页面。订阅内容的提供者需要确保此内容只在订阅期内被查看,并只能在拥有授权软件的授权设备上可查看。

在现在的万维网上,内容提供者从他们控制的机器上服务内容,因此他们可以在接受用户对内容的请求前强制执行一系列条件。例如,对免费的内容,他们可以检查用户正在请求的是否是同一个主机上托管的页面内容,或者用户的请求是否来自同一台用户登入的机器。

订阅的内容,比如在iTunes上,仅仅通过授权的软件可以被重新创造,这个软件被内容提供者强行加入访问限制并被强制执行。用户支付之后,软件可以下载被单一的主密钥加密的内容。软件也获得主密钥来解密内容,但密钥对于用户是隐藏的。每个文件使用单独的加密密钥而不是每个用户使用单独的加密文件减少了服务器的计算负载,促进了CDN的使用。

这个方案的安全性是基于仅仅授权的软件可以被使用的假设。如果攻击者设法理解加密方案并提取出了主解密密钥,他们能绕过任何强加在内容上的限制。如果这样的事件被公开,内容提供者通常改变他们的保护机制并强迫所有的合法用户把他们的客户端软件更新到最新版本并拒绝旧版本的连接。

对于CCN网络,缓存内容是可以没有限制地被获取的。对订阅内容来说,这意味着一旦保护方案被破解,所有的被缓存在某处的内容都将不再受到保护。因此,对CCN来说,有一个切实可行的撤回缓存内容的方案是很重要的,就像在本部分内容开始讨论的一样。此外,甚至半免费(资助的)内容也需要用这样一个数字版权管理系统来保护,以便在播放环境中执行相对松散的规则。CCN的缓存意味着内容提供者更少的数据流量,但同时他们失去了和用户的直接通信,因此提供者也失去了某种程度上的控制。

2.3 结论

CCN定义了一个新的网络体系结构的原则。CCNx项目开发了一个CCN的原型实现,许多细节需要被调查研究:

(1)什么应用程序使用CCN?CCN应该在哪一层上操作?

(2)CCN的路由支持什么功能?

(3)缓存基础设施应该被怎样组织?

(4)可扩展的CCN路由器怎样被建造?

(5)内容提供者怎样控制他们内容的使用?怎样获得使用的统计信息?

(6)CCN使得拒绝服务攻击更加困难,但同时增强的体系结构提供了新的攻击机会。

(7)广泛使用的缓存可以被攻击者利用来提取与其他用户隐私相关的信息。

在下面的章节中,我们用一个系统的安全分析方法继续CCN的研究。

3. CCN的安全

在本章中,我们系统地分析CCN的安全。我们以3.1节一个简化的系统模型开始,并继续与这个模型的相关的威胁分析(3.2节)。3.3节综述已经在CCN文献中报告的拒绝服务攻击,然后在3.4节介绍新的攻击,主要是拒绝服务攻击和与缓存相关的攻击。

3.1 系统模型

我们的系统模型包含主要的参与者和CCN可能部署的组件。因为现在还没有CCN的全部功能和部署的实现,我们把我们的分析聚焦于CCN新奇的体系结构和概念的弱点。实现方面的弱点,比如缓冲区溢出,不完整的参数验证,或者有缺陷的密码学使用,我们认为超出了讨论范围。本文分析的目的是用来预测CCN安全方面系统固有的挑战,以便这些问题能够在开始大规模部署前被解决。

参与者:

(1)端结点:通过生成兴趣包请求内容。

(2)内容源:通过生成兴趣包的响应数据包生产内容。

(3)ISP:通过转发兴趣包和数据包连接端用户和内容源。

组成部分:

(1)端用户设备:可能包括家用路由器和一些个人主机。为简单起见,我们假定每个ISP的客户对应一个单独的设备。

(2)路由器:转发兴趣包,回送数据响应包。他们通常假定有内置的缓存。这些缓存大小不同,实现技术不同。下面,我们假定缓存在RAM中实现。因此,他们的大小是数十GB,甚至更小。

(3)内容源:或者内容生成者。有可用的,或者根据到来的数据包的请求生成的内容。实际上,大的服务器场所,甚至地理上分布的CDN可能被用作服务内容。我们通过假定一个单独的机器服务所有的请求来简化我们的模型。

(4)链路:连接所有上面列出的组成部分。真实世界的链路在技术和速度方面不同,但我们不在我们的模型中区别。

我们想象作为一个开放的系统,CCN的部署与现在的互联网相似,参与者不需要彼此完全信任。

3.2 威胁分析

上面列出了所有参与者都可以成为攻击者。在广义上,我们使用术语攻击者,例如,当ISP监视用户或者泄露用户的隐私的时候,我们认为ISP是攻击者。因此,依据他们的类型,攻击者可能控制上面列出的任何组件。同样,目标受害者也可能是任何参与者。

表3.1列出了几种类型的攻击者,他们在知识、预算、功能和目标上不同。一个攻击的风险依赖于利用的难易,比如什么攻击者能够施行这个攻击,多少潜在的攻击者存在,这些攻击者必须做怎样的投资。

类型

知识了解的程度

预算

功能

动机

单一用户

很少 (使用攻击工具)

自连接

名誉、报复、无聊

专业 攻击者

中等至偏高

中等

僵尸网络,黑客攻击的路由器

钱(支付的攻击)

恶意ISP,恶意内容源

内部人士

访问自己的设备

钱、法律法规、 竞争优势

网络战士

相当于内部人士

非常高

僵尸网络,黑客攻击的路由器

报复、威慑、 舆论影响

表3.1 攻击者类型

3.2.1 与TCP/IP架构风险的比较

相比较于TCP/IP,CCN有不同的体系结构,最显著的不同是CCN允许路由器中所有数据的系统缓存。然而,缓存意味着在效率和隐私两者之间的权衡:用户在缓存中留下通信痕迹。这些痕迹可以被任何人获取,或者通过拥有特殊查询特征的兴趣包,或者通过探测缓存,使用及时的回复来找出是否一个数据项被缓存。特别地,很可能提取第三方在会话中交换的全部的包序列。这个实事相当大地简化了攻击,因为攻击者不再需要像在TCP/IP中那样嗅探受害者实时的链路。攻击者只需要被连接在一个共同的缓存中,甚至可能进行追溯。此外,缓存需要对数据加密。然而,密码学拥有有限的生存周期,一般认为大约30年。因此,攻击者可能收集数据并保存到将来的某个时刻,加密算法不能再抵挡强力攻击的时刻。

CCN的通信模型是纯粹的面向内容的。CCN依据内容寻址而不是位置,因此用户信任内容和原作者,而不是当前的可以得到内容的缓存(这可能是一个任意的不可信的缓存)。因此,保护内容的完整性、绑定内容的名字和作者是必需的。

因为TCP/IP强迫与可信的内容源的直接通信,保持最新内容不是网络中存在的问题。相反,CCN需要防止旧内容的重播,需要有一种安全的方式来保证给定的内容是作者的最近版本。

针对内容源的拒绝服务攻击在CCN中更难实施,但是仍然可行:因为仅有兴趣包被路由,仅有兴趣包被用来淹没内容源。(数据包总是沿着兴趣包的路径返回。)兴趣包的聚合和缓存意味着攻击者必须生成可以被路由到相同内容源的兴趣包,但这要求不同的名称。相反,互联网上的攻击者可以生成任意数量的都被路由到同一目的地的相同的IP包。CCN路由器的检测算法利用这个请求和响应遵循相同路径的事实。然而,兴趣包不承载能够识别兴趣包起源的标识符的事实使这一情况更加复杂。

位置标识符在TCP/IP中可用,并能够被用来防范攻击,或者实现端到端协议。CCN的通信是单跳的,由于兴趣包的聚合和缺少端结点寻址。没有额外的机制,CCN结点不能识别查询的起源,因为它将需要追溯到攻击的起源。拥有端到端语义的面向会话的协议需要实现一个明确的方式来使这个信息可用。风险是这样的,可选的额外一层可能不会被每个人接纳,并可能因此被攻击者规避来获得一个更高层的匿名。

CCN的路由器比IP的路由器在状态和计算能力上更加强大。这主要是一个实现上的选择:一个无环拓扑和引入的返回到兴趣包发送者的源路由将使PIT变得多余。这一选择对系统安全的影响是,因为网络中更强大的设备增加了攻击面,因而可能导致拒绝服务攻击。

3.2.2 拒绝服务攻击的攻击树

21页的图3.1显示了CCN中拒绝服务攻击的攻击树。攻击树显示了获取攻击目标的不同方式。树叶代表基本的攻击步骤,内部结点代表攻击的子目标,树根代表最终的攻击目标。在这个例子中,所有的子树都是可选的,也就是说,一个从叶子到根的路径说明一个潜在的攻击实例。

一种拒绝客户服务的方式是使请求内容不可达。

(1)源能够通过洪泛被破坏,为此,攻击者可以发送大量的到源的兴趣包(3.3.2节和3.3.3节),或者攻击者可以减少缓存效率以致正常的流量完全转发到源并下载它。

(2)路由选择可能被恶意的或已被破解密码的路由器破坏致使不能转发请求。我们认为经济力量使得ISP按照客户需要转发兴趣包。我们认为防止攻击者获得路由器的管理权限超出了讨论范围。每个路由器中的PIT表项有超时时间,时间过后,路由器将会删除等待兴趣包并不再转发回复包。攻击者可以在不同的路由器上配置不同的超时时间来防止内容被获取。然而,还不清楚攻击者怎样实施这样的配置。

(3)两种类型的中间设备可能会被破坏:可以用大量的人造兴趣包对链路洪泛,以致链路达到能力极限,合法的流量在路由器中排队(3.3.2、3.3.3、3.4.2节)。要求路由器执行代价高昂的计算来减慢发送请求(3.3.1节)。或者,路由器的内存可能被溢出的PIT耗尽。

另一个拒绝客户服务的方式是制造伪造的响应包。

(1)有效的内容被路由器阻塞,路由器认为内容不可用。攻击者可以重放或者生成一个“内容不存在”响应。

(2)内容可以通过生成没有被签名,或者被用错误密钥签名的伪造响应包欺骗,并期望客户接受响应。例如,客户可能不知道内容源的正确密钥。或者,签署了正确密钥的旧的内容可能被重放,或者攻击者可能获得了对源的签名密钥的访问权限,因此便可以欺骗内容。

如果CCN的加密协议没有被正确实现,或者如果客户对密码学机制的使用配置不安全,后来的攻击是可能的。因为这些风险已经在现在的网络体系结构中出现,我们不打算进一步考虑它们。

3.3 已知攻击

在这一部分,我们总结了一些与拒绝服务攻击相关的攻击和他们的应对策略。这已经在一些CCN的文献和CCNx的邮件列表中被讨论了。

3.3.1 通过强制昂贵的计算对路由器进行的Dos攻击

如果路由器验证了内容签名,攻击者可以请求更多的需要路由器做昂贵计算的数据项,并对路由器向其他用户提供的服务产生副作用。

(1)假设:内容路由器系统地验证了他收到的内容对象的签名。路由器可能缓存密钥,但并不是每个密钥都缓存。攻击者控制一个或更多的机器,并串通恶意的内容源。

(2)攻击:攻击者从恶意内容源请求数据,每个数据项都不同,并签署了不同的密钥。为了验证签名,路由器必须从内容源指示的位置获取密钥。为了延迟该操作,内容源可以手工的减慢他的响应。此外,如果攻击者知道正在被使用的加密算法和算法实现,攻击者能够选择密钥和签名使得他们可以在最坏的情况下执行。

(3)影响:路由器忙于验证签名,可能减慢传送到合法用户的服务。或者,路由器可能停止验证签名来满足需求。

(4)应对策略:

1)当负载太高时停止验证签名。在任何情况下,CCN接收者希望自己验证所有签名。

2)为了不允许欺骗内容被缓存,签名必须被验证。然而,验证可能被延迟直到处理能力可行。或者,仅当内容被缓存了一段时间,签名才会被验证。例如,避免对那些立即会被丢弃出缓存的内容的计算能力做投资。

3)一旦出现使用了大量的可疑的不同的密钥,就需要检测内容源。或者不验证这些签名,或者仅当有充足的空闲处理能力可用时获取和验证密钥。

(5)风险:低。攻击可能被检测,需要有一个串通的内容源和潜在的相当大的攻击流量(签名验证可能会在硬件中实现来获得高的速度)。

3.3.2 针对内容源的Dos攻击

攻击者直接向源发送兴趣包来避免缓存命中,目的是淹没源,拒绝源对合法用户提供服务。

(1)假设:构造不存在的内容的名字,直接向内容源路由兴趣包是可能的。攻击者假定可以访问一个或更多的机器,比如一个僵尸网络。

(2)攻击:攻击者为大量不存在的内容包构造不同的名字。这将使缓存不能命中,兴趣包将会被直接路由到内容源。(怎么构造?生成随机数?)

(3)影响:如果许多设备在同一时间执行这个攻击,内容源会被兴趣包洪泛,以致合法用户被拒绝服务。

(4)应对策略:路由器记录为每个前缀转发的兴趣包收到了多少回复包。如果路由器检测到一大部分的可疑兴趣包没有响应,他将减慢这个前缀的兴趣包的转发速率。

(5)风险:中等偏低。尽管可能被规避,检测仍然是可能的。攻击需要访问一个僵尸网络,并需要高的攻击流量。

3.3.3 利用兴趣包特殊位对内容源进行DOS攻击

一些特殊的兴趣包比特位会被攻击者利用造成缓存无法命中。这可能被滥用于利用兴趣包来对内容源进行洪泛攻击,以拒绝对合法用户的服务。

(1)假设:CCN兴趣包可以指定无法从缓存中获取到响应数据。攻击者假定控制了一个或几个机器,比如僵尸网络。

(2)攻击:攻击者向一个给定的内容源发送大量的兴趣包,并指定响应不会从缓存中获取。

(3)影响:源将会遭受到兴趣包的洪泛攻击。合法用户被拒绝服务。

(4)应对策略:限制兴趣包特殊选项的使用。例如,仅允许本地范围的兴趣包使用特殊选项(没有超越本地机器或本地网络转发兴趣包)。或者,仅仅数字签名的兴趣包能够使用这个选项。希望密钥证书能够揭示攻击者的身份。然而,攻击者能够从信任的用户那里窃取密钥并以一个虚假的名字实施攻击。

(5)风险:低。存在完美的应对策略。攻击需要对僵尸网络的访问和高的攻击流量。

3.4 新的攻击

在这部分,我们介绍一些还没有在CCN环境中被讨论的新的攻击。

3.4.1 缓存无用或非法数据

通过利用广泛的路由器缓存,攻击者可以为非法内容获得免费的不受控制的存储,或者在路由器缓存保存已删除的内容。

(1)假设:CCN广泛使用缓存,缓存的大小可能会很大。攻击者假定可以访问连接到同一缓存的一个或多个机器,比如僵尸网络。

(2)攻击:攻击者持续地为文件发布兴趣包,以使它保存在缓存中。这个人工的大量的请求包产生了一种假象:对路由器来说,对这个文件欢迎程度似乎比实际更高。

攻击者需要在文件被缓存丢弃之前不久发送一个兴趣包。比如LRU缓存,一个项目在缓存中至少保留一个缓存特征时间。这意味着请求频率必须高于或者等于tc-1。

如果缓存以网状结构聚合,这便足以使攻击者渗透一个缓存,项目将会对所有连接的客户端可用。比如树状的层次网络,攻击者希望渗入树根以使文件对最大数量的客户可用。在一个LRU层次中,仅当高层缓存比低层缓存有更加严格的高的特征时间时,高层的缓存才有意义。这是因为LRU缓存像一个请求频率以tc-1为截至频率的低通滤波器(聚合)一样工作。因此,如果攻击者想要渗入树根,他只需要决定根缓存的特征时间,并相应地调整请求速率。我们在4.4.2节描述测量办法。然而,测量根的特征时间是具有挑战性的,用根节点代替叶结点作为目标需要更低的请求速率。

(3)影响:攻击者可以通过使用这个技术,利用CCN的基础设施作为内容分发网络来保存已经从原始服务器中删除的文件,并使他们为更广阔范围的用户可用。特别地,非法内容的发布者可以从web服务器上临时发布内容并把文件保存在CCN网络里,这意味着关闭web服务器不足以防止内容被获取。

这个攻击的一个变体仅仅是增加合法内容的普及。例如,内容提供者把他的不受欢迎的文件链接到他最受欢迎的文件以致于它们可以同时下载。通过比特征时间稍微高些地增加请求频率,项目将会被从缓存中检索而不是被从原始服务器中获取。因此,内容提供者可以滥用文件的广泛性来获得免费的内容分发服务。

(4)应对策略:

1)为了防止非法内容的检索,可以定义名称审查列表。路由器不能传送列表上的内容。

2)缓存应该被强迫定期重新验证原始内容源的内容。然而,还不清楚缓存怎样区别是从其他缓存得到的响应还是从内容源直接获取的响应。

3)伪造地址攻击可以用启发式算法检测出来。

(5)风险:低。相比较很容易获得相同效果的方法,这个攻击很复杂并且存在应对策略。这个攻击可能需要高的请求频率。

3.4.2 通过降低缓存效率进行DOS攻击

通过修改对缓存请求分布的广泛性,攻击者可以减少缓存效率。如果许多这样的攻击同时发生,增加的带宽需求会导致对网络基础设施或内容源的拒绝服务。

(1)假设:缓存可以减少相当多的带宽。为了节省开销,网络或服务器基础设施设计为以可以使用缓存的方式工作。攻击者可以访问一个或更多的连接到一个缓存的机器(比如僵尸网络)。

(2)攻击:攻击者选择一系列不受欢迎的文件U,并周期性地请求他们来增加他们的受欢迎程度。U的请求频率与真正受欢迎的文件P的请求频率相似。U的大小被选择以致于缓存中观察到的全部的分布广泛性变得相当统一。因为缓存对于保存全部内容并不是足够大,因而缓存变得低效,而且更多的请求不得不向上游转发,这个攻击被称为局部破坏攻击。

(3)影响:缓存的命中率减小,增加了网络链路的负载(ISP的花销),增加了直接从内容源检索的文件数量(内容提供者的花销)。如果基础设施设计为以这样功能的缓存工作,基础设施可能变得拥塞。最终,这可能导致拒绝服务。

(4)应对策略:

1)为最坏的情况,也就是为假定命中率为零的缓存提供基础设施。然而,这可能导致很高的开销,甚至从根本上质疑CCN的可用性。

2)启发式算法可以用来检测局部破坏攻击。

(5)风险:中等。仅仅启发式检测可行。实行攻击需要一个僵尸网络和高的攻击流量,但它是可行的。

3.4.3 通过耗尽路由器的可用内存进行DOS攻击

通过填充路由器的为保存通信状态的缓存,攻击者降低或破坏发送给其他用户的服务。

(1)假设:CCN路由器需要把PIT表保存在内存中,PIT表中包含每个收到和已转发,但没有收到回复的兴趣包。这些条目的缓存是有限的。我们假设攻击者可以访问一个或多个机器,比如僵尸网络。攻击者控制着一个串通的内容源,使其参加到攻击中。

(2)攻击:基本的攻击包含请求很大数量的不同的不存在的名字来填充PIT表。然而,很大部分的兴趣包路由器不能检测到回复。然而,通过勾结内容源,攻击是精确的。内容源生成回复,但仅仅在路由器中的PIT表项即将超时前传送回复。以这种方式,填充PIT表的必须的请求数量才是最小的。路由器仍然会检测到频繁的对串通内容源前缀的访问,因此攻击者可能使用一些不同的前缀来规避检测。特别地,如果攻击者控制僵尸网络,他能够使用每个机器对内容提供服务,这意味着串通内容源的数量将和请求者的数量一样多。

每个等待兴趣包有几百字节大小的名字和附加区域,比如范围。因为攻击者控制着生成的兴趣包,他可以精巧地制作兴趣包来最大化内存消耗。例如,攻击者可以通过选择非常长的名字来加速攻击。

(3)影响:如果PIT表满了,合法客户将被拒绝服务。

(4)应对策略:

1)不要在PIT表中存储全部的请求名字,而使用哈希技术来节省内存以防止攻击者加速攻击。

2)在PIT表头丢掉兴趣包而不是表尾,也就是说,一个新的兴趣包总是被接收,来代替旧的等待兴趣包。这将使通过内容源延迟回复来填充PIT表更加困难。(CCN是不可靠的,因此路由器允许丢失兴趣包。)

3)研究一个机制来检测对少量名字前缀的大量请求包。

4)使用一个数据结构来实现逆向转发,可能与布隆过滤器相似。这个数据结构在正常的条件下存储精确信息,当达到容量限制时缓慢降低洪泛。

5)设计没有PIT表项的无状态的路由器:使用无环拓扑并为兴趣包和数据包增加反向源路由标志域。

(5)风险:中等。攻击的目标是网络的中心组件,因此有很大的影响。然而,它需要僵尸网络和高的攻击流量。

3.4.4 缓存窥探:列出缓存内容,监视对象访问,复制会话

通过像正常用户那样请求数据,并通过检测是否回复包被缓存,攻击者可以从缓存中提取与隐私相关的信息。因此,如果命名方案允许识别属于相同信息交换的条目,克隆整个会话是可能的。

(1)假设:缓存是CCN的核心。在一个典型的网络中,每个执行转发任务的设备都需要配备缓存,无论因特网核心路由器、接入路由器、DSLAM,还是全体网络的路由器。这将意味着有些缓存特别接近端用户,因为有限数量的用户可以访问这些缓存,他们将包含非常具体的内容。我们假定攻击者直接连接到他的受害者的同一个缓存上。

(2)攻击:缓存窥探是一个用来确定缓存内容的技术。为了找出是否一个给定名字的条目被缓存,攻击者向缓存发送对数据项的请求并测量响应时间。攻击者再发送一个请求其他数据项的请求包并确保该数据没有被缓存。比较这两个的响应时间来确定第一个数据包来自哪里(来自被探测的缓存,来自任何中间缓存或者来自内容源)。

另外,找出缓存中内容的信息对攻击者来说可能还有其他的意义。例如,CCN的前缀匹配和兴趣包中的排除标识域允许攻击者在预先不知道名字的情况下,检索缓存的整个内容。

如果攻击者可以找出在会话中用来命名后续数据项的方案,他将能够从缓存中检索并重新整合整个的会话。即使内容被加密,攻击者仍然能够从不安全的辅助渠道找到有价值的信息。

(3)影响:可能的隐私威胁在于从找出两个通信实体延伸到得出会话的内容。

(4)应对策略:

1)对每个可访问的缓存提供的响应使用最小的回复延迟。虽然会延迟合法请求,但仍将节省带宽和当受到攻击时限制隐私泄露。

2)加密动态内容的名字以至于仅仅授权的用户可以在会话中标记数据项。

3)禁止复杂的兴趣包特征,比如排除功能,或随着时间的推移限制其使用。

(5)风险:高。每个用户可以实施攻击并可能获取对大量数据的访问。我们在下章讨论这个攻击,更多的应对策略和更多的细节。

3.5 结论

在这一章,我们显示了CCN和TCP/IP体系结构在网络安全方面的不同。

(1)缓存意味着在网络效率和用户隐私之间的权衡。

(2)更强大的路由器增加了网络的攻击面。

(3)CCN使得识别请求源更加困难。

(4)在CCN上实施拒绝服务攻击比在TCP/IP上更加困难,但仍然是可行的。

(5)路由器的每个请求状态都可以被滥用做拒绝服务攻击。

(6)缓存会以下面的方式被错误使用:

1)攻击者使用缓存作为存储器来使自己的内容可用。

2)缓存的效率可以通过攻击者的拒绝服务攻击被减少。

3)内容可以被任何连接到缓存的攻击者提取,从而危及用户的隐私。

在下一章,我们将详细分析对用户的隐私的基于缓存的攻击。

4. 缓存窥探

在网络体系结构中,通过在缓存中存储请求数据的拷贝,缓存被用来增加效率。后续请求通过在缓存中找到的本地拷贝被满足,而不是从内容源获取内容。效率的获取是双倍的。首先,因为一些请求可以被本地满足,内容源的数据流量被减少了。其次,缓存可以减少缓存内容的响应时间,因为缓存的位置通常比内容源更靠近客户。

然而,缓存引进了在效率和隐私方面基本的权衡。虽然缓存内容增加了系统效率,缓存中内容的呈现会被滥用来侵犯用户的隐私。这种类型的攻击者可能感兴趣的与隐私相关的信息与下面的内容有关:

(1)通信的双方(元信息)。

(2)交换的数据,例如实际的通信内容。

目的是从缓存提取通信痕迹的攻击叫做缓存窥探攻击。在这一章,我们考察三种不同的攻击。

(1)获取缓存内容的拷贝(4.5节)。攻击者对缓存的快照感兴趣,展示了当前正在被缓存的用户请求的对象。通过与一系列兴趣包对象和缓存内容的比较,攻击者能够找出是否缓存用户中的某人访问了一个特殊页面,或者看见了特殊对象。此外,攻击者通过确定被使用者群体使用的协议来准备后续的攻击。

(2)分析对一个给定名字的访问(4.6节)。攻击者检查是否任何缓存的使用者最近访问了一个给定名字的对象。通过定期地重复这些探测,攻击者可以获取更加精确的访问时间信息,甚至推断请求频率。如果一些详细信息可以提供给任何缓存用户,周期性的探测能够使攻击者观察缓存和触发警报。

(3)克隆会话(4.7节)。攻击者使用缓存获取所有在通信参与者两方交换数据的拷贝,并重新组装会话。即使通信被加密,通过辅助渠道,例如消息时间和消息大小也可能泄露与隐私相关的信息。

以前的工作把目标对准本地DNS缓存中的通信痕迹。他们允许远程探测哪个网站正在被客户群体访问,什么应用程序正在被使用,什么更加受欢迎。另一个工作描述了恶意的网站怎样从用户的web浏览器缓存中推断用户的浏览信息。我们在4.1节更加详细地讨论这些工作。

从攻击者的角度,缓存有一些优势。首先,缓存在时域内减轻攻击复杂性:大的缓存在原始会话结束后仍然保存相当长时间的数据。因此,攻击者不需要在受害者的会话进行同时实施攻击。其次,缓存在空间域内分离攻击:攻击者仅仅需要窥探,而不是嗅探能力。换句话,攻击者仅仅需要连接到与受害者相同的缓存,直接访问受害者变得不再需要。

基于缓存的网络体系结构可能增加隐私泄露。当前缓存的部署,比如DNS缓存,web缓存和CDN,是应用程序特有的,并服务大量的用户群体。例如,DNS缓存被典型地部署在提供者内部网络的一个高聚合层,比如在每个城市的基础上。基于缓存的网络体系结构,反过来,自称是应用程序独立的,并在一个聚合的层次结构的低层中部署缓存:CCN建议在每个网络设备中存在缓存,包括路由器和DSLAM。每个缓存比较少的数量的可能用户意味着通过在缓存中找到的信息的泄露更有意义,因为把数据归属到用户有更少的歧义性。此外,CCN的应用程序独立性可能让攻击者访问更广阔范围的信息,包括现在没有被缓存的内容类型。

尽管之前的工作定义了一些特定应用程序的基于缓存的攻击,像我们在4.1节总结的那样。我们不知道任何在例如CCN的网络体系结构中讨论缓存在用户隐私中的一般影响。像我们在上面讨论的,广义上的缓存加剧用户暴露的隐私威胁。我们相信研究在网络体系结构环境中基于缓存的攻击来增强这个问题的知名度,并在体系结构最终部署前找出对策是重要的。当我们以CCN作为研究案例,它的命令和协议现在都是已知的,我们猜测我们在这一章揭示的这个问题也可以应用在其他被提议的网络体系结构。

对这一章描述的攻击,我们假定攻击者的目标是找出邻居的敏感信息。我们把我们对这些攻击的描述建立在于在4.2节概述的系统模型的基础上,遵循着下面攻击者能够执行的方式:

(1)第一,攻击者需要定义敏感信息是什么(4.3节)。这一步的输出是一个兴趣对象名的列表,比如电话号码,网站或者视频的名字。

(2)第二,攻击者必须获得一些拓扑信息,他应该找出大约多少用户连接到和他同样的缓存中,多少用户聚集在下一层等等。一些技术需要攻击者对到层次结构的不同层的缓存的往返时间有预估。如果缓存中的对象被添加到缓存后不再被请求,一些技术也需要这些对象的平均生存时间的知识。得到这些知识的测量算法可以在4.4节找到。

(3)第三,信息必须从缓存中检索。在这点上,攻击者执行上面介绍的三个攻击中的一个。我们在4.5、4.6、4.7节详细描述他们。

描述了这三个攻击之后,我们用一个可能的对策的讨论来总结这一章,这部分在4.8节。

4.1 相关工作

DNS窥探允许从DNS缓存中找出是否可以访问这个缓存的某人最近请求了一个域名,例如访问web页面或者发送邮件,通过查询缓存来确定是否这个关于域名的信息是本地可用的。DNS缓存能够以两种方式被查询:

(1)非递归查询总是被具有本地信息的缓存应答。万一本地没有可用数据,将会返回错误信息。

(2)递归查询被转发到其他缓存,如果必须提供一个有效响应。尽管递归查询总是返回响应,一个攻击者有两种方式找出是否信息最初是在本地缓存:第一,如果数据是从其他地方获取的,响应会更慢。第二,DNS响应总是携带缓存中数据的剩余TTL值。初值被区域的授权DNS服务器定义。如果回复返回的TTL值比初值更低,数据是被远程缓存的可能性就比较大了。

除了在一些场景中从缓存中得到的信息被用作进一步的攻击,作者给出了建议对策。

(1)为了防止远程攻击者可以访问DNS缓存,每一个缓存只允许本地客户的请求。

(2)为了使攻击更加复杂,DNS缓存应该允许非递归查询。

(3)通过对TTL的初值增加随机性,当向缓存中插入条目时,DNS缓存可以增加TTL熵。

为了使速度更优,一些web浏览器对出现在web页面上的链接预先提取域名。Krishnan和Monrose显示了怎样利用在搜索引擎结果页面上发现的DNS名字的预获取来推断搜索中使用的关键字。攻击者可以建立一个以给定关键字保存的域名列表,并对这些域名探测DNS缓存。通过比较授权DNS服务器设置的TTL初值与缓存条目的剩余TTL值,在相同时间探测是否这些域名已被插入缓存是可能的。如果大多数期望的名字是这种情况,攻击者可以下结论有人已经使用了这样的通信关键字。

作者显示了在30分钟的探测延时内,当探测搜索一个给定的关键字,他们能够获得85%的准确率。然而,他们指出,在通常情况下,仅能够推断缓存的整个用户群体,而不是用户个人。比较而言,CCN可能提供了更多的信息:第一,整个的对象名字是可以访问并且可以被发现的,而不仅仅是域名。第二,每个CCN缓存的用户群体比DNS缓存的用户群体更小。

一些工作测量了没有缓存的DNS条目的时间,并用此信息来推断请求频率。他们做了下面的简化假设:

(1)一个条目在缓存中存留的时间是不变的,等于各自的授权名字服务器定义的TTL时间。特别地,被缓存的条目的命中率对条目在缓存中的生存时间没有影响。缓存中没有替换发生。

(2)客户请求是独立的和同等的,以指数方式被分布的,当条目没有被缓存的间隙也是如此。

至于低的受欢迎程度,在缓存窥探期间获得的命中率已经足够好的接近请求频率。随着条目受欢迎程度的增长,客户的缓存命中更可能发生。在这种情况下,请求频率λ能够被计算作为条目驱逐出缓存的时间(假设最后一次请求在不久之前发生)和再次被插入缓存的时间间隙的平均。作者显示每个授权的TTL时间内探测一次缓存是足够的。非递归查询被认为比较好,因为它直接揭示了是否数据被缓存,而没有修改缓存状态。因为泊松过程的和仍然是一个泊松过程,如果每个客户端请求频率是已知的话,客户的数量是可以被计算的。

Felten和Schneider显示了恶意的网站怎样探测客户那边的缓存,比如web浏览器的缓存,来找出是否用户最近访问了另一个不相关的网站。作者讨论了下面的应对策略:

(1)禁用缓存。因为明显的性能代价,他们放弃了这个解决方案。

(2)改变缓存的命中/丢失行为。在尝试隐藏他们的时候,缓存命中会变得更慢,或者变成随机的。然而,作者没有考虑这个可能性:“如果我们使得命中像丢包一样慢,攻击者将会被带上手铐;但是在这种情况下,我们可能也会关闭缓存。”然而,这个陈述似乎忽视了仍然会被带来的带宽节省。

(3)安全隔离。每个域有自己的虚拟缓存,因此一个网站不能探测其他网站的状态。然而,这个对策将会相当大的减少缓存命中率,获得很小的效率提升幅度。

4.2 系统模型

我们使用下面的网络模型来对我们的讨论做假设:

(1)缓存以树状层次安排,其中的叶子相当于DSLAM。所有的用户直接连接到一个叶子缓存。请求被向层次结构的上层路由,邻居缓存之间没有合作。如果缓存没有命中,根缓存将请求转发到对应的内容源。

(2)每个缓存大小有限,使用LRU作为替换策略。

(3)如果缓存命中,内存读的延迟对所有的缓存都相同,不论缓存命中发生在层次结构的哪里。也就是说,所有的缓存在同样的拓扑中实现(或者在主存中或者在磁盘中),但不是两者的结合。

(4)攻击者对最好的可能的已经请求了数据的用户的数量的边界感兴趣,例如,他们将总是将攻击者和受害者共同拥有的第一缓存作为目标。

攻击者使用递归的或者非递归的查询来实现攻击。这个选择与攻击类型正交,依赖于受到攻击的系统使用什么机制。我们通过假定攻击者和受害者直连到相同缓存来简化我们的讨论。

有两种方式发现缓存中存在的对象:

(1)对缓存的非递归查询,像在图4.1(a)中显示的那样,仅仅用本地缓存内容应答。如果数据项没有包含在本地缓存中,则请求超时。

在CCN中,非递归查询通过发送范围域设置为0的兴趣包是可能的。然而,因为安全原因,这个功能可能是无效的。

(2)递归查询(图4.1(b))总是返回查询数据,只要它可以被在系统中的某处发现。攻击者利用定时的辅助渠道来从系统中的存储了这个条目的缓存的响应延迟进行推断。这背后的假定是分布在层次结构的不同层上的缓存响应延迟是显著的不同的,以至于攻击者可以区分出来。

递归查询是CCN的正常行为。因而,对这种类型的攻击研究出应对措施更加困难。

非递归查询不如递归查询更加容易受到入侵。非递归查询的缓存丢失条目后,缓存仍然是没有修改的,然而递归查询将会插入丢失条目。两种方法为了使缓存命中,采用同样的方法:对象在缓存中的生存时间将会增加。这种方法可用于任何查询类型,如果重复查询是必须的,必须采取特殊措施来确保攻击者没有不正确的观察到他自己导致的状态。

一个清晰的非递归查询的优势是结果是精确的。通过递归查询,仍然有可能攻击者做出了错误的猜测,因为响应延迟的各种变化。

如果攻击者不能直接连接到受害者的缓存,他的目标是第一个共同缓存。然而,这个方法使攻击的执行更加困难:攻击者需要更加精确的延迟估计,必须增强算法来考虑多缓存的层次。

4.3 攻击目标

在攻击者开始实际的攻击之前,他必须定义他的目标。特别地,攻击者需要决定谁将是可能的受害者,目标是哪个应用程序或者内容。准备步骤的输出是一个拥有兴趣包名字的列表,可能的敏感内容对象。

当选择受害者时,通常攻击者也可以试着收集关于邻居的聚集信息,而不识别任何个体。例如,他可能对知道是否某个邻居下载一个关于怎样制作一个炸弹的视频感兴趣,或者如果任何人正在寻找关于一个特定疾病的信息。在这种情况下,攻击者自己搜索内容并编制一个他找到的对象名字列表。

或者,攻击者以一个特定邻居为目标,例如,知道特定用户最后连接到了特定网站,他在特定网站上输入了什么内容,或者他什么时候最后接听了一个电话。为了做这些,攻击者需要各自应用程序使用的协议的命名方案的知识。例如,如果应用程序的数据总是承载着前缀/应用程序名/用户名/,那么攻击者将这个前缀添加到列表中。

攻击者找到在缓存中呈现内容的在隐私方面的影响极大地依赖于内容的受欢迎程度。静态的,受欢迎内容,比如最近的音乐视频承载着很少的攻击者可能感兴趣的信息;他有低的信息熵。静态的,但是稀有的内容,比如恐怖分子训练视频泄露了邻居的更多信息,尽管攻击者不太可能把视频归结于下载视频的人。动态的内容,比如个人web浏览器会话或者电话,并不通常在用户之间共享。如果攻击者能够从内容本身获取一些信息(如果内容未加密),或者从辅助渠道(比如名字或大小),那么信息熵可能会最高,因为信息是高度个人化的。

然而,上面描述的案例假定攻击者在攻击之前需要知道感兴趣的名字,那么攻击者获得缓存内容的完整知识就更加可能。这种类型的攻击是最有力的:攻击者应用启发式方法来分析数据是不受约束的。

4.4 拓扑智能

在攻击者开始实际的攻击之前,他必须找出攻击算法需要的缓存拓扑的基本信息:

(1)缓存的延迟可以被用来区分是否攻击者请求的数据项被缓存到本地,或者层次结构中的某处。

(2)LRU缓存的特征时间是对象保存在缓存中的时间,假定它在被第一次请求后再没有被访问。

如在4.2节讨论中的,对LRU缓存的探测可以修改缓存状态。这个度量暗示着平均探测时长,给出了最小的合理的探测间隔。

下面,我们描述了两个算法来测量这些特性。第一次,我们仅考虑叶子缓存,比如,在DSLAM层的缓存。

4.4.1 延迟测量

如果攻击者想要利用定时辅助渠道的延时来把回复数据包归属到最可能交付回复数据包的缓存,那么延迟估计是需要的。在图4.2中描述的算法测量了攻击者叶子缓存的延迟,算法工作在两个阶段:

图4.2 测量第一个CCN缓存的延迟

(1)在测量开始之前,攻击者必须确定一个包含在正在测量的缓存中的任意数据项。或者,他能插入一个数据项到缓存,就像在图4.2中步骤0中显示的那样。

(2)攻击者现在请求数据项,测量发出兴趣包和进来的回复包的时间差异,攻击者能够重复这个步骤n次并计算这个方法和标准偏差来获得一个更好的估计。

两个连续探测之间的延迟应该足够低来确保在此期间数据没有被从缓存中去除。同时,延迟应该足够高以至于可以取得一个代表性样本(关于缓存队列中的背景流量)。

使用这种延迟估计,攻击者可以猜测是否他请求的数据被从本地缓存交付或者从其他地方获取:让d=平均值{d1,d2…,dn}为通过上面的算法测量的第一个缓存的平均延迟,σ标准偏差,drequest请求未知源的延迟,α是一个影响探测变量权重的参数,如果drequest>>d+α·σ,那么可以假定请求被远程缓存响应而不是本地缓存。

4.4.2 缓存生存时间测量

这一部分的目标是测量一个仅被请求了一次的项目在缓存中可以存放多长时间,如图4.3(a)所示。Che等人称这个时间为LRU缓存的特征时间,因为它定义了一个条目为了被保存到缓存中需要有的最小访问频率。拥有比较低的访问频率的条目,比如以比特征时间长的时间间隔请求的条目,将不会在缓存中发现,并必须从层次结构向上向远处追溯那些缓存或者内容源。作者指出,对一个拥有类似Zipf的LRU缓存条目的流行分布和泊松请求到达过程,每个条目的特征时间能够近似于常量,并在所有的条目中都是相同的。

在缓存窥探攻击的环境中,特征时间暗示了一个攻击者在他可以再次使用同样的探测条目前必须等待的最小时间。如果攻击者在特征时间过去之前再次使用这个探测条目,他冒险测量了一个他之前的请求导致的状态。

为了测量缓存对象的生存时间,攻击者使用那些保证只被他自己使用的条目。这能够通过使用串通内容源,或者通过生成其他拥有唯一名字的条目来获得。为了核实一个给定的生存时间猜测,攻击者首先请求一个条目,并把它插入到缓存,一段时间之后,如果条目仍然在缓存中,则核实了这个给定的生存时间。

我们建议的测量算法工作在两个阶段,第一,以指数方式增加的猜测被用来找到缓存生存时间的上界,第二,嵌套间隔技术被用来改善猜测。

具体的算法工作如下:

初始化:设置tmin=0,tmax→∞,i=0。使用t0>0,β>1,0<γ<1,n∈N+为固定值,但是算法中可协调的参数。

找出上界:向缓存插入新条目,在时间ti后请求条目,如果条目不再在缓存中,设置tmax=ti,i=i+1,并跳转到算法的下一步。否则,设置tmin=ti,ti+1=β·ti,i=i+1,重复这一步。这个过程如图4.3(b)所示。

改善估计:向缓存插入新的条目,在时间ti=tmin+γ·(tmax-tmin)后请求条目,如果条目不再在缓存中包含,设置tmax=ti,否则,设置tmin=ti,增加i,重复这一步直到达到预定义迭代次数n,图4.3(c)显示了两次迭代。

开始值t0可以被设置为特征时间的粗略估算,β定义猜测值在初始阶段增加得多快,γ定义哪个间隔点将会被下一次探测。因为算法的目标是找到上界,我们使用γ=0.75。对其他参数,我们使用t0=1s,β=2。迭代次数n可以用实验方法定义。或者,这个停止条件可以用多次迭代的间隔之间的最小改变来替代。

有几种算法改进的方式。第一,可以通过缓存命中后不插入新条目来加速算法,因为LRU的特性,观察命中时间等于插入时间是足够的。第二,通过一些猜测的并行探测,顺序算法可以被更大加速。对一个非常长的特征时间,这可能是有用的。

(a)插入到缓存中的条目的生存周期。插入条目和驱逐条目之间的时间叫做特征时间。

(b)找出特征时间的上界

(c)改善特征时间间隔

图4.3 估算缓存的特征时间

延迟和特征时间估算算法都能够被增强到层次结构的上层目标缓存:如果缓存使用LRU,仅当高层缓存的特征时间比低层缓存的特征时间高时,层次结构是有意义的。在这个假设下,一旦条目从叶子缓存中驱逐出去,一段时间之内,高层缓存中条目仍然可用,因此探测算法以层次结构中的下一个缓存为目标。通过观察响应延迟,不同的缓存可以被区分。我们把这个优化处理作为未来的工作。

4.5 攻击I:列出缓存内容

这个攻击允许攻击者显示什么条目正在被缓存的客户群体请求。攻击者可以以多种方式使用这个信息:

(1)他可以推测用户群体中的某人请求了一个可能敏感的条目。这或者可以通过手动的检查请求对象,或者通过与以前建立的敏感内容列表做比较来获得。例如,这样一个列表包含揭示政治观点或健康状况的页面或者视频。

(2)攻击者可以分析客户使用什么协议来为后续攻击做准备。例如,他可能正在寻找易受辅助渠道攻击的会话,并为会话克隆攻击做准备,这将在4.7节介绍。

CCN定义了一个名字枚举协议,目的是持续的内容存储(仓库),而不是缓存。因为这个原因,这个协议不可能实现在路由器缓存中。下面,我们描述一个替代算法,算法列举了CCN缓存中的内容,通过递归地排除之前看到的名字。

CCN使用前缀匹配,这意味着攻击者不需要猜测全部的条目名字来从缓存中获取响应。此外,CCN兴趣包允许为名字组件指定一个列表(或者布隆过滤器),名字组件可能不在缓存返回的条目中包含。把这两个特征组合起来,这两个特征允许攻击者递归地探测缓存内容:第一,攻击者请求一个任意的条目,然后他成功地发送请求包,请求之前在排除列表上传送的条目。详细算法工作如下:

(1)输入p=/p0/p1/…/pi/,名字空间前缀将被探测,初始化设置E=0,作为排除名字组件的集合。

(2)用p和E发送兴趣包到缓存。如果发生缓存丢失,算法终止。对一个响应数据包,让n=/n0/n1/…/nj为响应的名字,j>=i,p0=n0,p1=n1,…pi=ni。如果j>i,对于任意e∈E:ni+1≠e。换句话说,响应是一个任意的以p作为前缀的缓存条目,E中没有元素作为第i+1个名字组件。攻击者现在设置E=E∪{ni+1},并重复这个步骤。

算法终止后,E包含所有的名字组件,这个组件拥有前缀p,在第i+1层缓存中可用。对一个指定的(或所有的)e∈E,通过重复前缀为p=/p0/p1/…/pi/e/的算法,攻击者可以更远地探测到缓存。例如,为了探测整个缓存,攻击者以p=/开始,在算法各自的实例中,对所有的e∈E,递归地重复算法。(这个算法的一个相似版本以命令ccnls实现,这个命令在CCNx原型中提供。)

这个算法的一个缺点是必须下载数据对象,因此攻击可能会太慢,以至于不能获得一个大的缓存的一致的快照。然而,探测有限的子空间可能被证明是有用的。

4.6 攻击II:探测特定名字

在这部分概述的攻击假定攻击者知道他想要观察的名字。我们首先描述一个算法,探测缓存中一个条目的任意精度的插入和驱逐时间(4.6.1节):周期性地探测缓存能够被用来及时地探测对一个给定条目的可访问性。例如,攻击者可能对一个用户的所有语音通话事件的日志记录,或者一个用户的登录事件,比如登录Facebook感兴趣。此外,这个信息允许攻击者推断观察的条目的请求频率(4.6.2节)。

4.6.1 插入和驱逐时间检测

单一的对缓存的探测请求显示了条目是否被最近缓存。然而,通过单一探测,攻击者仅能窥探到过去最多tc的特征时间:如果条目被最近缓存(或者没有缓存),攻击者仅仅知道在过去的tc时间单位里,至少有一个请求(或者没有请求)。特别地,攻击者不能确切知道一个条目什么时候被加到缓存,什么时候被驱逐。

通过探测至少tc个时间单位,周期性地探测相同的条目存在精确度限制,因为攻击者的探测能够在tc的时间单位里改变缓存状态。在基于磁盘的缓存中,tc可能以小时或天的顺序增长,这将使攻击不现实。此外,测量缓存的特征时间的不确定性可能会很高,这将会有相同的结果。

然而,CCN把大的文件分割成小的编号的块。访问第一个文件块的客户很可能也访问后续的块。相似地,攻击者可能能够识别有差别的但总是被同时请求的条目,比如嵌入web页面的图片。(为了简化,我们假定所有这样的块被精确地以同样的时间请求。)攻击者能够利用这些条目的存在性,通过并行地请求块来增加探测频率并通过希望的探测间隔来转移。

图4.4 三个块的并行探测

让tc为缓存的特征时间,存在测量特征时间的不确定性,tp为攻击者希望的探测间隔。执行攻击所必需的块的数量是 ,图4.4阐明了这个攻击。他让攻击者在tc的精确度的缺少(和探测的时效性,如果至多在tc时间内可以发生一个访问),和必需的攻击流量和块的数量之间做权衡。

对拥有小的tc的缓存,和大数量的块来说,攻击者可以设置tp为一个较小的值来获得对缓存条目插入和驱逐时间的一个精确估计。像我们在下一节显示的那样,这个数据可以被用来推断观察条目的请求频率。

4.6.2 推断访问频率

在4.1节讨论的相关工作提出了算法来推断一个没有被缓存的DNS条目的访问频率。存在DNS和CCN缓存的一些不同,因此这些算法需要被修改:

(1)DNS缓存条目的生存时间总是不变的,然而在LRU缓存中,生存时间依赖于命中数量。

(2)我们不能对一个被缓存的DNS条目的访问数量做任何假设,然而在LRU缓存中,通过缓存的特征时间划分条目的生存时间可以给出一个下界。此外,如果LRU缓存驱逐了一个条目,很清楚这个条目在至少一个特征时间内没有被访问。

(3)推断一个DNS对象从任何缓存命中开始确切的缓存插入时间是可能的,然而在CCN中是不可能的。

因为这些特征,仅当与在之前的部分中所描述的相似的一个并行探测算法能够被执行,这种攻击在CCN中才是可能的。这意味着探测条目的访问频率可能不会太高。特别地,如果访问频率高于tc-1,攻击是不可能的,其中tc是缓存的特征时间。为了克服一个非常低的访问频率,几个测量算法实例可以被并行执行,使用单独的块集合,来在一个合理的时间获得足够数量的例子。

下面,我们假定缓存插入和驱逐时间已经被测量。

图4.5 测量LRU缓存中的请求频率

图4.5显示了在一个LRU缓存中的缓存对象的时间轴。每个对象的缓存实例在tins,i被插入,在tev,i被驱逐,这些是攻击者仅仅已知的时间。

每个请求从请求时间起,延迟了tc的驱逐时间。然而,仅仅从tins,i到tev,i,攻击者不能确切推断在这个时间间隔内多少请求会发生:下界是 ,没有上界。而且,如果对象在两个连续的请求的时间间隔之内被驱逐,攻击者可以推断这个时间间隔:tgap,i=tins,i+1-tev,i+tc。如果存在大数量这样的间隔,攻击者可以像下面这样计算整个的请求频率:λ≈mean(tgap,i)。

在这个讨论中,我们忽视了在确切的相同时间里没有被请求的块的作用和测量插入和驱逐时间可能的不精确性。未来工作应该研究这些怎样影响请求频率估计的精确性。

4.7 攻击III:克隆会话

缓存保存了一个短时期内在用户之间交换的所有内容的一份拷贝。因为缓存不强制执行任何访问控制策略,任何知道数据项名字的用户可以从缓存中获取这份拷贝。

在两个用户之间的数据交换,或者会话,可以被攻击者拷贝或者重新组装,如果他找出属于相同交换的条目的名字,并且可以决定条目在会话中的序列号。例如,Voice-over-CCN原型在打电话过程中的语音数据交换过程中使用命名方案/domain/user/call-id/rtp/sequence-number。一旦攻击者知道特定电话实例的前缀,比如/telefonica/alice/1234/rtp,攻击者可以用一个增长的序列号来请求这些名字,来获得和重新组装声音数据流的一份拷贝。

CCN通过加密实现了访问控制。也就是说,每个人可以获得密文的一份拷贝,但仅仅授权的设备拥有可以解密密文的密钥。然而,即使加密的数据负载也可能通过辅助渠道泄露信息。一个辅助渠道是像条目名字一样的元数据。因为VoCCN没有加密名字和序列号,上面描述的克隆攻击很容易实施。

在文献中,Wright等人描述了怎样为短语集合的出现检查加密的VoIP会话。如果会话用可变比特率的编码解码器和一个可以保存长度的流密码编码,攻击就是可能的。结果是加密的包大小依赖于在抽样时间间隔内的语音输入(音素)。使用包大小起因于编码目标短语发音的双音或者三音,作者扼要描述了Hidden Markov Model来生成一个这个短语的说者独立的模型。当试着用这个模型匹配一个观察到的会话时,他们检测到了这个短语的实例拥有平均50%的准确率和召回率。作为应对策略,作者建议填补这个包到一个恒定的尺寸,这将是一个非常有前途的方法。

VoCCN原型使用恒定大小的数据包。还不清楚是否这个行为来自填补,或来自发送数据消息,仅当足够的数据被积累到流出缓存来填补整个的消息。后者,消息间的延迟辅助渠道将会保持。然而,在这一章中假定的场景中,利用这样的辅助渠道将会非常有挑战性,在这一场景中,消息必须从缓存中提取。原因是从缓存中获取的条目没有显示它什么时候被插入。攻击者必须通过周期地探测实时地找出这个信息。然而,这个精确性需要实施一个成功的辅助渠道攻击,这大约需要毫秒级,还不清楚这样的精确性是否在实际中可以达到。

S.Chen等人描述了一个与SSL或者WPA/WPA2-encrypted web流量相似的攻击,两个协议都使用不填补包的流密码,以至于加密消息在大小上不同。通过比如Ajax这样的技术,web应用程序经常对单个用户输入作响应,比如鼠标点击或者击打键盘。因为这个,用户输入有低的信息熵,攻击者能够枚举所有可能的输入,对每个可能输入,通过应用程序响应数据包的大小进行直接测试,和受害者实际接收到的响应数据包作比较。在比较中可能存在一些歧义性,因为一些消息可能有相同大小。然而,与web应用程序的通信是状态化的,这意味着这个歧义性在会话后面的步骤中可能会被减少:一个应用程序观察到的状态限制了可能的过去状态的集合。作者显示了一个健康的服务怎样泄露医疗条件,一个搜索引擎的关键字,收入范围的纳税申报表格,一个投资应用程序里用户做出的资金分配。作者认为应对措施必须是针对特定应用程序的。作为一个广义的应对策略,填补似乎并不吸引人,因为它可能需要512B的包大小来彻底地为攻击者减少信息熵和效用。同时,应对措施的网络负载将达到几乎33%。

因为还没有建议作为在CCN上的通信协议被用于类似web的应用程序,我们不可能陈述是否这样的实现更容易遭到这种类型的攻击。然而,我们把通过预先识别可能的攻击而用安全方式设计这样的协议看作一个机会。

4.8 应对策略

对这个缓存窥探攻击的应对策略可以分为两类:攻击应该通过技术措施来防止,一旦攻击发生,将可以被检测到,并在真实世界中可以采取应对措施。

防止

应该通过采取下面的措施防止攻击者发现缓存内容:

(1)CCN的内置缓存枚举协议不应该在缓存中实现。

(2)为了防止通过使用前缀匹配和排除功能列出缓存内容,协议规范应该被改变来使数据对象详细说明排除功能可以操作他们名字的哪一部分。以这种方式,内容对象(和更多在CCN顶层的普遍的通信协议)含蓄地定义了名字的哪一部分包含敏感信息,并必须被提前知道。

或者,排除功能可能是禁用的,内容发现的责任应该被转移到协议栈的另一层,在这里内容发现可以被更好地确保。

(3)此外,前缀匹配可能被限制到一个未匹配组件的最大数量,这意味着攻击者必须知道名字的大部分。

(4)如果路由器中的缓存空间是基于每个用户来划分的,攻击者不能容易地获取其他用户检索的数据的信息,因为每个用户仅仅可以访问他们自己的缓存部分。然而,整个的命中率将极大地遭受这样一个设计,实际的方面,比如用户标识和路由器的额外状态使应对措施不太可能被采纳。

为一个给定的名字探测缓存的攻击可能以下面的方式更难实施:

(1)首先,非递归查询应该被接入路由器忽视。

(2)如果CCN在UDP上建立隧道,路由器应该接受仅来自直接邻居的查询。也就是说,用户应该仅能够访问他们自己的接入路由器,而不是中间的或者根路由器。

(3)为了避免基于时间的攻击,CCN接入路由器可以强制执行一个最小的响应延迟。这个延迟应该对在层次结构中一个路由器的往返时间作响应,这个层次结构有足够大量的用户,以至于在这个缓存中检测隐私含义的命中率很低。换句话说,如果攻击者检测到缓存命中,那么至少k个用户已经请求了这个条目。因为CCN接入路由器强制执行对缓存命中的响应存在延迟阈值,攻击者不能改善这个近似值到少于k个用户。(这个响应针对k-匿名的概念。)然而,这种方法仅在内容对象中所有其他的辅助渠道都已经关闭的情况下才工作,例如,内容对象自身不泄露谁可能请求它的信息。这个请求通常很难满足,因为辅助渠道列表可能是开放式的。

强制执行最小的请求延迟以保持带宽节省可以通过缓存获得,但是它在可能的延迟减少和高层隐私方面做权衡。此外,接入路由器中可能会存在另外的状态来维持定时器。需要注意这个路由器上应对措施的实现没有引进新的辅助渠道或者攻击机会。

CCN顶层的应用程序应该阻碍了克隆会话:

(1)面向会话的协议需要序列号来获取会话的下一个条目。如果编号方案对攻击者未知,例如因为名字的序列号部分用密钥加密,重建会话将会更加困难,甚至不太可能。

(2)如果名字与隐私相关的部分不能被加密,命名方案应该至少使攻击者猜测名字变得不可能。例如,依据这个方案,名字可能为/application-prefix/random-number/further-parameters/。如果排除功能和前缀匹配功能不允许随机数构件,攻击者必须从其他源找出随机数来获取数据项。

(3)动态会话的内容交换应该承载一个非常低的终结时间。当前,CCN缓存允许返回老化时间。这个行为应该被禁止来减少攻击者可以执行攻击的时间帧。如果个人数据是动态的,它将被从缓存中很快地驱逐出去,追溯攻击变得更困难,因为攻击者必须与受害者的会话同时执行攻击。

(4)最后,不太可能被共享的内容缓存可以禁用。当个人网站浏览会话和打电话结束以后,这些会话会失去很多价值。如果缓存整个都被禁用了,攻击者将不再能从缓存中获取内容,必须后退到经典的嗅探攻击。为了这个目的,内容对象可能设置一个“不要缓存”位。在所有的处理和转发完成后,路由器应该从缓存中立即驱逐这样的条目。

检测

如果攻击不能被防止,它至少应该被检测到。在这一章中描述的攻击有下面一些典型的特征:

(1)当攻击者正在探测一个已知名字的时候,接入路由器可能周期性地探询相同的接入链路。

(2)相似地,获得缓存的快照包括在短时间内以一个非常高的命中率和对缓存中的响应命名空间的高覆盖来查询大量的条目。

(3)克隆会话导致到达路由器的一系列包被转发到两个目的地(输入内容:从上行链路到两个接入链路,输出内容:从一个接入链路到上行链路和攻击者的接入链路)。

然而,检测需要依赖启发方法。在这个环境中,我们看到误报的一个大的可能性:下载一个大的缓存文件,这个文件中的许多块可能被当作缓存快照攻击被弄错,多播协议,比如多方通讯视频会议看起来与克隆攻击相似。此外,我们认为启发式方法可以通过非常隐秘的攻击被规避,这个攻击仅仅停留在探测阈值以下。我们将具体的探测算法留作未来工作。

4.9 结论

在这部分,我们讨论:

(1)怎样测量缓存拓扑的特征:为下面的攻击做准备,缓存的延迟和特征时间是必需的。

(2)攻击者怎样获得缓存内容的快照。

(3)攻击者怎样模拟对邻居内容的访问。

(4)怎样克隆会话来在其上实施辅助渠道攻击。

我们建议下面的应对措施:

(1)使CCN查询有更少的表现力。

(2)打开隐私和效率之间的权衡:我们建议保持缓存提供的带宽节省,而去限制被强加在人工低延迟边界的延迟获取,来隐藏是哪个缓存响应了查询。

未来的工作应该显示出上面的攻击是可行的,拥有合理的攻击流量需求和算法准确性的调查研究。我们的工作可以被扩展到在体系结构的不同层支持缓存,和把快速RAM和低速磁盘结合起来实现对缓存的支持。最后,我们的应对措施的影响和效率应该被调查研究。

下一章,我们评估测量缓存特征时间的算法。

5. 评估

在这一章,我们总结我们对缓存窥探攻击的评估的第一个结果。在之前章节里讨论的所有类型的攻击都是基于对特征时间tc的至少是近似值的了解。特征时间定义了通信轨迹在缓存中存活多长时间,例如,攻击者能够回头看多远,导致他必须以什么频率探测。因此,作为第一步,我们把我们的评估集中在特征时间上。

在前面的部分,我们假定一个LRU缓存的特征时间是常量。然而,如果工作负载改变,这个假定就不正确了。即使对静态不变的工作负载,仅仅在长期的情况下这个假设才是正确的。评估的目标是来决定特征时间的数量级,并找到它在什么范围变化。一旦特征时间是已知的,我们可以减少攻击者为了监视所有对一个给定内容对象的访问需要发送的流量。此外,我们想要评估测量特征时间的算法多长时间收敛,并且特征时间的估计值多么精确。两个结果放在一起,显示了缓存窥探攻击的可行性。

作为评估场景,我们选择DSLAM作为类似Youtube视频流量的缓存。我们假定攻击者对监视一个特殊视频的所有访问感兴趣。5.2节包含这个场景的具体细节和我们使用的工作负载。

对我们的评估来说,我们决定在模拟环境中实现CCN的一个简化版本。尽管真实世界的试验台可以提供给我们更加现实的结果,得到硬件和实现类似的能够执行CCN的用基于主存的几GB的缓存来以每秒几百MB的速度操作的软件是相当困难的。

在5.3节,在我们讨论完我们的模拟结果之后,我们在5.4节得出实行攻击必要的攻击流量的大小。

这不应该作为一个完整的评估,而应该是一个我们计划在未来工作中研究内容的暗示。实际上,我们打算量化像CCN这样的体系结构利用他的用户所带来的隐私丢失的数量,相比较于其他体系结构,或者CDN。我们将在5.5节详细描述更多的未来工作。

5.1 CCN模拟器

我们的CCN模拟器是用Python语言写的,他模拟下面的组件:

(1)客户请求和接收数据。他们用来生成背景流量或者执行测量算法。

(2)兴趣包和数据块用单独的独立的单元实现。也就是说,前缀匹配和查询没有被实现。客户必须知道将要获取的数据的确切名字,必须知道把哪些块合成整体来形成单独的文件。兴趣包和数据块假定分别为100B和4KB的恒定大小:这相当于一个拥有中等名字长度的兴趣包,和一个在CCNx原型中使用的默认大小的数据块。

(3)链路施加在所有在其上传输的兴趣包和数据块上的传输延迟作为他们尺寸的一个功能。然而,链路并不实现传播延迟或者数据丢失:对我们预想的本地ISP的场景,这些能够被忽略。

(4)路由器拥有有限大小的以LRU为替换策略的缓存。路由器也使用PIT表来聚合兴趣包。每个链路有一个单独的无限的队列,并且所有链路能够同时操作。路由选择没有实现,而以每个兴趣包在默认的上行路径上转发为替代。也就是说,路由器总是形成树状层次。

内容源在路由器层次结构的顶层。我们假设所有的内容可用,因而对每个进来的兴趣包有响应的数据块作响应。

5.2 场景

在这个评估里,我们假设一个DSLAM的场景,这个场景拥有一个对视频内容的CCN的缓存。一个DSLAM场景典型地有大约1000个用户(例如法国的Free)。我们假定在视频服务的拥挤时段,10%的用户在同时看视频:他们以2Mbit/s的速度下载整个视频,并在下载的同时观看视频(或者更长点,如果下载结束早于视频播放),一旦用户观看完第一个视频,他们将开始下载下一个视频。

被客户下载的视频相当于在2007年1月15日获取的类似Youtube科学和技术类别,在文献中有更加详细的分析。痕迹包括视频ID,以秒计的视频长度和浏览量。我们排除了6个时长超过1天的视频,保存了剩下的252249个视频。我们转换每个视频的浏览量为相对的流行度,通过假设384kbit/s的恒定比特率编码来计算文件大小。图5.1(a)显示了每个视频的重对数尺度CCDF浏览量。像文献中注解的那样,直线部分的数量级标志着幂次定律的流行度。图5.1(b)显示了CCDF以秒计的视频长度,是一个简单的对数规模;分布规律出现了一个轻微的尾部。因为每个客户一看完一个旧的视频,就请求一个新的视频,视频长度的分布等于客户请求到达过程的到达时间间隔分布。

(a)视频流行度CCDF

(b)视频长度CCDF

图5.1 在Youtube科学技术分类中视频的流行度和长度

对这个仿真来说,我们假定没有瓶颈,例如DSL链路和DSLAM上行链路有充足的带宽(分别为3Mbit/s和500Mbit/s),链路上没有交叉流量,而仅有视频流量。每个DSL链路可以直接访问到缓存,在各自的链路卡片上有单独的队列。缓存有2500000块的容量(每个块4KB),这导致接近9.5GB的缓存大小。

在仿真期间,所有的100个客户持续不断地下载和观看视频。6个小时填充缓存的预热时间之后,在另外的10个小时中,我们开始测量。我们重复整个的实验5次来计算95%的置信区间。

5.3 评估结果

在测量期间,路由器可以以平均值19.63%用本地缓存满足所有接收到的兴趣包(±0.64点,95%的置信区间)。因此,超过38Mbit/s的数据转移到客户端,仅仅30.54Mbit/s从内容源获取。

图5.2 从缓存中驱逐出的每个对象的命中数量的CCDF

对从缓存中驱逐出的所有数据项,我们研究在他们插入之后,经历了多少读访问,所有项目的89.39%(±0.36点)被驱逐出去而没有任何命中,然而10.61%有至少一次命中,所有被驱逐项目中的7.08%(±0.18点)有确切的一次缓存命中。图5.2为被驱逐项目的一次模拟轨迹绘制了命中率CCDF,其他轨迹高度相似。

图5.3 缓存特征时间的CDF

为了决定缓存的特征时间,我们分析在最后读访问和从缓存中驱逐项目之间的时间跨度的长度。图5.3绘制了在5个模拟运行中,这个时间跨度平均值的CDF和95%的置信区间。理想地,曲线在特征时间点有一个垂直直线的形状。这个实际观察的样本与期望在两方面不同:

(1)曲线为s形状(第三象限和第一象限之间的差别是149s)。这意味着特征时间随着时间不是常量。中间的特征时间是2544s或者42.4分钟。

(2)置信区间显示了甚至(稍微)不同的工作负载的CDF曲线也有差别。例如,在中值附近,95%的置信区间是±94s(中值的3.7%)。

图5.4 特征时间的测量算法过程

我们执行我们的算法来测量特征时间,像在4.4.2节中定义的那样,来找出如果特征时间不是常量,算法将怎样执行。图5.4显示了在一个特殊的模拟运行中,能够在10小时的测量时间内完成的17次迭代。在前6次迭代中,算法使用类似慢开始机制来找到特征时间上界。初始猜测为60s,这个值在每次迭代中翻倍。在第7次迭代时,2.1小时的执行时间之后,找到了上界。从那之后,算法发送的下一次探测是γ=75%的当前已知间隔宽度。这个行为的原因是在缓存窥探攻击中,仅仅上界是感兴趣的。

如图5.4中所示,算法聚集到一个估计特征时间,该特征时间存在于模拟器运行的中位数之上4.4%(也存在于95%的置信区间之外)。我们用特征时间的临时变量来解释这个行为。

要得到一秒的观察,算法需要很长时间来完成。总共6.1小时的执行时间之后,12次迭代完成,8.3小时之后,15次迭代完成,9.8小时之后,17次迭代完成。这是一个具有高特征时间的结果,算法严格顺序地工作。

遵循着这两个观察,测量算法能够以两种方式改进:第一,它可以通过并行步骤加速,例如,通过同时插入许多项目,通过在增加的时间间隔内请求他们来在更少的时间获得更大范围的样本。接近第一个特征时间的猜测也能够加速执行。第二,攻击仅仅需要对特征时间上界的估计。因此,γ值可以被增加得更多来支持上界。此外,在攻击的过程中,如果攻击者的上界值仍然是有效的,攻击者应该持续不断地监听,并且如果需要,增加上界值。

5.4 攻击流量

高特征时间的结果是攻击者为了持续监视给定对象的所有访问需要的攻击流量是非常低的。在理想情况下,例如,常量特征时间tc,攻击者需要每tc+ε秒探测一次,选择ε>0以至于攻击者探测之前他插入的项目没有命中。没有探测一个访问的可能性是

在真实的条件下,情况更加复杂。像在图5.3中看到的那样,特征时间不是常量,它可能随着时间变化。这个事实使得对探测间隔选择变得复杂:假定攻击者已经在时间t1测量了瞬间特征时间tc,在时间t2>>t1发送了探测。在tc时间过去之前,通过每tc的时间探测一次,攻击者可能丢失被从缓存中驱逐出的项目,如果实际的特征时间同时减少(假阴性)。如果探测间隔短于特征时间,因为之前攻击者发送的探测请求,项目可能仍然被缓存(假阳性)。

像我们在4.6.1节中描述的那样,攻击者可以并行地探测几个块来克服特征时间的不精确测量。以同样的方式,并行探测可以被用来容忍特征时间的变化。为了算法的成功,需要有一个特征时间的上界,例如,在一个延迟之后,攻击者可以确保一个请求的条目如果没有更多的请求将会被从缓存中驱逐。此外,攻击者需要相同时间请求的相同文件的许多块。文件的数量依赖于测量特征时间的不精确(或者依赖于特征时间的变化)。

对我们在评估中假定的视频负载,选择的编码相当于每秒96块。对少数量的连续块,块的请求时间几乎相同,并行探测攻击可以被实施。例如,如果攻击者假定特征时间的上界是60分钟,并使用四分之一的视频块作为并行探测,作为结果的探测频率是每15分钟一个请求。从图5.3,我们可以看到没有后续请求的项目60分钟之后没有停留在缓存中,没有项目在最后一次读访问的15分钟内被驱逐。假定这个分布没有明显改变,假阴性率和假阳性率都将是0。如果每个兴趣包以一个最大大小的数据块回复,攻击流量相当于至多4*(100B+4096B)/1h=37.3bit/s。我们认为这个攻击需要的攻击流量很低,以至于对攻击者持续不断地监视大量不同对象的访问是十分可行的。

5.5 结论和未来工作

在这一章,我们已经显示了估计缓存的特征时间是可行的。然而,如果特征时间很高,完成测量需要花费很长时间。未来工作的目标应该是减少测量算法的执行时间。此外,持续不断地监视和更新特征时间的估计机制需要特征时间的临时变量。

使用Youtube视频的场景,我们已经评估了攻击者需要持续不断地监视和检测多少流量,如果100个活动用户中的任何人观看了一个特殊的视频:对最小长度为4/96s的视频,攻击流量至多37.3bit/s,在没有假阳性和假阴性的情况下。

在未来的工作中,我们计划比较不同的体系结构,比如CCN和CDN。当缓存放得更靠近端用户的时候,我们想要量化出现的隐私丢失。例如,对一个CDN结点的命中检测可能被整个城市的任何用户的一个请求引发,然而,在DSLAM缓存中的命中意味着一千个邻居中有一个邻居请求了数据。

6. 结束语

在这篇论文中,我们分析了CCN体系结构在网络安全方面的影响。我们识别了几种与缓存相关的攻击,我们评估如果攻击者想要检测每个客户对一个特殊内容对象的访问,他需要多么经常地探测缓存。我们的工作允许我们得出下面的结论:

(1)CCN提供比现在的网络更好的内容安全,针对内容提供者的拒绝服务攻击更难实施。

(2)尽管CCN改善了因特网的传统安全问题,它的更为先进的体系结构引进了新奇的攻击机会:

1)依据每个通讯的状态和计算量,CCN路由器更加强大。这个特征允许新的针对路由器的拒绝服务攻击。

2)多用途的缓存能够在每个网络设备上部署。普遍存在的缓存危及用户的隐私,因为他们的通讯遗留了(短暂的)痕迹。

(3)缓存窥探攻击使攻击者能够用非常小的攻击流量来监视邻居正在获取的内容对象(在Youtube-DSLAM场景中以37.3bit/s的速率获取)。

(4)缓存意味着在网络效率和通信隐私之间的权衡。

针对缓存窥探的应对策略的研发是有挑战性的,因为他们需要仔细地考虑这个权衡:用户隐私的极好保护将会阻止缓存。作为折衷,我们建议在接入路由器上引进一个人工最小查询延迟。需要更多的研究来决定在效率和隐私方面这个应对策略多么有效。我们相信这个权衡在设计未来的网络体系结构中是一个重要的关心方面。

已经报告了这样的攻击机会,我们计划在未来的工作中量化比如CCN的体系结构利用它的用户使得隐私丢失的数量,并和其他体系结构和CDN做比较。

术语

Botnet:僵尸网络。被一个僵尸主控机控制的一系列妥协机器组成的网络,能够被用作协同攻击。

Characteristic Time:特征时间。对LRU缓存中一个条目的最后一次访问到条目被从缓存中被驱逐出去之间的时间。

Content Distribution Network (CDN):内容分布网络。一个机器的集合,这些机器用来服务位置靠近用户的内容,例如提供对提供者网络的访问。用作负载均衡,加速内容交付。

Denial-of-Service (DoS):一个以使受害者对请求不可用,或者相当大地减慢响应速度为目标的攻击。可能的受害者包括内容提供者,网络链路和路由器。分布式拒绝服务攻击利用在攻击者控制下的许多机器的聚合带宽,例如僵尸网络。

Dictionary Attack:字典攻击。给出一个功能的镜像,功能不会被轻易逆转。预计算一列(有趣的)值和他们的响应镜像(字典)。从这个列表中比较那些观察到的镜像来找出原象。

Forward Interest Base (FIB):转发兴趣包表。是一个为了做出转发决策存在于CCN结点上的数据结构,与路由表相似。见第3页的2.1节。

ISP:因特网服务提供商。在这篇论文中,绝大多数指的是为端用户提供网络访问的提供者。

LRU:最近最少使用缓存替换策略。最长时间没有被请求的条目被从缓存中驱逐出去。

Pending Interest Table (PIT):CCN结点上的数据结构,为保存过去已经被转发的兴趣包的记录。见第3页的2.1节。

Replay attack:重放攻击。攻击者记录一个授权的源发送的数据,在一个之后的时间点再一次发送数据。例如,如果内容源在时间t0以“内容不可用”回复,攻击者可能在t1>>t0时重放攻击,使得受害者相信内容仍然不可用,尽管可能已经不是这个情况了。

RTT:往返时间。

Sniffing:嗅探。监听一个会话,例如在无线链路上捕获所有的流量。

Snooping:窥探。向缓存发送请求来找出内容的信息。

Spoofing:欺骗。提供虚假信息,例如在一个IP包中虚假的发送者地址。

参考文献

[1] B. M. Leiner, V. G. Cerf, D. D. Clark, R. E. Kahn, L.Kleinrock, D. C. Lynch, J. Postel, L. G. Roberts,

and S. Wolff, “A brief history of the Internet,”SIGCOMMComputer Communication Review, vol. 39,

no. 5, pp. 22–31, 2009.

[2] C. Labovitz, S. Iekel-Johnson, D. McPherson, J.Oberheide, and F. Jahanian, “Internet inter-domain

traffic,” in SIGCOMM, S. Kalyanaraman, V. N.Padmanabhan, K. K. Ramakrishnan, R. Shorey, and

G. M. Voelker, Eds. ACM, 2010, pp. 75–86.

[3] Cisco Systems, Inc. (2010, Jun.) Cisco visualnetworking index: Forecast and methodology,

2009–2014. White Paper. [Online]. Available:http://www.cisco.com/en/US/solutions/collateral/

ns341/ns525/ns537/ns705/ns827/white_paper_c11-481360.pdf

[4] J. Rexford and C. Dovrolis, “Future Internetarchitecture: clean-slate versus evolutionary research,”

Communications of the ACM, vol. 53,no. 9, pp. 36–40, 2010.

[5] V. Jacobson, D. K. Smetters, J. D. Thornton, M. F.Plass, N. H. Briggs, and R. L. Braynard, “Networking

named content,” in CoNEXT ’09: Proceedings of the 5thinternational conference on Emerging

networking experiments and technologies. New York,NY, USA: ACM, 2009, pp. 1–12.

[6] Project CCNx. [Online]. Available:http://www.ccnx.org/

[7] V. Jacobson, D. K. Smetters, N. H. Briggs, M. F.Plass, P. Stewart, J. D. Thornton, and R. L. Braynard,

“VoCCN: voice-over content-centric networks,” inReArch’09: Proceedings of the 2009 workshop on

Re-architecting the internet. New York,NY, USA: ACM, 2009, pp. 1–6.

[8] S. Barber. (2010, Jun.) Dynamic-content orientedapplications. CCNx-Dev Mailing List. [Online].

Available: http://www.ccnx.org/pipermail/ccnx-dev/2010-June/000234.html

[9] A. Anand, A. Gupta, A. Akella, S. Seshan, and S.Shenker, “Packet caches on routers: the implications

of universal redundant traffic elimination,” inSIGCOMM,V. Bahl, D. Wetherall, S. Savage, and

I. Stoica, Eds. ACM, 2008, pp. 219–230.

[10] A. Anand, V. Sekar, and A. Akella, “SmartRE: anarchitecture for coordinated network-wide redundancy

elimination,” in SIGCOMM, P. Rodriguez, E. W.Biersack, K. Papagiannaki, and L. Rizzo, Eds.

ACM, 2009, pp. 87–98.

[11] M. Dobrescu, N. Egi, K. J. Argyraki, B.-G. Chun, K.R. Fall, G. Iannaccone, A. Knies, M. Manesh,

and S. Ratnasamy, “RouteBricks: exploiting parallelism toscale software routers,” inSOSP, J. N.

Matthews and T. E. Anderson, Eds. ACM, 2009, pp. 15–28.

[12] U. Lee, I. Rimac, and V. Hilt, “Greening the internetwith content-centric networking,” ine-Energy

’10: Proceedings of the 1st InternationalConference on Energy-Efficient Computing and Networking.

New York, NY, USA: ACM, 2010, pp. 179–182.

[13] D. Smetters and V. Jacobson, “Securing networkcontent,” PARC, Tech. Rep., Oct. 2009.

[14] CCNx mailing lists. [Online]. Available:http://www.ccnx.org/content/community#mailing-lists

[15] L. Deng, Y. Gao, Y. Chen, and A. Kuzmanovic,“Pollution attacks and defenses for Internet caching

systems,” Computer Networks, vol. 52, no. 5, pp.935–956, 2008.

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

发表于

我来说两句

0 条评论
登录 后参与评论

扫码关注云+社区

领取腾讯云代金券