Dispositif susceptible d'utiliser un logiciel sécurisé interne ou externe et procédé d'utilisation correspondant
Domaine de l'invention La présente invention se rapporte au domaine de la protection des logiciels dits « sécurisés » et à leur renouvellement lorsqu'ils sont installés dans des appareils.
Etat de la technique II est bien connu que tout système dit « sécurisé » risque un jour d'être « cassé ». Cette faille peut être due au fait que des moyens de calculs plus puissants que ceux existants au moment de la conception du système deviennent disponibles pour des « pirates ». Ceci est le cas par exemple lorsque la longueur des clés utilisées pour des opérations cryptographiques dans le système devient trop courte. Le piratage du système peut également venir de nouvelles avances en cryptanalyse ou de nouvelles attaques découvertes. Mais le piratage peut également être du à une faille du système lors de sa conception ou de son implémentation.
Il est donc indispensable lors de la conception de tout système sécurisé de prévoir des moyens pour qu'il puisse se remettre de toute attaque. En particulier, la possibilité de renouveler les logiciels gérant des protocoles sécurisés est maintenant obligatoire sur ce type de système.
Lorsque le logiciel gérant des protocoles ou des opérations sécurisées se trouve dans un processeur intégré dans un appareil, une solution connue pour remplacer ce logiciel lorsqu'une attaque est constatée, consiste à télécharger un nouveau logiciel dans le processeur de l'appareil, ce nouveau logiciel utilisant par exemple des nouveaux algorithmes ou des clés de longueurs plus importantes. Malheureusement, cette solution ne suffit pas car il est possible que le mécanisme de téléchargement lui-même soit cassé. Dans ce cas, le renouvellement du logiciel n'est pas garanti.
Une autre solution consiste à utiliser des processeurs sécurisés détachables (tels que ceux des cartes à puces - ou « smart cards » en anglais) pour stocker tout logiciel gérant des opérations ou des protocoles sécurisés. Ces processeurs sont destinés à être insérés dans des appareils utilisant le logiciel. Lorsqu'il est nécessaire de renouveler le logiciel, on procède au remplacement de tous les processeurs détachables (en pratique, on change les cartes à puce), les processeurs de remplacement contenant le nouveau logiciel.
Cette solution, si elle est plus sûre, présente néanmoins l'inconvénient d'être plus chère (en particulier pour des systèmes à grande échelle dans lesquels beaucoup d'appareils sont déployés chez des utilisateurs) et implique l'utilisation d'une infrastructure complexe pour le renouvellement des cartes.
Exposé de l'invention
Un but de l'invention est de proposer une alternative aux solutions exposées ci-dessus qui résolve les problèmes liés à ces solutions.
L'invention a pour objet un dispositif contenant un module logiciel applicatif susceptible d'utiliser un module logiciel sécurisé, caractérisé en ce qu'il comporte en outre un module chargé de choisir quel module logiciel sécurisé doit être utilisé parmi un module logiciel sécurisé interne au dispositif et un module logiciel sécurisé externe contenu dans un processeur détachable susceptible d'être inséré dans ledit dispositif. Grâce à l'invention, le dispositif peut être commercialisé initialement avec un module logiciel sécurisé interne et donc de coût réduit et ce logiciel sécurisé peut être renouvelé si nécessaire en utilisant des cartes à puces (ou processeurs détachables) contenant une nouvelle version du logiciel.
Selon une caractéristique particulière de l'invention, chaque module logiciel sécurisé possède un numéro de version associé et le module chargé de choisir le module logiciel sécurisé qui doit être utilisé choisit celui dont le numéro de version est le plus récent.
Selon une autre caractéristique de l'invention, le dispositif comporte des moyens de destruction de tout ou partie du module logiciel sécurisé interne destinés à rendre ledit module logiciel sécurisé interne inutilisable lorsque le module chargé de choisir le module logiciel sécurisé qui doit être utilisé choisit un module logiciel sécurisé externe.
L'invention concerne également un procédé d'utilisation de logiciel sécurisé dans un dispositif tel que ci-dessus. Ce procédé comporte les étapes consistant, à chaque fois qu'un processeur détachable est inséré dans le dispositif, à vérifier le numéro de version associé au module logiciel sécurisé externe ; à comparer ce numéro de version à celui du module logiciel sécurisé interne ; et dans le cas où le numéro de version du logiciel sécurisé externe est le plus récent, à n'utiliser pour le module applicatif que le module logiciel sécurisé externe.
Le procédé peut également, dans ce dernier cas, comporter en outre une étape de destruction de tout ou partie du module logiciel sécurisé interne de manière à le rendre définitivement inutilisable.
Brève description des dessins
L'invention sera mieux comprise à la lecture de la description qui va suivre, donnée uniquement à titre d'exemple et faite en se référant aux dessins annexés sur lesquels :
La figure 1 illustre schématiquement les éléments matériels d'un dispositif selon l'invention.
La figure 2 illustre les éléments logiciels d'un dispositif selon l'invention.
La figure 3 représente les différents états dans lesquels peut se trouver un module illustré à la figure 2.
Description détaillée d'un mode de réalisation de l'invention
Sur la figure 1 , nous avons représenté un appareil 1 qui contient un processeur intégré 11 et un lecteur de carte à puce 12. L'appareil est par exemple un décodeur numérique (ou Digital Set-Top Box en anglais) qui permet de décrypter des programmes télévisés transmis sous forme cryptée et réservés aux seuls utilisateurs qui ont payé un abonnement pour les recevoir.
Ce type d'appareil contient en effet du logiciel gérant des opérations cryptographiques ou des protocoles sécurisés, par exemple pour la gestion des messages appelés ECM (de l'anglais « Entitlement Control Message » signifiant message de contrôle des droits) ou EMM (de l'anglais « Entitlement Management Message » signifiant message de gestion des droits). Ces messages sont définis notamment dans la norme ISO/IEC 13818-1. Ils contiennent des paramètres (tels que des clés) de décryptage pour les ECM ou des éléments de mise à jour des droits associés à des décodeurs pour les EMM et doivent donc être gérés par des logiciels sécurisés.
L'invention n'est naturellement pas limitée à ce type d'appareil et s'applique à tout appareil dans lequel au moins un module logiciel doit être sécurisé.
Préférentiellement, le processeur intégré 11 est un processeur sécurisé, c'est à dire protégé contre toute tentative d'accès à son contenu. Il contient dans un exemple de réalisation : une CPU (de l'anglais « Central
Processing Unit » signifiant Unité de traitement central), une mémoire vive
(RAM) et une mémoire morte (ROM) dans laquelle est stocké le logiciel sécurisé.
Le lecteur de carte à puce 12 assure l'interface physique et logique avec un processeur externe 2. Ce processeur détachable 2 est préférentiellement un processeur sécurisé inclus dans une carte à puce.
Selon le principe de l'invention, le processeur intégré 11 contient au départ, c'est à dire au moment où l'appareil 1 est délivré pour la première fois à un utilisateur, un logiciel applicatif classique et une version initiale de logiciel sécurisé. Le logiciel sécurisé du processeur 11 a un numéro de version associé que nous noterons Vembβ .
Tant qu'aucune carte à puce (contenant un processeur détachable) n'est insérée dans le lecteur 12 de l'appareil, le logiciel applicatif de l'appareil 1 utilise le logiciel sécurisé inclus dans le processeur intégré 11 pour ses opérations « sensibles ». Lorsqu'une carte à puce est insérée dans le lecteur 12, alors un module applicatif spécifique du processeur intégré 11 vérifie que la carte insérée est d'un type prédéterminé (notamment contenant un logiciel sécurisé) et est authentique. Si ce n'est pas le cas, la carte insérée est ignorée. Si c'est le cas par contre, le module applicatif spécifique est chargé de vérifier le numéro de version du logiciel contenu dans le processeur détachable 2. Nous noterons ce numéro Vcar .
Le module applicatif spécifique du processeur intégré 11 compare ensuite les numéros de version Vθmbed (du logiciel sécurisé inclus dans le processeur intégré 11) et Vca-d- Si Vcard est supérieur ou égal à Vem θ(j, alors le logiciel applicatif de l'appareil 1 utilisera le logiciel sécurisé du processeur détachable 2 au lieu de celui du processeur intégré 11. Dans le cas contraire (Vcart < Vembed). la présence de la carte dans le lecteur 12 est ignorée.
Lorsque le logiciel sécurisé du processeur détachable 2 est utilisé, le processeur intégré 11 peut, sur requête du processeur détachable 2, lui transmettre certaines données, telles que des clés, nécessaires pour l'utilisation du logiciel sécurisé.
Lorsque le logiciel sécurisé du processeur détachable 2 était utilisé et que ce processeur 2 est retiré du lecteur de carte 12, deux alternatives sont possibles :
- soit le logiciel applicatif de l'appareil 1 utilise à nouveau le logiciel sécurisé du processeur intégré 11 ;
- soit, le logiciel applicatif de l'appareil 1 n'utilise plus le logiciel sécurisé du processeur intégré 11 et ne peut donc plus recevoir de résultat impliquant des opérations sécurisées effectuées par ce logiciel. On peut même prévoir dans ce cas de rendre le logiciel sécurisé du processeur intégré 11 inutilisable par des moyens physique (consistant par exemple à griller un fusible dans le processeur intégré 11) ou logique (commande de destruction de tout ou partie du logiciel sécurisé du processeur intégré 11 par exemple).
Le choix de l'une ou l'autre des alternatives ci-dessus dépend de l'application gérée par le module opérationnel (ou « operating module ») de l'appareil 1.
Sur la figure 2, nous avons représenté les différents modules logiciels utilisés par l'appareil de la figure 1 dans un mode de réalisation préféré de l'invention. Les logiciels qui sont utilisés dans le processeur intégré 11 de la figure 1 comprennent :
- le logiciel applicatif précité de l'appareil 1 noté 110 sur la figure 2 ;
- le logiciel sécurisé interne 112.
Ces deux logiciels communiquent entre eux par l'intermédiaire d'un module API sécurisé 111 (appelé aussi en anglais « Virtual Secure API module », l'acronyme API venant de « Application Programming Interface » signifiant « Interface de Programmation d'Application »). Ce module API sécurisé 111 est également chargé de la communication avec le logiciel 114 de gestion de l'interface du lecteur de carte 12. Selon le principe de l'invention, le module API sécurisé 111 peut se trouver dans l'un des trois états suivants qui sont représentés de manière schématique à la figure 3 :
- l'état « interne » 31 qui signifie que toutes les commandes du logiciel applicatif 110 requérant l'utilisation d'un logiciel sécurisé sont dirigées vers le logiciel sécurisé interne 112 ;
- l'état « externe » 32 qui signifie que toutes les commandes du logiciel applicatif 110 requérant l'utilisation d'un logiciel sécurisé sont dirigées vers le module 114 d'interface du lecteur de carte pour utiliser le logiciel sécurisé 212 inclus dans le processeur détachable 2 ; - l'état « inhibé » 33 dans lequel les commandes du logiciel applicatif
110 requérant l'utilisation d'un logiciel sécurisé sont écartées et ne sont transmises à aucun logiciel sécurisé.
L'état initial du module 111 est l'état interne 31. Lorsque l'on se trouve dans cet état, chaque fois qu'une carte à puce (c'est à dire un processeur détachable 2) est insérée dans le lecteur 12 de l'appareil 1 , les opérations suivantes sont effectuées par le module API sécurisé 111 : 1. Authentifïcation de la carte insérée : le module 111 authentifie la carte et vérifie qu'elle est de la bonne catégorie.
2. Si l'authentification échoue, alors le module 111 transmet un message d'erreur au logiciel applicatif 110 et il reste dans l'état interne.
3. Si l'authentification réussit, alors le module 111 vérifie les numéros de version du logiciel sécurisé inteme 112 (Ve e ) et du logiciel sécurisé 212 de la carte (Va,*.).
4. Si Vem ed > Vcard. ce qui signifie que le logiciel sécurisé le plus récent se trouve dans le processeur intégré de l'appareil 1 , alors le module API sécurisé transmet un autre message d'erreur au logiciel applicatif 110 et il reste dans l'état interne.
5. Si par contre em θd ≤ Vcard, ce qui signifie que le logiciel sécurisé le plus récent se trouve dans le processeur détachable 2, alors le module 111 change d'état pour se trouver dans l'état externe 32 lors d'une transition 312.
Cette transition 312 déclenche un échange de données sécurisé de manière à transférer des données utilisées par le logiciel sécurisé inteme 112 vers le logiciel sécurisé du processeur détachable 2.
Ces données sont mémorisées dans une mémoire sécurisée 113 de l'appareil 1 à laquelle seul le logiciel sécurisé interne 112 peut accéder. Les autres logiciels applicatifs de l'appareil 1, tels le logiciel 110, n'ont pas accès à la mémoire 113. Il existe cependant un module dédié, appelé module d'échange sécurisé 115, qui peut lire les données contenues dans la mémoire 113 pour les transférer de manière sécurisée vers le processeur détachable 2, à travers l'interface de lecteur de carte à puce 114.
Selon un mode de réalisation préféré, on utilise pour la procédure d'échange de données sécurisée un protocole d'échange de clé Diffie-Hellmann authentifié (ou « Authenticated Diffie-Hellman Key exchange protocol ») pour définir une clé de session commune au module d'échange sécurisé 115 et au logiciel sécurisé 212 du processeur détachable 2. Le module d'échange sécurisé 115 chiffre ensuite les données extraites de la mémoire 113 à l'aide de cette clé de session pour les transmettre au processeur détachable 2. Le logiciel sécurisé 212 de ce dernier les déchiffre à l'aide de la même clé de session.
Lorsque le module API sécurisé 111 se trouve dans l'état externe 32 utilisant le logiciel sécurisé 212 et que le processeur détachable 2 est retiré du lecteur de carte 12, alors le module 111 change d'état pour se trouver dans l'état inhibé 33 (transition 323 sur la figure 3). Une transition 321 (représentée en pointillés à la figure 3) de l'état externe 32 vers l'état interne 31 peut aussi être envisagée lors du retrait du processeur détachable 2 dans certains cas où l'on n'a pas besoin d'un niveau de sécurité très élevé mais la solution préférée est la transition automatique 323.
Lorsque le module API sécurisé 111 se trouve dans l'état inhibé 33, à chaque fois qu'une carte à puce est insérée dans le lecteur 12 de l'appareil 1, les opérations suivantes sont effectuées par le module 111 :
1. Authentification de la nouvelle carte insérée : le module 111 authentifie la carte et vérifie qu'elle est de la bonne catégorie. 2. Si l'authentification échoue, alors le module 111 transmet un message d'erreur au logiciel applicatif 110 et il reste dans l'état inhibé.
3. Si l'authentification réussit, alors le module 111 vérifie les numéros de version du logiciel sécurisé inteme 112 (Vem ed) et du logiciel sécurisé 212 de la carte nouvellement insérée (Vcaπi). 4. Si Vembe Vcar , ce qui signifie que le logiciel sécurisé le plus récent se trouve dans le processeur intégré de l'appareil 1 , alors le module API sécurisé transmet un autre message d'erreur au logiciel applicatif 110 et il reste dans l'état inhibé.
5. Si par contre Vem βd < Vcar , ce qui signifie que le logiciel sécurisé le plus récent se trouve dans le processeur détachable 2, alors le module 111 change d'état pour se trouver dans l'état externe 32 lors d'une transition 332.
On notera que cette transition ne déclenche pas un processus d'échange de données sécurisé comme la transition 312. Il faut dans ce cas prévoir une mise à jour des données sécurisées selon un autre mécanisme. Par exemple, ces données sont directement insérées dans le nouveau processeur détachable en même temps que la version plus récente du logiciel sécurisé.
L'invention n'est naturellement pas limitée aux exemples qui viennent d'être décrits. En particulier, il est possible dans un autre mode de réalisation que le logiciel sécurisé interne 112 et la mémoire sécurisée 113 soient inclus dans une CPU interne sécurisée dédiée et que les autres logiciels tel le logiciel applicatifs 110 et le module API sécurisé 111 soient inclus dans une autre CPU.