Brevet FR3060804A1 — publié le 20180622

DOMAINE DE L'INVENTION La présente invention concerne un procédé de configuration d'un programme cryptographique destiné à être exécuté par un terminal. ETAT DE LA TECHNIQUE Un programme cryptographique utilise de façon conventionnelle des données ayant vocation à rester secrètes, par exemple une clé privée sous-jacente. Certains programmes cryptographiques sont destinés à être exécutés dans des environnements agréés. Par exemple, un programme cryptographique ayant pour fonction la gestion de droits numériques (DRM) est censé n'être exécuté que sous l'environnement d'un utilisateur agréé. Pour deviner les données secrètes d'un programme cryptographique, une attaque dite par - clonage » (« code lifting » en anglais) consiste à copier le programme vers un environnement non sécurisé sous le contrôle complet d'un attaquant. Dans un tel environnement non sécurisé, le programme forme ce qu'on appelle une - boîte blanche » : l'attaquant a accès non seulement aux données d'entrée et de sortie du programme, mais a également accès aux données intermédiaires calculées par le programme, et peut faire de l'ingénierie inverse pour déterminer les fonctions du programme. Pour contrer une telle attaque, il est possible d'implémenter le programme cryptographique d'une façon telle que l'attaquant doive explorer un nombre très important de possibilités pour deviner les données secrètes. Ainsi, même si l'environnement d'exécution du programme est sous le contrôle complet de l'attaquant, ce dernier ne peut pas deviner les données secrètes du programme en un temps raisonnable. Une implémentation de programme suivant ce principe est communément appelé d'implémentation - en boîte blanche ». Toutefois, une implémentation en - boîte blanche » peut s'avérer complexe et ne pas garantir un niveau de sécurité suffisant dans certaines applications. Pour contrer une attaque par clonage avec un niveau de sécurisé amélioré, plusieurs solutions ont été proposées. Une première solution, décrite dans le document US2016/0182472, consiste à mettre en oeuvre un programme cryptographique en partie par un terminal et en partie par une carte SIM. Le fait de confier l'exécution d'une partie du programme à la carte SIM permet de faire dépendre les données de sortie du programme de la carte SIM, permettant ainsi de renforcer la sécurité du traitement cryptographique. 3060804 2 Cette solution présente toutefois comme inconvénient de ralentir l'exécution du programme cryptographique, la carte SIM disposant en effet de ressources matérielles limitées pour exécuter une partie du programme cryptographique. Cette solution a par ailleurs comme autre inconvénient de devoir modifier le 5 fonctionnement interne de la carte SIM, ce qui n'est souvent pas possible étant donné le fait que la configuration d'une carte SIM est généralement sous le contrôle exclusif de l'opérateur qui commercialise la carte SIM. Enfin, une telle solution n'est pas efficacement protégée contre des attaques par rejeu. 10 Une deuxième solution, décrite dans le document US 9,264,899, consiste en un procédé de traitement cryptographique mis en oeuvre au moyen d'un programme cryptographique, le programme étant destiné à être exécuté par un terminal, le terminal étant en outre apte à communiquer avec une carte SIM, le procédé comprenant les étapes suivantes mises en oeuvre par le terminal: 15 - envoi, à la carte SIM, d'une commande d'exécution d'un traitement interne à l'élément sécurisé, - réception d'une donnée de réponse propre à la carte SIM produite par le traitement interne exécuté par la carte SIM, - vérification de la donnée de réponse, et exécution ou non-exécution du programme 20 en fonction du résultat de la vérification. Selon cette solution, le terminal prend en d'autres termes la décision d'exécuter ou pas le programme en fonction de la carte SIM. Cette deuxième solution a cependant pour inconvénient de requérir le partage d'une donnée cryptographique entre la carte SIM et le terminal mobile, complexe de mise en 25 oeuvre. EXPOSE DE L'INVENTION Un but de l'invention est pallier les inconvénients de l'art antérieur cités. Il est dès lors proposé, selon un premier aspect de l'invention, un procédé de 30 configuration d'un programme cryptographique destiné à être exécuté par un terminal, le procédé comprenant les étapes suivantes mises en oeuvre par le terminal: - envoi à un élément sécurisé d'au moins une commande d'exécution d'un traitement interne par l'élément sécurisé, 3060804 3 - réception d'au moins une donnée de réponse produite par le traitement interne exécuté par l'élément sécurisé, la donnée de réponse étant propre à l'élément sécurisé, - mise à jour du programme cryptographique d'après la donnée de réponse reçue, de 5 sorte que des données de sortie produites par le programme cryptographique avant et après la mise à jour soient différentes. Selon le procédé proposé, l'élément sécurisé n'est pas directement utilisé pour exécuter le programme cryptographique lui-même. La donnée de réponse qu'il fournit sert juste de paramètre de mise à jour du programme cryptographique. Comme la donnée de 10 réponse est propre à l'élément sécurisé et imprévisible de l'extérieur, les données de sortie du programme cryptographique dépendent in fine de l'élément sécurisé, ce qui renforce la sécurité du programme cryptographique. De plus, un terminal dispose de ressources matérielles bien supérieures à celles d'un élément sécurisé. Aussi, le programme cryptographique est exécuté par le terminal 15 beaucoup plus rapidement que s'il était en partie exécuté par l'élément sécurisé. En outre, comme les données de sortie fournies par le programme cryptographique changent une fois sa mise à jour effectuée, des attaques par rejeu sont rendues beaucoup plus difficiles. Le procédé selon le premier aspect de l'invention peut être complété à l'aide des 20 caractéristiques suivantes, prises seules ou en combinaison lorsque cela est techniquement possible. La mise à jour du programme cryptographique peut comprendre la modification d'une table de correspondance destinée à être utilisée par le programme cryptographique. La table de correspondance peut être destinée à être utilisée plusieurs fois par le 25 programme cryptographique pour produire les données de sortie. Le procédé peut en outre comprendre des étapes de : - envoi à l'élément sécurisé d'un ensemble de premières données d'entrée de valeurs différentes pour le traitement interne, - réception d'un ensemble de données de réponse propres à l'élément sécurisé, 30 chaque donnée de réponse étant produite par une exécution du traitement interne prenant en entrée l'une des premières données d'entrée, - génération de la table de correspondance modifiée à partir des données de réponse, de sorte qu'une utilisation par le programme cryptographique de la table de correspondance soit représentative d'un traitement comprenant le traitement 35 interne. 3060804 4 Le terminal peut par ailleurs envoyer à l'élément sécurisé une deuxième donnée d'entrée dont la valeur est utilisée au cours de chacune des exécutions du traitement interne. Le procédé peut comprendre en outre une étape de disjonction exclusive d'au moins 5 une première portion de chaque donnée de réponse et d'une troisième donnée d'entrée de valeur constante, de sorte à produire un ensemble de données de sortie, la table de correspondance modifiée mettant en correspondance l'ensemble des données d'entrée et l'ensemble des données de sortie. Il peut être prévu que les données d'entrée soient générées par un serveur et reçues 10 par le terminal, et chaque donnée de sortie être transmise par le terminal au serveur. Le traitement interne peut utiliser par ailleurs une clé secrète propre à l'élément sécurisé, et le serveur être en possession de la clé secrète. La mise à jour du programme cryptographique peut comprendre en outre la modification d'au moins une fonction d'encodage externe destinée à être utilisée par le 15 programme cryptographique. La donnée de réponse peut comprendre une première portion et une deuxième portion, et dans lequel mise à jour du programme cryptographique comprend la modification, sur la base de la première portion, d'une table de correspondance destinée à être utilisée par le programme cryptographique, et la modification, sur la base de la 20 deuxième portion, d'au moins une fonction d'encodage externe destinée à être utilisée également par le programme cryptographique. Le programme cryptographique peut être mis à jour à chaque exécution du programme cryptographique par le terminal, ou bien chaque fois que le programme cryptographique a été exécuté un nombre prédéterminé de fois par le terminal. 25 L'élément sécurisé peut être une carte d'abonné à un réseau cellulaire, par exemple une carte SIM. Il est également proposé, selon un deuxième aspect de l'invention, un procédé d'authentification d'un utilisateur auprès d'un terminal, le procédé comprenant les étapes suivantes: 30 - acquisition par le terminal de données d'épreuve, par exemple des données graphiques acquises par au moins un capteur biométrique, - exécution par le terminal d'un programme cryptographique prenant en entrée les données d'épreuve acquises, de sorte à produire des données de données de sortie chiffrées, 3060804 5 - envoi des données de sortie chiffrées à un serveur configuré pour vérifier si les données d'épreuves correspondent à des données de référence prédéterminées, - mise à jour du programme cryptographique au moyen du procédé selon le premier aspect de l'invention. 5 Il est par ailleurs proposé selon un troisième aspect de l'invention un produit programme d'ordinateur comprenant des instructions de code de programme pour l'exécution des étapes du procédé selon le premier aspect de l'invention pour configurer un programme cryptographique, lorsque ce procédé est exécuté par au moins un processeur, voir l'exécution des étapes du procédé d'authentification selon le deuxième aspect. 10 Il est en outre proposé selon un quatrième aspect de l'invention un terminal comprenant : - un programme cryptographique configuré pour produire au moins une donnée de sortie, lorsque le programme cryptographique est exécuté par le terminal, - une interface de communication avec un élément sécurisé configuré pour exécuter 15 un traitement interne, l'interface de communication étant configurée pour : o envoyer à l'élément sécurisé au moins une commande d'exécution du traitement interne par l'élément sécurisé, o recevoir au moins une donnée de réponse produite par le traitement interne exécuté par l'élément sécurisé, la donnée de réponse étant propre à 20 l'élément sécurisé, - au moins un processeur configuré pour mettre à jour le programme cryptographique d'après la donnée de réponse reçue, de sorte que les données de sortie produites par le programme cryptographique avant et après la mise à jour soient différentes. 25 DESCRIPTION DES FIGURES D'autres caractéristiques, buts et avantages de l'invention ressortiront de la description qui suit, qui est purement illustrative et non limitative, et qui doit être lue en regard des dessins annexés sur lesquels : 30 - La figure 1 représente schématiquement un terminal selon un mode de réalisation de l'invention. - La figure 2 montre un système d'authentification selon un mode de réalisation de l'invention. - La figure 3 montre sous la forme d'un schéma-bloc un traitement interne mis en 35 oeuvre par un élément sécurisé, selon un mode de réalisation. 3060804 6 - La figure 4 montre les étapes d'un procédé de mise à jour d'un programme cryptographique, selon un mode de réalisation de l'invention. - La figure 5 montre les étapes d'un procédé d'authentification utilisant un programme cryptographique, selon un mode de réalisation de l'invention ? 5 Sur l'ensemble des figures, les éléments similaires portent des références identiques. DESCRIPTION DETAILLEE DE L'INVENTION En référence à la figure 1, un terminal 1 comprend au moins un processeur 10 et une interface de communication 12 avec un élément sécurisé 2. 10 L'élément sécurisé 2 est un composant électronique amovible tel qu'une carte d'abonné à un réseau cellulaire (carte SIM). L'interface de communication 12 comprend un logement pour recevoir l'élément sécurisé 2, et au moins un connecteur pour établir un canal de communication de données entre le processeur 10 et l'élément sécurisé 2, lorsque l'élément sécurisé est reçu dans le 15 logement. L'élément sécurisé 2 comprend un microprocesseur, processeur ou circuit configure pour exécuter un traitement interne F sur la base de données fournies par le terminal 1 via l'interface de communication 12 et retournant des données au terminal 1 via l'interface de communication 12. Le traitement interne F utilise au moins une donnée secrète propre à 20 l'élément sécurisé 2, cette donnée secrète étant inconnue du terminal 1. Le terminal 1 comprend par ailleurs une mémoire 14 qui mémorise un programme cryptographique P, et un programme de mise à jour du programme cryptographique P. Le processeur 10 du terminal 1 est adapté pour exécuter le programme cryptographique P et le programme de mise à jour. Le programme cryptographique P et le 25 programme de mise à jour ne sont en revanche pas exécutés par l'élément sécurisé 2. Le terminal 1 comprend en outre une interface d'acquisition 16 de données d'épreuve, tel qu'un capteur biométrique. Le terminal 1 est par un exemple un terminal mobile : smartphone, téléphone, ordinateur portable, etc. 30 Le terminal 1 comprend par ailleurs une interface de communication 18 avec un serveur 3 distant, représenté en figure 2. L'interface de communication 18 avec le serveur 3 distant est par exemple adaptée pour se connecter à un réseau cellulaire R supporté par l'élément sécurisé 2. Est représenté sur la figure 3 un mode de réalisation de traitement interne F 35 exécutable par l'élément sécurisé 2. 3060804 7 Le traitement F prend en entrée : une première donnée d'entrée x et une deuxième donnée d'entrée c. La première donnée d'entrée x est codée sur un nombre de bits prédéterminé égal à na. 5 La deuxième donnée d'entrée c est codée sur un nombre de bits prédéterminé égal à nb. On pose n = na + nb. Le traitement interne F utilise par ailleurs une clé secrète K propre à l'élément sécurisé 2, et mémorisée par ce dernier. Cette clé K n'est pas connue du terminal 1. En 10 revanche, les valeurs des données d'entrée x et c r sont fournies par le terminal 1. Le traitement interne F comprend l'application d'une fonction EK qui calcule une donnée de réponse y sur la base des données x, c et K. La donnée de réponse y est codée sur n = na + nb bits. Cette donnée de réponse y est constituée d'une première portion codée sur nb bits, dite portion utile, et d'une 15 deuxième portion - discard » codée sur na bits. Par exemple, la fonction EK est par exemple une fonction de chiffrement par blocs de type AES ou l'algorithme A3A8 connu de l'homme du métier. De préférence, il est choisi na REVENDICATIONS1. Procédé de configuration d'un programme cryptographique (P) destiné à être exécuté (101) par un terminal (1), le procédé comprenant les étapes suivantes mises en oeuvre par le terminal (1): - envoi (102) à un élément sécurisé (2) d'au moins une commande d'exécution d'un traitement interne (F) par l'élément sécurisé (2), - réception (104) d'au moins une donnée de réponse (y) produite par le traitement interne (F) exécuté par l'élément sécurisé (2), la donnée de réponse (y) étant propre à l'élément sécurisé (2), - mise à jour (106, 108) du programme cryptographique (P) d'après la donnée de réponse (y) reçue, de sorte que des données de sortie produites par le programme cryptographique (P) avant et après la mise à jour soient différentes. 2. Procédé selon la revendication précédente, dans lequel la mise à jour du programme cryptographique (P) comprend la modification d'une table de correspondance destinée à être utilisée par le programme cryptographique (P). 3. Procédé selon la revendication précédente, dans lequel la table de correspondance est destinée à être utilisée plusieurs fois par le programme cryptographique (P) pour produire les données de sortie. 4. Procédé selon l'une des revendications 2 à 3, comprenant des étapes de : - envoi (102) à l'élément sécurisé (2) d'un ensemble de premières données d'entrée (x) de valeurs différentes pour le traitement interne (F), - réception (104) d'un ensemble de données de réponse (y) propres à l'élément sécurisé (2), chaque donnée de réponse (y) étant produite par une exécution du traitement interne (F) prenant en entrée l'une des premières données d'entrée (x), - génération de la table de correspondance modifiée à partir des données de réponse (y), de sorte qu'une utilisation par le programme cryptographique (P) de la table de correspondance soit représentative d'un traitement comprenant le traitement interne (F). 3060804 16 5. Procédé selon la revendication précédente, dans lequel le terminal (1) envoie par ailleurs à l'élément sécurisé une deuxième donnée d'entrée (c) dont la valeur est utilisée au cours de chacune des exécutions du traitement interne (F). 5 6. Procédé selon l'une des revendications 4 à 5, comprenant en outre une étape de disjonction exclusive d'au moins une première portion de chaque donnée de réponse (y) et d'une troisième donnée d'entrée (r) de valeur constante, de sorte à produire un ensemble de données de sortie (z), la table de correspondance modifiée mettant en correspondance l'ensemble des données d'entrée (x) et l'ensemble des données de sortie (z). 10 7. Procédé selon l'une des revendications 4 à 6, dans lequel - les données d'entrée (x, c, r) sont générées par un serveur (3) et reçues par le terminal (1), - chaque donnée de sortie (z) est transmise par le terminal (1) au serveur (3). 15 8. Procédé selon la revendication précédente, dans lequel le traitement interne (F) utilise par ailleurs une clé secrète (K) propre à l'élément sécurisé (2), et dans lequel le serveur (3) est en possession de la clé secrète (K). 20 9. Procédé selon l'une des revendications précédentes, dans lequel la mise à jour du programme cryptographique (P) comprend la modification d'au moins une fonction d'encodage externe destinée à être utilisée par le programme cryptographique (P). 10. Procédé selon l'une des revendications précédentes, dans lequel la donnée de réponse 25 (y) comprend une première portion et une deuxième portion, et dans lequel la mise à jour du programme cryptographique (P) comprend la modification, sur la base de la première portion, d'une table de correspondance destinée à être utilisée par le programme cryptographique (P), et la modification, sur la base de la deuxième portion, d'au moins une fonction d'encodage externe destinée à être utilisée également par le programme 30 cryptographique (P). 11. Procédé selon l'une des revendications précédentes, dans lequel le programme cryptographique (P) est mis à jour à chaque exécution du programme cryptographique (P) par le terminal (1), ou bien chaque fois que le programme cryptographique (P) a été exécuté un nombre prédéterminé de fois par le terminal (1). 3060804 17 12. Procédé selon l'une des revendications précédentes, dans lequel l'élément sécurisé (2) est une carte d'abonné à un réseau cellulaire, par exemple une carte SIM. 5 13. Procédé d'authentification d'un utilisateur auprès d'un terminal (1), le procédé comprenant les étapes suivantes: - acquisition (100) par le terminal (1) de données d'épreuve, par exemple des données graphiques acquises par au moins un capteur biométrique, - exécution (101) par le terminal (1) d'un programme cryptographique (P) prenant en 10 entrée les données d'épreuve acquises, de sorte à produire des données de données de sortie chiffrées, - envoi (112) des données de sortie chiffrées à un serveur (3) configuré pour vérifier si les données d'épreuves correspondent à des données de référence prédéterminées, - mise à jour du programme cryptographique (P) au moyen du procédé selon l'une des 15 revendications précédentes. 14. Produit programme d'ordinateur comprenant des instructions de code de programme pour l'exécution des étapes du procédé selon l'une des revendications précédentes pour configurer un programme cryptographique (P), lorsque ce procédé est exécuté par au moins 20 un processeur (10). 15. Terminal (1) comprenant : - un programme cryptographique (P) configuré pour produire au moins une donnée de sortie, lorsque le programme cryptographique (P) est exécuté par le terminal (1), 25 - une interface de communication (12) avec un élément sécurisé (2) configuré pour exécuter un traitement interne (F), l'interface de communication (12) étant configurée pour : o envoyer à l'élément sécurisé (2) au moins une commande d'exécution du traitement interne (F) par l'élément sécurisé (2), 30 o recevoir au moins une donnée de réponse (y) produite par le traitement interne (F) exécuté par l'élément sécurisé (2), la donnée de réponse (y) étant propre à l'élément sécurisé (2), - au moins un processeur (10) configuré pour mettre à jour le programme cryptographique (P) d'après la donnée de réponse (y) reçue, de sorte que les 3060804 18 données de sortie produites par le programme cryptographique (P) avant et après la mise à jour soient différentes.