FR 3069992 A1 20190208 FR 1757549 A 20170804 DISPOSITIF D'ÉMISSION/ RÉCEPTION A RADIO DE RÉVEIL RÉSISTANT AUX ATTAQUES PAR DÉNI DE SOMMEIL DESCRIPTION DOMAINE TECHNIQUE La présente invention concerne de manière générale les dispositifs d'émission/réception à radio de réveil (Wake Up Radio). Elle trouve plus particulièrement application dans le domaine de l'Internet des Objets ou loT (Internet of Things). ÉTAT DE LA TECHNIQUE ANTÉRIEURE Les noeuds de l'IoT sont soumis à de fortes contraintes en termes d'autonomie. Dans de tels noeuds, l'interface radio est la partie la plus consommatrice en énergie. En effet, l'interface radio est en mode d'écoute permanente, ce qui conduit en pratique à une consommation élevée, comparable à celle qui serait observée si elle transmettait des données en permanence. Pour réduire la consommation d'énergie, il a été proposé une architecture de noeud dite à radio de réveil comme représenté en Fig.1. La Fig. 1 représente de manière schématique la structure d'un noeud d'IoT, 100, à radio de réveil. L'essentiel des composants du noeud fait partie d'un circuit principal 120, en veille (idle) la majeure partie du temps. Le noeud comprend également un circuit auxiliaire 110, dit radio de réveil, dont la fonction exclusive est de détecter les messages de réveil et de faire sortir le circuit principal du mode veille lorsqu'un tel message est détecté. La radio de réveil opère à très faible débit et consomme très peu d'énergie. Elle est active en permanence (always on circuit) et ne contient que des modules capables de traiter des messages de réveil. Le circuit principal ne sort du mode veille que lorsqu'il est activé par la radio de réveil (on demand circuit), 110. Le circuit principal comprend notamment un circuit radio, 121, dit radio principale, chargée de la réception et de la transmission des données, un 2 processeur CPU, 122, une mémoire 123 et, le cas échéant, un ou plusieurs coprocesseurs 124. La radio de réveil ayant des capacités de communication et de traitement très limitées, les messages de réveil doivent être les plus simples possibles. Ainsi, un message 5 de réveil est généralement constitué par un mot prédéfini de 8 ou 16 bits. Le message de réveil est alors identique pour tous les réveils. Dès lors, il est facile pour un tiers malveillant de capter ce message et de l'émettre en continu, ce qui a pour effet de réveiller le noeud sans arrêt et de vider rapidement sa batterie. Ce type d'attaque est appelé attaque par déni de sommeil ou DoS (Denial of Sleep attack). 10 Afin de parer aux attaques par déni de sommeil, on peut rendre le message de réveil dynamique, autrement dit le code de réveil change à chaque réveil de sorte qu'un attaquant ne peut réutiliser un code déjà utilisé (élimination des attaques par rejeu). En outre, le code de réveil ne doit pas pouvoir être prédictible par un attaquant. En effet, un attaquant ne doit pas pouvoir prédire le code de réveil suivant à partir des codes de réveil 15 passés. Plusieurs méthodes de réveil par code de réveil dynamique ont été proposées dans la littérature. Une première méthode de réveil a été décrite dans l'article de R. Falk et al. intitulé « Fighting insomnia : a secure wake-up scheme for wireless sensor networks » publié dans 20 Proc. of 3rd Inn Conference on Emerging Security Information, Systems and Technologies, 2009, pp. 191-196. A chaque réveil, le code du prochain réveil est transmis sur un canal sécurisé (au niveau liaison) via la radio principale. Cette méthode a pour inconvénient d'augmenter les échanges de données avec la radio principale, ce qui est coûteux en termes d'énergie. 25 Une seconde méthode de réveil a été décrite dans l'article d'Aljareh et al. intitulé « Efficient time synchronized one-time password scheme to provide secure wake-up authentication on wireless sensor networks » publié dans Inn Journal of advanced smart sensor network systems (IJASSN), vol. 3, n° 1, janvier 2013. Selon cette méthode, le réveil d'un noeud B par un noeud A suppose une synchronisation de ces noeuds et l'utilisation de clés symétriques connues de ces seuls noeuds. La synchronisation des noeuds A et B 3 nécessite de réveiller fréquemment le noeud B et de calculer le nouveau code de réveil, ce qui peut s'avérer très coûteux en énergie. Une troisième méthode de réveil a été décrite dans l'article de A.T. Capossele et al. intitulé « Counteracting denial-of-sleep attacks in wake-up radio-based sensing 5 systems » publié dans Proc. of 13th Annual IEEE Inn Conf. on Sensing, Communication and Networking (SECON, 2016, pp.1-9. Cette méthode nécessite toutefois l'échange de clés symétriques secrètes (connues des seuls noeuds A et B participant à l'échange), l'utilisation de compteurs partagés ainsi que les adresses de ces deux noeuds. En pratique, l'utilisation et le maintien de compteurs partagés rend complexe la génération du code de réveil. En 10 outre, le partage de clés symétriques (généralement sur 128 bits ou plus) est coûteux en termes de ressources: il requiert un protocole d'authentification des noeuds et un protocole d'échange sécurisé entre ceux-ci, de manière à garantir que seuls les noeuds concernés détiennent les clés en question. Ces clés doivent être ensuite maintenues secrètes, être protégées pendant toute leur durée de vie et mises à jour de manière 15 sécurisée, ce qui très contraignant tant en matière de sécurité que de consommation en énergie. Le but de la présente invention est par conséquent de proposer un dispositif d'émission/réception à radio de réveil qui ne présente pas les inconvénients précités, à savoir un dispositif d'émission/réception qui soit à la fois résistant aux attaques par déni 20 de sommeil et qui utilise une méthode de réveil simple, sans échanges radio coûteux en énergie et sans stockage important de clés secrètes. EXPOSÉ DE L'INVENTION La présente invention est définie par un dispositif d'émission/réception à radio de 25 réveil comprenant un circuit principal et un circuit auxiliaire, le circuit auxiliaire étant alimenté en permanence, le circuit principal étant par défaut dans un état de veille dans lequel il est non alimenté, et est réveillé par le circuit auxiliaire dès lors que celui-ci détecte un code de réveil d'un noeud de réseau loT, le circuit principal étant alimenté lorsqu'il est ainsi réveillé et établissant une communication sécurisée avec ledit noeud, le circuit 4 principal ainsi réveillé étant adapté à calculer un prochain code de réveil (WTUn+i) en appliquant une fonction à sens unique (F) sur au moins une partie d'un message reçu ( Messagen, ) du ou transmis audit noeud via la communication sécurisée, ledit prochain code de réveil ainsi obtenu étant fourni au circuit auxiliaire pour une détection ultérieure. 5 La fonction à sens unique peut être par exemple appliquée à au moins une partie du premier message reçu du ou transmis audit noeud, via la communication sécurisée, après que le circuit principal a été réveillé. Alternativement, la fonction à sens unique peut être appliquée à au moins une partie du dernier message reçu du ou transmis audit noeud, via la communication sécurisée, 10 avant que le circuit principal retourne à l'état de veille. La communication sécurisée pourra par exemple utiliser un chiffrement AES et la fonction à sens unique est appliquée au code MAC dudit message. Selon une seconde variante de réalisation, ledit message est combiné au moyen d'une fonction de combinaison avec le dernier code de réveil, avant application de la 15 fonction à sens unique. Selon une troisième variante de réalisation, ledit message est combiné au moyen d'une fonction de combinaison avec la sortie d'un compteur incrémenté à chaque réveil du circuit principal, avant application de la fonction à sens unique. La fonction de combinaison peut notamment être une opération de 20 concaténation. La fonction à sens unique est une fonction de hachage. Le résultat du hachage peut être ensuite tronqué à un nombre prédéterminé de bits pour fournir ledit prochain code de réveil. Alternativement, la fonction à sens unique peut être une exponentiation ou une 25 multiplication. Avantageusement, le prochain code de réveil fourni par le circuit principal est stocké dans un registre du circuit auxiliaire, avant que le circuit principal retourne à l'état de veille. 5 BRÈVE DESCRIPTION DES DESSINS D'autres caractéristiques et avantages de l'invention apparaîtront à la lecture d'un mode de réalisation préférentiel de l'invention, fait en référence aux figures jointes parmi lesquelles : 5 La Fig. 1, déjà décrite, représente de manière schématique l'architecture d'un noeud d'IoT à radio de réveil ; La Fig. 2 représente de manière schématique un dispositif d'émission/réception à radio de réveil selon un mode de réalisation de l'invention ; La Fig. 3 représente de manière schématique un chronogramme des échanges 10 entre un premier noeud d'IoT et un second noeud d'IoT, équipé du dispositif de la Fig. 2. EXPOSÉ DÉTAILLÉ DE MODES DE RÉALISATION PARTICULIERS On considérera dans la suite un couple de noeuds A et B d'un réseau loT, le noeud A prenant l'initiative d'une communication avec le noeud B. On suppose que le noeud A est 15 éveillé en permanence. Le noeud B est équipé d'un dispositif d'émission/réception comprenant un circuit auxiliaire ou radio de réveil, alimenté en permanence, et un circuit principal, en veille par défaut, mais pouvant être activé par la radio de réveil lorsque le circuit auxiliaire détecte un code de réveil. Typiquement, le noeud A pourra être une station de base alimentée par le secteur et le noeud B un objet connecté, contraint en ressources 20 et alimenté par batterie. On supposera que les messages de données échangés entre le noeud A et le noeud B via la radio principale le sont via une communication sécurisée. Plus précisément, ces messages sont chiffrés et, de préférence, authentifiés. Par message, on entend une séquence de paquets de données, voire la charge utile contenue dans ces paquets. 25 Lorsqu'un message est transmis via la communication sécurisée, ce message (séquence de données ou charge utile) est chiffré au moyen d'un algorithme de chiffrement symétrique ou asymétrique. La plupart des protocoles de communication pour l'IoT tels que IEEE 802.15.4 (sur lequel sont basés les protocoles Zigbee et 6L0WPAN), ou encore LoRa, Sigfox, Bluetooth 6 Smart (anciennement Bluetooth Low Energy) permettent une telle communication sécurisée. La Fig. 2 représente de manière schématique un dispositif d'émission/réception à radio de réveil, 200, selon un mode de réalisation de l'invention. 5 On a représenté en 210 le circuit auxiliaire implémentant la radio de réveil et en 250 le circuit principal du noeud B. Le circuit auxiliaire comprend un module de réception, 220, relié en entrée à une antenne et en sortie à la première entrée d'un comparateur 230. Le module de réception reçoit le signal d'antenne et le convertit en continu en un message numérique, le message 10 se décalant d'un bit à chaque coup d'horloge d'échantillonnage. La seconde entrée du comparateur est reliée à un registre 240 du circuit auxiliaire, ledit registre ayant un nombre de bits égal à celui du code de réveil. Le comparateur compare bit à bit le message numérique reçu et le contenu du registre. En d'autres termes, le comparateur effectue une corrélation glissante entre le train de bits reçus et le contenu du registre. 15 La sortie du comparateur est reliée au circuit principal pour fournir le signal de réveil. Ce signal de réveil commute par exemple l'état d'une bascule 280 du circuit principal, cet état indiquant si le circuit principal est en veille ou actif (c'est-à-dire alimenté). Le circuit principal 250 comprend un module d'émission/réception 260 correspondant à la radio principale et au moins un processeur 270. Le processeur est 20 programmé pour effectuer des opérations de déchiffrement des messages reçus de la radio principale et pour calculer le prochain code de réveil (Wake Up Token), WUTn±i à partir au moins d'un message, Message, reçu de ou transmis au noeud A, au moyen de la radio principale, depuis le réveil par le dernier code de réveil, WUTn, transmis par le noeud A. La notation Messagen signifie conventionnellement ici qu'il s'agit du keine message échangé 25 entre les noeuds A et B après le neine réveil du noeud B. Alternativement, le calcul du prochain code de réveil peut être effectué par un circuit hardware dédié (ASIC ou FGPA par exemple), ce qui permet de réduire encore la consommation d'énergie. 7 Le message utilisé pour le calcul du code WUTn±i peut être par exemple le premier message (Messagen,i) reçu par le noeud A après le neine réveil du circuit principal, voire le dernier message ( Message n ) reçu par ce noeud avant qu'il ne repasse à l'état de veille. Alternativement, il peut résulter de la concaténation de plusieurs messages reçus sur la 5 radio principale depuis le neine réveil par le code WUTn . Dans la variante la plus simple, le code WUTn±i peut être obtenu par : WUTn+i = F,(Messagen,k) (1) 10 où la fonction F (.) est une fonction à sens unique (one-way function). On rappelle qu'une fonction à sens unique est une fonction dont l'inverse n'est pas calculable dans un temps polynomial. Cette fonction à sens unique pourra être par exemple une opération d'exponentiation avec un grand nombre (sur le groupe multiplicatif d'un corps fini), une multiplication par un très grand nombre, ou une fonction de hachage cryptographique, 15 voire encore une combinaison de plusieurs de ces opérations. Le cas échéant, on pourra en outre appliquer une troncation au résultat pour obtenir un mot de la taille souhaitée (par exemple mot de 32 bits). Selon une seconde variante, le code WUTn±i est obtenu à partir d'au moins un message Message combiné avec le code de réveil précédent WUTn , autrement dit : 20 WUTn+i = F (C (WUTn,Messagen,k)) (2) où C est une fonction de combinaison. Selon un exemple de réalisation, on pourra opter pour : 25 WUTn+i = F,(WUTnIIMessagen,k) (3) 8 où .11. représente l'opération de concaténation. En lieu et place d'un seul message, Message, échangé avec (reçu ou envoyé) le noeud A, le calcul du code de réveil suivant WUTn±i peut faire intervenir plusieurs messages Message, , échangés avec le noeud B lors des communications sécurisées 5 initiées par les réveils précédents. La variante de calcul donnée par les expressions (2) et (3) présente l'avantage d'être récursive. Ainsi, à supposer même que deux messages identiques soient envoyés à deux réveils différents (Messagen±u=Messagen par exemple), les codes de réveil obtenus différeront. Même si un attaquant réussit à avoir accès aux clés de chiffrement de la 10 communication sécurisée, il lui faudrait accéder à l'ensemble des précédents réveils pour déterminer le prochain code de réveil. Le prochain code de réveil du noeud B est donc impossible à prédire sans connaitre la clé de chiffrement de la radio principale et l'historique de ses codes de réveil. Selon une troisième variante, le calcul du prochain code de réveil fait intervenir 15 outre un message précédemment échangé sous forme sécurisée via la radio principale un numéro de compteur. Dans ce cas, les expressions (1) à (3) deviennent : WUTn+i= F,(Messagen,k0n) (4) 20 WUTn+i = F (C (WUTn ,Messagen,k ,n)) (5) WUTn+i= F,(WUTnIlMessagen,k0n) (6) où le compteur a été pris ici égal au compteur du nombre de réveils. 25 Dans les seconde et troisième variantes, du fait de la récursivité, le premier code de réveil doit être connu des noeuds A et B. Pour ce faire, le code de réveil est initialisé après l'échange du matériel cryptographique (clés secrètes, vecteur d'initialisation, identifiants, adresses, etc.) nécessaire à l'établissement d'une communication sécurisée 9 entre les noeuds A et B. Le premier code de réveil peut alors être déterminé en chiffrant avec les clés préalablement échangées une information prédéterminée, par exemple un message prédéterminé connu à l'avance des noeuds du réseau, dans la mesure où le message chiffré sera impossible à prédire pour un attaquant ne disposant pas de ces clés 5 secrètes. Par exemple, si tous les noeuds utilisent des clés différentes, le code de réveil initial sera différent pour chaque noeud. Quelle que soit la variante envisagée, on pourra se contenter d'utiliser seulement une partie du message ou des messages transmis sur la radio principale dans le calcul du prochain code de réveil. 10 Dans certains protocoles, notamment IEEE 802.15.4, Bluetooth Smart, utilisant un mode de chiffrement AES pour du chiffrement authentifié tel que le mode CCM, un MAC (Message Authentication Code) est calculé pour chaque message, à partir de la charge utile du message et d'autres données du paquet radio, puis est chiffré et rajouté au paquet envoyé. Le code MAC peut alors être utilisé en tant que partie de message comme 15 argument dans les expressions (1) à (6). L'avantage d'utiliser le code MAC est que celui-ci est de plus petite taille et moins répétitif que les messages eux-mêmes dans la mesure où il intègre des informations telles que le nombre de messages échangés ou les adresses des noeuds. 20 La Fig. 3 représente de manière schématique un chronogramme des échanges entre les noeuds A et B précités, entre deux réveils consécutifs du noeud B. On suppose qu'un échange de matériel cryptographique a été effectué entre les noeuds A et B, et que le code de réveil a été préalablement initialisé. Le matériel cryptographique permet d'établir une communication sécurisée entre les deux noeuds sur 25 la radio principale. On suppose qu'au départ, le noeud B est à l'état de veille, autrement dit que son circuit principal n'est pas actif. En revanche, son circuit auxiliaire est alimenté en permanence mais sa consommation est minime en raison du très faible nombre de composants qu'il contient. 10 A l'étape 310, le noeud A souhaite initier un échange de données avec le noeud B et lui transmet pour ce faire un code de réveil WUT . Ce code de réveil a été préalablement stocké dans le registre du circuit auxiliaire. Le circuit auxiliaire du noeud B compare le code de réveil reçu du noeud A avec le code de 5 réveil stocké dans son registre et, après avoir détecté leur identité, active le circuit principal en 320. A l'étape 330, le noeud B renvoie un acquittement au noeud A sur la radio principale, au moyen de la communication sécurisée, comme quoi il est passé à l'état actif. A l'étape 340, les noeuds A et B échangent des messages de données sur la voie 10 principale, au moyen de la communication sécurisée. Au terme de l'échange, à l'étape 350, le circuit principal du noeud B calcule le prochain code de réveil selon l'une des variantes précitées. On notera cependant que selon la variante (calcul à partir du premier message reçu ou transmis après le réveil), le calcul du prochain code de réveil peut intervenir avant la fin de l'échange. 15 Selon un exemple typique d'implémentation, le processeur du circuit principal calcule le prochain code de réveil au moyen de : WUT1=trunc[hash(WUTTillMessagen,k)1 (7) 20 La fonction de hachage hash peut être une fonction de la famille SHA-2 (Secure Hash Algorithm), en particulier la fonction SHA-256. L'opération de troncation trunc peut être par exemple une troncation sur 32 bits. Le message Message peut être par exemple le dernier message échangé ou une partie de celui-ci. Le prochain code de réveil est stocké dans le registre (de 32 bits dans l'exemple ci- 25 dessus) du circuit auxiliaire pour permettre la détection d'un ordre de réveil. Le circuit principal du noeud B se met ensuite à l'état de veille en 360 en commutant l'état de sa bascule. En parallèle, le noeud A calcule le prochain code de réveil WUTn±i en 370.1Idispose en effet des mêmes informations que le noeud B, en l'occurrence le message Message, 11 envoyé ou reçu par ce noeud ainsi que le code de réveil WUTn qu'il a transmis au noeud B à l'étape 310. Il pourra ainsi ultérieurement ordonner au noeud B de se réveiller en 380 en lui transmettant, sur la radio de réveil, le code WUTn±i précédemment calculé. 5 On notera que le dispositif d'émission/réception à radio de réveil selon l'invention ne nécessite pas d'échanges additionnels par rapport aux échanges de messages de données sur la radio principale. Il ne nécessite pas davantage de synchronisation temporelle entre les noeuds A et B. En outre, contrairement à la plupart des solutions de l'état de la technique, la méthode de réveil proposée ne requiert pas de gérer des clés 10 symétriques supplémentaires pour la radio de réveil, en particulier de les obtenir, les stocker et les mettre à jour, ce qui est avantageux tant en termes de consommation d'énergie que de sécurité. Enfin, lorsqu'un hachage léger (tel que Spon gent ou Keccok) est utilisé comme fonction à sens unique, le calcul du prochain code de réveil par le circuit principal est particulièrement simple et la consommation d'énergie correspondant à ce 15 calcul est très modeste, a fortiori lorsqu'il est effectué par un circuit hardware dédié comme mentionné plus haut. On comprendra que d'autres types de fonction à sens unique et/ou d'autres arguments de cette fonction, utilisant les messages échangés par communication sécurisée sur la radio principale pourront être envisagés par l'homme REVENDICATIONS1. Dispositif d'émission/réception à radio de réveil comprenant un circuit principal (250) et un circuit auxiliaire (210), le circuit auxiliaire étant alimenté en permanence, le circuit principal étant par défaut dans un état de veille dans lequel il est non alimenté et est réveillé par le circuit auxiliaire dès lors que celui-ci détecte un code de réveil d'un noeud de réseau loT, le circuit principal étant alimenté lorsqu'il est ainsi réveillé et établissant une communication sécurisée avec ledit noeud, caractérisé en ce que le circuit principal ainsi réveillé est adapté à calculer un prochain code de réveil (WTUn+i) en appliquant une fonction à sens unique (F) sur au moins une partie d'un message reçu (Message) du ou transmis audit noeud via la communication sécurisée, ledit prochain code de réveil ainsi obtenu étant fourni au circuit auxiliaire (210) pour une détection ultérieure. 2. Dispositif d'émission/réception à radio de réveil selon la revendication 1, caractérisé en ce que la fonction à sens unique est appliquée à au moins une partie du premier message reçu du ou transmis audit noeud, via la communication sécurisée, après que le circuit principal a été réveillé. 3. Dispositif d'émission/réception à radio de réveil selon la revendication 1, caractérisé en ce que la fonction à sens unique est appliquée à au moins une partie du dernier message reçu du ou transmis audit noeud, via la communication sécurisée, avant que le circuit principal retourne à l'état de veille. 4. Dispositif d'émission/réception à radio de réveil selon la revendication 2 ou 3, caractérisé en ce que la communication sécurisée utilise un chiffrement AES et que la fonction à sens unique est appliquée au code MAC dudit message. 13 5. Dispositif d'émission/réception à radio de réveil selon l'une des revendications précédentes, caractérisé en ce que ledit message est combiné au moyen d'une fonction de combinaison avec le dernier code de réveil, avant application de la fonction à sens unique. 5 6. Dispositif d'émission/réception à radio de réveil selon l'une des revendications précédentes, caractérisé en ce que ledit message est combiné au moyen d'une fonction de combinaison avec la sortie d'un compteur incrémenté à chaque réveil du circuit principal, avant application de la fonction à sens unique. 10 7. Dispositif d'émission/réception à radio de réveil selon la revendication 5 ou 6, caractérisé en ce que la fonction de combinaison est une opération de concaténation. 8. Dispositif d'émission/réception à radio de réveil selon l'une des revendications précédentes, caractérisé en ce que la fonction à sens unique est une fonction de hachage. 15 9. Dispositif d'émission/réception à radio de réveil selon la revendication 8, caractérisé en ce que le résultat du hachage est ensuite tronqué à un nombre prédéterminé de bits pour fournir ledit prochain code de réveil. 20 10. Dispositif d'émission/réception à radio de réveil selon l'une des revendications 1 à 6, caractérisé en ce que la fonction à sens unique est une exponentiation. 11. Dispositif d'émission/réception à radio de réveil selon l'une des revendications 1 à 6, caractérisé en ce que la fonction à sens unique est une multiplication. 25 12. Dispositif d'émission/réception à radio de réveil selon l'une des revendications précédentes, caractérisé en ce que le prochain code de réveil fourni par le circuit principal est stocké dans un registre (240) du circuit auxiliaire (210), avant que le circuit principal retourne à l'état de veille.30