FR 3018371 A1 20150911 FR 1451924 A 20140310 PROCÉDÉ ET SYSTÈME DE CHIFFREMENT/DÉCHIFFREMENT DE DONNÉES A CLÉ DISTANTE ET VÉRIFICATION PRÉALABLE DE JETON DESCRIPTION DOMAINE TECHNIQUE Le domaine de l'invention est celui de la protection des données numériques. L'invention concerne plus précisément un procédé de chiffrement/déchiffrement de données sur un dispositif hôte au moyen d'une clé secrète conservée dans un dispositif sécurisé et non communiquée au dispositif hôte. ÉTAT DE LA TECHNIQUE ANTÉRIEURE Les systèmes informatiques et électroniques ont recours de manière croissante à la cryptographie. Les quantités de données échangées augmentant de manière exponentielle, il s'avère par ailleurs nécessaire d'être capable de chiffrer des flux de données avec des débits croissants. D'une manière générale, il existe deux familles de composants capables de réaliser les opérations de chiffrement et de déchiffrement, à savoir les microcontrôleurs classiques (MCU pour « MicroController Unit ») et les microcontrôleurs sécurisés (SE pour « Secure Element »). Les microcontrôleurs MCU disposent la plupart du temps de suffisamment de ressources pour chiffrer rapidement une quantité d'information importante, soit en exécutant des algorithmes de chiffrement par du logiciel embarqué, soit à l'aide d'accélérateurs matériels qui permettent de réaliser les opérations cryptographiques sans surcharger l'unité arithmétique et logique du coeur d'un microcontrôleur MCU. Cependant, les microcontrôleurs MCU ne disposent pas de « coffre-fort » leur permettant de stocker des secrets de manière robuste. De fait, ils ne permettent pas à eux seuls d'assurer un haut niveau de sécurité. A l'inverse, les microcontrôleurs SE permettent par construction, tant d'un point de vue logiciel que matériel, de stocker des secrets avec un haut degré de confiance. Ces microcontrôleurs SE sont embarqués dans différents produits de la vie courante tels que les cartes à puces (carte SIM, carte bancaire, badges d'accès, etc.) ou les ordinateurs portables (puce cryptographique TPM « Trusted Platform Module»). Mais si les microcontrôleurs SE sont capables de réaliser des calculs cryptographiques sur des quantités de données restreintes (pour des authentifications, du contrôle d'intégrité par exemple), ils ne sont en revanche pas capables de réaliser des opérations de chiffrement ou de déchiffrement sur des flux de données à haut débit. Différents protocoles dits à « chiffrement à clé distante » (ou protocoles RKEP pour « Remotely Keyed Encryption Protocol ») ont été proposés pour allier les avantages respectifs des microcontrôleurs MCU et SE et réaliser ainsi le chiffrement et le déchiffrement à haut débit avec un haut niveau de sécurité. Selon ces protocoles, un dispositif hôte de type MCU reçoit le texte clair à chiffrer et déroule le protocole RKEP en lien avec un dispositif sécurisé de type SE afin de chiffrer le texte clair sans que la clé secrète ne sorte du dispositif sécurisé de type SE. La demande de brevet US 2009/0006865 Al présente un exemple de protocole RKEP dont le principe général consiste à hacher le message à chiffrer P dans le dispositif hôte puis à transmettre le condensat Z résultant du hachage au dispositif sécurisé. Celui-ci chiffre alors le condensat Z avec la clé secrète K pour générer une clé de message Kp, puis transmet la clé de message Kp au dispositif hôte qui réalise alors le chiffrement du message P avec la clé de message Kp. Ce protocole a pour principal inconvénient d'autoriser une attaque en texte clair choisi selon laquelle l'attaquant dispose de textes qu'il soumet au dispositif sécurisé en tant que condensats Z et dont il en récupère les versions chiffrées Kp. Ce protocole a également pour inconvénient d'exposer les clés de message Kp sur la liaison de communication entre le dispositif hôte et le dispositif sécurisé, ces clés étant dès lors sujettes à interception. Enfin, ce protocole a également pour inconvénient le fait que les calculs de condensats doivent être réalisés pour chaque message par le dispositif hôte. Or ces calculs sont coûteux en cycles et en mémoire. EXPOSÉ DE L'INVENTION L'invention a pour objectif un protocole RKEP à niveau de sécurité amélioré et complexité de calcul réduite. Elle propose pour ce faire un procédé de chiffrement d'un message par un dispositif hôte, comprenant les étapes de : requête par le dispositif hôte d'une clé de message auprès d'un dispositif sécurisé, génération par le dispositif sécurisé de la clé de message à l'aide d'une clé secrète stockée dans le dispositif sécurisé et non communiquée au dispositif hôte, caractérisé en ce qu'il comporte les étapes préalables de : requête par le dispositif hôte d'un jeton auprès du dispositif sécurisé, génération du jeton par le dispositif sécurisé, et transmission du jeton au dispositif hôte, en ce que l'étape de requête par le dispositif hôte d'une clé de message comprend la transmission du jeton, et en ce que l'étape de génération par le dispositif sécurisé de la clé de message est précédée d'une étape de vérification de la légitimité du jeton. L'invention porte également sur un procédé de déchiffrement d'un message par un dispositif hôte, comprenant les étapes de : requête par le dispositif hôte d'une clé de message auprès d'un dispositif sécurisé, - génération par le dispositif sécurisé de la clé de message à l'aide d'une clé secrète stockée dans le dispositif sécurisé et non communiquée au dispositif hôte, caractérisé en ce que le message est accompagné d'un jeton, et en ce que l'étape de génération par le dispositif sécurisé de la clé de déchiffrement du message est précédée d'une étape de vérification de la légitimité du jeton. L'invention s'étend par ailleurs à un système de chiffrement et de déchiffrement de messages, ledit système comprenant un module hôte et un module de sécurité configurés pour la mise en oeuvre de ces procédés. BRÈVE DESCRIPTION DES DESSINS D'autres aspects, buts, avantages et caractéristiques de l'invention apparaîtront mieux à la lecture de la description détaillée suivante de formes de réalisation préférées de celle-ci, donnée à titre d'exemple non limitatif, et faite en référence aux dessins annexés sur lesquels : la figure 1 est un diagramme illustrant une opération de chiffrement selon un premier mode de réalisation de l'invention ; - la figure 2 est un diagramme illustrant une opération de déchiffrement selon le premier mode de réalisation de l'invention - la figure 3 est un diagramme illustrant une opération de chiffrement selon un second mode de réalisation de l'invention la figure 4 est un diagramme illustrant une opération de déchiffrement selon le second mode de réalisation de l'invention ; les figures 5 et 6 illustrent des exemples d'application de l'invention. EXPOSÉ DÉTAILLÉ DE MODES DE RÉALISATION PARTICULIERS L'invention porte sur un procédé de chiffrement/déchiffrement de données sur un dispositif hôte au moyen d'une clé secrète conservée dans un dispositif sécurisé distant et non communiquée au dispositif hôte. Elle s'étend également à un système de chiffrement/déchiffrement de données formé d'un dispositif hôte et d'un dispositif sécurisé configurés pour la mise en oeuvre du procédé. Le dispositif hôte comprend un microcontrôleur de type MCU, tandis que le dispositif sécurisé comprend un microcontrôleur de type SE. Ils sont désignés par ces références sur les figures. Le dispositif hôte MCU et le dispositif sécurisé SE sont reliés entre eux par l'intermédiaire d'une liaison de communication. En référence aux figures 1 et 3 illustrant chacune un procédé de chiffrement selon un mode de réalisation possible de l'invention, le chiffrement met en oeuvre, suite à la réception par le dispositif hôte MCU du message à chiffrer P, une étape de requête RK1, RK2 par le dispositif hôte MCU d'une clé de message Kp auprès du dispositif sécurisé SE, et une étape de génération GK1, GK2 par le dispositif sécurisé SE de la clé de message Kp à l'aide d'une clé secrète KSE, SKSE stockée dans le dispositif sécurisé SE et non communiquée au dispositif hôte MCU. Le dispositif hôte MCU procède ensuite au chiffrement CY1, CY2 du message P à l'aide de la clé de message Kp pour fournir un message chiffré C concaténé à d'autres informations pour permettre son déchiffrement comme cela sera détaillé par la suite. De manière similaire, et en référence aux figures 2 et 4 illustrant chacune un procédé de déchiffrement selon un mode de réalisation possible de l'invention, le déchiffrement met en oeuvre, suite à la réception par le dispositif hôte MCU du message à déchiffrer C, une étape de requête RK1', RK2' par le dispositif hôte MCU d'une clé de message Kp auprès du dispositif sécurisé SE, et une étape de génération GK1, GK2 par le dispositif sécurisé SE de la clé de message Kp à l'aide de la clé secrète KSE, SKSE. Le dispositif hôte MCU procède ensuite au déchiffrement CY1', CY2' du message C à l'aide de la clé de message Kp pour fournir le message déchiffré P. Dans ce cadre, l'invention propose que le chiffrement comprenne les étapes préalables de requête RT1, RT2 par le dispositif hôte MCU d'un jeton T auprès du dispositif sécurisé SE, de génération GT1, GT2 du jeton par le dispositif sécurisé SE, et de transmission du jeton T ainsi généré au dispositif hôte MCU. Par ailleurs, l'étape de requête RK1, RK2 par le dispositif hôte MCU de la clé de message comprend la transmission du jeton T au dispositif sécurisé SE, et l'étape de génération GK1, GK2 par le dispositif sécurisé SE de la clé de chiffrement du message est précédée d'une étape VT1, VT2 de vérification de la légitimité du jeton T. Bien entendu, si le jeton s'avère non légitime, la clé de message requise n'est pas générée et n'est donc pas communiquée au dispositif hôte MCU. S'agissant du déchiffrement selon l'invention, le message C à déchiffrer est accompagné d'un jeton T et l'étape de génération GK1, GK2 par le dispositif sécurisé de la clé de message est précédée d'une étape VT1, VT2 de vérification de la légitimité du jeton, soit par le dispositif hôte lui-même, soit par le module de sécurité auquel cas l'étape de requête RK1', RK2' par le dispositif hôte MCU d'une clé de message comprend la transmission du jeton T. Ce procédé de chiffrement/déchiffrement présente l'avantage de ce que le dispositif hôte MCU procède uniquement au chiffrement du message P ou au déchiffrement du message C, et ne voit pas ses performances dégradées du fait de calculs de valeurs dérivées de ces messages mettant par exemple en oeuvre un hachage. Les opérations de chiffrement et de déchiffrement sont ainsi réalisées de manière plus efficace. Par ailleurs, ce procédé de chiffrement/déchiffrement protège contre l'attaque par texte clair choisi. Un attaquant ne peut en effet pas itérer une grande quantité de jetons pour découvrir de l'information sur la manière de générer une clé de message Kp. Les jetons doivent en effet être légitimes pour rendre possible l'obtention d'une clé de message. La sécurité est ainsi améliorée. Des exemples de réalisation de génération d'un jeton et de vérification de sa légitimité sont les suivants. Dans un premier exemple illustré sur les figures 1 et 2, la génération du jeton GT1 comprend le tirage d'un nombre aléatoire N, la concaténation du nombre aléatoire N avec un identifiant unique UID du dispositif de sécurité et le chiffrement de la concaténation N I UID au moyen d'un algorithme de chiffrement E et de la clé secrète KSE conservée par le dispositif sécurisé SE. Le jeton ainsi généré est transmis au module hôte MCU. Suite à une requête RK1, RK1' d'obtention de la clé de message via laquelle un jeton est transmis, le module de sécurité SE procède à la vérification VT1 de la légitimité du jeton transmis. Il procède pour cela au déchiffrement du jeton pour obtenir le nombre N et l'identifiant UID, et procède à la comparaison de cet identifiant résultant du déchiffrement du jeton avec son véritable identifiant. Dans cet exemple, on utilise un algorithme de chiffrement symétrique E, et on note D l'algorithme de déchiffrement tel que si B=E(A, KSE), alors A=D(B, KSE). Dans un second exemple illustré sur les figures 3 et 4, la génération du jeton GT2 comprend le tirage d'un nombre aléatoire N, et le chiffrement du nombre aléatoire au moyen d'un algorithme de chiffrement A et de la clé secrète SKSE conservée par le dispositif sécurisé SE. Le jeton T concaténé au nombre aléatoire (TI N) est transmis au module hôte. Suite à une requête RK2, RK2' d'obtention de la clé de message via laquelle un jeton concaténé à un nombre est transmis, le module de sécurité SE procède à la vérification VT2 de la légitimité du jeton transmis. Il procède pour cela au déchiffrement du jeton transmis par le module hôte pour obtenir le nombre N, et procède à la comparaison de ce nombre résultant du déchiffrement du jeton avec le nombre concaténé au jeton transmis par le module hôte. Dans cet exemple, on utilise un algorithme de chiffrement asymétrique A, le chiffrement du jeton s'effectuant au moyen d'une clé secrète privée SKSE et son déchiffrement s'effectuant au moyen d'une clé publique PKSE de telle sorte que le module de sécurité SE réalise une signature du nombre N lors de la génération du jeton. Un premier mode de réalisation de l'invention, illustré par les figures 1 et 2, repose sur l'utilisation d'un algorithme de chiffrement symétrique. Suite à la vérification VT1 du jeton T, le module de sécurité procède à la génération GK1 de la clé de message Kp en réalisant, à l'aide de la clé secrète KSE, un hachage H du nombre N extrait lors d'une opération EN du déchiffrement du jeton. La clé de message Kp est ensuite transmise au module hôte qui procède alors au chiffrement (figure 1) du message P au moyen de l'algorithme de chiffrement E et de la clé de message pour obtenir le message chiffré C, ou au déchiffrement (figure 2) du message C au moyen de l'algorithme de déchiffrement D et de la clé de message Kp pour obtenir le message déchiffré P. On notera qu'à l'issue du chiffrement, le message chiffré C est concaténé au jeton T, de sorte que le module hôte dispose d'un jeton légitime lors du déchiffrement. Dans un second mode de réalisation de l'invention illustré par les figures 3 et 4, suite à la vérification VT2 du jeton T, le module de sécurité procède à la génération GK2 de la clé de message Kp en réalisant, à l'aide de la clé secrète privée SKSE, un hachage H du nombre N. La clé de message peut ensuite être transmise au module hôte qui procède alors au chiffrement du message P au moyen de l'algorithme de chiffrement E et de la clé de message pour obtenir le message chiffré C, ou au déchiffrement du message C au moyen de l'algorithme de déchiffrement D et de la clé de message Kp pour obtenir le message déchiffré P. On notera qu'à l'issue du chiffrement, le message chiffré C est concaténé au jeton T et au nombre N, de sorte que le module hôte dispose d'un couple jeton/nombre légitime lors du déchiffrement. Dans une variante de réalisation représentée sur les figures 3 et 4, la clé de message Kp n'est pas transmise en clair du module sécurisé SE au module hôte MCU. La clé de message Kp est ici chiffrée lors d'une opération SGK2 au moyen de l'algorithme asymétrique A et de la clé secrète privée SKSE avant d'être transmise au module hôte. Celui-ci procède alors, avant le chiffrement ou déchiffrement du message, au déchiffrement de la clé de message chiffrée CKp au moyen de l'algorithme asymétrique A et de la clé publique PKSE. En évitant de transmettre la clé de message Kp en clair, la sécurité se trouve renforcée. Bien entendu, la clé publique PKSE doit rester secrète puisqu'un attaquant la possédant pourrait déchiffrer les clés de message chiffrées CKp et retrouver les clés de message K. Cette variante présente en outre l'avantage de ce que le module hôte peut lui- même procéder à la vérification d'un jeton à l'aide de la clé publique PKSE, ce qui s'avère notamment utile en tant qu'étape préalable au déchiffrement d'un message C qui est accompagné d'un jeton. On relèvera que dans les deux modes de réalisation décrits ci-dessus, le module hôte utilise un algorithme symétrique pour chiffrer/déchiffrer les données. L'invention n'est pas limitée à ce choix, mais s'étend également à l'utilisation d'un algorithme asymétrique, même si cela n'est pas privilégié du fait des contraintes que cela entraîne sur le débit de ces opérations. L'invention n'est pas limitée aux procédés de chiffrement et de déchiffrement tels que précédemment décrits, mais s'étend également à des systèmes de chiffrement et de déchiffrement formés d'un module hôte et d'un module de sécurité configurés pour la mise en oeuvre de ces procédés. Des exemples de tels systèmes sont donnés sur les figures 5 et 6 qui illustrent des applications possibles de l'invention. La figure 5 illustre ainsi la mise à jour sécurisée d'un micro-logiciel. Le micro- logiciel mis à jour et chiffré est téléchargé et écrit dans une mémoire F du système S1, par exemple une mémoire flash. Au démarrage du microcontrôleur MCU, le micro-logiciel est déchiffré selon le procédé précédemment décrit puis copié dans une deuxième mémoire R, par exemple une mémoire RAM, afin d'être exécuté. Sur cette figure 5, les traits pleins représentent les flux de données chiffrées, et les traits pointillés représentent les flux de données déchiffrées. La figure 6 illustre quant à elle le chiffrement de données pour les services de type stockage à distance dans un nuage informatique N. Le système S2 selon l'invention prend ici la forme d'un dispositif USB au travers duquel un utilisateur d'un ordinateur PC accède à ses données distantes. Les données sont échangées (trait plein) avec le nuage N de manière chiffrée, le microcontrôleur MCU traitant les données en temps réel selon le procédé précédemment décrit. Le microcontrôleur MCU se charge plus précisément de chiffrer des données qui lui sont transmises (trait pointillé) par l'ordinateur PC avant que celles-ci ne soient stockées dans le nuage. Et il se charge de déchiffrer des données en provenance du nuage avant de les transmettre (trait pointillé) à l'ordinateur PC. L'invention trouve ainsi application dans les systèmes embarqués dans lesquels sont intégrés les microcontrôleurs MCU et SE. L'invention n'est toutefois pas limitée à cette application, et couvre également tout type de liaison entre le MCU et le SE, notamment une liaison distante. REVENDICATIONS1. Procédé de chiffrement d'un message (P) par un dispositif hôte (MCU), comprenant les étapes de : - requête (RK1, RK2) par le dispositif hôte (MCU) d'une clé de message (Kv) auprès d'un dispositif sécurisé (SE), - génération (GK1, GK2) par le dispositif sécurisé (SE) de la clé de message (Kv) à l'aide d'une clé secrète (KSE, SKSE) stockée dans le dispositif sécurisé et non communiquée au dispositif hôte, caractérisé en ce qu'il comporte les étapes préalables de : - requête (RT1, RT2) par le dispositif hôte d'un jeton (T) auprès du dispositif sécurisé, - génération (GT1, GT2) du jeton (T) par le dispositif sécurisé, et transmission du jeton au dispositif hôte, en ce que l'étape de requête (RK1, RK2) par le dispositif hôte d'une clé de message comprend la transmission du jeton, et en ce que l'étape de génération (GK1, GK2) par le dispositif sécurisé de la clé de message est précédée d'une étape de vérification (VT1, VT2) de la légitimité du jeton. 2. Procédé selon la revendication 1, dans lequel le jeton est généré par chiffrement de la concaténation d'un nombre aléatoire (N) et d'un identifiant unique (UID) du dispositif sécurisé au moyen de la clé secrète. 3. Procédé selon la revendication 2, dans lequel l'étape de vérification (VT1) de la légitimité du jeton comprenant le déchiffrement du jeton au moyen de la clé secrète et la comparaison de l'identifiant unique du dispositif sécurisé avec le résultat du déchiffrement du jeton. 4. Procédé selon la revendication 3, comprenant en outre entre l'étape de vérification (VT1) de la légitimité du jeton et l'étape de génération (GK1) de la clé de message, une étape d'extraction (EN) du nombre aléatoire depuis le résultat du déchiffrement du jeton. 5. Procédé selon la revendication 1, dans lequel le jeton est généré par chiffrement d'un nombre aléatoire au moyen de la clé secrète. 6. Procédé selon la revendication 5, dans lequel le nombre aléatoire est transmis au dispositif hôte avec le jeton, l'étape de requête (RK2) par le dispositif hôte d'une clé de message comprend la transmission du jeton et du nombre aléatoire, et l'étape de vérification (VT2) de la légitimité du jeton comprenant le déchiffrement du jeton et la comparaison du nombre aléatoire transmis avec le résultat du déchiffrement du jeton. 7. Procédé selon l'une des revendications 2 à 6, dans lequel la clé de message (Kv) est générée par hachage (H) du nombre aléatoire (N) au moyen de la clé secrète (KsE, SKsE)- 8. Procédé selon la revendication 7, comprenant en outre un chiffrement (SGK2) de la clé de message (Kv) au moyen de la clé secrète (SKsE). 9. Procédé selon la revendication 8, comprenant en outre le déchiffrement par le dispositif hôte de la clé de message chiffrée. 10. Procédé selon l'une des revendications 5 à 9, dans lequel la clé secrète (SKsE) est une clé privée d'un algorithme de chiffrement asymétrique (A). 11. Procédé selon la revendication 10 prise en combinaison avec la revendication 6, dans lequel le déchiffrement du jeton est réalisé au moyen d'une clé publique (PKsE) de l'algorithme de chiffrement asymétrique. 12.Procédé selon la revendication 10 prise en combinaison avec la revendication 9, dans lequel le déchiffrement de la clé de chiffrement du message est réalisé au moyen d'une clé publique (PKsE) de l'algorithme de chiffrement asymétrique. 13.Système de chiffrement d'un message comprenant un dispositif hôte (MCU) et un dispositif sécurisé (SE), lesdits dispositifs étant configurés pour mettre en oeuvre les étapes du procédé selon l'une quelconque des revendications 1 à 12. 14.Procédé de déchiffrement d'un message (C) par un dispositif hôte (MCU), comprenant les étapes de : - requête (RK1', RK2') par le dispositif hôte d'une clé de message (Kv) auprès d'un dispositif sécurisé (SE),- génération (GK1, GK2) par le dispositif sécurisé de la clé de message (Kv) à l'aide d'une clé secrète (KSE, SKSE) stockée dans le dispositif sécurisé et non communiquée au dispositif hôte, caractérisé en ce que le message (C) est accompagné d'un jeton, et en ce que l'étape de génération (GK1, GK2) par le dispositif sécurisé de la clé de déchiffrement du message est précédée d'une étape de vérification (VT1, VT2) de la légitimité du jeton. 15.Système de déchiffrement d'un message comprenant un dispositif hôte (MCU) et un dispositif sécurisé (SE), lesdits dispositifs étant configurés pour mettre en oeuvre les étapes du procédé selon la revendication 14.