Brevet FR2821181A1 — publié le 20020823

La présente invention concerne un procédé de création de valeurs aléatoires par un module associé à un microprocesseur. Les valeurs aléatoires créées sont par exemple destinées à la mise en oeuvre de procédés cryptographiques utilisés par exemple pour l'échange sécurisé de données, des opérations d'authentification, des opérations de chiffrement... De tels procédés de création de valeurs aléatoires sont notamment mis en oeuvre dans des cartes à circuit intégré comprenant un microcontrôleur qui comporte un microprocesseur associé à une mémoire et à un module de création de valeurs aléatoires. Lorsque la carte est introduite dans un terminal de lecture, le microprocesseur exécute des opérations d'exploitation par exemple pour assurer la gestion du microcontrôleur et la connexion de celui-ci au terminal de lecture et des opérations de sécurisation par exemple pour opérer une authentification d'un code d'identification d'un utilisateur manipulant le terminal de lecture. Les opérations de sécurisation mettent en oeuvre un algorithme utilisant un nombre prédéterminé de valeurs aléatoires de sorte qu'au début de l'exécution des opérations de sécurisation, le microprocesseur active le module de création de valeurs aléatoires et se met en attente. Le module de création de valeurs aléatoires crée les valeurs aléatoires et stocke celles-ci dans la mémoire. Lorsque le nombre prédéterminé de valeurs aléatoires a été mémorisé, le microprocesseur poursuit l'exécution de l'algorithme et extrait les valeurs aléatoires de la mémoire. Or, le temps de création de chaque valeur aléatoire est relativement long. La durée de mise en attente du microprocesseur est donc importante et ce d'autant plus que le nombre prédéterminé de valeurs aléatoires nécessitées pour l'exécution des opérations de sécurisation est grand. Un but de l'invention est de fournir un moyen permettant de limiter la durée de mise en attente du microprocesseur lors de la création de valeurs aléatoires. En vue de la réalisation de ce but, on prévoit, selon l'invention, un procédé de création d'au moins une valeur aléatoire par un module associé à un microprocesseur agencé pour exécuter successivement au moins une opération d'exploitation et une opération de sécurisation, l'opération de sécurisation utilisant la valeur aléatoire, le procédé comprenant les étapes de : - créer la valeur aléatoire pendant l'opération d'exploitation, - stocker la valeur aléatoire dans une mémoire, - extraire la valeur aléatoire de la mémoire pour exécuter l'opération de sécurisation. Ainsi, la valeur aléatoire est créée tandis que le microprocesseur continue d'exécuter l'opération d'exploitation, et est disponible dans la mémoire au moment où le microprocesseur débute l'opération de sécurisation. La création de la valeur aléatoire s'effectue donc en parallèle de l'exécution de l'opérations d'exploitation par le microprocesseur qu'il n'est dès lors pas nécessaire de mettre en attente lorsque débute l'exécution des opérations de sécurisation. De préférence, le microprocesseur active une possibilité d'interruption par le module de telle manière que la création d'une valeur aléatoire déclenche une interruption de l'exécution de l'opération d'exploitation en cours, le microprocesseur exécutant au cours de l'interruption les étapes de : - stocker la valeur aléatoire dans la mémoire, et avantageusement, - si la mémoire contient un nombre de valeurs aléatoires inférieur à un nombre prédéterminé, maintenir la possibilité d'interruption et reprendre l'exécution de l'opération d'exploitation, le module étant activé pour créer une nouvelle valeur aléatoire pendant l'exécution de l'opération d'exploitation, - et si la mémoire contient un nombre de valeurs aléatoires égal au nombre prédéterminé, désactiver la possibilité d'interruption du microprocesseur par le module et reprendre l'exécution de l'opération d'exploitation. La création de chaque valeur aléatoire provoque ainsi une interruption de l'exécution de l'opération d'exploitation par le microprocesseur qui se charge alors de la mémorisation de cette valeur aléatoire. De préférence encore, le microprocesseur active la possibilité d'interruption et le module est activé pour créer une valeur aléatoire dès que le microprocesseur et le module sont mis sous tension. Ainsi, on dispose d'un maximum de temps pour créer les valeurs aléatoires avant le début de l'opération de sécurisation. Avantageusement, des valeurs aléatoires ayant déjà été mémorisées, le procédé comprend, préalablement à l'étape de mémorisation, l'étape de comparer la valeur aléatoire à mémoriser à au moins une des valeurs aléatoires déjà mémorisées et, lorsque la valeur aléatoire à mémoriser est identique à au moins une des valeurs aléatoires déjà mémorisées, l'étape d'éliminer ou de conserver la valeur aléatoire à mémoriser en relation avec une règle préétablie. Ainsi, il est possible de s'assurer que les valeurs aléatoires contenues dans la mémoire pour être utilisées dans l'opération de sécurisation répondent à une règle, par exemple statistique en fonction d'une probabilité de reproduction de la valeur aléatoire. Ceci peut être en outre utilisé pour vérifier le bon fonctionnement du module de création. Avantageusement encore, la valeur aléatoire à mémoriser est conservée lorsqu'elle n'est pas identique à la dernière valeur aléatoire stockée dans la mémoire. On est ainsi assuré que deux valeurs aléatoires utilisées consécutivement lors de l'exécution de l'opération de sécurisation sont différentes l'une de l'autre. D'autres caractéristiques et avantages de l'invention ressortiront à la lecture de la description qui suit d'un mode de réalisation particulier non limitatif de l'invention. Il sera fait référence à la figure unique annexée représentant schématiquement un microcontrôleur apte à la mise en oeuvre du procédé conforme à l'invention. En référence à la figure, le procédé conforme à l'invention est destiné à être mis en oeuvre au moyen d'un microcontrôleur généralement désigné en 1 qui comprend un microprocesseur 2 associé à une mémoire 3 de type mémoire vive (ou RAM pour Random Access Memory) et à un module électronique 4 de création de valeurs aléatoires. Le microprocesseur 2, la mémoire 3 et le module électronique 4 sont de types connus. Le microprocesseur 2 est agencé pour exécuter un programme mettant en oeuvre des opérations d'exploitation du système pour la gestion du microcontrôleur 1 et des opérations de sécurisation assurant par exemple la mise en oeuvre d'un algorithme d'authentification d'un code d'identification. L'algorithme d'authentification utilise un nombre prédéterminé n de valeurs aléatoires. Dans l'application ici décrite, le microcontrôleur 1 est implanté dans un corps de carte non représenté pour former une carte à circuit intégré telle qu'une carte bancaire, une carte d'identification ou autre. Pour être utilisée, la carte est introduite dans un terminal de lecture qui, de manière connue en ellemême, assure l'alimentation du microcontrôleur 1 et permet l'échange de données avec le microcontrôleur 1. Dès la mise sous tension du microcontrôleur 1, le microprocesseur 2 débute l'exécution des opérations d'exploitation et active une possibilité d'interruption par le module électronique 4 de l'exécution des opérations d'exploitation par le microprocesseur 2. Dès la mise sous tension du microcontrôleur 1, le module électronique 4 est activé pour créer de façon automatique des valeurs aléatoires. Le microprocesseur 2 exécute ensuite les opérations classiques d'exploitation telles que l'envoi de la réponse"carte connectée" (ATR) au terminal de lecture. En parallèle, le module électronique 4 effectue les opérations nécessaires à la création d'une valeur aléatoire. L'achèvement des opérations de création de la valeur aléatoire provoque une interruption de l'exécution de l'opération d'exploitation en cours. Au cours de cette interruption, le microprocesseur 2 va exécuter une routine pour stocker la valeur aléatoire créée. Le microprocesseur 2 commence par comparer la valeur aléatoire à mémoriser à au moins une des valeurs aléatoires déjà contenues dans la mémoire 3 pour, lorsque la valeur aléatoire à mémoriser est identique à au moins une des valeurs aléatoires déjà mémorisées, éliminer ou conserver la valeur aléatoire à mémoriser en relation avec une règle préétablie. En l'espèce, la valeur aléatoire à mémoriser est conservée lorsqu'elle n'est pas identique à la dernière valeur aléatoire stockée dans la mémoire et éliminée dans le cas contraire. D'autres règles sont bien entendu utilisables et notamment des règles statistiques mettant en oeuvre une probabilité de reproduction des valeurs aléatoires ou une règle prévoyant que la valeur aléatoire à mémoriser n'est effectivement mémorisée que si elle n'est pas déjà contenue dans la mémoire 3. La mémoire 3 étant vide, le microprocesseur 2 mémorise la valeur aléatoire dans la mémoire 3. Le microprocesseur active ensuite à nouveau le module électronique 4 pour que celui-ci crée une nouvelle valeur aléatoire et reprend le cours de l'exécution des opérations d'exploitation. Ces étapes sont à nouveau effectuées tant que le nombre de valeurs aléatoires stockées dans la mémoire 3 est inférieur au nombre n. Ainsi, lorsqu'une nouvelle valeur aléatoire est créée, l'achèvement des opérations de création de la valeur aléatoire provoque une interruption de l'exécution des opérations d'exploitation. Alors, comme précédemment, le microprocesseur 2 vérifie d'abord par comparaison que la valeur aléatoire à mémoriser n'est pas identique à la dernière valeur aléatoire mémorisée. Si la valeur aléatoire créée est identique à la dernière valeur aléatoire stockée dans la mémoire 3, le microprocesseur 2 ne mémorise pas cette valeur aléatoire mais maintient la possibilité d'interruption et reprend le cours de l'exécution des opérations d'exploitation. L'exécution sera alors à nouveau interrompue dès qu'une nouvelle valeur aléatoire aura été créée par le module électronique 4 qui est activé pour créer automatiquement des valeurs aléatoires. Si la valeur aléatoire créée n'est pas identique à la dernière valeur aléatoire stockée dans la mémoire 3, le microprocesseur 2 mémorise la valeur aléatoire dans la mémoire 3. A chaque mémorisation d'une valeur aléatoire, le microprocesseur 2 incrémente un nombre correspondant au nombre de valeurs aléatoires mémorisées. Il est ainsi obtenu de manière simple un comptage du nombre de valeurs aléatoires mémorisées. Le comptage peut être également réalisé en décrémentant un nombre correspondant au nombre de valeurs aléatoires restant à mémoriser. Si la mémoire 3 contient un nombre de valeurs aléatoires inférieur au nombre n, l'activation de la possibilité d'interruption est maintenue pour que le module électronique 4 crée une nouvelle valeur aléatoire. Le microprocesseur 2 reprend ensuite le cours de l'exécution des opérations d'exploitation jusqu'à la prochaine interruption. Lorsque la mémoire 3 contient un nombre de valeurs aléatoires égal au nombre prédéterminé n, le microprocesseur désactive la possibilité d'interruption. Le microprocesseur 2 reprend ensuite le cours de l'exécution des opérations d'exploitation. Le module de création de valeurs aléatoires continue lui à créer des valeurs aléatoires. La création des valeurs aléatoires ne provoque alors plus d'interruption du fonctionnement du microprocesseur 2 et les valeurs aléatoires créées sont soit inutilisées soit utilisées dans un autre module électronique par exemple pour perturber électriquement l'alimentation du microprocesseur. Lorsque l'authentification est demandée, le microprocesseur 2 débute l'exécution des opérations de sécurisation. Il exécute alors l'algorithme d'authentification et extrait de la mémoire 3 les valeurs aléatoires qui y ont été stockées. A la fin de la transaction avec le terminal de lecture, la carte est retirée du terminal de lecture. La mémoire 3 est alors effacée. On notera qu'un avantage supplémentaire des interruptions de l'opération d'exploitation est de pouvoir permettre une désynchronisation des temps de traitement, ce qui rend plus difficile une analyse externe du fonctionnement du microprocesseur par des personnes non autorisées. Bien entendu, l'invention n'est pas limitée au mode de réalisation décrit et on peut y apporter des variantes de réalisation sans sortir du cadre de l'invention tel que défini par les revendications. En particulier, bien que le procédé conforme à l'invention ait été décrit en relation avec une carte à circuit intégré, l'invention n'est pas limitée à cette application et est utilisable dans tout système informatique par exemple pour la réalisation d'opérations d'authentification, de chiffrement, de signature ou autre. En outre, l'activation du module électronique 4 peut être effectuée à tout moment de l'exécution des opérations d'exploitation par le microprocesseur, de préférence de telle manière que la plupart ou la totalité des valeurs aléatoires nécessaires aux opérations de sécurisation soit disponible en mémoire au début de l'exécution des opérations de sécurisation. Par ailleurs, il est possible de prévoir que des valeurs aléatoires soient créées et stockées dans la mémoire au fur et à mesure que des valeurs aléatoires sont extraites de celles-ci. Bien que l'étape de mémorisation soit réalisée par le microprocesseur dans le mode de fonctionnement par interruption, la mémorisation peut être réalisée par le module électronique. REVENDICATIONS 1. Procédé de création d'au moins une valeur aléatoire par un module (4) associé à un microprocesseur (2) agencé pour exécuter successivement au moins une opération d'exploitation et une opération de sécurisation, l'opération de sécurisation utilisant la valeur aléatoire, caractérisé en ce qu'il comprend les étapes de : - créer la valeur aléatoire pendant l'opération d'exploitation, - stocker la valeur aléatoire dans une mémoire (3), - extraire la valeur aléatoire de la mémoire pour exécuter l'opération de sécurisation. 2. Procédé selon la revendication 1, caractérisé en ce que, préalablement à la création de la valeur aléatoire, le microprocesseur (2) active une possibilité d'interruption par le module (4) de telle manière que la création de la valeur aléatoire déclenche une interruption de l'exécution de l'opération d'exploitation en cours, le microprocesseur exécutant au cours de l'interruption l'étape de stocker la valeur aléatoire dans la mémoire (3). 3. Procédé selon la revendication 2, caractérisé en ce que, après la mémorisation de la valeur aléatoire, le microprocesseur (2) exécute les étapes de : - si la mémoire contient un nombre de valeurs aléatoires inférieur à un nombre prédéterminé, maintenir la possibilité d'interruption et reprendre l'exécution de l'opération d'exploitation, le module (4) étant activé pour créer une nouvelle valeur aléatoire pendant l'exécution de l'opération d'exploitation, - et si la mémoire contient un nombre de valeurs aléatoires égal au nombre prédéterminé, désactiver la possibilité d'interruption du microprocesseur par le module et reprendre l'exécution de l'opération d'exploitation. 4. Procédé selon la revendication 2 ou la revendication 3, caractérisé en ce que le microprocesseur (2) active la possibilité d'interruption et le module (4) est activé pour créer une valeur aléatoire, dès que le microprocesseur et le module sont mis sous tension. 5. Procédé selon l'une quelconque des revendications 1 à 4, caractérisé en ce que, des valeurs aléatoires ayant déjà été mémorisées, le procédé comprend préalablement à l'étape de mémorisation, l'étape de comparer la valeur aléatoire à mémoriser à au moins une des valeurs aléatoires déjà mémorisées et, lorsque la valeur aléatoire à mémoriser est identique à au moins une des valeurs aléatoires déjà mémorisées, l'étape d'éliminer ou de conserver la valeur aléatoire à mémoriser en relation avec une règle préétablie. 6. Procédé selon la revendication 5, caractérisé en ce que, selon la règle préétablie, la valeur aléatoire à mémoriser est conservée lorsqu'elle n'est pas identique à la dernière valeur aléatoire stockée dans la mémoire.