Ad Hoc网络的控制层安全
发布时间:2008/11/28 0:00:00 访问次数:599
攻击者对ad hoc网络的控制层进行攻击的主要方式是通过发布错误的路由信息来破坏节点之间的路由,这种攻击方法针对当前网络中正在使用的路由协议。为了确保ad hoc网络路由的安全,在设计控制层的安全时,需要对路由信息中的关键字段(如跳数、源路由)进行认证。
1.对消息进行认证的方法
当前,对消息进行认证的方法主要有3种,即利用消息认证码、单向密钥链和数字签名。
(1)利用hmac
如果两个节点共享一个密钥,他们就能通过单向的哈希函数产生验证任何消息的hmac。然而,hmac只能被预订的接收者验证,这样就对认证广播消息没有吸引力。此外,建立整个网络范围内的密钥对也不是一件容易的事,因为对由n个节点组成的网络来说,需要有n×(n-1)/2个密钥需要保存。
(2)利用单向密钥链
通过对初始输入x反复应用单向函数f(),就可以获得一系列的密钥fi(x)。发送者以相反的顺序逐渐公布密钥链,但使用未公开的密钥为其消息产生哈希的hmac。而接收者使用已公布的密钥来验证hmac。结合了时钟同步和妥善的密钥分发方案之后,单向密钥链可被有效地用作广播消息的认证。
(3)利用数字签名
数字签名基于公钥密码算法如rsa算法等,对发送的消息采用发送者的私钥进行签名,由于发送者的公钥通过网络公开发布,所以任何接收者都可以对接收到的消息进行验证。数字签名可以工作在由大量节点组成的网络之中,扩展性非常好。然而,数字签名也存在一个安全隐患。原因是其工作机理是基于比较的,即比较通过网络发送的消息签名和接收者自己计算出来的哈希值,这有可能会招致拒绝服务(dos)攻击。
2.距离矢量路由的安全
为了确保目的序列距离矢量路由算法和按需距离矢量路由算法等路由协议的安全性,必须使每个节点都正确地发布其路由距离。例如,如果用跳数作为距离的度量,当路由更新消息在网络中传播时,每个中间节点应该将其跳数值增加1。
跳数哈希链方案能阻止中间节点减少跳数。假定最大的跳数是n,节点在产生路由更新消息(对dsdv协议而言)或在产生路由回复(rrep)消息(对aodv协议而言)时会同时产生一个长度为饣的哈希链:h0,h1,h2,…,hn。其中hi=h(hi-1),h()是某个常用的单向哈希函数。
节点将hx=h0和hx=hn分别添加到路由消息中,并将跳数设为0,然后广播出去。当中间节点收到更新消息时,首先判断是否满足:hn=ha-hop-count(hx),hm(hx)表示对hx应用m次h()的结果。中间节点用h(hx)更新ht,并把跳数加1,然后重新广播路由更新消息。
按照这种方法,攻击者虽然不可能减少路由更新信息中跳数,但却能发布与其收到的跳数同样大的跳数。针对这个问题,哈希树链可以确保路由更新消息在网络中传输时,其跳数总是单调地递增。但是,这种算法也存在一定的局限性,即它只适合离散的路由度量,如果路由度量连续取值时,该算法并不是很有效。
3.链路状态路由的安全
为了确保链路状态路由协议如开放最短路径优先的安全,应该能够阻止攻击者伪造不存在链路。提出的安全链路状态路由采用基于数字签名的认证机制,已经基本解决了这个问题。在slsp中,每个节点周期性地广播hello消息,让邻居发现它,并且全网洪泛其链路状态消息(lsu分组)。hello分组和lsu分组都使用发送节点的私钥签名。当且仅当链路被其两端的两个节点通过有效的lsu分组广播后,它才被全局网络拓扑接受。这样,攻击者就不能冒充合法节点伪造链路。
数字签名的高计算负载可能招致dos攻击的问题可以通过频率控制机制来解决。每个节点测量其邻居发送数据签名控制分组的频率,一旦频率超过了预先设定的门限,就抛弃这些分组,而不做任何审核。
4.源路由的安全
为了保证源路由协议如动态源路由协议的安全,应该能阻止中间节点对源路由(即中间节点的有序列表)的恶意操纵,例如增加新节点、移除存在的节点,或改变中间节点的排列顺序。这通常是通过每跳认证来实现。
ariadne是对dsr的安全扩展。它用单向的hmac链,即tesla来认证源路由。ariadne假定时钟同步,以及预分配了每个节点的tesla密钥链中的最后一个密钥。例如,源节点s到达目的节点d的路由经过三个中间节点a、b、c,当路由请求(rreq)分组传输时,每个中间节点将它自己、整个分组的哈希值以及由下一个未公布的tesla密钥签名的hamc一起附加在源路由上。当目的节点收到rreq,它首先验证内容是否与哈希值匹配,如果匹配,将一串hmac值加到rrep分组中,这个分组沿着反向路径回到源节点。中间节点延迟rrep分组直到它释放了前一个使用的tesla密钥,这样,下一跳节点就可以检验teslahamc。
每跳哈希可以阻止恶意节点修改它收到的rrep分组,使得恶意节点所能做的就是将新节点加到路由中。每跳tesla h
攻击者对ad hoc网络的控制层进行攻击的主要方式是通过发布错误的路由信息来破坏节点之间的路由,这种攻击方法针对当前网络中正在使用的路由协议。为了确保ad hoc网络路由的安全,在设计控制层的安全时,需要对路由信息中的关键字段(如跳数、源路由)进行认证。
1.对消息进行认证的方法
当前,对消息进行认证的方法主要有3种,即利用消息认证码、单向密钥链和数字签名。
(1)利用hmac
如果两个节点共享一个密钥,他们就能通过单向的哈希函数产生验证任何消息的hmac。然而,hmac只能被预订的接收者验证,这样就对认证广播消息没有吸引力。此外,建立整个网络范围内的密钥对也不是一件容易的事,因为对由n个节点组成的网络来说,需要有n×(n-1)/2个密钥需要保存。
(2)利用单向密钥链
通过对初始输入x反复应用单向函数f(),就可以获得一系列的密钥fi(x)。发送者以相反的顺序逐渐公布密钥链,但使用未公开的密钥为其消息产生哈希的hmac。而接收者使用已公布的密钥来验证hmac。结合了时钟同步和妥善的密钥分发方案之后,单向密钥链可被有效地用作广播消息的认证。
(3)利用数字签名
数字签名基于公钥密码算法如rsa算法等,对发送的消息采用发送者的私钥进行签名,由于发送者的公钥通过网络公开发布,所以任何接收者都可以对接收到的消息进行验证。数字签名可以工作在由大量节点组成的网络之中,扩展性非常好。然而,数字签名也存在一个安全隐患。原因是其工作机理是基于比较的,即比较通过网络发送的消息签名和接收者自己计算出来的哈希值,这有可能会招致拒绝服务(dos)攻击。
2.距离矢量路由的安全
为了确保目的序列距离矢量路由算法和按需距离矢量路由算法等路由协议的安全性,必须使每个节点都正确地发布其路由距离。例如,如果用跳数作为距离的度量,当路由更新消息在网络中传播时,每个中间节点应该将其跳数值增加1。
跳数哈希链方案能阻止中间节点减少跳数。假定最大的跳数是n,节点在产生路由更新消息(对dsdv协议而言)或在产生路由回复(rrep)消息(对aodv协议而言)时会同时产生一个长度为饣的哈希链:h0,h1,h2,…,hn。其中hi=h(hi-1),h()是某个常用的单向哈希函数。
节点将hx=h0和hx=hn分别添加到路由消息中,并将跳数设为0,然后广播出去。当中间节点收到更新消息时,首先判断是否满足:hn=ha-hop-count(hx),hm(hx)表示对hx应用m次h()的结果。中间节点用h(hx)更新ht,并把跳数加1,然后重新广播路由更新消息。
按照这种方法,攻击者虽然不可能减少路由更新信息中跳数,但却能发布与其收到的跳数同样大的跳数。针对这个问题,哈希树链可以确保路由更新消息在网络中传输时,其跳数总是单调地递增。但是,这种算法也存在一定的局限性,即它只适合离散的路由度量,如果路由度量连续取值时,该算法并不是很有效。
3.链路状态路由的安全
为了确保链路状态路由协议如开放最短路径优先的安全,应该能够阻止攻击者伪造不存在链路。提出的安全链路状态路由采用基于数字签名的认证机制,已经基本解决了这个问题。在slsp中,每个节点周期性地广播hello消息,让邻居发现它,并且全网洪泛其链路状态消息(lsu分组)。hello分组和lsu分组都使用发送节点的私钥签名。当且仅当链路被其两端的两个节点通过有效的lsu分组广播后,它才被全局网络拓扑接受。这样,攻击者就不能冒充合法节点伪造链路。
数字签名的高计算负载可能招致dos攻击的问题可以通过频率控制机制来解决。每个节点测量其邻居发送数据签名控制分组的频率,一旦频率超过了预先设定的门限,就抛弃这些分组,而不做任何审核。
4.源路由的安全
为了保证源路由协议如动态源路由协议的安全,应该能阻止中间节点对源路由(即中间节点的有序列表)的恶意操纵,例如增加新节点、移除存在的节点,或改变中间节点的排列顺序。这通常是通过每跳认证来实现。
ariadne是对dsr的安全扩展。它用单向的hmac链,即tesla来认证源路由。ariadne假定时钟同步,以及预分配了每个节点的tesla密钥链中的最后一个密钥。例如,源节点s到达目的节点d的路由经过三个中间节点a、b、c,当路由请求(rreq)分组传输时,每个中间节点将它自己、整个分组的哈希值以及由下一个未公布的tesla密钥签名的hamc一起附加在源路由上。当目的节点收到rreq,它首先验证内容是否与哈希值匹配,如果匹配,将一串hmac值加到rrep分组中,这个分组沿着反向路径回到源节点。中间节点延迟rrep分组直到它释放了前一个使用的tesla密钥,这样,下一跳节点就可以检验teslahamc。
每跳哈希可以阻止恶意节点修改它收到的rrep分组,使得恶意节点所能做的就是将新节点加到路由中。每跳tesla h
上一篇:Ad Hoc网络数据层安全
上一篇:Ad Hoc网络的特点及安全威胁