Brevet FR2985342A1 — publié le 20130705

Composant électronique comprenant un module de filtrage et de partitionnement. 1. DOMAINE DE L'INVENTION Le domaine de l'invention est celui de la cryptographie appliquée au domaine de l' embarqué. Plus précisément, l'invention concerne une technique de contrôle d'accès à des ressources matérielles en fonction de critères sécuritaires. L'invention a de nombreuses applications, notamment lorsqu'elle est appliquée au domaine des cartes à puces. 2. ARRIÈRE-PLAN TECHNOLOGIQUE De manière classique, sur une carte à puce, on a eu tendance à protéger l'ensemble des fonctionnalités pour lesquelles des données sensibles sont manipulées. De plus, les protections (ou contre-mesures) sont en général activées dès la mise sous tension de la carte à puce. Effectivement, s'il en était autrement, un attaquant pourrait synchroniser les données collectées suite à la réalisation d'un calcul cryptographique. Cette seule information donnerait à l'attaquant l'opportunité de connaître l'instant précis où mesurer un canal caché ou mettre en oeuvre une attaque par injection de faute. Un inconvénient de cette technique est que l'incorporation de telles contre-mesures induit un surcoût (en taille de mémoire pour le code ou en taille d'implémentation), et une consommation en énergie importante, dégradant en outre les performances d'exécution des opérations cryptographiques. Un autre inconvénient lié à une sécurisation appliquée à l'ensemble des opérations réalisées sur une carte à puce, est que les performances, d'un point de vue temps d'exécution, sont dégradées en comparaison des temps d'exécution des implémentations non sécurisées, ce qui peut être rédhibitoire en pratique pour certaines applications qui doivent être réactives. En outre, rien ne garantit dans les techniques de sécurisation utilisées dans l'état de la technique que celles-ci ne présentent pas des failles « logiques », i.e. dues à des erreurs d'implémentation. 3. EXPOSÉ DE L'INVENTION Dans un mode de réalisation particulier de l'invention, il est proposé un composant électronique comprenant une interface d'entrée/sortie et une pluralité de périphériques matériels, ledit composant étant caractérisé en ce qu'il comprend un module de filtrage et de partitionnement, en interaction avec ladite interface d'entrée/sortie et permettant de contrôler un accès à au moins un périphérique appartenant à ladite pluralité de périphériques matériels. Le principe général de l'invention consiste donc à modifier l'approche classique consistant à sécuriser tous les éléments matériels compris dans un composant, en proposant d'incorporer un module de filtrage et de partitionnement en interaction avec ladite ligne d'entrée/sortie, jouant ainsi le rôle d'un pare-feu positionné en « Front-End » possédant une sécurité prouvée. Par sécurité prouvée, on entend la démonstration que le module de filtrage répond effectivement à des propriétés qui le définissent ou qu'il implémente bien sa spécification. Ainsi, une telle technique permet d'offrir un compromis optimal entre la sécurité et la quantité d'énergie consommée par la carte à puce. Ainsi, une telle technique permet de garantir un niveau de sécurité donné, du fait de la sécurité prouvée dudit dispositif. Ainsi, selon cette approche, la sécurité dudit dispositif étant prouvée, si un tel dispositif permet d'accéder à l'élément appartenant à ladite pluralité de périphériques matériels, l'utilisation qui s'en suit bénéficie, de facto, de la sécurité garantie par ledit module de filtrage. Ainsi, un tel dispositif fournit une fonctionnalité de contrôle conditionnel d'accès à une ressource appartenant à ladite pluralité de périphériques matériels, à sécurité prouvée. Selon un aspect particulier, ledit module de filtrage et de partitionnement comprend des moyens de réception et de transmission de données chiffrées et signées sur ladite interface d'entrée/sortie, et en ce que ledit module comprend des moyens permettant de déchiffrer et de vérifier lesdites données chiffrées et signées préalablement à leur transmission vers un périphérique donné de ladite pluralité de périphériques matériels. Ainsi, le module de filtrage et de partitionnement permet de chiffrer et signer des données à destination d'autres dispositifs en relation avec le composant électronique via l'interface d'entrée/sortie. Le module de filtrage et de partitionnement peut en outre procéder au déchiffrement et à la vérification des signatures concernant les données reçues via l'interface d'entrée/sortie. Selon une caractéristique particulière, ladite pluralité de périphériques matériels est répartie en au moins deux groupes de périphériques matériels en fonction de critères sécuritaires. Selon une caractéristique particulière, un groupe prédéterminé parmi lesdits groupes de périphériques matériels possède un niveau de sécurité élevé et sert de support audit module de filtrage et de partitionnement pour implémenter une fonction de filtrage et de partitionnement. Selon une caractéristique particulière, ledit groupe prédéterminé est en outre accessible à un utilisateur ayant réalisé une authentification réussie. Selon une caractéristique particulière, la preuve de la sécurité, au sens de la correction de son implémentation, dudit composant est apportée à l'aide d'un vérificateur de modèles. Selon une caractéristique particulière, la preuve de la sécurité dudit composant est apportée par un raffinement d'une spécification formelle. Selon une caractéristique particulière, ledit module de filtrage et de partitionnement est assimilable à un automate fini. Selon une caractéristique particulière, ledit module de filtrage et de partitionnement comprend des moyens d'authentification. Selon un mode de réalisation particulier, l'invention se rapporte également à un module sécurisé comprenant un composant électronique tel qu'il a été décrit préalablement. L'invention vise aussi un support d'informations lisible par un processeur de données, et comportant des instructions d'un programme tel que mentionné ci-dessus. Le support d'informations peut être n'importe quelle entité ou dispositif capable de stocker le programme. Par exemple, le support peut comporter un moyen de stockage, tel qu'une ROM, par exemple un CD ROM ou une ROM de circuit microélectronique, ou encore un moyen d'enregistrement magnétique, par exemple une disquette (floppy disc) ou un disque dur. D'autre part, le support d'informations peut être un support transmissible tel qu'un signal électrique ou optique, qui peut être acheminé via un câble électrique ou optique, par radio ou par d'autres moyens. Le programme selon l'invention peut être en particulier téléchargé sur un réseau de type Internet. Plus précisément, le support d'informations peut être un circuit intégré dans lequel le programme est incorporé, le circuit étant adapté pour exécuter ou pour être utilisé dans l'exécution du procédé en question. Selon un mode de réalisation, l'invention est mise en oeuvre au moyen de composants matériels. Dans cette optique, le terme "module" peut correspondre dans ce document à un composant matériel ou à un ensemble de composants matériels. Des composants logiciels peuvent également être mis en oeuvre dans d'autres mode de réalisation. Un composant logiciel correspond à un ou plusieurs programmes d'ordinateur, un ou plusieurs sous-programmes d'un programme, ou de manière plus générale à tout élément d'un programme ou d'un logiciel apte à mettre en oeuvre une fonction ou un ensemble de fonctions, selon ce qui est décrit ci-dessous pour le module concerné. Un tel composant logiciel est exécuté par un processeur de données d'une entité physique (terminal, serveur, etc) et est susceptible d'accéder aux ressources matérielles de cette entité physique (mémoires, supports d'enregistrement, bus de communication, cartes électroniques d'entrées/sorties, interfaces utilisateur, etc). De la même manière, un composant matériel correspond à tout élément d'un ensemble matériel (ou hardware) apte à mettre en oeuvre une fonction ou un ensemble de fonctions, selon ce qui est décrit ci-dessous pour le module concerné. Il peut s'agir d'un composant matériel programmable ou avec processeur intégré pour l'exécution de logiciel, par exemple un circuit intégré, une carte à puce, une carte à mémoire, une carte électronique pour l'exécution d'un micrologiciel (firmware), etc. 4. LISTE DES FIGURES D'autres caractéristiques et avantages de l'invention apparaîtront à la lecture de la description suivante, donnée à titre d'exemple indicatif et non limitatif et de l'unique figure annexée présentant un module de filtrage et de partitionnement selon un mode de réalisation de l'invention. 5. DESCRIPTION DÉTAILLÉE Comme préalablement exposé, dans un mode de réalisation, l'invention se rapporte à un procédé de calculs cryptographique mis en oeuvre dans un composant électronique. On rappelle que l'invention propose une nouvelle solution de sécurisation de composant électronique (tel qu'une carte à puce, un dongle USB ou tout composant électronique que l'on souhaite déverrouillable de façon conditionnelle). Dans la suite, on utilise le terme « carte à puce » à titre d'exemple non limitatif car la présente technique s'applique à tout type de composant électronique. Pour ce faire, l'invention propose d'intercepter les données qui sont échangées entre la carte à puce et un dispositif d'utilisation de la carte à puce (par exemple un terminal de paiement ou un terminal de communication). Cette interception, qui est mise en oeuvre physiquement, permet de déterminer vers quels composants (périphériques) de la carte à puce, les données en entrée seront transmises. De plus, le routage peut être précédé par un filtrage, qui consiste par exemple en une étape préliminaire d' authentification. Plus particulièrement, quand les données en entrée sont des données cryptographiques, elles sont routées vers des composants (ou périphériques) en charge du traitement de ces données alors que lorsque ces données sont des données classiques, elles sont routées vers des composants (ou périphériques) généraux qui sont en charge de la mise en oeuvre des applications installées sur la carte à puce. L'objet de cette séparation stricte des périphériques est de porter les efforts de sécurisation sur certains périphériques. Plus particulièrement, dans l'architecture proposée par l'invention, on propose un partitionnement particulier. Ce partitionnement correspond parfaitement à la segmentation noir/rouge employé dans les doctrines militaires. Les inventeurs ont donc proposé deux zones spécifiques sur le composant. Par définition, la zone standard traite soit des données sensibles chiffrées, soit des données non sensibles et non chiffrées. La zone sécurisée quant à elle traite des données sensibles non chiffrées. Pour que cette distinction ait un sens, les données sensibles sont transmises « chiffrées » et éventuellement « signées » dans la carte à puce. Ces données chiffrées et signées ne sont traitées que dans la zone sécurisée. Le déchiffrement (lorsque des données sensibles pénètrent dans la zone sécurisée) et le chiffrement (lorsque des données sensibles sortent de la zone sécurisée) sont effectués par un module de filtrage et de partitionnement. Cette division du composant électronique permet donc de simplifier la mise en oeuvre les contraintes de sécurité. La figure 1 présente un module de filtrage et de partitionnement selon un mode de réalisation de l'invention. Au sein d'une carte à puce 100, un module 101 de filtrage et de partitionnement selon un mode de réalisation de l'invention, permet de scinder l'ensemble des blocs fonctionnels, connectés par des bus de communication 104, présents sur une telle carte en deux zones 102 et 103. La première zone 102 comprend une unité de calcul 111 (ou CPU, pour «Central Processing Unit» en anglais) dans laquelle se trouve une unité arithmétique et logique (ou ALU, pour « Arithmetic Logic Unit » en anglais), ainsi qu'un ou plusieurs registres de travail. Elle comprend en outre une mémoire vive 112 (ou RAM, pour « Random Access Memory » en anglais), dans laquelle des résultats intermédiaires peuvent être stockés temporairement lors de l'exécution des instructions d'un programme d'ordinateur, ainsi qu'une mémoire particulière 113 qui correspond soit à une mémoire morte effaçable électriquement et programmable (appelée une mémoire EEPROM, pour «Electrically-Erasable Programmable Read-Only Memory») ou soit à une mémoire flash. Enfin, la première zone comprend en outre des périphériques 114 n'étant pas utilisés à des fins cryptographiques. Ainsi, cette première zone 102, peut gérer des données non sensibles, ou des données sensibles mais qui sont chiffrées (et donc protégées). L'unité de calcul 111, la mémoire vive 112, la mémoire particulière 113 et les périphériques 114 peuvent échanger des données via l'utilisation de bus de transfert 110. La deuxième zone 103 comprend l'ensemble des périphériques dédiés à des opérations cryptographiques ou sécuritaires. Au sein de cette zone des données sensibles non chiffrées sont manipulées directement (i.e. les données sont en clair). Seuls les composants au sein de cette zone doivent être protégés contre les attaques par canaux cachés. Par exemple, la deuxième zone 103 peut comprendre des coprocesseurs cryptographiques (par exemple un coprocesseur de chiffrement symétrique 106 DES et/ou AES, et un coprocesseur cryptographique 107 dédié à la réalisation d'opération arithmétique modulaire, à des fins de réalisation de cryptographie asymétrique). La deuxième zone 103 peut comprendre en outre un générateur d'aléa matériel 108 et une zone de mémoire sécurisée 109 (i.e dont l'accès est sécurisé et dans laquelle les données stockées sont chiffrées). L'ensemble de ces unités matérielles peuvent échanger des données via l'utilisation de bus de transfert 105. Dans un mode de réalisation, un co-processeur (ou périphérique) 106, 107, appartenant à la deuxième zone 103 peut être partagé entre le module 101 de filtrage et de partitionnement (encore appelé pare-feu 101) et un utilisateur. Typiquement, le module 101 de filtrage et de partitionnement peut réaliser le filtrage et le partitionnement grâce aux services cryptographiques des éléments ou périphériques appartenant à la deuxième zone 103. Pour ce faire, le module 101 peut s'adresser à un serveur de ressources cryptographiques 104 qui reçoit des commandes cryptographiques et les exécute (par exemple pour réaliser l'authentification d'un utilisateur). Dans un mode de réalisation, un tel serveur de ressources cryptographiques 104 est par exemple un serveur PKCS#11 (pour « Public Key Cryptography Standard») permettant de mutualiser les ressources pour la mise en oeuvre d'opérations cryptographiques. Ceci induit de facto un allégement du coût de production du module 101. Ainsi un tel serveur de ressources cryptographiques 104 permet d'éviter la duplication de périphériques cryptographiques, et offre des fonctionnalités permettant de réaliser, par le module 101, un contrôle d'accès (i.e en permettant la mise à disponibilité de périphériques pour réaliser une authentification par l'utilisation d'algorithmes symétriques, asymétriques, ou protocoles plus élaborés tels que BAC ou EAC (pour «Basic/Extended Access Control ») et, pour un utilisateur convenablement authentifié, un tel serveur offre la possibilité d'utiliser des ressources cryptographiques comprises dans la deuxième zone 103. Remarquons que, dans ce mode de réalisation, les données sensibles sont présentées en entrée de la carte nécessairement de manière chiffrée. Le module 101 est en charge du déchiffrement des données en entrée de la zone 103 et du chiffrement de données en sortie de la zone 103. Le module 101 de filtrage et de partitionnement étant positionné en amont de ces deux zones indépendantes 102 et 103, et étant positionné de sorte qu'il puisse gérer les entrées et les sorties de la carte à puce, il agit comme un routeur sécurisé permettant en fonction des données reçues de sélectionner, de manière sécurisée, les composants à utiliser. Le module 101 se comporte comme un serveur en coupure, qui peut intercepter toutes les requêtes en provenance de la ligne d'entrée/sortie, et vérifier qu'un utilisateur (dans sa définition large) s'authentifie correctement (pour accéder à un service donné). Une fois l'authentification réussie, le module 101 transmet simplement, de façon transparente, les requêtes à la ressource utilisateur. Ainsi, le dispositif peut être assimilable à un pare-feu. Il convient de noter qu'il est possible de prouver la sécurité dudit module 101 de deux manières distinctes : soit via l'utilisation d'un vérificateur de modèles (i.e. « a model checker ») consistant à garantir l'équivalence suivante : une ressource utilisateur est disponible si et seulement si les protocoles de sécurité ont été joués avec succès et qu'aucune erreur de messagerie sécurisée n'est arrivée; soit via l'utilisation de méthodes formelles consistant à obtenir le raffinement d'une spécification formelle, grâce à un atelier de génie logiciel ou un assistant de preuve (e.g. COQ -- http://coq.inria.fr/). Il convient de noter que l'Homme du métier n'aurait pas été incité à utiliser de telles techniques dans le domaine de l'embarqué car, le périmètre de sécurité d'un tel dispositif est beaucoup plus large que celui classiquement choisi. Plus précisément, il convient de remarquer que les systèmes sur puces (dont les cartes à puces) sont conçus par l'Homme du métier comme des systèmes où un (ou des) processeur(s) sont maître(s) sur le bus. Cette architecture a le mérite de la simplicité, ce qui permet d'avoir un niveau d'assurance élevé d'absence de bogues (autrement, avec plusieurs maîtres, il y a des risques de conflit d'accès à un coprocesseur, de famine, ou d'incohérences lors de transactions concurrentes). Il est possible d'imaginer qu'un tel système permettrait d'implémenter une fonctionnalité de filtrage et de partitionnement similaire à celle proposée dans l'invention. Cependant, il serait impossible de prouver formellement le comportement correct de cette fonctionnalité de filtrage et de partitionnement, car un système à base de microprocesseur a un nombre d'états infinis (car il y a une mémoire (de grande taille) et qu'un programme présentant une erreur de conception peut sauter n'importe où dans cette mémoire et donc adopter un comportement aléatoire). Donc, non seulement un code qui implémenterait une telle fonctionnalité de filtrage et de partitionnement dans l'architecture précitée ne pourrait pas être exhaustivement vérifié (par exemple par l'utilisation de "model checkers", à moins d'abstraire, et donc de rendre approximatif, le modèle du processeur). De plus rien ne prouve qu'un code malicieux, exécuté après la fonction de filtrage et de partitionnement, ne puisse pas délivrer de nouveaux droits par une modification illégitime du système d'octroi des droits. Pour permettre une preuve formelle, la présente technique selon l'invention s'appuie sur deux caractéristiques (qui ne sont pas réalisées par les dispositifs de l'état de l'art) : 1 un module (101) circonscrit à états finis ; 2 qui est le premier à démarrer et qui est incontournable au démarrage (i.e. c'est un chargeur d'amorçage ou « bootloader »). Par conséquent, par la première caractéristique, des « models checkers »peuvent être employés. Et par la seconde caractéristique, on s'assure qu'un futur code malveillant ne peut même pas s'exécuter car le module de filtrage 101 ne laisse pas démarrer le processeur généraliste (qui pourrait être à l'origine de l'exécution du code malveillant) compris dans la zone 102 par exemple. A l'inverse, l'homme de l'art qui aurait voulu implémenter un tel démarrage à deux niveaux (passage préliminaire par un module de filtrage, avant de pouvoir utiliser le CPU ou les autres ressources) en aurait été dissuadé, car il lui aurait semblé plus économique d'implémenter la fonctionnalité de filtrage comme une application sur le processeur généraliste. Dans un contexte d'exposition à des attaques sur l'implémentation, il est économiquement raisonnable de passer par cette mécanique (où un module de filtrage vient déverrouiller d'autres ressources), car les zones à sécuriser dans le système sur puce peuvent donc être réduites en taille et en consommation. Pour des systèmes à grande exigence de sécurité, le gain dépasse largement le surcoût lié à l'ajout du module de filtrage. Selon un mode de réalisation particulier de l'invention, le module de filtrage 101 et la zone indépendante 103 (ainsi que les périphériques de cette zone) sont physiquement intégrés au composant. Cela signifie d'une part qu'il n'est pas possible de réaliser une mise à jour de la logique de fonctionnement de ce module. En d'autres termes, le module de filtrage 101 et la zone indépendante 103 sont câblés sur le composant électronique. De plus, le module de filtrage 101 et/ou certains périphériques de la zone indépendante 103 sont des machines à nombre finis d'états. Il n'est ainsi pas possible de s'écarter d'un fonctionnement prédéterminé du module de filtrage et/ou de la zone indépendante. Ainsi, de par l'utilisation du concept de machine à nombre finis d'états, une attaque consistant à fournir, au module de filtrage 101, des données chiffrées forgées artificiellement ne conduit pas à l'obtention d'un résultat exploitable par l'attaquant. En effet, une fois déchiffrées, ces données étant détectées comme incorrectes, elles ne seront pas utilisées par le module de filtrage 101 ou les périphériques de la zone indépendante 103. REVENDICATIONS1. Composant électronique comprenant une interface (115) d'entrée/sortie et une pluralité de périphériques matériels (104...109, 111...114), ledit composant étant caractérisé en ce qu'il comprend un module (101) de filtrage et de partitionnement, en interaction avec ladite interface (115) d'entrée/sortie et permettant de contrôler un accès à au moins un périphérique appartenant à ladite pluralité de périphériques matériels (104...109, 111...114). 2. Composant électronique selon la revendication 1 caractérisé en ce que ledit module (101) de filtrage et de partitionnement comprend des moyens de réception et de transmission de données chiffrées et signées sur ladite interface (115) d'entrée/sortie, et en ce que ledit module comprend des moyens permettant de déchiffrer et de vérifier lesdites données chiffrées et signées préalablement à leur transmission vers un périphérique donné de ladite pluralité de périphériques matériels (104...109, 111...114). 3. Composant électronique l'une quelconque des revendications 1 et 2 caractérisé en ce que ladite pluralité de périphériques matériels (104...109, 111...114) est répartie en au moins deux groupes (102, 103) de périphériques matériels en fonction de critères sécuritaires. 4. Composant électronique selon la revendication 3 caractérisé en ce qu'un groupe prédéterminé (103) parmi lesdits groupes de périphériques matériels posséde un niveau de sécurité élevé et sert de support audit module (101) de filtrage et de partitionnement pour implémenter une fonction de filtrage et de partitionnement. 5. Composant électronique selon la revendication 4 caractérisé en ce que ledit groupe prédéterminé (103) est en outre accessible à un utilisateur ayant réalisé une authentification réussie. 6. Composant électronique selon l'une quelconque des revendications 1 à 5 caractérisé en ce que la preuve de la sécurité, au sens de la correction de son implémentation, dudit composant est apportée à l'aide d'un vérificateur de modèles. 7. Composant électronique selon l'une quelconque des revendications 1 à 5 caractérisé en ce que la preuve de la sécurité dudit composant est apportée par un raffinement d'une spécification formelle. 8. Composant électronique selon l'une quelconque des revendications 1 à 7 caractérisé en ce que ledit module (101) de filtrage et de partitionnement est assimilable à un automate fini. 9. Composant électronique selon l'une quelconque des revendications 1 à 8 caractérisé en ce que ledit module (101) de filtrage et de partitionnement comprend des moyens d'authentification. 10. Module sécurisé comprenant un composant électronique selon l'une quelconque des revendications 1 à 9.15