一种基于目录代理的命名数据网络反名称过滤方法与流程

文档序号:18267509发布日期:2019-07-27 09:18阅读:164来源:国知局
一种基于目录代理的命名数据网络反名称过滤方法与流程

本发明涉及数据命名网络(ndn:nameddatanetworking),具体设计一种基于目录代理的命名数据网络反名称过滤方法。



背景技术:

随着互联网技术的发展,互联网应用范围和规模已经远远超出了设计初衷,应用主体已经转向文字信息和多媒体音视频等内容资源的获取,内容分发的需求与日俱增,逐渐成为当今互联网的焦点。现有tcp/ip架构采用面向主机的传输方式,网络传输冗余较大、内容分发效率低下,在移动性和安全性等方面也存在着诸多不足。虽然已出现p2p和cdn(contentdeliverynetwork)等改进性技术,但仍无法满足21世纪以数据分发为主体的互联网业务需求。应对上述挑战,多种以内容为中心的未来互联网体系架构相继提出,命名数据网络(nameddatanetworking,ndn)因为其设计理念先进、方案切实可行,受到学术界和产业界的高度关注,成为当前网络领域的重要研究方向之一。

ndn采用面向内容的设计架构,不同于传统互联网以主机为网络的中心,ndn只关注内容本身,而非内容的存储位置。通过唯一标识的内容名字构建命名路由,并利用网内分布式缓存加速内容分发,ndn有效降低了网络传输冗余、提高了内容分发效率。但是,ndn在带来网络性能改善的同时,也带来了潜在的安全风险。在ndn中,内容以分层次、含语义的名称进行标识,虽然这一设计便于兴趣包在网内路由器处查找路由表,却也带来了名称被攻击者过滤的风险。攻击者只需要在网内任意路由器处维持一个黑名单实施名称过滤攻击,就可以根据兴趣包所携带的内容名称将通过该路由器的所有相关兴趣包过滤掉。因此,在非安全ndn应用场景下,迫切需要设计一个有效的反名称过滤方法,来保障ndn的安全性。

针对现有ndn中的名称过滤攻击,国内外研究人员从名称的隐匿性方面提出了多种反名称过滤方法。这些反名称过滤方法主要分为不基于代理和基于代理两类。

不基于代理的方法:arianfar等人首先提出了基于隐写技术模糊内容名称的机制以防止名称过滤攻击(),内容提供者向用户发送随机文件,用户将待发送兴趣包和随机文件按约定函数分块混合,来隐藏兴趣包内容。分块混合的兴趣包名称是每一混合分块哈希值的哈希值。虽然这一机制可以隐藏请求内容,但是以一串无语义的哈希值作为兴趣包名称,导致兴趣包难以路由(路由表既不可能预配置这类条目,也难以动态学习发现),而且对于兴趣包的分片和重构会带来巨大的计算开销。

基于代理的方法:在基于代理的反名称过滤方法中,用户对内容名称或者兴趣包进行加密计算,加密的兴趣包发送到网络中后由网络中的特定匿名代理识别。steven等人提出基于tor的洋葱路由机制,通过设置两个代理匿名路由器(一个接入代理,一个出口代理),层层加密兴趣包来实现名称的隐私保护,并将返回的内容也层层加密。然而,对于andana而言,多层加密导致返回的内容不具备可复用性,完全破坏了ndn的缓存特性。tourani等提出了基于霍夫曼编码的轻量级反名称过滤框架设计。每个用户和信任的代理之间共享一份独特的霍夫曼编码表,用户将内容名进行部分编码(仅对后缀编码),以减少编解码的计算开销,但是由于编码表的独立唯一,同样造成内容将无法在网内得到复用。

综上所述,现有研究者已提出若干方案,部分解决了ndn中的名称过滤攻击,但现有各方案在兴趣包可路由性和内容可复用性上无法做到很好的权衡,或者在规避名称过滤攻击的同时无法保证兴趣包的可路由性(名称丧失语义特征),或者在规避名称过滤攻击的同时无法保证内容的可复用性(内容只能被唯一用户所使用,无法利用网内缓存)。鉴于此,设计一种同时兼顾兴趣包可路由性与内容可复用性的ndn反名称过滤方法,是当前ndn领域的研究难点,而本发明针对该问题,提出基于目录代理的广播加密反名称过滤方法,很好地解决了这一难题。



技术实现要素:

为了解决现有ndn中存在的名称过滤攻击的问题,本发明提出了一种基于目录代理的命名数据网络反名称过滤方法。该技术方案实现了名称过滤攻击的良好防御,既保证了ndn网内缓存的利用率,又节省了用户的请求时延。

为了实现上述发明目的,本发明提出了以下技术方案,一种基于目录代理的命名数据网络反名称过滤方法,包括以下步骤:

s1初始化:在网内设置一个目录代理(服务器),将被网络过滤的真实名称一一映射成伪装名称,发布一个包括真实名称与伪装名称的目录文件,目录文件每经过时间间隔t动态更新一次;目录代理随机选择随机数,得到目录代理的广播加密公钥pk和主密钥mk;

s2用户注册:用户i向目录代理注册,目录代理存有该用户的用户名uni、密码passi,并将用户i加入广播组s,生成用户i的广播加密私钥dki分发给用户;

s3内容请求:用户以兴趣包签名方式向目录代理提出目录文件查询请求,根据目录代理返回的目录文件,查询获得目录代理对真实名称所提供的伪装名称,进而根据伪装名称,产生伪装名称兴趣包发送给目录代理,由目录代理翻译成真实内容请求;最终目录代理替用户取回请求的内容文件并以伪装名称作为内容文件的名称转发给用户。

进一步地,上述步骤s1初始化阶段包括以下内容:

s1.1:在网内设置一个目录代理(服务器),该目录代理维护一个不被过滤的命名空间,其根命名空间用“\<anonymizer_domain>”加以表示;目录代理会基于该根命名空间,将被网络过滤的真实名称一一映射成伪装名称,发布一个包括真实名称与伪装名称的目录文件,目录文件每经过时间间隔t动态更新一次;目录文件中包括具有n个可访问的真实名称,且第k个时段提供的第n个真实名称定义为list(n,k),1≤n≤n;每个真实名称都有相对应的动态伪装名称,现将第n个真实名称在时段k的伪装名称定义为a_list(n,k);

s1.2:目录代理随机选择随机数a,b∈zq、γ∈g1,计算ν=e(γ,g),得到目录代理的广播加密公钥pk={g1,g2,e;ν}和主密钥mk={a,b,γ};其中,g1和g2分别是阶为素数q的加法循环群和乘法循环群;g是g1的一个生成元;e:g1×g1→g2是一个双线性映射;zq为包括{0,1,2,…,q-1}的自然数集合。

进一步地,上述步骤s2用户注册阶段具体过程为:目录代理随机选择随机数xi∈zq,结合目录代理的主密钥mk={a,b,γ}计算则用户i广播加密私钥为dki={ki1,ki2},用户i广播加密公钥为labi={xi,gi}。

进一步地,上述步骤s3内容请求阶段包括以下内容:

s3.1:用户i以目录代理的根命名空间为前缀,附加上用户名uni作为后缀,构成兴趣包的名字“\<anonymizer_domain>\uni”;同时,生成兴趣包签名signi附加在兴趣包里,输出兴趣包interest(\<anonymizer_domain>\uni)发送;

s3.2:

目录代理获得兴趣包interest(\<anonymizer_domain>\uni)后,对签名signi进行校验,校验通过后,确认i为合法用户组s中的一员;随后目录代理随机选择随机数k∈zq,结合目录代理的广播加密公钥pk={g1,g2,e;ν},计算c0=kg、得到广播头hdr={c0,c1}和会话密钥k=vk,并使用会话密钥k加密目录文件;最后将加密的目录文件data(i,1)和广播头hdr一起发送给用户i;其中,ν=e(γ,g),γ∈g1,g是g1的一个生成元;g1和g2分别是阶为素数q的加法循环群和乘法循环群;e:g1×g1→g2是一个双线性映射;zq为包括{0,1,2,…,q-1}的自然数集合;

s3.3:用户i获得目录文件data(i,1)后,输入自身的广播加密私钥dki和接收到的广播头hdr,计算d1=ki2、(其中,s为合法用户组),获得会话密钥k=k′解密目录文件,读取目录内容,选择想请求的第n个真实名称在时段k的伪装名称a_list(n,k)作为兴趣包的名称后缀,构建伪装名称兴趣包interest(\<anonymizer_domain>\a_list(n,k))发给目录代理;由于目录文件中的伪装名称对合法用户组s内所有用户都是公开一致的,如果出现多个用户请求该内容,伪装名称兴趣包interest(\<anonymizer_domain>\a_list(n,k))可以在网内命中;如果网内未命中,目录代理收到伪装名称兴趣包后,将伪装名称翻译成真实名称并取回真实内容,用广播加密会话密钥k加密真实内容,返回给用户i;其中,aggregate函数定义为:由x=[x1,x2,…,xr]、p=[b1,b2,…,br],将作为输入,计算的函数记为aggregate函数。

进一步地,本发明对命名数据网络的原有兴趣包结构进行修改,新增一个字段存储用于用户身份验证的兴趣包签名,同时在用户注册阶段,以兴趣包签名方式向目录服务器发送待验证的用户名以及密码信息;兴趣包签名计算规则为signi=hmac(uni,passi,time),其中hmac()为加密哈希函数,uni为用户名,passi为用户密码,time为当前时间戳。

目录代理收到兴趣包interest(\<anonymizer_domain>\uni)后,从内容名中提取用户名uni,在数据库中检索出密码passi,再根据接收时间time对签名signi进行校验,校验成功则发送给目录文件给该用户,否则拒绝用户的请求。

进一步地,本发明中的用户用于规避名称过滤攻击所采用的伪装名称,来自于目录代理发布的目录文件。目录文件中包括真实名称与伪装名称一一对应的列表,用户可根据目标内容的真实名称list(n,k),检索出对应的伪装名称a_list(n,k),进而生成第二次请求用的伪装名称兴趣包。同样,当目录代理收到用户的伪装名称兴趣包时,可根据伪装名称翻译成目标内容的真实名称,并取回真实内容。

本发明具有以下有益效果:本发明针对ndn网内被劫持路由器的名称过滤攻击,通过在网内设置目录代理,将被网络过滤的真实名称一一映射成伪装名称,并存入定期更新的目录文件。用户通过兴趣包签名方式向目录代理查询目录文件,并根据目录代理提供的伪装名称构成兴趣包向目录代理发送请求,目录代理通过翻译用户所请求的伪装名称得到所对应的真实名称,代替用户取回真实内容,并以广播加密的方式,返回用户真实所需内容。

本发明中首先实现了名称过滤攻击的良好防御,在此基础上,采用的目录文件查找方法,避免了对兴趣包名称或者整个兴趣包进行加密。采用的伪装名称依然具备分层特征和语义特征,保证了良好的可路由特性,伪装名称兴趣包可以与普通兴趣包一样在网内路由器处正常查找路由表,被路由处理。而且,在目录有效期内,同一广播组的不同用户可以使用相同的伪装名称向目录进行内容请求,返回的内容文件具有高度的可复用性,如果内容存在于网内缓存中,那么用户可以直接从网络中获取到所需的内容,这一设计既保证了ndn网内缓存的利用率,又节省了用户的请求时延。

附图说明

图1为本发明的注册交互时序图。

图2为本发明的内容获取交互时序图。

图3为本发明兴趣包格式示意图。

图4为本发明真实名称与伪装名称对应列表关系图。

具体实施方式

下面结合附图对本发明的技术方案做进一步详细说明。

本发明方案分三个步骤进行:

s1初始化:在网内设置一个目录代理(服务器),将被网络过滤的真实名称一一映射成伪装名称,发布一个包括真实名称与伪装名称的目录文件,目录文件每经过时间间隔t动态更新一次;目录代理随机选择随机数,得到目录代理的广播加密公钥pk和主密钥mk;

s2用户注册:用户i向目录代理注册,目录代理存有该用户的用户名uni、密码passi,并将用户i加入广播组s,生成用户i的广播加密私钥dki分发给用户;

s3内容请求:用户以兴趣包签名方式向目录代理提出目录文件查询请求,根据目录代理返回的目录文件,查询获得目录代理对真实名称所提供的伪装名称,进而根据伪装名称,产生伪装名称兴趣包发送给目录代理,由目录代理翻译成真实内容请求;最终目录代理替用户取回请求的内容文件并以伪装名称作为内容文件的名称转发给用户。

进一步地,上述步骤s1初始化阶段包括以下内容:

s1.1:在网内设置一个目录代理(服务器),该目录代理维护一个不被过滤的命名空间,其根命名空间用“\<anonymizer_domain>”加以表示;目录代理会基于该根命名空间,将被网络过滤的真实名称一一映射成伪装名称,发布一个包括真实名称与伪装名称的目录文件,目录文件每经过时间间隔t动态更新一次;目录文件中包括具有n个可访问的真实名称,且第k个时段提供的第n个真实名称定义为list(n,k),1≤n≤n;每个真实名称都有相对应的动态伪装名称,现将第n个真实名称在时段k的伪装名称定义为a_list(n,k);

s1.2:目录代理随机选择随机数a,b∈zq、γ∈g1,计算ν=e(γ,g),得到目录代理的广播加密公钥pk={g1,g2,e;ν}和主密钥mk={a,b,γ};其中,g1和g2分别是阶为素数q的加法循环群和乘法循环群;g是g1的一个生成元;e:g1×g1→g2是一个双线性映射;zq为包括{0,1,2,…,q-1}的自然数集合。

进一步地,上述步骤s2用户注册阶段具体过程为:目录代理随机选择随机数xi∈zq,结合目录代理的主密钥mk={a,b,γ}计算则用户i广播加密私钥为dki={ki1,ki2},用户i广播加密公钥为labi={xi,gi}。

进一步地,上述步骤s3内容请求阶段包括以下内容:

s3.1:用户i以目录代理的根命名空间为前缀,附加上用户名uni作为后缀,构成兴趣包的名字“\<anonymizer_domain>\uni”;同时,生成兴趣包签名signi附加在兴趣包里,输出兴趣包interest(\<anonymizer_domain>\uni)发送;

s3.2:

目录代理获得兴趣包interest(\<anonymizer_domain>\uni)后,对签名signi进行校验,校验通过后,确认i为合法用户组s中的一员;随后目录代理随机选择随机数k∈zq,结合目录代理的广播加密公钥pk={g1,g2,e;ν},计算c0=kg、得到广播头hdr={c0,c1}和会话密钥k=vk,并使用会话密钥k加密目录文件;最后将加密的目录文件data(i,1)和广播头hdr一起发送给用户i;其中,ν=e(γ,g),γ∈g1,g是g1的一个生成元;g1和g2分别是阶为素数q的加法循环群和乘法循环群;e:g1×g1→g2是一个双线性映射;zq为包括{0,1,2,…,q-1}的自然数集合;

s3.3:用户i获得目录文件data(i,1)后,输入自身的广播加密私钥dki和接收到的广播头hdr,计算d1=ki2、(其中,s为合法用户组),获得会话密钥k=k′解密目录文件,读取目录内容,选择想请求的第n个真实名称在时段k的伪装名称a_list(n,k)作为兴趣包的名称后缀,构建伪装名称兴趣包interest(\<anonymizer_domain>\a_list(n,k))发给目录代理;由于目录文件中的伪装名称对合法用户组s内所有用户都是公开一致的,如果出现多个用户请求该内容,伪装名称兴趣包interest(\<anonymizer_domain>\a_list(n,k))可以在网内命中;如果网内未命中,目录代理收到伪装名称兴趣包后,将伪装名称翻译成真实名称并取回真实内容,用广播加密会话密钥k加密真实内容,返回给用户i;其中,aggregate函数定义为:由x=[x1,x2,…,xr]、p=[b1,b2,…,br],将作为输入,计算的函数记为aggregate函数。

下面结合具体实施例来说明本发明的技术方案。

假设某用户想要请求baidu网站下的某一视频内容singer.avi。在此之前,为了规避网络中的名称过滤攻击,该用户须向目录代理(服务器)进行注册,获得相应权限。如图1所示,用户向目录代理请求注册,代理为此请求用户分配用户名uni=alice、密码passi=123,将该用户的用户名,密码存在本地数据库中,同时将该用户加入广播组。目录代理从有限自然数集合zq中随机选择四个数xa=43、a=3、b=5、γ=13;从g1中随机生成1个生成元g=37;并通过计算为alice生成公钥laba={xa,ga}={43,0.2761}和私钥dka={ka1,ka2}={13.0062,0.8284}。

如图2所示,注册完毕后,用户以目录代理的根命名空间xyz.com为前缀,附加上用户名alice为后缀,构成兴趣包的名称“\xyz.com\alice”,向目录代理发送目录文件请求,并附上数字签名sign=hmac(alice,123,1)=63b1ec48acaaa6c5dda807ca18267def{以用户名“alice”、密码“123”及当前时间戳time“1”(保证该请求一分钟之内有效)做hmac运算},最终发送兴趣包interest(\xyz.com\alice)作为请求。

目录代理收到该兴趣包后,从兴趣包名称中提取用户名“alice”,在本地数据库中检索得到对应密码“123”,再根据当前时间戳“1”做相同的hmac计算,对签名进行校验,若校验通过即确认alice为合法用户组s中的一员。随后目录代理从有限自然数集合zq中随机选择一个数k=7,计算c0=kg=259,(假设广播组中再引入一个用户b,xb∈zq=5),得到广播头hdr={c0,c1}={259,14.8827}和会话密钥k=vk=e(13,37)7,并使用会话密钥k加密数据包。最后将加密的数据包data(a,1)(数据包中内容为真实名称与伪装名称映射的目录文件)和广播头hdr一起返回给用户。

alice收到数据包data(a,1)和广播头hdr后,输入预分配的私钥dka和广播头hdr,计算d1=ka2=0.8284,e(d1,c1)=e(37,37)0.0090获得会话密钥k=k′解密数据包,得到真实名称与伪装名称映射的目录文件。

当前用户想要请求的内容名为\www.baidu.com\singer.avi,经查找真实名称与伪装名称映射的目录文件,得到当前请求内容名映射的伪装名称为\www.xyz.com\ithfnsd\hhd.avi。用户构建名为\www.xyz.com\ithfnsd\hhd.avi的伪装名称兴趣包发给目录代理,目录代理收到用户的请求后,根据真实名称与伪装名称映射的目录文件,翻译出用户所请求的伪装名称对应的真实名称,再用真实名称请求内容,获取内容后,为用户返回名为\www.xyz.com\ithfnsd\hhd.avi、包含真实内容\www.baidu.com\singer.avi的数据包data(a,2),该数据包仍使用广播加密的会话密钥加密。用户解密数据包后就可以获得自己所需的真实内容。

如果在目录有效期内,网内路由器缓存了名为\www.xyz.com\ithfnsd\hhd.avi的内容,那么用户可以直接从网络中获取到所需的内容,提高了网内缓存的利用率,节省了请求的时延。

如图3所示,本发明对命名数据网络的原有兴趣包结构进行修改,新增一个字段存储用于用户身份验证的兴趣包签名,同时在用户注册阶段,以兴趣包签名方式向目录服务器发送待验证的用户名以及密码信息;兴趣包签名计算规则为signi=hmac(uni,passi,time),其中hmac()为加密哈希函数,uni为用户名,passi为用户密码,time为当前时间戳。

目录代理收到兴趣包interest(\<anonymizer_domain>\uni)后,从内容名中提取用户名uni,在数据库中检索出密码passi,再根据接收时间time对签名signi进行校验,校验成功则发送给目录文件给该用户,否则拒绝用户的请求。

如图4所示,本发明中的用户用于规避名称过滤攻击所采用的伪装名称,来自于目录代理发布的目录文件。目录文件中包括真实名称与伪装名称一一对应的列表,用户可根据目标内容的真实名称list(n,k),检索出对应的伪装名称a_list(n,k),进而生成第二次请求用的伪装名称兴趣包。同样,当目录代理收到用户的伪装名称兴趣包时,可根据伪装名称翻译成目标内容的真实名称,并取回真实内容。

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