• Aucun résultat trouvé

2.3 Protection contre les nœuds malveillants

2.3.4 Routage réactif sécurisé

Dans ce paragraphe, nous passons en revue les principales propositions pour sécuriser les protocoles de routage réactifs.

SRP

Papadimitratos et Haas proposent un protocole de découverte et maintien de chemins réactif protégé contre les fautes byzantines isolées [29], appeléSecure Routing Protocol(SRP). Les nœuds malveillants ne sont pas supposés être en collusion les uns avec les autres.

Le fonctionnement de la découverte de chemins est analogue à celle de DSR : des requêtes de recherche de chemin sont inondées dans le réseau et enregistrent la succession de nœuds par lesquels elles passent. Ici on suppose que les nœuds source ont uneassociation de sécurité avec chaque nœud destination potentiel : ils sont en mesure de générer une clef de chiffrement symétrique pour chaque flux connue de ses seuls nœuds source et destination. Cette clef sert ensuite à signer tout ou partie des messages en calculant uncode d’authentification de message (message authentication codeouMACen anglais) paramétré par la clef symétrique du flux.

Cette méthode est préférable à la signature à clef publique bien plus coûteuse en termes de calcul.

La requête initiale est signée par la source, de façon à ce que la destination puisse détecter les modifications et/ou les falsifications. Lorsque celle-ci la reçoit, elle reprend la requête initiale, la liste des nœuds traversés, rajoute un en-tête de réponse et signe le tout qu’elle revoit parsource routingen direction de la source. Toute signature est vérifiée par la source et la destination et tout échec de vérification entraîne automatiquement la destruction du message correspondant.

Bien que les adresses des nœuds traversés par la requête ne sont pas protégées contre les manipulations frauduleuses, les réponses dont les routes de retour ne seraient pas traversables n’arrivent pas à la source. Les auteurs comptent donc sur la multiplicité des chemins de la source à la destination (autrement dit, de la multiplicité des requêtes qui arrivent à la destination et pour lesquelles cette dernière renvoie des réponses vers la source) pour assurer que si un chemin sans nœud malveillant existe, il sera ainsi trouvé. Ce mécanisme exclut cependant l’exploitation de l’information dans la mémoire cache des nœuds intermédiaires à des fins d’optimisation (telle que préconisée pour DSR ou AODV). En effet, toutes les requêtes doivent arriver à la destination avant que des réponses puissent être générées, puisqu’elles doivent être signées par celle-ci.

Tout comme dans le protocole DSR, la maintenance de chemins est effectuée par le nœud intermédiaire situé en amont du lien rompu. Il envoie un message de notification de perte

de lien en source routing vers la source. Celle-ci vérifie alors que le chemin contenu dans le message (pour le routage) correspond bien au préfixe du chemin pour lequel la rupture de lien est signalée. Si tel n’est pas le cas, la notification est simplement ignorée. Les informations ne sont toutefois pas protégées davantage et un nœud malveillant peut très bien notifier une rupture de lien fictive. Dans ce cas, les auteurs argumentent que seul le chemin contenant le nœud malveillant est affecté et tant que les nœuds malveillants ne sont pas en collusion, cela permet à la source de trouver un chemin fiable.

SMT

Comme le protocole SRP ne concerne que la découverte de chemins dans le réseau, les mêmes auteurs ont par la suite proposé un protocole d’acheminement de paquets de données [30] qui s’assure que les effets de l’action de nœuds byzantins sont minimisés. Le protocole exploite l’hypothèse selon laquelle dans un réseau ad hoc, il existe plusieurs chemins possibles entre la source et la destination. Pour acheminer les paquets de façon fiable, une source les décompose en plusieurs morceaux redondants et achemine chacun d’entre eux par source routing selon un des chemins possibles. L’idée est qu’il suffit que la destination dispose d’une partie des morceaux pour reconstituer le paquet originel et qu’elle renvoie en direction de la source des accusés de réception par source routing pour chacun des morceaux reçus. La source est donc en mesure de déterminer quels chemins ont fonctionné et potentiellement quels autres ont failli. Ces informations servent ensuite à la source pour maintenir un degré de fiabilité de chacun des chemins et ainsi éviter les chemins pour lesquels des pertes ont été constatées. Ici la seule association de sécurité nécessaire est entre la source et la destination : les paquets de données et de contrôle sont signés par leur émetteur pour détecter les modifications.

Ni pour le protocole SRP, ni pour SMT, la collusion entre nœuds malveillants n’est parée et il est clair que la présence d’un nombre suffisant de nœuds malveillants dans le réseau, même sans collusion, provoque une dégradation significative des performances.

Ariadne

Pour éviter les nœuds malveillants au moment même de la diffusion des requêtes de découverte de chemins (et pas seulement au retour des réponses), il faut pouvoir authentifier les adresses des nœuds intermédiaires accumulés dans ces requêtes. Hu et al. proposent donc le protocole réactif Ariadne [31] qui requiert de chaque nœud intermédiaire qu’il signe le nouveau paquet avant de le propager. Ainsi lorsque cette signature n’est pas vérifiée dans la requête ou dans la réponse correspondante, cette dernière est détruite.

Bien entendu, l’utilisation du chiffrement à clef publique est très coûteux et la signature

par MAC requiert l’établissement préliminaire de clefs de chiffrement symétrique uniques entre toute paire de nœuds dans le réseau. Les auteurs proposent donc l’utilisation de TESLA [32, 33], un procédé qui permet l’authentification de la source d’un message diffusé à condition que les nœuds ont une vague synchronisation de leurs horloges. Le fonctionnement du protocole permet à la destination (resp. à la source) de vérifier si des requêtes (resp. des réponses) ont été faussées par un nœud intermédiaire et les détruire le cas échéant.

Les ruptures de lien sont signalées par le nœud en amont qui renvoie une notification vers la source en utilisant le préfixe du chemin inclus dans le paquet qui a provoqué l’erreur. Tous les nœuds qui traitent ce message (et a fortiori la source) authentifient son émetteur afin de prendre les mesures qui s’imposent pour invalider le chemin.

Le mécanisme de signalisation des ruptures offre cependant la possibilité pour les nœuds malveillants d’envoyer de fausses notifications de rupture, afin de rompre effectivement le lien en aval. Ceux-ci peuvent aussi tâcher de se placer de façon à prendre part à un maximum de chemins et ainsi provoquer un déni de service.

SAODV

L’approche qui consiste à sécuriser les messages de contrôle d’un protocole réactif a été appliqué à AODV par Zapata et Asokan [34]. Ici la partie constante des paquets est signée successivement par les nœuds intermédiaires et toutes les signatures sont vérifiées par tout le monde. La partie non-constante la plus sensible reste le compteur de sauts dans les requêtes et celui-ci ne peut pas être simplement vérifié par une signature. Par conséquent, les auteurs proposent en plus l’utilisation de deux chaînes de hachage [35] pour vérifier que le compteur de sauts n’a pas été décrémenté abusivement. Si on poseHcomme étant la fonction de hachage utilisée etsun nombre aléatoire tiré par la source d’un message, alors celle-ci inclut, en plus du compteur de sautshc ← 0, le nombre maximal de sauts que le message doit parcourir mh←TTL, la valeurHmh(s)et la valeur deh←s. Chaque nœud intermédiaire doit donc vérifier qu’on a bien

Hmh(s) =Hmh−hc(h)

et retransmettre le message avechc ←hc+ 1eth←H(h).

Cette protection n’est toutefois pas totale et il est clair qu’un nœud malveillant peut simplement ne pas incrémenterhcet ne pas changerh(pour augmenter le nombre maximal de sauts autorisés de 1) ou, au contraire, incrémenterhcet changerhde façon correspondante afin de réduire le nombre maximal de sauts autorisés.