Réseaux de Capteurs Sans Fils
CoursOutils transverses

INSENS (Intrusion-tolerant routing for wireless sensor networks)

Aperçus

L'idée du protocole est de permettre à la SB de tracer une cartographie correcte du réseau qui permettra d'établir les tables de routage pour chaque capteur. Ces tables seront transmises par la suite aux noeuds concernés de façon sécurisée. Le protocole vise deux objectifs :

  • Opérer correctement en présence d'intrus: Pour cela, INSENS est un protocole tolérant aux intrusions, qui assure le routage même en présence d'intrus. Il construit plusieurs chemins indépendants pour chaque couple de communiquants. Les chemins indépendants ne partagent qu'un nombre réduit de noeuds/liens (idéalement, ils partagent seulement la source et la destination). Avec cette propriété, un intrus ne pourra altérer que les communications traversant un seul chemin.

  • Scalabilité et économie d'énergie: Le calcul des chemins indépendants et l'établissement des tables de routage représentent une tâche assez lourde. INSENS effectue ces calculs dans les SB (station de base). Les résultats sont ensuite transmis vers chaque noeud d'une manière sécurisée.

Le protocole se déroule selon les phases suivantes.

Initiation authentifiée de la construction de l'arbre

La SB doit d'abord dresser un arbre couvrant tout le réseau, dont elle est la racine. Cet arbre permettra d'acheminer les messages de contrôle entre les capteurs et la SB. Afin d'éviter le spoofing de SB, INSENS emploie un mécanisme de broadcast authentifié. Pour ce faire, la SB génère une chaîne de hachage à sens unique (ni)0≤i≤k comme suit :

ni+1=h(ni), 0<i<k où n0 est choisi aléatoirement, et nk est connu par tous les noeuds, et h est une fonction de hashage à sens unique.

Périodiquement, la SB génère une requête pour re-construire les tables de routage des capteurs. Le format du message est le suivant :

type|ows|size|path|MACRx

Le champ ows (One-Way Sequence number ) désigne la valeur courante de la chaîne de hachage (i.e. pour la requête i, ows=ni). Chaque noeud maintient localement la dernière valeur reçue de ows, désignée par owsfresh. Lorsqu'un noeud x reçoit une requête, il vérifie sa fraîcheur et son authenticité par la relation suivante:

Trouver j, tel que j>0 et ows=hj(owsfresh)

Requête authentifiée de construction de l'arbre
Requête authentifiée de construction de l'arbre
Construction de l'arbre par relayage de la requête

Un noeud x qui reçoit le message de requête précédent, ajoute son identificateur au champ path et calcule le champ MACRx :

MACRx = MAC(kx, size|path|ows|type)

où kx représente la clé sectrète partagée entre le noeud x et la SB. Le noeud doit aussi choisir son "upstream" vers la SB, qui représente le premier voisin qui a émis une requête valide, et sauvegarde son MACR, qui sera désigné par MACRupstream.

Construction de l'arbre
Construction de l'arbre
Route feedback

Après l'émission de la requête, le noeud attend un certain temps pour envoyer un feedback à la SB. Cette période lui permet de récolter les informations sur son voisinage, qui vont permettre à la SB d'établir une vue globale du réseau d'une manière sécurisée. Un message feedback contient les informations suivantes:

type|ows|path_info|nbr_info|MACRupstream|MACFx

Le champ "path_info" contient la liste des noeuds entre le noeud x et la SB, l'identification de x et son MACR:

IDx|size|path|MACRx

Le champ "nbr_info" contient la liste des identificateurs des voisins ainsi que leurs MACR :

size|IDa|MACRa|IDb|MACRb| . . .

Le champ MACFx est calculé comme suit : MACFx=MAC(kx, path_info|nbr_info|ows|type)

Pour renforcer la sécurité, le routage du message s'effectue grâce au champ MACRupstream. Ainsi, lorsqu'un noeud reçoit un message feedback, il compare la valeur du MACRupstream reçue avec sa valeur liée au ows reçu, et relaie éventuellement le message.

Route feedback
Route feedback
Construction des tables de routage

Après l'émission de la requête, la SB attend une certaine période avant d'entamer la construction des tables de routage. Pendant cette durée, elle traite les messages de feedback reçus afin de dresser le graphe du réseau. Pour vérifier l'information du feedback d'un noeud x, la SB recalcule le MACFx. Elle doit aussi comparer les valeurs des MACR de chaque voisin de i avec la valeur MACRi reçue dans le feedback du noeud i. Ainsi, les informations falsifiées sont rejetées, et un graphe correct peut être établi. La SB peut ensuite rechercher les chemins indépendants et construire en conséquence les tables de relais pour chaque noeud. Les chemins indépendants sont choisis de telle sorte qu'ils regroupent le moins de noeuds possible en commun. L'algorithme utilisé emploie une méthode simple qui cherche d'abord le chemin le plus court entre chaque couple de communiquants. Par la suite, l'algorithme essaye de trouver un autre chemin dans le sous-graphe ne contenant pas les noeuds du premier chemin, leurs voisins et les voisins des voisins. Si cela est impossible, le procédé est réitéré en rajoutant l'ensemble des voisins des voisins, puis en cas d'échec on rajoute l'ensemble des voisins. Pour chaque capteur, la SB calcule une table de relais qui contient une entrée pour chaque chemin passant par le capteur. Cette table est encapsulée dans le message suivant:

type|ows|size|routingTable|MAC

où le MAC est calculé comme suit :

MAC=MAC(kx,type|ows|size|table)

Construction et distribution des tables de routage
Construction et distribution des tables de routage
SecRouteLe routage dans les RCSF : menaces et solutions
Accueil Yacine CHALLAL creativecommons : by-ncRéalisé avec SCENARI