FR 3059120 A1 20180525 FR 1661298 A 20161121 1 PROCÉDÉ ET SYSTÈME DE DÉTECTION DE VULNÉRABILITÉ D'UN DISPOSITIF EMBARQUÉ DOMAINE TECHNIQUE La présente invention concerne le domaine de détection de vulnérabilité d'un dispositif comportant un logiciel et plus particulièrement, la détection de vulnérabilité et de failles de sécurité dans un dispositif embarqué. ÉTAT DE LA TECHNIQUE ANTÉRIEURE La détection de vulnérabilité d'un dispositif comportant un logiciel est très importante pour améliorer la sécurité et le comportement du dispositif. Il existe plusieurs techniques de détection de vulnérabilité et de failles de sécurité de logiciels applicatifs ou de logiciels embarqués. On distingue principalement l'audit de code source, la vérification de modèle par preuve formelle, la vérification statique du code source et la vérification dynamique du code exécuté. La vérification dynamique du code exécuté comporte une technique dite « test aléatoire » (ou fuzz testing) qui consiste à utiliser un testeur pour injecter de manière intensive des fautes aléatoires, dans le dispositif à évaluer (dit cible d'évaluation). Les fautes aléatoires sont des entrées semi-valides ou volontairement malformées permettant de positionner la cible d'évaluation dans des états inattendus et de provoquer des erreurs exploitables. Cette technique est largement utilisée du fait qu'elle est simple à mettre en oeuvre et donne dans la plupart des cas des bons résultats et ne nécessite pas une connaissance approfondie de la cible. Toutefois, cette technique de test aléatoire peut prendre beaucoup de temps si une grande quantité de fautes aléatoires sont inutilement injectées par une mauvaise stratégie de génération de ces fautes aléatoires. En outre, la technique de test aléatoire n'assure pas une garantie de complétude quant à la couverture du test. En effet, certaines zones de logiciels peuvent être restées non couvertes si le test est mal adapté ou mal configuré. 3059120 2 Afin de résoudre ce genre de problèmes, on utilise une technique de test aléatoire avec rétroaction (feedback-driven fuzzing) qui propose d'extraire des mesures issues des injections précédentes pour guider de nouvelles injections. Il s'agit plus particulièrement de donner un poids plus important aux injections ayant donné un bon 5 résultat comme graine de mutation des injections suivantes. Cette technique est bien adaptée lorsque le testeur est exécuté sur le même processeur que la cible et souvent sur le même système d'exploitation. Dans ce cas, il est possible de créer des interfaces et des échanges d'informations entre le testeur, la cible et divers outils de monitorage, même en boîte noire où le ou les outil(s) de tests bénéficie(nt) 10 de la proximité du code binaire. On rappelle qu'un test en boîte noire signifie que l'accès aux informations est partiel. En particulier, les spécifications des systèmes ne sont pas connues et la définition de protocole et d'interface se limite à la vision utilisateur. Le code source n'est pas connu et seul le code binaire de l'image exécuté est accessible et peut être dans certains cas surchargé à des fins de tests. Le système d'exploitation sur lequel est 15 exécutée la cible est ouvert, ce qui permet d'instrumenter des traceurs qui monitorent le comportement de la cible. Le document US2010058475 révèle un exemple d'un test aléatoire en mode guidé par rétroaction où des segments de code sensibles sont instrumentés dynamiquement après une analyse statique pour fournir une valeur de rétroaction à la fin 20 de chaque exécution. Ce document utilise des techniques évolutionnistes pour chercher parmi les entrées possibles celles qui maximisent la valeur de rétroaction. Toutefois, la technique de test aléatoire avec rétroaction selon l'art antérieur n'est pas possible en boîte étanche. On rappelle qu'un test en boîte étanche signifie que le système d'exploitation sur lequel est exécutée la cible est fermé. Le code binaire n'est 25 connu que si le format de chargement et d'exécution est accessible par l'extérieur et si ce format n'est pas crypté. L'image n'est pas modifiable pour insérer des ressources de monitorage. En particulier, il n'est pas possible d'instrumenter des traceurs pour monitorer le comportement de la cible. En effet, les techniques de test aléatoire avec rétroaction selon l'art antérieur 3 0 partent du principe indispensable que le code binaire exécutable est accessible et qu'il peut 3059120 3 être instrumenté et parfois modifié pour aider l'outil de trace même si le test est en boîte noire. Ainsi, dans un dispositif embarqué de type cyber physique, l'image du programme n'est pas accessible, n'est pas modifiable et on ne peut pas utiliser les résultats 5 d'un traceur. On parle ici de test en boîte étanche où les techniques de l'art antérieur ne sont pas exploitables. L'objet de la présente invention est de proposer un procédé et un système de détection de vulnérabilité d'un dispositif embarqué remédiant aux inconvénients précités, en particulier en réalisant un test d'évaluation en boîte étanche tout en garantissant une 10 complète couverture de la détection. EXPOSÉ DE L'INVENTION La présente invention est définie par un système de détection de vulnérabilité d'un dispositif embarqué, dit cible d'évaluation, comportant : 15 - un générateur de challenge configuré pour générer un message de challenge courant adapté pour tester la vulnérabilité de ladite cible d'évaluation, - un injecteur de challenge configuré pour injecter ledit message de challenge courant dans ladite cible d'évaluation, - un module de mesure configuré pour mesurer à travers un canal auxiliaire un 20 signal de fuite relatif à une réaction de la cible d'évaluation à ladite injection du message de challenge courant, - un analyseur de signaux configuré pour analyser ledit signal de fuite et pour produire un profil courant représentatif dudit message de challenge courant, et - un calculateur de score configuré pour attribuer un score courant au message 25 de challenge courant en fonction du profil courant et pour envoyer ledit score courant au générateur de challenge qui est adapté pour régénérer un nouveau message de challenge sur la base dudit score courant. Ainsi, le système récolte depuis la cible et à travers des canaux cachés des mesures physiques représentatives des comportements de la cible en réaction à l'injection du message de challenge. Ceci permet d'estimer la pertinence des stimuli (i.e. des 3059120 4 messages de challenge injectés dans la cible) afin de déterminer de nouveaux stimuli plus performants dans l'évaluation de la vulnérabilité de la cible. Ce système de détection permet une couverture complète de la détection même si la cible est de type boite étanche n'offrant aucun accès au code exécutable ou à l'image du programme et ne permettant pas 5 l'utilisation des traceurs. Avantageusement, le générateur de challenge est adapté pour générer le message de challenge de manière aléatoire à partir d'un descripteur de protocole ou à partir d'un apprentissage préliminaire tout en utilisant une technique de mutation. Ceci permet de générer de manière simple et robuste des stimuli plus 10 performants à partir des graines de mutation des stimuli précédents ayant eu des bons scores. Avantageusement, la technique de mutation est basée sur un algorithme génétique ou sur une fonction de distribution non uniforme. Selon un premier mode de technique de mutation, l'algorithme génétique est 15 configuré pour : - classer un ensemble de messages de challenge en fonction de leurs scores respectifs, - combiner deux-à-deux des messages de challenge parmi les messages les mieux classés pour générer des messages de challenge résultants ayant des 20 caractéristiques communes aux deux messages combinés, et - modifier les messages de challenge résultants pour former des nouveaux messages de challenge ayant des performances optimales. Selon un premier mode de technique de mutation, la fonction de distribution non uniforme est adaptée pour : 25 - utiliser une fonction de distribution à moyenne et variance variables représentatives des messages de challenge, et - pondérer la moyenne et la variance de ladite fonction de distribution en fonction du score pour générer des nouveaux messages de challenge. 3059120 5 Avantageusement, l'injecteur de challenge est adapté pour transformer ledit message de challenge avant son injection en une trame adaptée pour être envoyée sur un canal physique de ladite cible d'évaluation. Avantageusement, le module de mesure est configuré pour échantillonner le 5 signal de fuite et pour transmettre le signal de fuite échantillonné Se à l'analyseur de signaux. Avantageusement, l'analyseur de signaux est configuré pour : - recevoir le signal de fuite échantillonné Se depuis le module de mesure, - filtrer ledit signal de fuite échantillonné Se formant un signal filtré St, 10 - sous-échantillonner ledit signal filtré St formant ainsi un signal sous- échantillonné Sd, - synchroniser ledit signal sous-échantillonné Sd formant ainsi un signal synchronisé St correspondant au profil courant, et - construire par une recherche d'équivalence un tableau de comparaison Tc 15 entre le profil courant et des profils de références stockés dans une base de données de profils par exemple à l'aide d'algorithmes probabilistes de type calcul de coefficient de corrélation croisée ou d'algorithmes statistiques de type test d'équivalence de fonction de répartition. Avantageusement, l'analyseur de signaux est configuré pour stocker le profil 20 courant dans la base de données de profils au cas où ledit profil courant est nouveau. Ceci est réalisé après une analyse probabiliste puis une analyse statistique du profil courant par rapport à tous les profils connus précédents. Avantageusement, le calculateur de score est configuré pour attribuer un score courant au message de challenge courant en extrayant d'un histogramme d'occurrence 25 une fréquence d'occurrence du profil courant, ce score étant inversement proportionnel au nombre d'occurrence. Avantageusement, le signal de fuite est un signal sélectionné parmi les signaux suivants : signal électrique de consommation de courant, signal électromagnétique, signal de temps de réponse, et signal de code d'erreur. 3059120 6 Le dispositif embarqué selon la présente invention est un objet connecté comportant un logiciel. L'invention vise également un procédé de détection de vulnérabilité d'un dispositif embarqué, dit cible d'évaluation, comportant les étapes suivantes : 5 - générer un message de challenge courant adapté pour tester la vulnérabilité de ladite cible d'évaluation, - injecter ledit message de challenge courant dans ladite cible d'évaluation, - mesurer à travers un canal auxiliaire un signal de fuite relatif à une réaction de la cible d'évaluation à ladite injection du message de challenge courant, 10 - analyser ledit signal de fuite et produire un profil courant représentatif dudit message de challenge courant, et - attribuer un score courant au message de challenge courant en fonction du profil courant et envoyer ledit score courant au générateur de challenge qui est adapté pour régénérer un nouveau message de challenge sur la base dudit score courant. 15 BRÈVE DESCRIPTION DES DESSINS La Fig. 1 illustre de manière schématique un système de détection de vulnérabilité d'un dispositif embarqué, selon un mode de réalisation de l'invention ; La Fig. 2 illustre de manière schématique un procédé et système de détection 20 de vulnérabilité d'une cible d'évaluation, selon un mode de réalisation préféré de l'invention ; et La Fig. 3 illustre de manière schématique la mesure d'un signal de fuite de consommation de courant, selon un mode de réalisation de l'invention. EXPOSÉ DÉTAILLÉ DE MODES DE RÉALISATION PARTICULIERS 25 Le principe de l'invention est d'utiliser une technique de test aléatoire pour évaluer la vulnérabilité d'une cible pouvant être de type boite étanche et d'accéder à la cible par des canaux physiques cachés pour estimer une rétroaction utile au test aléatoire. 3059120 7 La Fig. 1 illustre de manière schématique un système de détection de vulnérabilité d'un dispositif embarqué, selon un mode de réalisation de l'invention. Par dispositif embarqué, on entend un dispositif comportant un logiciel autonome à ressources limitées comme par exemple un capteur connecté ou objet 5 connecté de type montre connectée. On notera que le dispositif embarqué peut ne pas comporter de système d'exploitation et peut comporter seulement très peu de branches. Dans la suite, le dispositif embarqué sous test est appelé cible d'évaluation. Le système 1 de détection est une structure assemblant une chaîne de modules comportant un générateur 3 de challenge, un injecteur 5 de challenge, un module de 10 mesure 7, un analyseur 9 de signaux et un calculateur 11 de score. Les différents modules forment avec la cible 13 d'évaluation une boucle complète formée d'une chaine d'injection de challenges et d'une chaine de rétroaction. Le générateur 3 de challenge est un module algorithmique configuré pour générer des stimuli dits messages de challenge adaptés pour tester la vulnérabilité de la 15 cible 13 d'évaluation. Plus particulièrement, le générateur 3 de challenge est adapté pour générer de manière aléatoire des messages de challenge quasiment valides ou malformés soit à partir d'un descripteur de protocole soit à partir d'un apprentissage lancé dans une phase préliminaire. Le générateur 3 de challenge met en oeuvre des mutateurs et distributions 20 aléatoires indiqués, de manière générale, par un manifeste de test aléatoire (fuzzing). L'injecteur 5 de challenge (ou moteur de fuzzing) joue le rôle d'un pont entre le générateur 3 de challenge et la cible 13 d'évaluation. Il est ainsi configuré pour injecter dans la cible 13 d'évaluation les messages de challenge générés par le générateur 3 de challenge. En particulier, l'injecteur 5 de challenge transforme chaque message de 25 challenge avant son injection en une trame adaptée pour être envoyée sur un canal physique filaire ou non filaire de la cible 13 d'évaluation. En recevant un message de challenge, la cible 13 réagit en fonction de sa robustesse et de la nature du message de challenge. Ainsi, en analysant le comportement de la cible 13 d'évaluation, on peut déterminer la pertinence du message de challenge. 3059120 8 En effet, le module de mesure 7 est configuré pour mesurer à travers un canal caché ou auxiliaire des signaux de fuite relatifs aux réactions de la cible 13 d'évaluation aux injections des messages de challenge. A titre d'exemple, les signaux de fuites peuvent être des signaux électriques de consommation de courant, des signaux électromagnétiques, des 5 signaux temporels de réponse ou des signaux de codes d'erreur. L'analyseur 9 de signaux est configuré pour analyser les signaux de fuite mesurés par le module de mesure 7. Cette analyse permet de produire pour chaque signal de fuite un profil représentatif du message de challenge correspondant et de reconnaître chaque nouveau profil. 10 Le calculateur 11 de score est configuré pour attribuer des scores aux messages de challenge en fonction des profils correspondants et pour envoyer ces scores au générateur 3 de challenge. Ce dernier est adapté pour régénérer des nouveaux messages de challenge sur la base des scores reçus depuis le calculateur 11. On notera que les opérations réalisées par le système 1 de détection sont mises 15 en oeuvre par un système de traitement de type ordinateur. La Fig. 2 illustre de manière schématique un procédé et système de détection de vulnérabilité d'une cible d'évaluation, selon un mode de réalisation préféré de l'invention. A l'étape El, le générateur de challenge génère de manière aléatoire un 20 message de challenge M courant pour tester la vulnérabilité de la cible 13 d'évaluation. Selon un premier exemple, le message de challenge M courant est généré de manière connue à partir d'un descripteur de protocole. Selon un deuxième exemple, le message de challenge M courant est généré à partir d'un apprentissage par l'expérience lancé dans une phase préliminaire. En outre, le générateur 3 de challenge utilise avantageusement une 25 technique de mutation pour engendrer le message M de challenge. Cette technique de mutation peut être basée sur un algorithme génétique ou sur une fonction de distribution non-uniforme. L'algorithme génétique est un procédé itératif comportant en général quatre phases sur un groupe de N individus (i.e. N messages de challenge) pour une population ou 3059120 9 génération. Après un certain nombre d'itérations la population converge vers la meilleure performance de recherche d'erreurs. La première phase est un cycle d'évaluation dans lequel le générateur 3 de challenge génère des messages de challenges et où l'injecteur 5 de challenge injecte à tour 5 de rôle ces messages de challenges dans la cible 13 d'évaluation. La réponse de la cible 13 est détectée par le module de mesure 7 et analysée par l'analyseur 9 de signaux avant que le calculateur lui attribue un score. Un bon score signifie que la réponse est intéressante pour détecter une erreur, en revanche un mauvais score signifie que la réponse n'a aucun intérêt. 10 La deuxième phase est une phase de sélection dans laquelle le générateur 3 de challenge classe les messages d'alertes (i.e. les individus) en fonction de leurs scores respectifs. On leur donne une probabilité d'être sélectionné dans la génération suivante en fonction de leur score et de la probabilité de sélectionner le meilleur individu. La troisième phase est une étape de combinaison où des messages de challenge 15 sélectionnés sont combinés deux-à-deux pour générer des messages de challenge résultants ayant des caractéristiques communes aux messages combinés. Deux messages de challenge initiaux qui se croisent donnent naissance à deux nouveaux individus ayant des caractéristiques communes aux deux parents (i.e. messages initiaux). La quatrième phase est une phase de mutation où les messages de challenge 20 résultants sont modifiés pour former des nouveaux messages de challenge ayant potentiellement des performances améliorées ou optimales. La modification consiste par exemple à changer de manière aléatoire un pourcentage extrêmement faible (de l'ordre de 0,1% à 1%) du nombre de bits dans la chaine du message. En variante, la technique de mutation par fonction de distribution non- 25 uniforme utilise une fonction (par exemple la distribution de Von-Mises) à moyenne et variance variable représentative des messages de challenge. La moyenne et la variance de la fonction de distribution sont pondérées en fonction du score pour générer des nouveaux messages de challenge. Plus le score est élevé, plus la moyenne est centrée sur les messages de challenge gagnants et la variance est faible. En revanche, plus le score est 30 faible, plus la variance est forte et la moyenne se rapproche de la valeur centrale. Ainsi, 3059120 10 lorsque qu'un tirage aléatoire d'un message de challenge ne donne pas de bon score, on va élargir le champ de la distribution. En revanche, lorsque le tirage donne un bon score, on resserre la distribution autour de la valeur gagnante. A l'étape E2, l'injecteur 5 de challenge reste connecté à la cible 13 d'évaluation 5 et a pour rôle d'envoyer à ce dernier les messages de challenge. En effet, l'injecteur 13 de challenge transforme le message de challenge M courant fourni par le générateur 3 de challenge en une trame adaptée pour être envoyée sur le canal physique (par exemple, USB, Bluetooth, wifi, CAN, etc. ) de la cible 13. En recevant le message de challenge M courant, la cible 13 réagit en fonction 10 de la valeur de cette entrée. De manière générale, il peut y avoir trois principaux cas de figure. Dans le premier cas, le message de challenge M est vraiment erroné et la cible 13 détecte et gère cette erreur convenablement. Dans ce cas, le challenge est rejeté car la cible 13 réagit peu. 15 Dans le deuxième cas, le message de challenge M est valide et ne provoque pas d'erreur. Dans ce cas, la cible 13 peut avoir une réaction importante mais prédictible et répétitive. Dans le troisième cas, le message de challenge M est erroné mais provoque une erreur sur la cible 13 qui n'avait pas envisagé ce cas de malformation. Dans ce cas, la cible 20 13 va avoir une réaction anormale, spécifique et détectable. A l'étape E3, le module de mesure 7 effectue une mesure à travers un canal auxiliaire 15 d'un signal de fuite S, relatif à la réaction de la cible 13 d'évaluation. Le signal de fuite S, peut par exemple être un signal de consommation de courant ou un signal de rayonnement électromagnétique. 25 La Fig. 3 illustre de manière schématique la mesure d'un signal de fuite de consommation de courant, selon un mode de réalisation de l'invention. Avantageusement, le module de mesure 7 réalise la mesure à l'intérieur de l'équipement embarqué (la cible) 13 ou sinon à l'entrée du circuit d'alimentation 17 de l'équipement 13. Selon cet exemple, le module de mesure 7 comporte un oscilloscope 19 30 numérique et une résistance 21 de très faible valeur (par exemple autour de 10 Ohm). La 3059120 11 résistance 21 est mise en série avec le circuit d'alimentation 17 de la cible 13 et la tension aux bornes de cette résistance 21 est mesurée par l'oscilloscope 19 aux moyens de deux sondes Va et Vb. Avantageusement, l'oscilloscope 19 présente une bonne performance (par exemple, 200Mhz de bande passante et 1 giga échantillons par seconde) afin d'extraire 5 le plus d'informations possibles qui seront surtout fonction de la fréquence du processeur de la cible 13 d'évaluation. L'oscilloscope 19 est configuré pour recevoir depuis l'injecteur 5 de challenge un signal logique (0 ou 1) déclencheur de l'échantillonnage la tension Vb-Va. L'oscilloscope 19 démarre l'échantillonnage lorsque l'injecteur 5 a fini 10 d'envoyer la trame de challenge à la cible 13, c'est-à-dire à l'instant où la cible 13 d'évaluation commence à la traiter. Si la cible 13 d'évaluation fournit systématiquement une réponse (cible verbeuse), on termine l'acquisition de mesures lorsque la cible 13 termine l'émission de sa réponse. Si la cible 13 retourne rarement de réponse (cible peu verbeuse) on peut envisager deux solutions. 15 La première solution consiste à faire une hypothèse sur un temps maximum de réaction de la cible 13 et d'arrêter l'acquisition de mesures lorsque ce temps est dépassé. Si l'hypothèse est bonne, toutes les réponses seront plus courtes en durée que le temps maximum mais le système 1 va fonctionner correctement. En revanche, si l'hypothèse du temps maximum est fausse, l'oscilloscope 19 va manquer de l'information car l'acquisition 20 du signal de fuite Si est arrêtée trop tôt et le système 1 de détection peut ne pas fonctionner. Dans ce cas, on augmente le temps maximum et on recommence l'acquisition des mesures. La deuxième solution consiste à faire signaler à l'analyseur 9 de signaux la fin de chaque réponse. 25 Au final et quel que soit l'option choisie, le module de mesure 7 est configuré pour échantillonner le signal de fuite Si et pour transmettre le signal de fuite échantillonné Se à l'analyseur 9 de signaux. On notera qu'au cas où le signal de fuite Si n'est pas exploitable à cause d'un bruit trop fort, on peut moyenner plusieurs réponses identiques (par exemple une dizaine à quelques dizaine de réponses) pour atténuer le bruit. 3059120 12 Par ailleurs, à l'étape E4, l'analyseur 9 de signaux reçoit le signal de fuite échantillonné Se depuis le module de mesure 5 et analyse ce signal. Plus particulièrement, à l'étape E41, l'analyseur 9 de signaux filtre le signal de fuite échantillonné Se. En effet, la première opération de l'analyse consiste à filtrer les 5 hautes fréquences au-dessus de la fréquence du processeur car l'information de fuite recherchée ne peut pas être dans les gammes hautes de fréquence. Ainsi, on forme un signal filtré Sf selon l'expression suivante : Sf = lowpass_filter(Fp,Se) où Fp représente la fréquence du processeur. 10 A l'étape E42, l'analyseur 9 de signaux sous-échantillonne le signal filtré Sf pour ne pas avoir à manipuler trop d'échantillons en traitant le signal filtré Sf par un filtre interpolateur à une fréquence normalisée Fn. Ainsi, un signal sous-échantillonné Sd est formé selon l'expression suivante : Sd = interpolation_filter(Fn,Sf) 15 A l'étape E43, l'analyseur 9 de signaux synchronise le signal sous-échantillonné Sd en supprimant (par troncature) des séquences de référence Sb et Se aux bornes du signal sous-échantillonné Sd. Ainsi, un signal synchronisé St correspondant au profil courant est formé selon l'expression suivante : St = Sd[Nb,Ne = ]troncate(Sd,Sb,Se) 20 où Nb et Ne sont les rangs du début et de la fin. A l'étape E44, l'analyseur de signaux construit par une recherche d'équivalence (avec un maximum de probabilité) un tableau de comparaison Tc entre le profil courant St et des profils de références Pn stockés dans une base de données de profils Bp. Il existe plusieurs techniques connues pour la recherche d'équivalence dans 25 une base de données comme par exemple la technique d'analyse en composantes principales, la technique d'apprentissage profond (deep-learning) ou beaucoup d'autres. La technique choisie va dépendre de la nature de la cible 13 et de la complexité du logiciel embarqué. Un premier exemple concerne le cas d'une cible 13 ayant un logiciel simple qui 30 ne comporte pas de système d'exploitation OS, qui est de type mono-fil d'exécution 3059120 13 (monothread) et qui comporte très peu de branches. Dans ce cas, l'analyseur 9 de signaux peut être configuré pour utiliser une simple comparaison par un calcul de minimisation. Ainsi, pour chaque profil Pn dans la base de données de profils Bp, l'analyseur 9 de signaux calcule une distance Pd entre le profil courant St et les profils de référence Pn 5 de la manière suivante : Pd[n] = sum,( (Pn[i] - St[i])^2)/L, L étant la longueur des tableaux d'échantillons (i.e. le nombre d'échantillons). Ensuite, l'analyseur 9 de signaux stocke les valeurs Pd[n] dans un tableau de comparaison Tc qui sera ensuite envoyé au calculateur 11 de score. 10 Un deuxième exemple concerne le cas d'une cible 13 ayant un logiciel moyennement complexe ne comportant pas de système d'exploitation OS, qui est de type mono-tâche mais qui peut comporter des branches multiples et intriquées (nested), et qui présente une bonne synchronisation. Dans ce cas, l'analyseur 9 de signaux peut être configuré pour utiliser une technique de calcul de coefficients de corrélation entre le profil 15 courant St et les profils de référence Pn contenus dans la base de données de profils Bp. Les coefficients de corrélation peuvent être calculés selon un corrélateur de type Pearson Cp, de la manière suivante : Cp[n] = pearson_correlator(Pn, St) L'analyseur 9 de signaux stocke ensuite les valeurs Cp[n] dans un tableau de 20 comparaison Tc qui sera ultérieurement envoyé au calculateur de score. Un troisième exemple concerne le cas d'une cible ayant un logiciel complexe comportant un système d'exploitation OS avancé de type linux, de type multi taches et comportant des branches multiples. Dans ce cas, l'analyseur 9 de signaux peut être configuré pour construire une matrice de corrélation croisée Cc (cross-correlation) et pour 25 déterminer la probabilité d'équivalence en calculant la moyenne des coefficients selon l'expression suivante : Cc[n,k] = cross_correlation(k,Pn,St) L'analyseur 9 de signaux calcule ensuite la variance de ces suites de corrélation croisée pour déterminer une probabilité de répétition d'équivalence (nombre de pique de 30 corrélation) selon l'expression suivante : 3059120 14 VAR[n] = variancek(Cc[n,k]) Si le calcul de variance ne suffit pas à discriminer le profil courant par rapport aux profils stockés, on peut avoir recours à une estimation d'équivalence de fonction de répartition (par exemple test de Kolmogorov-Smirnov) entre le profil courant et les profils 5 connus ayant obtenus les meilleures corrélations. Ensuite, l'analyseur 9 de signaux stocke les valeurs VAR[n] dans un tableau de comparaison Tc. Chaque valeur est référencée par un index de profil. Ainsi, le tableau des comparaisons Tc peut comporter soit les valeurs Pd[n], soit les valeurs Cp[n], soit les valeurs VAR[n] selon le choix de la technique de détection 10 d'équivalence utilisée. Avantageusement, l'analyseur 9 de signaux est en outre configuré pour stocker le profil courant St dans la base de données de profils Bp au cas où le profil courant est nouveau. Ceci permet d'enrichir la base de données de profils. A l'étape E5, le calculateur 11 de score reçoit l'index du profil reconnu dans le 15 tableau de comparaison depuis l'analyseur 9 de signaux et attribue un score S courant au message de challenge M courant. Le calculateur 11 est configuré pour entretenir un histogramme d'occurrence comportant le nombre de détections (fourni par l'analyseur) pour chacun des profils connus. Le score S est attribué en extrayant de l'histogramme d'occurrence la fréquence d'occurrence du profil courant St (i.e. le nombre de fois où le 2 0 profil courant a été reconnu dans la base de données de profil Bp). La valeur du score S est alors inversement proportionnel au nombre d'occurrences. Pour cela, le calculateur 11 de score peut par exemple utiliser une technique de probabilité cumulative en disposant de l'occurrence maximum de comparaison Cmax jamais enregistré et cumulé au cours du temps. Ainsi, pour chaque coordonnée du tableau 25 de comparaison Tc, le calculateur de score calcule le score S[n] selon l'expression suivante : S[n] = (Tc[n]-min(Tc))/(Cmax -min(Tc)) si Tc[n] REVENDICATIONS1. Système de détection de vulnérabilité d'un dispositif embarqué, dit cible d'évaluation, caractérisé en ce qu'il comporte : - un générateur (3) de challenge configuré pour générer un message de challenge courant adapté pour tester la vulnérabilité de ladite cible (13) d'évaluation, - un injecteur (5) de challenge configuré pour injecter ledit message de challenge courant dans ladite cible (13) d'évaluation, - un module de mesure (7) configuré pour mesurer à travers un canal auxiliaire un signal de fuite relatif à une réaction de la cible (13) d'évaluation à ladite injection du message de challenge courant, - un analyseur (7) de signaux configuré pour analyser ledit signal de fuite et pour produire un profil courant représentatif dudit message de challenge courant, et - un calculateur (11) de score configuré pour attribuer un score courant au message de challenge courant en fonction du profil courant et pour envoyer ledit score courant au générateur (3) de challenge qui est adapté pour régénérer un nouveau message de challenge sur la base dudit score courant. 2. Système selon la revendication 1, caractérisé en ce que le générateur (3) de challenge est adapté pour générer le message de challenge de manière aléatoire à partir d'un descripteur de protocole ou à partir d'un apprentissage préliminaire tout en utilisant une technique de mutation. 3. Système selon la revendication 2, caractérisé en ce que la technique de mutation est basée sur un algorithme génétique ou sur une fonction de distribution non uniforme. 4. Système selon la revendication 3, caractérisé en ce que l'algorithme génétique est configuré pour : 3059120 16 - classer un ensemble de messages de challenge en fonction de leurs scores respectifs, - combiner deux-à-deux des messages de challenge parmi les messages les mieux classés pour générer des messages de challenge résultants ayant des 5 caractéristiques communes aux deux messages combinés, et - modifier les messages de challenge résultants pour former des nouveaux messages de challenge ayant des performances optimales. 5. Système selon la revendication 3, caractérisé en ce que la fonction de 10 distribution non uniforme est adaptée pour : - utiliser une fonction de distribution à moyenne et variance variables représentatives des messages de challenge, et - pondérer la moyenne et la variance de ladite fonction de distribution en fonction du score pour générer des nouveaux messages de challenge. 15 6. Système selon l'une quelconque des revendications précédentes, caractérisé en ce que l'injecteur (5) de challenge est adapté pour transformer ledit message de challenge avant son injection en une trame adaptée pour être envoyée sur un canal physique de ladite cible d'évaluation. 20 7. Système selon l'une quelconque des revendications précédentes, caractérisé en ce que le module de mesure (7) est configuré pour échantillonner le signal de fuite et pour transmettre le signal de fuite échantillonné (Se) à l'analyseur (9) de signaux. 25 8. Système selon la revendication 7, caractérisé en ce que l'analyseur (9) de signaux est configuré pour : - recevoir le signal de fuite échantillonné (Se) depuis le module de mesure, - filtrer ledit signal de fuite échantillonné (Se) formant un signal filtré (Sf), - sous-échantillonner ledit signal filtré (Sf) formant ainsi un signal sous- échantillonné (Sd), 3059120 17 - synchroniser ledit signal sous-échantillonné (Sd) formant ainsi un signal synchronisé St correspondant au profil courant, et - construire par une recherche d'équivalence un tableau de comparaison (Te) entre le profil courant et des profils de références stockés dans une base de données de 5 profils. 9. Système selon la revendication 7, caractérisé en ce que l'analyseur (9) de signaux est configuré pour stocker le profil courant dans la base de données de profils au cas où ledit profil courant est nouveau. 10 10. Système selon la revendication 9, caractérisé en ce que le calculateur (11) de score est configuré pour attribuer un score courant au message de challenge courant en extrayant d'un histogramme d'occurrence une fréquence d'occurrence du profil courant. 15 11. Système selon l'une quelconque des revendications précédentes, caractérisé en ce que le signal de fuite est un signal sélectionné parmi les signaux suivants : signal électrique de consommation de courant, signal électromagnétique, signal de temps de réponse, et signal de code d'erreur. 20 12. Système selon l'une quelconque des revendications précédentes, caractérisé en ce que le dispositif embarqué (13) est un objet connecté comportant un logiciel. 13. Procédé de détection de vulnérabilité d'un dispositif embarqué, dit cible 25 d'évaluation, caractérisé en ce qu'il comporte les étapes suivantes : - générer un message de challenge courant adapté pour tester la vulnérabilité de ladite cible (13) d'évaluation, - injecter ledit message de challenge courant dans ladite cible d'évaluation, - mesurer à travers un canal auxiliaire un signal de fuite relatif à une réaction 30 de la cible d'évaluation à ladite injection du message de challenge courant, 3059120 18 - analyser ledit signal de fuite et produire un profil courant représentatif dudit message de challenge courant, et - attribuer un score courant au message de challenge courant en fonction du profil courant et envoyer ledit score courant au générateur de challenge qui est adapté 5 pour régénérer un nouveau message de challenge sur la base dudit score courant.