Brevet FR3045881A1 — publié le 20170623

PROCEDE DE VERIFICATION DE FONCTIONNALITES D'UN LOGICIEL DESTINE A ETRE EMBARQUE DANS UN COMPOSANT CRYPTOGRAPHIQUE, SYSTEME DOMAINE Le domaine de l'invention concerne les procédés permettant de valider l'état d'une mémoire après l'exécution d'un programme exécutable lorsque ce programme manipule des données cryptées. La validation de la mémoire permet de juger de la bonne exécution d'un programme. Le domaine concerne donc celui des procédés permettant une vérification du bon fonctionnement d'un programme d'ordinateur, également appelé logiciel, avant sa mise en production dans un composant dédié. ETAT DE L'ART Actuellement, lorsqu'un programme est compilé et stocké dans une mémoire physique, il est possible de valider son contenu en comparant l'état de la mémoire avec une référence attendue. Cette opération permet une première validation avant d'autres validations du programme par exemple en testant certaines fonctions. Certains outils tels que des débogueurs, « debugger » dans la terminologie anglo-saxonne, permettent de valider pas à pas un programme compilé sur une mémoire afin de tester l'ensemble des fonctions exécutables. Or pour les programmes comportant des fonctions cryptographiques et/ou pilotant des composants traitant des données cryptographiques, l'accès aux données sauvegardées par de telles fonctions ou de tels composants est généralement protégé et il n'est pas possible de lire le contenu de la mémoire de sorte à vérifier la bonne exécution d'une fonction. En outre, une opération visant à comparer l'état de la mémoire d'un programme avec un état de référence permet rapidement d'obtenir un statut de bon ou de mauvais fonctionnement d'une fonction ou d'un composant. Or, lorsque le composant est un composant cryptographique, l'accès à la mémoire est quasiment impossible compte tenu des mécanismes 3045881 2 de protections naturellement mis en oeuvre pour protéger l'accès et la copie des données chiffrées du composant. Un composant cryptographique permet l'exécution de différentes s fonctions au moyen d'un logiciel embarqué dans le composant cryptographique. Par exemple, une fonction permet de traiter des données non chiffrées afin de les chiffrer. Dans ce cadre, sans accès à la mémoire du composant cryptographique, les tests consistants à valider le bon fonctionnement d'un tel composant cryptographique sont difficiles à mettre 10 en oeuvre. Les principales opérations réalisées par les fonctions cryptographiques ne peuvent être validées simplement lors d'opérations de débogage. En conséquence, la mémoire d'un tel composant étant protégée, 15 l'accès aux données sauvegardées dans une mémoire chiffrée nécessite de tester le composant lorsque ce dernier est dans une configuration opérationnelle. Ces opérations entrainent des coûts supplémentaires et peuvent être longues. 20 Dans ce cadre, les opérations simples de comparaison de l'état de la mémoire sont difficiles à mettre en oeuvre lorsque le composant est un composant cryptographique. Il n'existe pas de moyen de vérifier sur un composant cryptographique que le contenu qui a été inscrit sur la mémoire non volatile 25 est bien conforme aux attentes. Compte tenu du fait qu'il est quasiment impossible de « photographier » la mémoire d'un composant cryptographique pour permettre la réalisation d'opération de débogage, une limitation aux procédés de programmation, de test et de validation de l'exécution du programme 30 apparait aujourd'hui dans les solutions techniques proposées. RESUME DE L'INVENTION L'invention vise à pallier à aux inconvénients précités. 3045881 3 Un objet de l'invention concerne un procédé de validation de l'état d'une mémoire d'un simulateur d'un composant cryptographique capable de sauvegarder des données générées par au moins une fonction cryptographique, caractérisé en ce qu'il comprend : 5 ^ Une première étape réalisée dans le simulateur comportant une première exécution d'au moins une première fonction cryptographique à partir d'une première commande d'instructions par un premier logiciel mis en oeuvre par un premier processeur et au moyen d'une première mémoire (Mi), 10 ladite première exécution d'au moins une fonction cryptographique générant : o un premier état de la première mémoire ; o un premier résultat de la première commande ; ^ une seconde étape réalisée dans un banc de tests comportant 15 une seconde exécution d'au moins une seconde fonction cryptographique à partir d'une seconde commande d'instructions par un second logiciel mis en oeuvre par un second processeur et au moyen d'une seconde mémoire, la première et la seconde fonctions réalisant des mêmes 20 opérations modifiant l'état de leur mémoire respective, ladite seconde exécution d'au moins la seconde commande générant : o un second état de la seconde mémoire ; o un second résultat de la seconde commande. 25 ^ Une étape de validation comportant des comparaisons: o du premier état et du second état ; o du premier résultat et du second résultat. Selon un mode de réalisation, une fonction de conversion 30 d'instructions de la première commande d'instructions génère la seconde commande d'instructions pour l'exécution d'une fonction cryptographique du premier logiciel. Selon un mode de réalisation, la fonction de conversion d'instructions est réalisée par le second logiciel au moyen du second 35 processeur. 3045881 4 Un avantage est de permettre de valider que les instructions définies dans les commandes du banc de test correspondent bien aux instructions qui seront générées dans le composant cryptographique. Un autre avantage est de permettre de lancer les deux fonctions du premier et 5 du second logiciels SW1 et SW2 simultanément. Un autre avantage est de dispenser un opérateur de définir une commande complexe dans l'environnement du simulateur qui semblable à celle d'un composant cryptographique. Il peut alors générer une commande complexe, par exemple dans son formalisme, à partir d'une commande simple. 10 Selon un mode de réalisation, l'ensemble de fonctions cryptographiques réalisées par le premier ou le second logiciel comprend au moins l'une des fonctions suivante : ^ Une fonction d'authentification ; 15 ^ Une fonction de chiffrement ou de déchiffrement ; ^ Une fonction de signature ou de vérification d'une signature ; ^ Une fonction de calcul d'empreintes; ^ Une fonction de stockage de données ; ^ Une fonction de calculs d'intégrité. 20 Selon un mode de réalisation, l'état d'une mémoire comprend les données sauvegardées dans la mémoire après l'exécution d'une commande d'instructions. Selon un mode de réalisation, l'état d'une mémoire comprend 25 l'ensemble des données présentes dans la mémoire après l'exécution d'une commande d'instructions. Selon un mode de réalisation, le résultat d'une fonction cryptographique exécutée au moyen d'une commande comprend la valeur retournée par au moins un calcul d'une fonction cryptographique. 30 Selon un mode de réalisation, le résultat d'une commande comprend au moins l'une des données de la liste suivante : ^ Un acquittement indiquant le succès ou l'échec de l'exécution d'une fonction cryptographique ; 35 ^ Une donnée d'intégrité de la commande ; ^ Une signature numérique ; 3045881 5 ^ Un calcul d'empreintes d'un message crypté ou décrypté ; Selon un mode de réalisation, chaque fonction cryptographique du premier logiciel et du second logiciel comprend des opérations visant à 5 réaliser des calculs sur au moins une valeur comprise dans des instructions de commande d'entrée et à sauvegarder cette valeur dans une mémoire associée au logiciel. Selon un mode de réalisation, chaque fonction cryptographique du 10 premier logiciel comprend : ^ un premier ensemble d'opérations ayant une première influence sur l'état de la mémoire, la première influence étant liée à une modification de l'état de la mémoire ; ^ un second ensemble d'opérations ayant une seconde influence 15 sur au moins une entrée et/ou une sortie d'une interface du premier logiciel, la seconde influence étant liée à la lecture ou la modification de données transitant sur lesdites interfaces ; ^ un troisième ensemble d'opérations n'ayant pas d'influence ni sur la mémoire ni sur une entrée ou une sortie. 20 Un avantage d'une segmentation des opérations de chaque fonction cryptographique du premier logiciel est d'identifier les opérations ayant une influence sur la mémoire ou les interfaces du premier logiciel pour établir des spécifications d'un second logiciel mettant en oeuvre principalement les opérations ayant une influence sur la mémoire ou les 25 interfaces du logiciels SW2. Selon un mode de réalisation, chaque fonction cryptographique du second logiciel comprend le premier et le second ensembles d'opérations. Un avantage est de permettre une reproductibilité des principales opérations d'une fonction cryptographique que l'on souhaite tester tout en 30 contrôlant les opérations ayant uniquement une influence sur les mémoires M-I et M2. Selon un mode de réalisation, chaque fonction cryptographique du second logiciel ne comprend pas le troisième ensemble d'opérations. 35 Un avantage est de permettre de réaliser un second logiciel plus économiquement et plus simplement. 3045881 6 Les différents modes de réalisation de l'invention peuvent se combiner dans différentes variantes de réalisation. 5 Un autre objet de l'invention concerne un système de tests d'un logiciel exécutant un ensemble de fonctions cryptographiques d'un logiciel destiné à être intégré dans un composant cryptographique, caractérisé en ce qu'il comprend : ^ un simulateur comprenant un premier processeur pour 10 l'exécution d'une première fonction cryptographique, une première mémoire enregistrant un nouvel état après l'exécution de la première fonction cryptographique, des premières interfaces pour lire une commande d'exécution de la première fonction cryptographique et pour retourner une valeur du 15 résultat de l'exécution de ladite fonction ; ^ un banc de test comprenant un second processeur pour l'exécution d'une seconde fonction cryptographique comprenant des opérations réalisées par la première fonction cryptographique exécutée dans le simulateur, la première 20 fonction cryptographique correspondant ainsi à la première fonction cryptographique exécutée dans l'environnement du banc de test, une seconde mémoire enregistrant un nouvel état après l'exécution de la seconde fonction cryptographique, des secondes interfaces pour lire une commande d'exécution et 25 pour retourner une valeur du résultat de l'exécution de la seconde fonction ; ^ un calculateur permettant de comparer les états des deux mémoires à la fin de l'exécution de la première et de la seconde fonction et permettant de comparer les valeurs des 30 résultats de chaque fonction. Le système de l'invention permet de mettre en oeuvre toutes les étapes du procédé de l'invention ainsi que tous les modes de réalisation. 35 3045881 7 BREVE DESCRIPTION DES FIGURES D'autres caractéristiques et avantages de l'invention ressortiront à la lecture de la description détaillée qui suit, en référence aux figures annexées, qui illustrent : 5 ^ figure 1 : un schéma fonctionnel des principales étapes du procédé de l'invention. DESCRIPTION Dans la présente invention on entend par « composant 10 cryptographique », un composant comprenant une mémoire, des entrées et des sorties, un processeur tel qu'un microprocesseur et réalisant des fonctions cryptographiques. La mémoire comprend une mémoire volatile telle qu'une RAM et une mémoire non volatile telle qu'une mémoire Flash. La mémoire volatile efface ses données sauvegardées à chaque reboot de la 15 mémoire volatile. La mémoire non volatile sauvegarde les données stockées lors des différentes opérations exécutées par les fonctions cryptographiques. Parmi les fonctions cryptographiques assurées par un composant cryptographique, on trouve par exemple : ^ une fonction d'authentification ; 20 ^ une fonction de chiffrement ou de déchiffrement ; ^ une fonction de signature ou de vérification d'une signature ; ^ une fonction de calcul d'empreintes ; ^ une fonction de stockage de données ; ^ une fonction de calcul de code d'authentification de message, 25 par exemple de message MAC. Cette liste est non exhaustive et est citée à titre d'exemple. Le procédé de l'invention s'applique à tout composant cryptographique qui impose de préserver l'état de la mémoire, c'est-à-dire son contenu, vis-à-vis d'un tiers. Généralement, la mémoire d'un composant 30 cryptographique n'est pas accessible. Lorsqu'elle est accessible, les données sont chiffrées et ne peuvent pas être récupérées « en clair » par un tiers. Le procédé de l'invention permet lors de phases de tests et de validation du logiciel d'un composant cryptographique de vérifier le bon fonctionnement du logiciel malgré la non accessibilité de l'état de la mémoire 35 modifiée par l'exécution d'une fonction cryptographique. 3045881 8 Chaque fonction cryptographique peut être représentée par un ensemble d'instructions permettant, à partir de données d'entrées, de générer des données de sorties comme par exemple une clef chiffrée. 5 Certaines instructions mettent en oeuvre les entrées et les sorties du composant et/ou la mémoire de sorte que l'état de la mémoire ou du composant est modifiée par l'exécution de ces instructions. D'autres instructions ne modifient pas l'état de la mémoire ou certaines entrées ou sorties du composant cryptographique. 10 Un simulateur au sens de la présente invention d'un composant cryptographique est réalisé pour tester les principales fonctions cryptographiques ayant un impact sur l'état de la mémoire du composant ou ses entrées et sorties. Un avantage de l'utilisation d'un simulateur 11 est de pouvoir lire l'état de la mémoire M1 et de le comparer avec un état d'une 15 mémoire M2 d'un banc de test 10 reproduisant les modifications de l'état de la mémoire. Le simulateur 11 permet de définir les accès à la mémoire M1 et d'extraire son contenu pour effectuer des opérations de comparaison. Un premier logiciel SW1 est destiné à être embarqué sur le composant cryptographique. Le premier logiciel SW1 permet de réaliser un 20 ensemble de fonctions cryptographiques. Le premier logiciel SW1 pour être testé est embarqué dans un simulateur. Selon un mode de réalisation de l'invention, lorsque le premier logiciel SW1 est testé et validé, il est alors ensuite embarqué sur un composant cryptographique qui est intégré dans un dispositif de 25 communication tel qu'un mobile. Les entrées et sorties du composant cryptographique sont reproduites dans le simulateur permettant de tester et valider le logiciel SW1. Un second logiciel SW2 est conçu pour reproduire des fonctions 30 simplifiées du premier logiciel SW1. Ainsi le second logiciel SW2 reproduit les principales fonctions cryptographiques du premier logiciel SW1 tout en ne reproduisant pas certains traitements non nécessaires à la validation des fonctions cryptographiques. En effet, le premier logiciel SW1 comporte des instructions n'ayant aucun impact sur l'état de la mémoire ou sur les entrées 35 et sorties. 3045881 9 Le problème que se propose de résoudre l'invention et de définir un protocole de tests, et donc un procédé, permettant de vérifier le bon fonctionnement du premier logiciel SW1 du composant à partir notamment du second logiciel SW2. Les vérifications peuvent être effectuées aux 5 moyens de comparaisons des états des mémoires associées à chacun des logiciels. Le procédé de l'invention permet donc de disposer d'un outil de test simple tout en assurant que les résultats des tests sont représentatifs du fonctionnement opérationnel du premier logiciel SW1 dans le composant cryptographique. 10 La figure 1 représente un schéma fonctionnel du procédé de l'invention. Une première branche 10 représente les différents éléments pour la mise en oeuvre le procédé de l'invention pour valider le premier logiciel 15 SW1 qui est destiné à être embarqué dans un composant cryptographique. A cet effet, la branche 10 comprend un second logiciel SW2 conçu pour : - générer un état de la mémoire M2STATUS après l'exécution d'une fonction cryptographique du premier logiciel SW1 ; - générer au moins un résultat RESULT_2 d'une fonction 20 cryptographique du second logiciel SW2 ; - générer des commandes d'entrée T_CASE conformes à l'environnement du simulateur de la branche 11 pour l'exécution d'une fonction du premier logiciel SW1 correspondante à une fonction du second logiciel SW2. 25 Le second logiciel SW2 permet d'établir des paramètres de comparaison pour valider la bonne exécution de fonctions cryptographiques du premier logiciel SW1. 30 Le premier logiciel SW1 est validé dans un simulateur qui comprend les différents éléments de la branche 11. Une spécification SPEC 1 permet de décrire les fonctions cryptographiques du premier logiciel SW1 intégrant toutes les sous-fonctions nécessaires à l'exécution de chaque fonction cryptographique. Certaines sous-fonctions n'ont aucune influence 3045881 -10- sur l'état de la mémoire, d'autres ne font pas intervenir des paramètres ou valeurs des entrées et des sorties du composant cryptographiques. Dans la présente description on parle indifféremment de sous fonctions d'une fonction cryptographique ou d'opérations d'une fonction s cryptographique. Le second logiciel SW2 est conçu à partir d'une spécification fonctionnelle SPEC 2 simplifiée de la description fonctionnelle SPEC 1 du logiciel SW1. La simplification de la spécification SPEC 1 comprend par exemple la suppression des sous-fonctions d'une fonction cryptographique 10 n'impactant pas l'état de la mémoire M1 ou n'interagissant pas avec les entrées et sorties du composant cryptographique. Le second logiciel SW2 est capable de reproduire l'exécution des sous fonctions de chaque fonction cryptographique ayant notamment une influence sur l'état de la mémoire M1 ou sur les entrées et sorties du 15 composant cryptographique. Le second logiciel SW2 permet donc l'exécution d'au moins une fonction aboutissant à générer un état de la mémoire M2STATUS et un résultat RESULTS_2 d'une fonction équivalente à la fonction du premier logiciel SW1. Un objectif du procédé de l'invention est de comparer les états des mémoires M1 STATUS et M2STATUS après l'exécution des 20 deux fonctions dans chacun des environnements des branches 10 et 11 et de comparer les résultats RESULT_1 et RESULT_2 de ces deux fonctions. La branche 10 peut être entendue comme un banc de tests ou une plateforme de tests ou encore un environnement de tests permettant de 25 valider le premier logiciel SW1. Une fois validé, le premier logiciel SW1 peut alors être mis en production, ce qui signifie : être embarqué dans un composant cryptographique. Les éléments de spécification SPEC 1 et SPEC 2 respectivement 30 de la branche 11 et 10 ne sont pas nécessairement inclus dans les branches dans la mesure où les spécifications des logiciels SW1 et SW2 peuvent être des données indépendantes de l'exécution du procédé de l'invention et peuvent être utilisées pour la conception des logiciel SW1 et SW2 en amont de l'exécution du procédé. 3045881 La représentation des éléments désignant les spécifications SPEC 1 et SPEC 2 permet une meilleure compréhension de l'invention dans la mesure où on comprend que le second logiciel SW2 est compilé de manière indépendante du premier logiciel SW1. Cela constitue un avantage de 5 l'invention. En outre, le second logiciel SW2 est une version simplifiée du premier logiciel SW1 permet de gagner un temps de conception. Les moyens de validation de la branche 10 ne traitent que des sous-fonctions d'une fonction cryptographique ayant une influence sur la mémoire ou sur les entrées et les sorties du simulateur et donc du composant cryptographique. 10 La spécification SPEC 1 permet de concevoir les fonctions cryptographiques du premier logiciel SW1 par exemple aux moyens d'instructions de code dans un langage donné. Selon un mode de réalisation, une partie d'instructions matérielles HW peut être codée en VHDL, une partie 15 d'instructions logicielles SW, notamment la partie algorithmique des fonctions cryptographiques, peut être codée en langage C. Le procédé de la présente invention permet la réalisation et l'exploitation d'un second logiciel SW2 conçu dans un même langage que le premier logiciel SW1 ou encore dans un autre langage. Lorsque ce dernier 20 est conçu dans un autre langage, un avantage est une certaine souplesse de conception de la plateforme de test 10. Par exemple, l'utilisation d'un langage moins contraint que le langage utilisé pour coder le premier logiciel SW1 peut être choisi. A titre d'exemples, des librairies de fonctions de base peuvent être utilisées pour réduire le temps de conception du second logiciel 25 SW2. En outre, un langage plus simple ou plus accessible peut être utilisé de sorte à faciliter la prise en main du second logiciel SW2 ou son développement. Notamment, il peut être programmé dans un environnement de développement moins contraint. En outre, il peut s'affranchir de paramètres 30 de conception du composant cryptographique qui imposent une optimisation du code générée. Enfin, le second logiciel SW2 peut être conçu en s'attachant à ne traiter que les variables et les paramètres liés aux fonctions cryptographiques ce qui ne peut pas être le cas du premier logiciel SW1 qui est testé dans le simulateur et qui est destiné à fonctionner dans le 35 composant cryptographique. 3045881 -12- Une mémoire M1 est représentée dans la branche 11 selon deux configurations : - M1 INT représente l'état de la mémoire M1 du simulateur avant 5 toute exécution d'opérations, c'est-à-dire à l'initialisation du procédé ; - M1 STATUS représente l'état de la mémoire M1 du simulateur après qu'une ou plusieurs opérations aient été effectuées, par exemple, par l'exécution d'au moins une fonction 10 cryptographique. La branche 10 représente une mémoire M2 ou une représentation de la mémoire M2. La mémoire M2 ou sa représentation est représentée selon deux configurations : 15 - M2INIT représente l'état de la mémoire du banc de tests ou la valeur théorique générée à l'initialisation du procédé de l'invention ; - M2STATUS représente l'état de la mémoire du banc de tests ou la valeur générée par le second logiciel SW2 après qu'une ou 20 plusieurs opérations aient été effectuées, par exemple, par l'exécution d'une fonction cryptographique par le second logiciel SW2 correspondante à la fonction exécutée dans le premier logiciel SW1. 25 Les opérations réalisées par le second logiciel SW2 sont essentiellement des opérations ne mettant qu'en oeuvre les sous fonctions d'au moins une fonction cryptographique ayant une influence sur la mémoire M2 du simulateur ou sur les entrées et sorties du simulateur qui sont identiques fonctionnellement aux entrées et sorties du composant 30 cryptographique. A titre d'exemple, une fonction cryptographique peut être une fonction de chiffrement d'une clef numérique. Dans ce cas, une donnée d'entrée du second logiciel SW2 peut être définie au moyen d'une interface par la définition d'une valeur en clair, c'est-à-dire non chiffrée, définissant 35 une clef numérique d'une certaine longueur. 3045881 -13 Le second logiciel SW2 est capable de : - calculer la valeur chiffrée de la clef ; - générer les données correspondant à l'état de la mémoire M2 qui peuvent correspondre à la valeur chiffrée seule ou à la 5 valeur chiffrée seule avec d'autres données à stocker dans la mémoire, comme par exemple un identifiant ; - retourner le résultat RESULT_2 de la fonction exécutée qui peut être par exemple un acquittement indiquant que le chiffrement est réussi. En outre, ce dernier résultat peut 10 comporter une copie de la clef chiffrée par exemple, c'est-à- dire le résultat de la fonction appelée La clef est chiffrée et sauvegardée dans la mémoire M2 lorsque le second logiciel SW2 exécute la fonction cryptographique. On entend 15 également par sauvegarde d'une donnée dans la mémoire M2, le fait de générer une valeur de l'état de la mémoire M2 selon que la mémoire M2 est un composant physique dédié ou un simple fichier. L'état de la mémoire M2 est donc modifié après l'exécution d'une fonction cryptographique, cet état est noté M2STATUS dans la branche 10. 20 De manière optionnelle, le procédé de l'invention comprend une fonction de conversion d'instructions, notée T-CASE, pour générer des instructions CDE_1. Les instructions CDE_1 sont générées à partir d'une commande simple CDE_2 destinée au second logiciel SW2. Un avantage de 25 cette fonction de conversion est de générer une instruction conforme CDE_1 à la nomenclature des instructions utilisées dans le composant cryptographique et donc du simulateur de la branche 11. De ce fait, cette fonction de conversion d'une commande simple CDE_2 en un ensemble d'instructions CDE_1 permet de valider que la commande simple CDE_2 est 30 représentative des instructions permettant d'activer la fonction cryptographique testée du banc de test de la branche 10 et des données d'entrées nécessaires à l'exécution d'au moins une fonction cryptographique. La figure 1 représente une commande simple CDE_2 qui peut être exprimé simplement au moyen d'une interface utilisateur. La commande 35 CDE_2 permet d'activer la fonction cryptographique que l'on souhaite activer 3045881 -14- et permet de définir les données d'entrées de cette fonction dans l'environnement du simulateur de la branche 11. Une commande peut comprendre une instruction ou un ensemble d'instructions. 5 Par ailleurs, la branche 11, représentant le simulateur et donc le comportement conforme du premier logiciel SW1 tel qu'il sera dans le composant cryptographique, comprend une entrée pour activer les fonctions cryptographiques du premier logiciel SW1, notée CDE_1. La notation CDE_1 10 définit la commande comportant les instructions pour exécuter une fonction cryptographique et elle définit également l'interface physique. Cette interface physique comme cela est représentée sur la figure 1 peut être présente dans le simulateur et/ou provenir d'une interface avec la branche 10 par l'intermédiaire d'une fonction de conversion d'instructions T-CASE. 15 Les instructions de la commande CDE_1 peuvent être définies dans un langage complexe et peuvent intégrer des éléments non nécessaires à l'exécution d'une fonction cryptographique donnée dans son environnement. Ce dernier cas peut par exemple se produire lorsqu'une 20 même commande permet d'exécuter plusieurs fonctions cryptographiques simultanément. Le procédé de l'invention permet donc à partir du second logiciel SW2 de générer une commande CDE_1 conforme à l'exécution d'au moins une fonction cryptographique du premier logiciel SW1 dans l'environnement 25 du simulateur. Cette commande CDE_1 est donc générée à l'aide d'une fonction de conversion d'instructions qui peut être incluse dans le second logiciel SW2 ou être intégrée dans un logiciel et un composant dédié comme cela est représenté à la figure 1 par le composant T-CASE. Le composant physique T-CASE représente également la fonction de conversion 30 d'instructions de manière à simplifier la lecture du graphique. Ce composant est capable de lire une commande CDE_2 du banc de test et de l'interpréter de manière à générer une commande CDE_1 conforme à l'environnement du simulateur. Ainsi les deux branches 10 et 11 peuvent être employées simultanément à partir d'une seule commande 3045881 -15- d'entrée CDE_2 de manière à paralléliser les fonctions cryptographiques du premier SW1 et du second SW2 logiciels qui se correspondent. L'état de la mémoire M2STATUS peut être générée à partir d'un s calcul et être sauvegardé dans un fichier ou il peut être inscrit dans une mémoire M2 physique du banc de test. Suite à l'exécution d'une fonction cryptographique, le second logiciel SW2 modifie l'état initial M2INIT en un nouvel état M2STATUS. La conception du second logiciel SW2 est avantageusement codé to à partir de spécifications fonctionnelles identiques à celles du premier logiciel SW1 tout en utilisant par exemple un autre langage ou utilisant un autre environnement ou à partir d'une autre personne. Cette différenciation des moyens de production du premier SW1 et du second SW2 logiciels permet de garantir qu'une même erreur ne soit pas reproduite dans les logiciels SW1 15 et SW2. Grâce à cette différentiation de conception des deux logiciels SW1 et SW2, les tests des fonctions cryptographiques sont indépendants d'une erreur de conception qui serait identique dans le premier logiciel SW1 et dans le second logiciel SW2. Par ailleurs, l'étape de génération des instructions T-CASE permet 20 de tester que les instructions d'entrées sont bien lues conformément à ce qu'elles seront dans le composant cryptographique. De manière à valider une fonction cryptographique du premier logiciel SW1, les états des mémoires M1STATUS et M2STATUS peuvent être 25 comparés à l'issue de l'exécution de la fonction cryptographique testée au moyen d'une fonction de comparaison notée COMP_A. En outre, les résultats RESULT_1 et RESULT_2 des fonctions exécutées respectivement par les logiciels SW1 et SW2 peuvent être comparés par une fonction de comparaison COMP_B. 30 Lorsque les comparaisons concordent, une fonction cryptographique du premier logiciel SW1 peut être validée. 3045881 -16 Un avantage de l'invention est de fournir un procédé permettant de valider la bonne exécution d'une fonction cryptographique alors qu'aucun accès à l'état de la mémoire n'est possible. 5 Un avantage de l'invention est de permettre non seulement de vérifier que les résultats des fonctions cryptographiques exécutées respectivement dans le banc de test 10 et dans le simulateur 11 correspondent mais également de permettre de vérifier l'intégrité de l'état de la mémoire modifié M1 STATUS en la comparant avec l'état de la mémoire 10 M2STATUS respectivement du simulateur et du banc de test. Cette dernière opération de comparaison des états des mémoires du banc de test 10 et du simulateur 11 permet de vérifier que les impacts de l'exécution d'une fonction cryptographique du premier logiciel SW1 sur l'état de la mémoire M1 est identique à l'impact de l'exécution d'une fonction cryptographique du second 15 logiciel SW2 sur la mémoire M2. En effet, lorsqu'une fonction cryptographique du premier logiciel SW1 est exécutée, elle peut impactée des données connexes de la mémoire M1 non directement générées par la fonction cryptographique. Le procédé de l'invention permet donc s'assurer que l'état de la mémoire est bien conforme 20 aux attentes par cette opération de comparaison des états M1 STATUS et M2STATUS. 25 REVENDICATIONS1. Procédé de validation de l'état d'une mémoire (M1) d'un simulateur (11) d'un composant cryptographique capable de sauvegarder des données générées par au moins une fonction cryptographique, caractérisé en ce qu'il comprend : ^ Une première étape réalisée dans le simulateur (11) comportant une première exécution d'au moins une première fonction cryptographique à partir d'une première commande d'instructions (CDE_1) par un premier logiciel (SW1) mis en oeuvre par un premier processeur et au moyen d'une première mémoire (Mi), ladite première exécution d'au moins une fonction cryptographique générant : o un premier état (M1STATUS) de la première mémoire (Mi) ; o un premier résultat (RESULT_1) de la première commande (CDE_1) ; ^ une seconde étape réalisée dans un banc de tests (10) comportant une seconde exécution d'au moins une seconde fonction cryptographique à partir d'une seconde commande d'instructions (CDE_2) par un second logiciel (SW2) mis en oeuvre par un second processeur et au moyen d'une seconde mémoire (M2), la première et la seconde fonctions réalisant des mêmes opérations modifiant l'état de leur mémoire respective (M1, M2), ladite seconde exécution d'au moins la seconde commande (CDE_2) générant : o un second état (M2sTA-rus) de la seconde mémoire (M2) ; o un second résultat (RESULT_2) de la seconde commande (CDE_2). ^ Une étape de validation comportant des comparaisons (COMP_A, COMP_B) : o du premier état (M1STATUS) et du second état (M2sTA-rus) ; o du premier résultat (RESULT_1) et du second résultat (RESULT_2). 3045881 -18 2. Procédé de validation de l'état d'une mémoire (M1) selon la revendication 1, caractérisé en ce qu'une fonction de conversion d'instructions (T-CASE) de la première commande d'instructions 5 (CDE_1) génère la seconde commande d'instructions (CDE_2) pour l'exécution d'une fonction cryptographique du premier logiciel (SW1). 3. Procédé de validation de l'état d'une mémoire (M1) selon la revendication 2, caractérisé en ce que la fonction de conversion io d'instructions (T-CASE) est réalisée par le second logiciel (SW2) au moyen du second processeur. 4. Procédé de validation de l'état d'une mémoire (M1) selon l'une quelconque des revendications 1 à 3, caractérisé en ce que 15 l'ensemble de fonctions cryptographiques réalisées par le premier ou le second logiciel (SW1, SW2) comprend au moins l'une des fonctions suivante : ^ Une fonction d'authentification ; ^ Une fonction de chiffrement ou de déchiffrement ; 20 ^ Une fonction de signature ou de vérification d'une signature ; ^ Une fonction de calcul d'empreintes; ^ Une fonction de stockage de données ; ^ Une fonction de calcul de code d'authentification de message. 25 5. Procédé de validation de l'état d'une mémoire (M1) selon l'une quelconque des revendications précédentes, caractérisé en ce que l'état d'une mémoire (M1 STATUS, M2STATUS) comprend, en outre, l'ensemble des données présentes dans la mémoire après l'exécution d'une commande d'instructions (CDE_1, CDE_2). 30 6. Procédé de validation de l'état d'une mémoire selon l'une quelconque des revendications précédentes, caractérisé en ce que le résultat (RESULT_1, RESULT_2) d'une fonction cryptographique exécutée au moyen d'une commande (CDE_1, CDE_2) comprend la valeur 35 retournée par au moins un calcul d'une fonction cryptographique. 3045881 -19 7. Procédé de validation de l'état d'une mémoire selon l'une quelconque des revendications précédentes, caractérisé en ce que le résultat (RESULT_1, RESULT_2) d'une commande comprend au moins l'une des données de la liste suivante : 5 ^ Un acquittement indiquant le succès ou l'échec de l'exécution d'une fonction cryptographique ; ^ Un acquittement d'une fonction d'authentification ; ^ Un résultat d'une fonction de chiffrement ou de déchiffrement ; ^ Une signature numérique ; 10 ^ Un résultat d'une vérification de signature numérique; ^ Une empreinte ; ^ Un résultat d'une vérification d'empreinte; ^ Un code d'authentification de message (MAC); ^ Un résultat d'une vérification de code d'authentification de 15 message (MAC). 8. Procédé de validation de l'état d'une mémoire selon l'une quelconque des revendications précédentes, caractérisé en ce que chaque fonction cryptographique du premier logiciel (SW1) et du second 20 logiciel (SW2) comprend des opérations visant à réaliser des calculs sur au moins une valeur comprise dans des instructions de commande d'entrée (CDE_1, CDE_2) et à sauvegarder cette valeur dans une mémoire (M1, M2) associée au logiciel (SW1, SW2). 25 9. Procédé de validation de l'état d'une mémoire selon l'une quelconque des revendications précédentes, caractérisé en ce que chaque fonction cryptographique du premier logiciel (SW1) comprend : ^ un premier ensemble d'opérations ayant une première influence sur l'état de la mémoire (M1), la première influence 30 étant liée à une modification de l'état de la mémoire ; ^ un second ensemble d'opérations ayant une seconde influence sur au moins une entrée et/ou une sortie d'une interface du premier logiciel (SW1), la seconde influence étant liée à la lecture ou la modification de données transitant sur lesdites 35 interfaces ; 3045881 - 20 - ^ un troisième ensemble d'opérations n'ayant pas d'influence ni sur la mémoire (M1) ni sur une entrée ou une sortie. 10. Procédé de validation de l'état d'une mémoire selon l'une quelconque 5 des revendications précédentes, caractérisé en ce que chaque fonction cryptographique du second logiciel (SW2) comprend le premier et le second ensemble d'opérations. 11. Procédé de validation de l'état d'une mémoire selon l'une quelconque 10 des revendications précédentes, caractérisé en ce que chaque fonction cryptographique du second logiciel (SW2) ne comprend pas le troisième ensemble d'opérations. 15 12.Système de tests d'un logiciel exécutant un ensemble de fonctions cryptographiques d'un logiciel destiné à être intégré dans un composant cryptographique, caractérisé en ce qu'il comprend : ^ un simulateur (11) comprenant un premier processeur pour l'exécution d'une première fonction cryptographique, une 20 première mémoire enregistrant un nouvel état après l'exécution de la première fonction cryptographique, des premières interfaces pour lire une commande d'exécution (CDE_1) de la première fonction cryptographique et pour retourner une valeur du résultat (RESULT_1) de l'exécution de ladite fonction ; 25 ^ un banc de test (10) comprenant un second processeur pour l'exécution d'une seconde fonction cryptographique comprenant des opérations réalisées par la première fonction cryptographique exécutée dans le simulateur, la première fonction cryptographique correspondant ainsi à la première 30 fonction cryptographique exécutée dans l'environnement du banc de test (10), une seconde mémoire (M2) enregistrant un nouvel état après l'exécution de la seconde fonction cryptographique, des secondes interfaces pour lire une commande d'exécution (CDE_2) et pour retourner une valeur 35 du résultat (RESULT_2) de l'exécution de la seconde fonction ; 3045881 - 21 - ^ un calculateur permettant de comparer les états des deux mémoires (M1sTA-rus, M2STATUS) à la fin de l'exécution de la première et de la seconde fonction et permettant de comparer les valeurs des résultats (RESULT_1, RESULT_2) de chaque 5 fonction.