• Aucun résultat trouvé

Présentation

Dans le document Réseaux de capteurs et vie privée (Page 107-111)

6.3 Ephemeral

6.3.1 Présentation

Le fonctionnement d’Ephemeral repose sur le déploiement de la sécurité couche MAC. Les nœuds utilisent les mécanismes de sécurité fournis par le standard IEEE 802.15.4 avec un niveau de sécurité au moins égal à 4. Il permet d’assurer la confidentialité, l’intégrité et l’authenticité du payload MAC. Pour cela, le chiffrement mais également l’authentification sont activés.

Tous les nœuds du réseau stockent deux clés secrètes partagées : une clé LK et une clé à court terme Kt qui peut être mise à jour et est utilisée pour dissimuler les adresses source et destination.

Le réseau 6LoWPAN est sécurisé grâce à la clé LK. Un nœud souhaitant rejoindre le WSN devra effectuer une association sécurisée durant laquelle la clé Ktsera chiffrée par LK et lui sera transmise. La mise à jour future de la clé Ktpourra être réalisée de la même manière. La génération ainsi que la distribution de la clé de sécurité LK ne sont pas considérées dans cette étude.

L’association se déroule de manière classique comme expliqué dans la partie 3 via le protocole défini par RPL. Aucune trame supplémentaire n’est introduite. Le join et l’association sont simplement réalisés avec la sécurité MAC activée. Cette solution permet de contrôler l’accès au réseau. En effet, seuls les nœuds possédant la clé LK pourront s’associer correctement.

Les adresses IPv6 sont chiffrées par la sécurité MAC et la clé LK. Seules les adresses MAC restent accessibles en clair par écoute passive. La Figure 6.2 montre le format simplifié d’un paquet échangé dans un réseau IEEE 802.15.4 sécurisé à la couche MAC.

SRC DST Net.SRC Net.DST Payload En-tête Payload

Chiffré

Figure 6.2 – Structure d’un paquet (simplifiée).

Ephemeral a donc pour but de remplacer les adresses encore transmises en clair et utiles au routage par des pseudonymes. Ces pseudonymes sont générés et vérifiés à l’aide d’un AES en mode compteur et de la clé secrète Ktsans intervention d’une autorité de confiance.

Deux planifications sont prévues avec Ephemeral :

• Périodique. Les pseudonymes sont mis à jour à intervalles de temps réguliers.

• Sur évènement. Les pseudonymes sont prévus pour une seule utilisation. Ils sont donc changés à chaque émission/réception.

6.3.1.1 Génération des pseudonymes

Dans la suite, les nœuds du réseau sont indexés par i = 1, .., n. L’adresse MAC EUI-64 d’un nœud i est formée selon le procédé décrit par Hossen, Kabir et al. dans l’article [76]. Elle est dénotée ai. Sa taille vaut

m bits. Ici m = 64.

Cette valeur est choisie pour correspondre à la taille requise d’une adresse MAC utilisée dans les réseaux IEEE 802.15.4. Néanmoins, Ephemeral peut être employé pour générer des identifiants de tailles arbitraires. La fonction qui transforme ai en un pseudonyme est appelée F . Elle est définie par la formule suivante :

F (ai, IVt, Kt) = ai⊕ (EKt(IVt) mod 2m) IVt = g(IVt−1),

E est un algorithme de chiffrement par bloc dont les blocs ont une taille supérieure ou égale à `. Pour

l’évaluation du schéma, nous avons choisi un AES en mode compteur. Néanmoins, celui-ci peut être remplacé par n’importe quel `-bit algorithme de chiffrement par bloc léger.

Pour générer et vérifier les pseudonymes, les nœuds ont tout d’abord besoin de Kt mais également d’un ensemble d’IV. Ces données représentent les entrées de notre algorithme de chiffrement.

Pour tout t > 0, le vecteur d’initialisation IVtest composé de deux blocs : IVt= R||cptt. Le premier bloc R est formé de `1bits. Ces bits sont générés aléatoirement, spécifiques au nœud i et mis à jour périodiquement. R peut être distribué à chaque nœud du réseau pendant la phase d’association ou généré par le nœud lui-même. La seconde partie de l’IV a une taille de `2= ` − `1bits. cpttest un compteur incrémenté périodiquement ou sur évènement suivant la planification choisie.

La fonction de transition g qui permet d’obtenir la nouvelle valeur de IVten fonction de la valeur précé-dente IVt−1 est définie par :

g(IVt−1) = R||(cptt−1+ 1), où || représente la concaténation et cpt0= 0.

Une valeur de ` bits est ainsi obtenue en sortie de E. Si ` est supérieure à la taille m de l’identifiant que l’on souhaite remplacer (ici l’adresse MAC), m bits de ` sont sélectionnés. On pourra, par exemple, ne garder que les m LSB bits.

Enfin, une fonction XOR est effectuée avec l’adresse ai pour obtenir le pseudonyme.

Afin de générer les pseudonymes nécessaires pour les adresses MAC source et destination, un nœud i doit stocker la valeur de R ainsi que la valeur courante de cptt le concernant mais également pour chacun des voisins j(j 6= i). Les valeurs des R pour chaque nœud j sont différentes et partagées. Les valeurs des cptt sont calculées indépendamment des autres nœuds évitant un besoin de synchronisation. Les vecteurs d’initialisation sont des valeurs publiques. En revanche, la clé est secrète.

Pour cela, lors de l’association, chaque nœud i récupère de ses q voisins leurs adresses MAC aj et la valeur

Rj correspondante. Une table appelée "table de privacy" contenant q entrées est créée. Elle stocke la valeur courante de cpttpour chaque adresse aj.

Quand le nœud i souhaite communiquer avec son voisin j, il doit tout d’abord générer les pseudonymes pour les adresses MAC source ai et destination aj. Pour cela, il va générer son pseudonyme avec F et son matériel nécessaire à la génération des pseudonymes. Il peut ainsi remplacer l’adresse source par ce pseudonyme. Il calcule ensuite le pseudonyme de la destination du prochain saut en utilisant la même fonction

F . Il doit alors utiliser le matériel stocké concernant le nœud aj.

Toutes ces étapes réussies, l’émetteur peut construire la nouvelle trame MAC chiffrée avec LK. Les adresses MAC en clair sont alors remplacées par les pseudonymes. Afin de permettre leur vérification, les valeurs des cpttutilisées pour Ephemeral sont incluses dans l’en-tête MAC comme le montre la Figure 6.3.

SRC cpt

S DST cpt

D Payload En-tête Payload

Figure 6.3 – Structure d’un paquet Ephemeral.

6.3.1.2 Vérification des pseudonymes

Quand le nœud j reçoit une trame MAC utilisant Ephemeral, il va devoir vérifier si celle-ci lui est destinée ou s’il doit la rejeter. Il va comparer le pseudonyme utilisé comme adresse destination dans la trame reçue et son adresse MAC réelle. La connaissance de la valeur de R et du compteur courant cptt associé permet de retrouver l’adresse réelle cachée derrière le pseudonyme.

Pour cela, le nœud j combine la valeur stockée de son R avec la valeur du compteur cptD extraite de l’en-tête de la trame Ephemeral afin d’obtenir le vecteur d’initialisation IVtutilisé par l’émetteur. Il appelle ensuite la même fonction F que celle qu’a utilisé l’émetteur : F (DST, IVt, Kt) où DST est le pseudonyme destination inclus dans l’en-tête de la Figure 6.3.

Il vérifie alors si l’adresse obtenue par F correspond à son adresse MAC réelle. Si ce n’est pas le cas, il filtre la trame de manière classique.

Si la trame lui est adressée, il effectue le même travaille sur le pseudonyme source reçu afin de retrouver l’adresse réelle du nœud émetteur. Il déchiffre alors le payload MAC à l’aide de la clé LK afin d’accéder au contenu de la trame.

Il identifie ensuite si la trame doit être routée ou si elle lui est destinée grâce à l’adresse IPv6 réelle. Si celle-ci doit être routée, il chiffre alors le payload de la trame avec la sécurité MAC. Il va ensuite effectuer le même travail pour fournir les pseudonymes correspondant dans l’en-tête MAC.

Tous les nœuds appartenant au chemin déploient Ephemeral jusqu’à ce que la trame atteigne sa destination finale.

L’utilisation d’une fonction cryptographique et la mise en place d’Ephemeral nécessitent d’observer quelques règles au risque de casser la protection de la vie privée et de permettre à un attaquant de lier les pseudonymes dynamiques à une adresse réelle.

6.3.1.3 Analyse de la protection de la vie privée

Lorsque l’on utilise des pseudonymes, il faut s’assurer que deux nœuds ne génèrent pas le même pseudo-nyme pour deux adresses différentes. L’occurrence des collisions est donc critique pour assurer l’unicité des pseudonymes et pour empêcher des ambiguïtés pendant le routage. La probabilité que deux nœuds partagent le même pseudonyme est donnée par le paradoxe des anniversaires.

Tant que n  2m2, la probabilité de collision est négligeable. Dans notre cas, m = 64. Le nombre de nœuds n dans le réseau est fixé environ à 30.

L’IVtdoit également respecter certaines caractéristiques. En effet, l’utilisation d’une fonction cryptogra-phique comme l’AES rend dangereux la réutilisation d’un même IVt avec une clé identique. Afin d’assurer la protection de la vie privée, l’IVt ne doit donc pas être réutilisé sous peine de créer des collisions de pseudonymes voire de permettre à un attaquant de retrouver l’adresse MAC réelle.

Afin de comprendre quand ces collisions peuvent apparaitre et dans quelles conditions les IVt peuvent être réutilisés, le choix de la fonction g utilisée dans la mise à jour de l’IVtmais également la structure de ce dernier sont fondamentaux.

Zenner étudie dans [117] les différentes méthodes de génération d’IV, les possibilités dans la mise à jour mais également les problèmes de collisions lorsque ceux-ci doivent être mis à zéro. Le but de son article est de fournir à un designer une aide dans le choix de la construction de l’IV suivant les besoins de l’application. L’auteur détaille quatre types de générateurs de nombre à usage unique.

Dans le premier cas, le nombre est obtenu grâce à un générateur de nombre aléatoire. Néanmoins, cette so-lution nécessite une taille importante pour le nombre généré. De plus, il y a un risque de collisions probables et donc nécessite un bon générateur pour les éviter, ce qui représente encore un challenge.

Dans le second cas le plus répandu, l’IV est un compteur incrémenté à chaque mise à jour. Cette solution est la plus efficace tant que le compteur ne boucle pas sur une valeur déjà utilisée. Dans ce cas comme lors de l’initialisation, il est nécessaire de "mettre à zéro" la valeur du compteur. Deux voies sont exploitables. Il est possible de mettre à zéro le compteur à une valeur aléatoire. Cette solution nécessite l’intervention d’un générateur de nombre aléatoire et donc subit les problèmes liés à ce dernier. Dans la deuxième possibilité, la mise à jour se fait grâce à des points de reset stockés dans la mémoire non volatile du nœud afin d’empêcher les collisions. Néanmoins, cela nécessite de pouvoir y accéder facilement.

La troisième solution appelée mixed solution 1 consiste à concaténer une valeur aléatoire et un compteur. A chaque changement d’IV, le compteur est incrémenté et la partie aléatoire est de nouveau générée. Cette solution faisant de nouveau intervenir un générateur de nombre aléatoire, elle subit les mêmes inconvénients. Néanmoins, l’utilisation d’un compteur réduit le risque de collisions. Afin de pallier au problème du généra-teur lors de la mise à jour de l’IV, une solution appelée mixed solution 2 a été introduite. Elle correspond à la concaténation de `1-bit aléatoires avec un compteur de taille `2-bit comme pour la solution mixed solution 1. Néanmoins, lors de la mise à jour, seul le compteur est incrémenté, la valeur aléatoire reste identique tant que le compteur n’a pas atteint sa valeur maximale. Lors de la mise à zéro, le compteur prend la valeur 0 et la partie aléatoire est de nouveau générée. Lorsqu’il est impossible d’accéder à la mémoire pour mettre en place la solution utilisant les points de reset, cette solution est celle qui permet d’obtenir la plus petite probabilité de collisions pour une taille d’IV la plus petite. Notre fonction g pour la mise à jour de notre IV correspond à cette solution.

La formule suivante est donnée pour caractériser l’occurrence d’une collision : ` ≥ log2  n · α 2− α 2 · pmax 

La probabilité d’une collision, dans le cas d’un reset de IVt, est inférieure à pmax. α représente le nombre de reset de IVt.

Prenons l’exemple de la planification d’Ephemeral périodique. Imaginons que cpttest incrémenté toutes les 60s. Imaginons également que la taille de cpttsoit `2= 8 bits. Avec ce cas d’usage, R doit être mis à jour toutes les 256 minutes maximum.

Supposons que le WSN déployé ait une durée de vie de 10 ans. 20 532 mises à jour auront alors lieu. Si on considère n = 30 nœuds dans le réseau, la probabilité de collision maximale est donc d’environ

pmax≈ 2−95. Ce qui reste assez faible.

Un autre problème apporté par Ephemeral concerne les cptt. Ces compteurs sont envoyés en clair dans l’en-tête MAC afin de permettre la vérification des pseudonymes. Un attaquant peut tenter d’utiliser les valeurs des cpttpour identifier un nœud.

En effet, chaque nœud possède une valeur de cpttdifférente. cpttpeut donc être utilisé comme identifiant unique. De même, quand un nœud rejoint un réseau déjà établi, le compteur de ce nouveau nœud n’est pas synchronisé (ou proche) des valeurs des cpttutilisées dans le WSN. Cette désynchronisation des compteurs permet à un attaquant d’identifier une trame associée à un nœud.

Afin d’empêcher ce type d’attaque, chaque nœud va vérifier si les valeurs des compteurs (stockées et reçues) sont toutes proches. Par exemple, considérons deux nœuds i (cptt) et i0 (cpt0t) sans perte de généralités. Si cptt≥ cpt0

t+ δ pour δ ≥ 0, alors la valeur de cpt0test mise à jour avec la valeur de cptt. L’un des cas les plus extrêmes correspond à assurer δ = 0.

Dans le document Réseaux de capteurs et vie privée (Page 107-111)