[0031] 下面结合附图对本发明的技术方案做进一步详细说明。
[0032] 本发明方案分三个步骤进行:
[0033] S1初始化:在网内设置一个目录代理(服务器),将被网络过滤的真实名称一一映射成伪装名称,发布一个包括真实名称与伪装名称的目录文件,目录文件每经过时间间隔T动态更新一次;目录代理随机选择随机数,得到目录代理的广播加密公钥PK和主密钥MK;
[0034] S2用户注册:用户i向目录代理注册,目录代理存有该用户的用户名UNi、密码Passi,并将用户i加入广播组S,生成用户i的广播加密私钥dki分发给用户;
[0035] S3内容请求:用户以兴趣包签名方式向目录代理提出目录文件查询请求,根据目录代理返回的目录文件,查询获得目录代理对真实名称所提供的伪装名称,进而根据伪装名称,产生伪装名称兴趣包发送给目录代理,由目录代理翻译成真实内容请求;最终目录代理替用户取回请求的内容文件并以伪装名称作为内容文件的名称转发给用户。
[0036] 进一步地,上述步骤S1初始化阶段包括以下内容:
[0037] S1.1:在网内设置一个目录代理(服务器),该目录代理维护一个不被过滤的命名空间,其根命名空间用“\
”加以表示;目录代理会基于该根命名空间,将被网络过滤的真实名称一一映射成伪装名称,发布一个包括真实名称与伪装名称的目录文件,目录文件每经过时间间隔T动态更新一次;目录文件中包括具有N个可访问的真实名称,且第k个时段提供的第n个真实名称定义为List(n,k),1≤n≤N;每个真实名称都有相对应的动态伪装名称,现将第n个真实名称在时段k的伪装名称定义为A_List(n,k);[0038] S1.2:目录代理随机选择随机数a,b∈Zq、γ∈G1,计算v=e(γ,g),得到目录代理的广播加密公钥PK={G1,G2,e;v}和主密钥MK={a,b,γ};其中,G1和G2分别是阶为素数q的加法循环群和乘法循环群;g是G1的一个生成元;e:G1×G1→G2是一个双线性映射;Zq为包括{0,1,2,…,q‑1}的自然数集合。
[0039] 进一步地,上述步骤S2用户注册阶段具体过程为:目录代理随机选择随机数xi∈Zq,结合目录代理的主密钥MK={a,b,γ}计算则用户i广播加密私钥为dki={ki1,ki2},用户i广播加密公钥为labi={xi,gi}。
[0040] 进一步地,上述步骤S3内容请求阶段包括以下内容:
[0041] S3.1:用户i以目录代理的根命名空间为前缀,附加上用户名UNi作为后缀,构成兴趣包的名字“\
\UNi”;同时,生成兴趣包签名Signi附加在兴趣包里,输出兴趣包Interest(\<anonymizer_domain>\UNi)发送;[0042] S3.2:
[0043] 目录代理获得兴趣包Interest(\
\UNi)后,对签名Signi进行校验,校验通过后,确认i为合法用户组S中的一员;随后目录代理随机选择随机数k∈Zq,结合目录代理的广播加密公钥PK={G1,G2,e;ν},计算C0=kg、 得到广播头Hdr=k{C0,C1}和会话密钥K=v,并使用会话密钥K加密目录文件;最后将加密的目录文件DATA(i,
1)和广播头Hdr一起发送给用户i;其中,ν=e(γ,g),γ∈G1,g是G1的一个生成元;G1和G2分别是阶为素数q的加法循环群和乘法循环群;e:G1×G1→G2是一个双线性映射;Zq为包括{0,
1,2,…,q‑1}的自然数集合;
[0044] 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函数。
[0045] 下面结合具体实施例来说明本发明的技术方案。
[0046] 假设某用户想要请求Baidu网站下的某一视频内容singer.avi。在此之前,为了规避网络中的名称过滤攻击,该用户须向目录代理(服务器)进行注册,获得相应权限。如图1所示,用户向目录代理请求注册,代理为此请求用户分配用户名UNi=Alice、密码Passi=123,将该用户的用户名,密码存在本地数据库中,同时将该用户加入广播组。目录代理从有限自然数集合Zq中随机选择四个数xa=43、a=3、b=5、γ=13;从G1中随机生成1个生成元g=37;并通过计算
[0047]为Alice生成公钥laba={xa,ga}={43,0.2761}和私钥dka={ka1,ka2}={13.0062,0.8284}。
[0048] 如图2所示,注册完毕后,用户以目录代理的根命名空间xyz.com为前缀,附加上用户名Alice为后缀,构成兴趣包的名称“\xyz.com\Alice”,向目录代理发送目录文件请求,并附上数字签名Sign=HMAC(Alice,123,1)=63b1ec48acaaa6c5dda807ca18267def{以用户名“Alice”、密码“123”及当前时间戳Time“1”(保证该请求一分钟之内有效)做HMAC运算},最终发送兴趣包Interest(\xyz.com\Alice)作为请求。
[0049] 目录代理收到该兴趣包后,从兴趣包名称中提取用户名“Alice”,在本地数据库中检索得到对应密码“123”,再根据当前时间戳“1”做相同的HMAC计算,对签名进行校验,若校验通过即确认Alice为合法用户组S中的一员。随后目录代理从有限自然数集合Zq中随机选择一个数k=7,计算C0=kg=259, (假设广播组中再引k
入一个用户b,xb∈Zq=5),得到广播头Hdr={C0,C1}={259,14.8827}和会话密钥K=v=e
7
(13,37) ,并使用会话密钥K加密数据包。最后将加密的数据包DATA(a,1)(数据包中内容为真实名称与伪装名称映射的目录文件)和广播头Hdr一起返回给用户。
[0050] Alice收到数据包DATA(a,1)和广播头Hdr后,输入预分配的私钥dka和广播头Hdr,计算 D1=ka2=0.8284, e(D1,C1)=
0.0090
e(37,37) , 获得会话密钥K=K′解密数据包,得到真实名称与
伪装名称映射的目录文件。
[0051] 当前用户想要请求的内容名为\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),该数据包仍使用广播加密的会话密钥加密。用户解密数据包后就可以获得自己所需的真实内容。
[0052] 如果在目录有效期内,网内路由器缓存了名为\www.xyz.com\ithfnsd\hhd.avi的内容,那么用户可以直接从网络中获取到所需的内容,提高了网内缓存的利用率,节省了请求的时延。
[0053] 如图3所示,本发明对命名数据网络的原有兴趣包结构进行修改,新增一个字段存储用于用户身份验证的兴趣包签名,同时在用户注册阶段,以兴趣包签名方式向目录代理发送待验证的用户名以及密码信息;兴趣包签名计算规则为Signi=HMAC(UNi,Passi,Time),其中HMAC()为加密哈希函数,UNi为用户名,Passi为用户密码,Time为当前时间戳。
[0054] 目录代理收到兴趣包Interest(\
\UNi)后,从内容名中提取用户名UNi,在数据库中检索出密码Passi,再根据接收时间Time对签名Signi进行校验,校验成功则发送给目录文件给该用户,否则拒绝用户的请求。[0055] 如图4所示,本发明中的用户用于规避名称过滤攻击所采用的伪装名称,来自于目录代理发布的目录文件。目录文件中包括真实名称与伪装名称一一对应的列表,用户可根据目标内容的真实名称List(n,k),检索出对应的伪装名称A_List(n,k),进而生成第二次请求用的伪装名称兴趣包。同样,当目录代理收到用户的伪装名称兴趣包时,可根据伪装名称翻译成目标内容的真实名称,并取回真实内容。