一种缓解命名数据网络中内容毒害攻击的方法与流程

文档序号:15521526发布日期:2018-09-25 19:35阅读:158来源:国知局

本发明属于未来网络体系结构技术领域,涉及一种缓解命名数据网络中内容毒害攻击的方法。



背景技术:

命名数据网络ndn,是最有希望的未来网络体系结构之一,用内容名字标识和路由报文。网络通信由用户发送兴趣报文而启动,指定期望访问的数据内容的名字,网络节点依据内容名字将兴趣报文发往潜在的数据源以寻找匹配的数据报文,内容生成者对数据报文签名,传输数据报文的中间路由器验证签名的合法性,通过这种方式,ndn提供了基于内容的安全。

但是,路由器对一个数据报文签名的验证可能涉及获取多个公钥和验证多个签名,更重要的是,必须理解特定应用的信任语义和密钥撤销等,这给路由器带来了极大的负担。因此,ndn不强制路由器验证其转发或缓存数据报文的签名,但这为内容毒害攻击开启了大门。内容毒害攻击的攻击者将毒害报文注入网络,用毒害报文响应用户的兴趣报文,进而阻止用户访问合法数据内容。此外,在返回用户的途中,毒害报文进一步污染沿途路由器的缓存,可能进一步被用于响应其他用户的请求。虽然用户可以重发兴趣报文并声明排除已收到的毒害报文,避免网络再次返回已收到的毒害报文,但是若重传的兴趣报文不能被转发到合法的数据源,攻击者依然可以发送其他的毒害报文来响应用户重传的兴趣报文。

为了给用户提供合法的数据内容访问,网络应该尽可能地减少攻击者注入毒害报文的可能性;而当内容毒害攻击发生时,为了从内容毒害攻击中恢复,网络一方面需要将毒害报文从缓存中清除,另一方面需要将兴趣报文从其他路径发往合法的数据源。已有的研究工作ikb(interestkeybinding)提出将用户发送的兴趣报文与特定的内容签名密钥绑定以避免用户在未知的情况下获取毒害报文。ikb可以避免用户在未知情况下获取毒害报文,但难以保证合法内容的可达性;且仍然需要路由器验证每个传输和缓存的数据报文,这对路由器来说依然是较大的负担。还有一些研究未涉及如何为用户兴趣报文的转发探索新路径以恢复合法的数据内容访问,用户的兴趣报文可能被继续转发至攻击者进而带回其他的毒害报文;如果让用户对毒害报文的通报发送探测报文以探索兴趣报文的其他转发路径以恢复合法的数据内容访问,开销又太大。



技术实现要素:

发明目的:本发明提供一种缓解命名数据网络中内容毒害攻击的方法,可以减少毒害报文进入ndn网络,在出现内容毒害攻击时,减少网络上毒害报文的传输和缓存并恢复合法数据内容访问,有效降低内容毒害攻击对用户数据内容访问的影响。

技术方案:本发明所述的缓解命名数据网络中内容毒害攻击的方法,包括以下步骤:

(1)基于命名数据网络中的内容名字和发布者公钥转发报文;

(2)多路径重传兴趣报文并针对性地验证缓存或返回的数据报文。

所述步骤(1)包括以下步骤:

(11)内容提供者发布内容可达的路由通告;

(12)内容提供者的接入路由器对路由通告的合法性进行验证;若通过,为该通告生成相应的转发fib表项,记录内容名字的前缀及ppkd,并向路由系统中其他路由器扩散该路由信息;否则,丢弃该路由通告;

(13)内容请求者发送兴趣报文,指定内容的名字及信任的签名者的ppkd;

(14)路由器依据兴趣报文中的名字及ppkd处理兴趣报文,若缓存中存在名字匹配的数据报文,直接返回给用户,转步骤(16),否则核实是否存在名字前缀和ppkd均匹配的pit表项,若存在,将当前兴趣报文到达的接口加入匹配pit表项的到达接口列表后转步骤(16),否则寻找名字前缀和ppkd均匹配的fib表项,选择传输性能最优的下一跳,将兴趣报文向用户指定的内容发布者转发,然后转步骤(15),若在cs、pit和fib表中均找不到匹配表项,兴趣报文被丢弃并结束;

(16)兴趣报文到达内容提供者,内容提供者提供数据报文确保数据报文的keylocator字段填有数据报文签名验证所需的公钥;

(16)路由器核实数据报文keylocator字段的公钥哈希得到的摘要是否与兴趣报文指定的ppkd一致,若一致则进一步向下游转发,否则丢弃;

(17)数据报文返回到用户。

所述步骤(2)包括以下步骤:

(21)内容请求者验证数据报文的签名,若数据报文为毒害报文,重传兴趣报文;

(22)路由器核实重传的兴趣报文是否可以使用缓存的数据报文响应,若缓存中具有内容名字匹配且未被重传兴趣报文排除的数据报文,路由器直接将该缓存的数据报文向重传兴趣报文到达的接口发送,转步骤(25);若本地缓存了被排除的数据报文,对数据报文的签名进行验证,若被排除的数据报文为毒害报文,路由器将该毒害报文从缓存中清除,更新返回该缓存毒害报文的接口的签名验证历史信息,并判断该接口的毒性;

(23)路由器核实pit中是否存在内容名字、ppkd及exclusionfilter均相同的匹配表项,若存在,将重传兴趣报文到达的接口添加到匹配pit表项中兴趣报文到达接口列表,转步骤(25);若不存在,则继续寻找匹配的fib表项;

(24)路由器寻找匹配fib表项,若不存在匹配fib表项,丢弃重传兴趣报文后结束;若存在匹配fib表项,将重传兴趣报文向多个可能的下一跳转发;

(25)重传兴趣报文到达内容发布者或缓存了可响应重传兴趣报文的数据报文的路由器,数据报文原路返回用户,当响应重传兴趣报文的数据报文返回时,路由器核实返回的数据报文是否为被排除的数据报文,若已被用户排除,数据报文直接被丢弃结束;

(26)若数据报文从被标记为“投毒”的接口返回,路由器直接丢弃该报文后结束;

(27)若数据报文从近期返回毒害报文的接口返回,路由器验证数据报文的签名,若依然为毒害报文,路由器丢弃该返回的毒害报文并更新返回该毒害报文的接口的签名验证历史信息,并判断该接口的毒性后结束;

(28)路由器将数据报文用于响应重传的兴趣报文;

(29)数据报文返回到用户。

步骤(22)包括以下步骤:

(221)路由器在验证数据报文的签名之前先核实数据报文keylocator字段提供的公钥哈希得到的摘要是否与兴趣报文指定的ppkd一致,若不一致,无需进一步验证签名,否则,根据公钥验证签名;

(222)用户在发现毒害报文后即立刻发送重传的兴趣报文;

(223)判定接口的毒性:路由器的管理员在配置路由器时设定接口判定为毒性的阈值;若接口在当前时间窗口中作为某个fib表项的下一跳,返回特定名字前缀的毒害报文的数量超过设定阈值,将该接口标记为“投毒”接口;“投毒”接口会被禁用一段时间直到其恢复正常的数据转发。

有益效果:与现有技术相比,本发明的有益效果为:1、一方面通过基于名字和发布者公钥的报文转发来减少攻击者注入毒害报文的可能性;另一方面对用户重发的兴趣报文进行多路径转发,在为当前用户获取合法数据报文的同时,扮演多路径探测的作用,清除网络中缓存的毒害报文并为后续兴趣报文的转发探索新的合法数据内容访问;将主动防护和响应式防御相结合,较好地缓解内容毒害攻击,为用户提供合法的数据内容访问;2、路由器仅当数据报文毒性可疑时,即数据报文被用户发送的兴趣报文排除或数据报文到达的接口当前时间窗口内曾经返回毒害报文时,才验证数据报文的签名,所需开销较小。

附图说明

图1为本发明流程图;

图2为ndn路由器对兴趣报文的处理流程图;

图3为ndn路由器对数据报文的处理流程图。

具体实施方式

下面结合附图对本发明作进一步详细描述。

cs表记录缓存数据内容报文的相关信息,每个表项主要包括四个字段的信息:内容名字、公钥摘要ppkd(publisherpublickeydigest)、数据内容报文本身和报文进入路由器的接口。其中内容名字是查询cs表时所使用的关键字,ppkd进一步用于核实缓存数据报文是否为兴趣报文发送者指定的生成者所产生,报文进入路由器的接口的存储便于将缓存数据报文的签名验证结果在相应的接口进行统计,用于后续判定接口的“毒性”。

pit表记录已向上游转发但尚未有数据报文返回的兴趣报文的相关信息,每个表项除了记录兴趣报文的内容名字、nonce字段值列表、兴趣报文到达的接口列表和兴趣报文转发出去的接口列表信息,还需额外记录兴趣报文的ppkd、exclusionfilter字段信息。为了支持基于内容名字和发布者公钥的报文转发,pit表项记录兴趣报文指定的发布者公钥摘要ppkd信息,当与pit表项内容名字匹配的数据报文返回时,路由器还需要核实数据报文的签名公钥的哈希摘要是否与pit表项记录的ppkd匹配;另外,exclusionfilter字段的值可能为空,仅在用户发送的兴趣报文指定过滤数据报文时使用,尤其是用户用于过滤毒害报文时。返回的数据报文除了要具备和pit表项的内容名字、ppkd匹配的信息,还不能是exclusionfilter过滤的数据报文,才可以用于响应pit表项记录的兴趣报文。也因此,在考虑兴趣报文的聚合时,必须具有相同内容名字、ppkd和exclusionfilter字段信息的兴趣报文(但nonce值不同)才可以聚合。

fib表存储如何转发兴趣报文的决策信息,每个表项除了记录名字前缀、超时时间和下一跳接口列表信息外,还需要记录签名数据内容报文的签名者公钥摘要ppkd以及每个下一跳接口的数据内容传输性能相关信息。为了支持基于内容名字和发布者公钥的报文转发,fib表项记录签名数据内容报文的签名者公钥摘要ppkd,在转发兴趣报文时,仅当fib表项记录的内容名字和ppkd与兴趣报文中所指定的内容名字和ppkd相匹配时,才可以依据该fib表项转发兴趣报文。此外,为了便于判定下一跳接口是否为“投毒”接口,fib表项记录的每个下一跳接口传输数据内容的性能信息还需要包含下一跳接口在当前时间窗口中返回毒害报文的数量。当一个下一跳接口在当前时间窗口中返回的毒害报文的数量超过设定阈值时,该接口被标记为“投毒”接口,在后续转发兴趣报文时,“投毒”接口为优先级最低的下一跳接口,路由器在有其他可选接口时,避免使用“投毒”接口转发兴趣报文。

图1为本发明的流程图,本发明主要包括两部分,第一部分是基于内容名字和发布者公钥转发报文(name-keybasedforwarding)以减少毒害报文进入网络,包括以下步骤:

(1)数据内容发布者发布内容可达性的路由通告,声明内容的名字前缀及签名内容的公钥摘要(ppkd:publisherpublickeydigest),并出示准予发布该名字前缀下内容的证明如相关签名或证书以便路由器验证路由通告的合法性。

(2)数据内容发布者的接入路由器对数据发布者发布该路由通告的合法性进行验证,若通过,接入路由器为该通告生成相应的转发fib表项,记录内容名字的前缀及ppkd,并向路由系统中其他路由器扩散该路由信息,否则,丢弃该路由通告。

路由通告合法性验证的方法为:

ndn需要维护一个全球的权威机构kns(keynameservice),与当前的dns类似,用于提供名字前缀及与其对应的合法签名公钥;路由器在设置时由管理员配备kns的公钥,在需要获取kns的服务时,发送相应名字的兴趣报文并在其中指定kns的ppkd;若数据内容发布者即为数据内容生成者,其路由通告签名所使用的密钥与后续发布内容签名所使用的密钥相同,路由通告合法性的验证即验证所声明数据内容生成者的合法性,需要从kns核实名字前缀与其对应合法签名公钥;若数据内容生成者授权其他发布者发布内容,那么数据内容生成者需要向授权的发布者提供证书,发布者的接入路由器先进行授权证书的验证,然后再验证所声明数据内容生成者的合法性;通过接入路由器对数据内容发布者发布路由通告的合法性验证,可以及时阻止非法的数据内容发布,避免名字前缀劫持攻击,确保路由系统所提供数据源的合法性。

(3)用户在发送数据内容访问请求的兴趣报文之前,除了需要知道内容的名字外,还需要获取和验证数据内容生成者的公钥;发送兴趣报文的应用程序在设置时由管理员配备kns的公钥,用户在发送数据内容访问请求的兴趣报文之前,向kns请求相应内容名字前缀的合法签名公钥后再发送数据内容请求的兴趣报文,指定内容的名字及信任的签名者的ppkd。

(4)路由器依据兴趣报文中的名字及ppkd处理兴趣报文,若缓存中存在名字和ppkd均匹配的数据报文,直接返回给用户后转步骤(6),否则核实是否存在名字前缀和ppkd均匹配的pit表项,若存在,将当前兴趣报文到达的接口加入匹配pit表项的到达接口列表后转步骤(6),否则寻找名字前缀和ppkd均匹配的fib表项,选择传输性能最优的下一跳,将兴趣报文向用户指定的内容发布者转发,然后转步骤(5),若在cs、pit和fib中均找不到匹配表项,兴趣报文被丢弃并结束;

(5)兴趣报文到达内容发布者,内容发布者准备匹配的数据报文响应兴趣报文,确保数据报文的keylocator字段填有数据报文签名验证所需的公钥。

(6)当匹配的数据报文返回时,为了减少签名验证的开销,路由器并不验证数据报文的签名,仅核实数据报文keylocator字段的公钥哈希得到的摘要是否与兴趣报文指定的ppkd一致,若一致则进一步向下游转发,否则丢弃。

(7)数据报文返回到用户。

路由系统对路由通告合法性的验证及路由器基于内容名字和发布者公钥转发报文一起,使得兴趣报文向合法的数据源转发,同时增加攻击者注入毒害报文的难度,但基于名字和发布者公钥的报文转发不能消除路径上的内容毒害攻击;具体说,即使将兴趣报文向用户指定的内容发布者转发,路径上的路由器可能被攻击者控制,使用毒害报文响应用户的请求。

第二部分是基于多路径转发的带内探测,即若兴趣报文在向合法数据源转发的路径上被毒害报文响应,用户重发兴趣报文并声明网络不能用刚收到的毒害报文响应重传的兴趣报文,路由器多路径转发重传的兴趣报文并针对性地验证缓存或返回的数据报文;该多路径转发扮演着带内探测报文的作用,一方面清除网络中缓存的毒害报文,另一方面探索兴趣报文转发的新路径以恢复后续合法的数据内容访问;在这个恢复的过程中,有状态的转发平面扮演着重要的作用,记录fib表项的每个下一跳在一个时间窗口中返回数据报文签名验证结果的历史信息,路由器在缓存数据报文时同时记录报文返回的接口,后续缓存数据报文的签名验证的结果则可以在相应接口的签名验证结果历史中反映;基于多路径重的带内探测具体包括以下步骤:

(1)用户验证接收到的数据报文的签名,若发现数据报文为毒害报文,用户重发兴趣报文,并将兴趣报文的exclusionfilter字段设置为接收到的毒害报文的sha256摘要。本专利将此类exclusionfilter字段设置为数据报文sha256摘要的兴趣报文称为重传兴趣报文。

用户验证数据报文签名所需的一切信息,包括信任锚、公钥等在用户的应用中已配备好;ndn数据内容报文名字的最后一个字段隐含为报文的sha256摘要,因此在兴趣报文的exclusionfilter字段指定毒害报文的sha256摘要可以避免内容发布者或中间路由器使用指定的毒害报文响应兴趣报文。

(2)当接收到上述重传兴趣报文时,路由器核实该重传兴趣报文是否可以使用缓存的数据报文响应,若本地缓存了内容名字、ppkd均匹配且未被重传兴趣报文排除的数据报文,路由器直接将该缓存的数据报文向重传兴趣报文到达的接口发送,转步骤(5),若本地缓存了被排除的数据报文,对数据报文的签名进行验证,若被排除的数据报文为毒害报文,路由器将该毒害报文从缓存中清除,更新返回该缓存毒害报文的接口的签名验证历史信息,并判断该接口的毒性。

接口毒性的判定方法为:

a、路由器的管理员在配置路由器时设定接口判定为毒性的阈值;

b、若接口在当前时间窗口中作为某个fib表项的下一跳,返回特定名字前缀的毒害报文的数量超过设定阈值,将该接口标记为“投毒”接口;

c、在后续转发匹配该fib表项的兴趣报文时,如果有其他的选择,“投毒”接口会被禁用一段时间直到其恢复正常的数据转发;

d、路由器的转发平面周期性地向每个fib表项的每个下一跳发送探测兴趣报文,探测各接口传输内容的性能以便转发兴趣报文时选择传输性能最优的接口,对于被判定为“投毒”的接口,转发平面额外的验证返回报文的签名,若持续返回合法的数据报文,“投毒”接口的毒性被解除,同时该接口在当前时间窗口内返回毒害报文的记录清零,在后续转发兴趣报文时可以恢复使用。

(3)路由器核实pit中是否存在内容名字、ppkd及exclusionfilter均相同的匹配表项,若存在,将重传兴趣报文到达的接口添加到匹配pit表项中兴趣报文到达接口列表,转步骤(5)。

(4)路由器寻找匹配fib表项,若不存在匹配fib表项,丢弃重传兴趣报文后结束,若存在匹配fib表项,将重传兴趣报文尽可能地向多个可能的下一跳转发。

(5)重传兴趣报文到达内容发布者或缓存了可响应重传兴趣报文的数据报文的路由器,数据报文原路返回用户,当响应重传兴趣报文的数据报文返回时,路由器核实返回的数据报文是否为被排除的数据报文,若已被用户排除,数据报文直接被丢弃结束。

(6)若数据报文从被标记为“投毒”的接口返回,路由器直接丢弃该报文后结束。

(7)若数据报文从近期返回毒害报文的接口返回,路由器验证数据报文的签名,若依然为毒害报文,路由器丢弃该返回的毒害报文并更新返回该毒害报文的接口的签名验证历史信息,并判断该接口的毒性后结束。

(8)路由器将数据报文用于响应重传的兴趣报文。

(9)数据报文返回到用户。

图2为ndn路由器对兴趣报文的处理流程图,本发明将使用exclusionfilter过滤数据报文的兴趣报文称为重传兴趣报文。当兴趣报文到达时,路由器首先查询cs表,核实是否存在缓存的数据报文,若存在内容名字和ppkd匹配的缓存数据报文,缓存数据报文的使用取决于兴趣报文是否为重传兴趣报文。若兴趣报文并非用户重传或缓存数据报文未被重传的兴趣报文过滤,该缓存的数据报文直接用于响应重传的兴趣报文;若缓存的数据报文被重传的兴趣报文指定为过滤的数据报文,路由器对缓存数据报文的签名进行验证,判定缓存数据报文的毒性;若缓存数据报文为毒害报文,路由器将该毒害报文从缓存中清除,更新相应fib表项中返回该毒害报文的接口在当前时间窗口中返回毒害报文的数量,并判断该数量是否超过设定阈值,若是,该接口被判定为“投毒”接口。若在cs中未找到与兴趣报文匹配的数据报文或缓存的数据报文被重传的兴趣报文排除,路由器在pit表中查询是否有与兴趣报文匹配的表项;兴趣报文与pit表项的匹配需要两者的内容名字、ppkd和exclusionfilter这三个字段的值完全相同;若找到匹配的pit表项且两者nonce字段值相同,当前收到的兴趣报文为重复收到的兴趣报文,路由器直接丢弃该兴趣报文后结束对该报文的处理;若找到匹配的pit表项且两者nonce字段值不同,已经有其他用户发送的相同兴趣报文向上游转发以请求响应的数据报文,当前的兴趣报文可以被聚合,将其进入路由器的接口添加到匹配pit表项的兴趣报文到达的接口列表中即可。若在pit表中未找到匹配的表项,路由器在fib表中查找与兴趣报文匹配的表项;兴趣报文与fib表项的匹配首先需要两者ppkd一致,然后两者名字匹配符合最长前缀匹配,即fib表项的名字前缀是兴趣报文名字的前缀;若找到与兴趣报文匹配的fib表项,路由器将兴趣报文向fib表项指定的下一跳转发:若匹配fib表项仅包含唯一下一跳(非兴趣报文到达的接口),不管该下一跳是否被标记为“投毒”接口,路由器均将兴趣报文向该唯一下一跳转发;若匹配fib表项包含除兴趣报文到达的接口外的多个可用于转发兴趣报文的下一跳,兴趣报文的转发进一步取决于其是否为重传兴趣报文,若为重传兴趣报文,路由器将重传兴趣报文向指定的(除被标记为“投毒”的接口之外的)多个下一跳转发,否则将兴趣报文向具有历史最优传输性能的下一跳转发。若未找到与兴趣报文匹配的fib表项或匹配的fib表项包含的唯一下一跳为兴趣报文到达的接口,路由器不具备如何转发该兴趣报文的信息,丢弃该兴趣报文。

图3为ndn路由器对数据报文的处理流程图,路由器首先查询pit表,核实是否存在内容名字及ppkd匹配的pit表项,该匹配需要数据报文的内容名字以pit表项的内容名字字段的值为前缀,需要数据报文的keylocator字段存储的签名公钥的摘要与pit表项所记录的ppkd一致,即数据报文的keylocator字段存储的签名公钥哈希之后与pit表项ppkd字段的值进行比较后相等,此外数据报文不能被pit表项记录的兴趣报文排除。若未找到匹配pit表项,数据报文直接被丢弃后结束该数据报文的处理,否则查看匹配的pit表项所记录的兴趣报文是否有排除数据报文,若没有,路由器按照缓存策略存储数据报文,然后在将数据报文向pit表项记录的兴趣报文到达的接口原路返回给请求者后结束该数据报文的处理;否则,该数据报文响应的是有排除数据报文的兴趣报文,路由器查看数据报文到达的接口是否被标记为“投毒”接口;若来自“投毒”接口,路由器丢弃数据报文后即完成数据报文的处理;若数据报文到达的接口并非“投毒”接口,路由器进一步核实该接口当前时间窗口内是否有返回毒害报文;若该接口当前时间窗口内没有返回毒害报文的记录,路由器按照缓存策略存储数据报文,然后将数据报文向pit表项记录的兴趣报文到达的接口原路返回给请求者后结束;若该接口当前时间窗口内有返回毒害报文的记录,路由器验证数据报文的签名;若数据报文通过签名验证,路由器按照缓存策略存储数据报文并将其返回给用户;若数据报文被验证为毒害报文,路由器更新数据报文到达接口当前时间窗口内返回毒害报文的统计信息,并进一步核实该接口当前时间窗口内返回毒害报文的数量是否超过设定的阈值;若超过设定阈值,该接口被标记为“投毒”接口;最终,被核实为毒害报文的数据报文被路由器丢弃。

以上所述仅是本发明的部分实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和等同替换,这些对本发明权利要求进行改进和等同替换后的技术方案,均落入本发明的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1