发明名称 分层洋葱环路由方法
摘要 本发明公开一种分层洋葱环路由方法,将无线Mesh网络中的节点分为三类:网关,可信任节点和普通节点,OP节点和网关是诱导节点,OP节点在环的初始化过程中起选择路由的作用,所有OP节点和网关的集合构成匿名集;把网络的洋葱路由分为两层环路,第一层路由:由匿名集的不相邻可信节点OP和网关组成的环形路径;第二层路由:在可信节点OP之间由普通节点Fi填充构成的环路,第二层路由在初始化过程中由OP节点和网关随机选择,通过洋葱环路由的分层环路实现Mesh网络匿名安全通信。本发明使用分层洋葱环通信协议,匿名集的OP节点和网关共同参与路由选择,有效混淆路径阻止交集攻击。减少计算量和减轻网关的负担,加速建环过程,更好地利用网络资源减少延迟。
申请公布号 CN101635918B 申请公布日期 2012.01.04
申请号 CN200910023640.3 申请日期 2009.08.19
申请人 西安电子科技大学 发明人 庞辽军;李茹;裴庆祺;焦李成;李慧贤;刘思伯;赵晓辉
分类号 H04W12/00(2009.01)I;H04W88/16(2009.01)I 主分类号 H04W12/00(2009.01)I
代理机构 陕西电子工业专利中心 61205 代理人 张问芬
主权项 1.一种分层洋葱环路由方法,其特征在于:将无线Mesh网络中的节点分为三类:网关G,可信任节点OP和普通节点F<sub>i</sub>,OP节点和网关G是诱导节点,OP节点在环的初始化过程中起选择路由的作用,所有OP节点和网关G的集合构成匿名集;把网络的洋葱路由分为两层环路,第一层路由:由匿名集的不相邻可信节点OP和网关G组成的环形路径;第二层路由:在可信节点OP之间由普通节点F<sub>i</sub>填充构成的环路,也称为下一层路由;第二层路由在初始化过程中由OP节点和网关随机选择,通过洋葱环路由的分层环路实现Mesh网络匿名安全通信;所述的分层洋葱环路由方法,其特征在于:采用分层洋葱环路由进行匿名通信首先进行环的初始化,所述环的初始化过程包括如下步骤:第1步:封装过程首先:OP节点选择第一层路由,也就是有标号的匿名集,按照匿名集中节点的顺序封装洋葱包,并在其后附加一个dummy包,封装的洋葱包格式如下:{build},E<sub>kpop1</sub>[(RI,k<sub>op1</sub>,OP2),E<sub>kpop2</sub>[(RI,k<sub>op2</sub>,G),E<sub>kpg</sub>(RI,t)]],dummy;{build}:包头,表示建环信息,告诉节点要进行环的初始化;E<sub>kp</sub>:公钥加密,用于封装洋葱包;OP1节点用自己的公钥Ek<sub>pop1</sub>加密最外层包,即环号RI、自己的会话密钥k<sub>op1</sub>、下一条地址OP2,以及匿名集中第二个节点封装的第二层洋葱包,这样当OP2节点收到这个洋葱包时,就可以确定下一跳发往地址,以此类推;RI:环号,由匿名集号和建环时间构成;k<sub>i</sub>:普通节点F<sub>i</sub>与网关的会话密钥;t:表示时间戳,用来检测消息的实时性;dummy:诱导信息;然后:OP节点再选择到匿名集中第二个元素的第二层路由,按照第二层路由的顺序封装洋葱包,并且分配此次通信过程中环中上行链路的一次性会话密钥k<sub>op1</sub>,k<sub>1</sub>,k<sub>2</sub>,…,k<sub>op2</sub>;将分配好的一次性会话密钥告诉网关,让网关知道上行链路路径,而下行链路的一次性密钥由网关分配;从匿名集中第一个节点发送到第二个节点的包格式如下:{build},E<sub>kp1</sub>[(RI,k<sub>1</sub>,F<sub>2</sub>),E<sub>kp2</sub>[(RI,k<sub>2</sub>,F<sub>3</sub>),…,E<sub>kpop2</sub>((RI,k<sub>2</sub>,G),E<sub>kpg</sub>(RI,k<sub>op1</sub>,k<sub>1</sub>,k<sub>2</sub>,…,k<sub>op2</sub>,t))…]],dummyF<sub>i</sub>:网络中的普通节点,将包的简化格式如下:{build},E<sub>kpop1</sub>(E<sub>kp1</sub>(E<sub>kp2</sub>,…,(E<sub>kpop2</sub>(E<sub>kpg</sub>(m<sub>1</sub>)))…)),dummy,其中m<sub>1</sub>={RI,t,k<sub>op1</sub>,k<sub>1</sub>,k<sub>2</sub>,…,k<sub>op2</sub>};环中的所有OP节点都是如此进行封装洋葱包的;当匿名集中的第二个节点OP2接收到初始化信息时,它同理第一个元素的进行路径选择和封装洋葱包,但是直接转发dummy包如下:{build},E<sub>kpn</sub>(E<sub>kp(n+1)</sub>(…(E<sub>kpop3</sub>(E<sub>kpg</sub>(m<sub>2</sub>),E<sub>kpg</sub>(m<sub>1</sub>)))…)),<img file="FSB00000622475500021.GIF" wi="486" he="63" />其中m<sub>2</sub>={k<sub>op2</sub>,k<sub>n</sub>,k<sub>n+1</sub>…,t},<img file="FSB00000622475500022.GIF" wi="87" he="64" />公钥解密;第2步:信息转发过程在信息转发过程中,路由环中没有数据发送的普通F<sub>i</sub>节点只解密收到的洋葱包和dummy包,然后把解密后的消息发给下一个节点如下:{build},E<sub>kp2</sub>(…(E<sub>kpop2</sub>(E<sub>kpg</sub>(m<sub>1</sub>)))…),<img file="FSB00000622475500023.GIF" wi="290" he="65" />第3步:会话接入请求过程当普通节点F<sub>i</sub>想进行通信时,用接入请求信息替代层层解密的dummy包如下:{build},E<sub>kp(i+1)</sub>(E<sub>kp(i+2)</sub>(…E<sub>kpg</sub>(m)…)),<img file="FSB00000622475500024.GIF" wi="282" he="64" />第4步:网关处理过程当网关收到从OP1节点发过来的包,就确定了会话发起者,如果网关同意这个请求,它根据环号和匿名集来确定另一半环路径也就是从网关到会话发起者的下行链路,网关封装一个洋葱包发送给会话发起者,这个洋葱包包含从会话发起者到距其最近的OP节点或网关的上行链路的所有会话密钥,这样同意请求信息就从网关到达会话发起者进行通信,包格式如下:{build},E<sub>kpm</sub>(…E<sub>kpop</sub>(…(E<sub>kpg</sub>(k<sub>i</sub>,…,k<sub>op</sub>,grant))…)…);所述的分层洋葱环路由方法,其特征在于:采用分层洋葱环路由进行环间通信包括会话发起者到网关的通信过程和网关到节点F<sub>i</sub>通信过程,OP节点或网关用会话密钥加密洋葱包,每次建立环时,都要重新分配会话密钥,节点F<sub>i</sub>用会话密钥封装一个到距其最近的OP节点或网关洋葱包,与其进行会话;当距其最近的OP节点收到包,同理选择第二层路由与匿名集中下一个元素进行通信,除了网关和会话发起者,环中的每个节点都只进行转发解密后的洋葱包,会话发起者到网关的通信过程如下:F<sub>i</sub>→F<sub>i+1</sub>:{RI},E<sub>k(i+1)</sub>(E<sub>k(i+2)</sub>(…(E<sub>kop</sub>(E<sub>kg</sub>(E<sub>si</sub>(data,ack))))…));F<sub>i+1</sub>→F<sub>i+2</sub>:{RI},E<sub>k(i+2)</sub>(…(E<sub>kop</sub>(E<sub>kg</sub>(E<sub>si</sub>(data,ack))))…);……:……F<sub>OP-1</sub>→OP:{RI},E<sub>kop</sub>(E<sub>kg</sub>(E<sub>si</sub>(data,ack)));OP→F<sub>oP+1</sub>:{RI},E<sub>k(op+1)</sub>(E<sub>k(op+2)</sub>(…(E<sub>kg</sub>(E<sub>si</sub>(data,ack)))…));F<sub>OP+1</sub>→F<sub>OP+2</sub>:{RI},E<sub>k(op+2)</sub>(…(E<sub>kg</sub>(E<sub>si</sub>(data,ack)))…);……:……F<sub>G-1</sub>→G:{RI},E<sub>kg</sub>(E<sub>si</sub>(data,ack));其中,{RI}是包头,它表示环已经建立,开始进行通信,E<sub>si</sub>表示用节点F<sub>i</sub>的私钥加密,data是发送信息内容,ack表示正确收到包后发送的消息认证码,用来证明通信双方确实收到了包;当网关收到这个载体包后,用自己的私钥和节点F<sub>i</sub>的公钥解密这个包,来确定这个包是发给自己的和这个包是节点F<sub>i</sub>发送过来的,并计算ack值,如果双方ack的值不相同,证明它们没有正确收到包;反之,如果双方ack的值相同,网关就可以与会话发起者进行通信,这时网关根据环号和匿名集封装一个到节点F<sub>i</sub>的包{RI},E<sub>kg</sub>(E<sub>kop1</sub>(E<sub>ki</sub>(E<sub>sg</sub>(data))));网关到节点F<sub>i</sub>通信过程如下:G→F<sub>m</sub>:{RI},E<sub>km</sub>(E<sub>k(m+1)</sub>(…(E<sub>op1</sub>(E<sub>ki</sub>(E<sub>sg</sub>(data))))…));F<sub>m</sub>→F<sub>m+1</sub>:{RI},E<sub>k(m+1)</sub>(…(E<sub>op1</sub>(E<sub>ki</sub>(E<sub>sg</sub>(data))))…);……:……F<sub>OP1-1</sub>→OP1:{RI},E<sub>kop1</sub>(E<sub>kg</sub>(E<sub>si</sub>(data,ack)));OP1→F<sub>1</sub>:{RI},E<sub>k1</sub>(E<sub>k2</sub>(…(E<sub>ki</sub>(E<sub>sg</sub>(data)))…));F<sub>1</sub>→F<sub>2</sub>:{RI},E<sub>k2</sub>(…(E<sub>ki</sub>(E<sub>sg</sub>(data)))…);……:……F<sub>i-1</sub>→F<sub>i</sub>:{RI},E<sub>ki</sub>(E<sub>sg</sub>(data))。
地址 710071 陕西省西安市太白路2号