Brevet FR2945134A1 — publié le 20101105

MACHINE DE TEST D'UN PRODUIT SOUS TEST COMPRENANT UN MOYEN DE MEMORISATION ET PROCEDE DE TEST ASSOCIE Domaine technique L'invention concerne une machine de test, pour vérifier le contenu d'un moyen de mémorisation d'un produit sous test. Le produit sous test est par exemple une mémoire, ou un dispositif comprenant une mémoire tel qu'un dispositif de génération de clés cryptographiques, un disque dur externe, etc. Le moyen de mémorisation est par exemple une mémoire de type flash ou de tout autre type. La machine de test selon l'invention est avantageusement utilisée en sortie d'une chaîne de fabrication du produit sous test. Elle peut être utilisée pour un test de conformité pour tout type de produits comprenant des moyens de mémorisation, y compris des équipements de sécurité tels que des dispositifs de génération de clés cryptographiques ou des dispositifs comprenant des moyens pour mettre en oeuvre des procédés de chiffrement de données. Description de la technique antérieure La fabrication d'équipements de sécurité nécessite une confiance de bout en bout entre le vendeur et le client. Dit autrement, le vendeur doit pouvoir garantir au client que le produit qu'il achète est bien conforme au produit qu'il a demandé, même si le produit a été fabriqué par un tiers, un sous-traitant du vendeur par exemple. En particulier, le vendeur doit pouvoir garantir que le contenu des mémoires du produit n'a pas été modifié, altéré ou rendu vulnérable. En particulier, le client doit pouvoir vérifier que le contenu des mémoires des produits qu'il achète est 2 conforme à un contenu attendu, avant de pouvoir personnaliser ou utiliser les produits achetés. Une solution connue pour cela consiste pour le client à tester bit à bit le contenu des mémoires des produits qu'il achète, mais cette solution est beaucoup trop longue à mettre en oeuvre pour une quantité importante de produits comprenant des mémoires de grandes tailles, de l'ordre de quelques mégabits ou plus. Description de l'invention L'invention propose une autre solution, beaucoup plus rapide et au moins aussi efficace. Pour cela, l'invention propose une machine de test d'un produit sous test comprenant un premier moyen de mémorisation mémorisant des premières données. La machine de test selon l'invention comprend : • un moyen pour générer un nombre aléatoire, • un moyen de communication avec le produit sous test, pour transmettre le nombre aléatoire et recevoir un premier message calculé à partir des premières données et du nombre aléatoire, et • un deuxième moyen de mémorisation pour mémoriser des deuxièmes données, • un deuxième moyen de calcul pour calculer un deuxième message à partir des deuxièmes données et du nombre aléatoire, • un moyen pour comparer le premier message et le deuxième message. Les deuxièmes données sont une image attendue des premières données contenues dans le premier moyen de mémorisation du produit sous test. Ainsi, selon l'invention, on compare un deuxième message obtenu à partir des données attendues dans un premier moyen de mémorisation du produit sous test et d'un nombre 3 aléatoire, avec un premier message obtenu à partir des données réellement contenues dans le premier moyen de mémorisation du produit sous test. Comme résultat de la comparaison, le moyen de comparaison peut par exemple fournir un signal de validation si le premier message est identique au deuxième message, c'est-à-dire si le produit sous test et notamment le contenu de son moyen de mémorisation sont conformes à ceux attendus, et / ou un signal d'alerte sinon. En choisissant des moyens de calcul tels que les messages obtenus soient de petite taille (en nombre de bits) par rapport au volume du moyen de mémorisation du produit sous test, la comparaison des messages peut être réalisée rapidement. Egalement, en choisissant des moyens de calcul tels que des moyens cryptographiques, on obtient une garantie supplémentaire sur le contenu du moyen de mémorisation du produit sous test. Ainsi, on peut calculer par exemple un premier message et un deuxième message de type codes d'authentification de message (en anglais HMAC ou keyed- hash message authentication code pour code d'authentification d'une empreinte cryptographique de message avec clé), calculés à partir des premières données et des deuxièmes données respectivement, en utilisant une fonction de hachage cryptographique en combinaison avec le nombre aléatoire utilisé comme une clé. De tels messages permettent de vérifier l'authenticité des données. N'importe quelle fonction itérative de hachage, comme MD5 ou SHA-256, peut être utilisée dans le calcul d'un HMAC. Le message obtenu est de 128 ou 256 bits dans les cas du MD5 et SHA-256. Le test peut ainsi être effectué en quelques secondes. La qualité cryptographique du HMAC (et donc la garantie du contenu du moyen de mémorisation du produit sous test) dépend de la qualité cryptographique de la fonction de 4 hachage et de la taille et la qualité du nombre aléatoire. Afin d'éviter la prédictibilité du message, on utilise un nombre aléatoire différent à chaque test pour chaque produit sous test, voire pour chaque moyen de mémorisation d'un même produit sous test. Pour une meilleure sécurité encore, le volume des premières données est égal à une capacité du deuxième moyen de mémorisation. Ainsi, le contenu complet de la mémoire est vérifié. Selon une variante, le produit sous test comprend un premier moyen de calcul pour recevoir le nombre aléatoire du moyen de communication, pour calculer le premier message et fournir le premier message au moyen de communication. Dans la machine selon l'invention, • le moyen de communication peut également être adapté pour obtenir du produit sous test une version des premières données, et • le deuxième moyen de mémorisation peut également être adapté pour mémoriser une pluralité de versions des deuxièmes données, et sélectionner une version des deuxièmes données en fonction de la version des premières données. Ainsi, la même machine de test peut être utilisée pour tester des produits susceptibles de contenir des premières données différentes les unes des autres. Le premier moyen de mémorisation peut encore être adapté pour utiliser un moyen de calcul spécifique en fonction de la version des premières données si des moyens de calcul différents sont prévus pour des versions différentes des premières données. L'invention concerne également un procédé de test d'un produit sous test comprenant un premier moyen de mémorisation mémorisant des premières données. Le procédé selon l'invention comprend les étapes suivantes, consistant à : • générer un nombre aléatoire, • calculer un premier message, à partir des premières 5 données et du nombre aléatoire, • calculer un deuxième message à partir des deuxièmes données et du nombre aléatoire, • comparer le premier message et le deuxième message. Le procédé selon l'invention compare les premières données et les deuxièmes données à partir d'une comparaison de messages représentatifs des données à comparer, et permet ainsi de vérifier que les premières données contenues dans le produit sous test sont conformes aux données attendues. L e procédé peut également comprendre l'étape suivante, réalisée avant l'étape de calcul du deuxième message et consistant à : • demander une version des premières données et sélectionner des deuxièmes données parmi un ensemble de deuxièmes données associées à la version des premières données. Ainsi, le procédé peut être utilisé pour tester des premières données différentes et donc des produits différents. L'étape de génération d'un nombre aléatoire peut être répétée : • à chaque test d'un nouveau produit sous test et / ou • à chaque test d'un moyen de mémorisation d'un produit sous test comprenant une pluralité de moyens de mémorisation. On améliore ainsi la sécurité du test. Description d'un mode de mise en oeuvre de l'invention L'invention peut être notamment utilisée pour les tests de conformité de produits de sécurité comprenant au 6 moins un moyen de mémorisation telle qu'une mémoire de type flash. Comme dit précédemment, particulièrement pour ce genre de produits, le producteur doit pouvoir garantir au client final que le produit est conforme à un cahier des charges, et notamment que les moyens de mémorisation du produit contiennent uniquement des données fiables et parfaitement identifiées. Ces données correspondent en général à une version "sortie d'usine" (ou version initiale) des logiciels dont la version finale sera installée ultérieurement par le client final. Les versions initiales sont de préférence non opérationnelles et non vulnérables. Le producteur doit pouvoir garantir le produit, y compris si la fabrication du produit et l'initialisation des moyens de mémorisation du produit sont sous-traitées à des entités, personnels et locaux de fabrication, n'ayant pas le niveau de confiance requis. En effet, de telles entités pourraient consulter les logiciels ou les données mémorisées dans les produits et éventuellement les modifier afin de les rendre vulnérables. L'invention permet au producteur de garantir au client le contenu des mémoires, même si le sous-traitant n'a pas le niveau de confiance requis. Le producteur fournit au sous-traitant et au client final les versions initiales de tous les logiciels à mémoriser dans le ou les moyens de mémorisation des produits à fabriquer. Ces versions initiales sont mémorisées dans des fichiers dont la taille est de préférence égale à la taille de la mémoire dans laquelle ils doivent être mémorisés. Si nécessaire, les fichiers peuvent être complétés par des données, choisies de préférence aléatoirement par le producteur lors de la création des fichiers, pour atteindre la taille de la mémoire dans laquelle ils doivent être mémorisés. 7 Plusieurs versions initiales d'un même logiciel peuvent exister, par exemple pour des utilisations ultérieures différentes du même produit. Elles seront distinguées l'une de l'autre par exemple par un numéro ou un code de référence. Lorsque le client reçoit les produits du sous-traitant, le client peut vérifier la conformité des produits et notamment le contenu complet de leurs mémoires à partir des données reçues du producteur à l'aide d'une machine de test et d'un procédé selon l'invention tels que décrits ci-dessus. Le client ou le producteur peuvent aussi faire vérifier la conformité des produits par un tiers de confiance. Pour l'application envisagée, la machine de test utilisée est ici dite "de confiance" : la machine de test est installée dans un local à accès protégé, l'accès à l'application de test est protégée par authentification par carte à puce, le moyen de génération d'un aléa utilise une carte cryptographique sécuritaire, le moyen de mémorisation contient uniquement des données fournies par le producteur et non par le sous-traitant, la machine de test est isolée de tout réseau de communication (réseau public ou privé), etc. Le personnel utilisant la machine de test est également "de confiance" et dispose des autorisations nécessaires pour utiliser la machine de test. La machine de test comprend, comme dit précédemment d'un moyen de mémorisation, de moyens de calculs cryptographiques et de moyens de communication avec le produit à tester. Dans un exemple pratique, la machine de test peut être un PC classique équipé d'un logiciel de test adapté pour la mise en oeuvre d'un procédé selon l'invention, de moyens de calcul cryptographiques, et d'un port externe tel qu'un port USB ou port réseau sur lequel les produits à tester peuvent être connectés. 8 Les versions initiales des logiciels mémorisées dans le moyen de mémorisation de la machine de test sont fournis par le producteur (et non par le sous-traitant). Le moyen de génération du nombre aléatoire de la machine de test est de préférence aussi parfait que possible, c'est-à-dire qu'il fournit des nombres statistiquement les plus aléatoires possibles. Après vérification du contenu du ou des mémoires des produits à tester, les versions opérationnelles des 10 logicielles peuvent être installées en toute sécurité. REVENDICATIONS1. Machine de test d'un produit sous test comprenant un premier moyen de mémorisation mémorisant des premières données, la machine de test comprenant : • un moyen pour générer un nombre aléatoire, • un moyen de communication avec le produit sous test, pour transmettre le nombre aléatoire et recevoir un premier message calculé à partir des premières données et du nombre aléatoire, et • un deuxième moyen de mémorisation pour mémoriser des deuxièmes données, • un deuxième moyen de calcul pour calculer un deuxième message à partir des deuxièmes données et du nombre aléatoire, • un moyen pour comparer le premier message et le deuxième message. 2. Machine selon la revendication 1, dans laquelle le moyen de comparaison est également adapté pour fournir un signal de validation si le premier message est identique au deuxième message. 3. Machine selon l'une des revendications précédentes, dans laquelle un volume des premières données est égal à une capacité de mémorisation du premier moyen de mémorisation. 4. Machine selon l'une des revendications précédentes, comprenant également un premier moyen de calcul pour recevoir le nombre aléatoire du moyen de communication, pour calculer le premier message et fournir le premier message au moyen de communication. 10 5. Machine selon l'une des revendications précédentes, dans laquelle le premier message et le deuxième message sont des codes d'authentification de message, calculés à partir des premières données et des deuxièmes données respectivement, en utilisant une fonction de hachage cryptographique en combinaison avec le nombre aléatoire. 6. Machine selon l'une des revendications précédentes, dans laquelle : • le moyen de communication est également adapté pour obtenir du produit sous test une version des premières données, et • le deuxième moyen de mémorisation est également adapté pour mémoriser une pluralité de versions des deuxièmes données, et sélectionner une version des deuxièmes données en fonction de la version des premières données. 7. Procédé de test d'un produit sous test comprenant un premier moyen de mémorisation mémorisant des premières données, le procédé comprenant les étapes suivantes, consistant à : • générer un nombre aléatoire, • calculer un premier message, à partir des premières données et du nombre aléatoire, • calculer un deuxième message à partir de deuxièmes données et du nombre aléatoire, • comparer le premier message et le deuxième message. 8. Procédé de test selon la revendication 7, comprenant également l'étape suivante, réalisée avant l'étape de calcul du deuxième message et consistant à : • demander une version des premières données et sélectionner des deuxièmes données parmi un ensemble de11 deuxièmes données associées à la version des premières données. 9. Procédé de test selon l'une des revendications 7 5 ou 8, dans lequel l'étape de génération d'un nombre aléatoire est répétée : • à chaque test d'un nouveau produit sous test et / ou • à chaque test d'un moyen de mémorisation d'un produit sous test comprenant une pluralité de moyens de 10 mémorisation. 10. Procédé selon l'une des revendications 7 à 9, dont les étapes sont exécutées à l'aide d'une machine de confiance et par un personnel de confiance. 15