Brevet FR3050847A1 (20171103)
REVENDICATIONS1) Procédé d'optimisation d'écritures en mémoires dans un dispositif mettant en oeuvre une pluralité de modules logiciels, un premier module logiciel comprenant des fonctions manipulant des données confidentielles, un troisième module logiciel permettant à des fonctions d'un deuxième module logiciel, dites fonctions client, d'appeler des fonctions du premier module logiciel, dites fonctions de cryptographie, le dispositif comprenant une mémoire vive (112) divisée en une pluralité de zones mémoires, une première zone mémoire (1121) de la pluralité étant sécurisée et pouvant être utilisée exclusivement par le premier et le troisième modules logiciels, une deuxième zone mémoire (1120) pouvant être utilisée exclusivement par le deuxième et le troisième modules logiciels, caractérisé en ce que le procédé comprend: obtenir (29) une suite de fonctions client comprenant une première fonction client et au moins une deuxième fonction client, chaque deuxième fonction client devant être exécutée à la suite de la première fonction client ou d'une autre deuxième fonction client et donnant un résultat d'exécution devant être ajouté à un résultat d'exécution de la fonction client la précédant dans la suite, chaque fonction client de la suite faisant appel à une fonction de cryptographie ; allouer (31) une mémoire tampon dans la première zone mémoire (1121) et initialiser (32) cette mémoire tampon à une valeur égale à une valeur prédéfinie ; lancer (33) une exécution séquentielle de chaque fonction client de la suite, chaque exécution d'une desdites fonctions client comprenant un appel, par l'intermédiaire du troisième module logiciel, à la fonction de cryptographie concernée par ladite fonction client provoquant une exécution de ladite fonction de cryptographie dans la première zone mémoire (1121), le résultat d'exécution de ladite fonction de cryptographie étant additionné (3306) à la valeur contenue dans la mémoire tampon ; copier (34), dans la deuxième zone mémoire (1120), la valeur contenue dans la mémoire tampon suite à l'exécution de la dernière fonction client de la suite.\n<CLM>\1\tProcédé selon la revendication 1, caractérisé en ce que la première zone mémoire est bloquée en lecture et écriture par défaut et n'est débloquée que lors d'une exécution d'une fonction de cryptographie, la deuxième zone mémoire étant bloquée en lecture et écriture pendant chaque exécution d'une fonction de cryptographie. 3050847 16\n<CLM>\1\tProcédé selon la revendication 1 ou 2, caractérisé en ce que la mémoire vive (112) comprend une troisième zone mémoire, par laquelle transite chaque donnée échangée entre le premier et le deuxième modules logiciels depuis la première zone mémoire vers la deuxième zone mémoire ou depuis la deuxième zone mémoire vers la 5 première zone mémoire.\n<CLM>\1\tProcédé selon la revendication 1 ou 2, caractérisé en ce que chaque donnée échangée entre le premier et le deuxième modules logiciels est copiée de la première zone mémoire dans la deuxième zone mémoire ou de la deuxième zone mémoire dans 10 la première zone mémoire, et préalablement à chaque copie une vérification est mise en oeuvre permettant de s'assurer que la première zone mémoire ne contient aucune donnée confidentielle et, si la première zone mémoire contient des données confidentielles, lesdites données confidentielles sont effacées. 15\n<CLM>\1\tDispositif (10) comprenant des moyens pour mettre en oeuvre le procédé selon l'une quelconque des revendications 1 à\n<CLM>\1\t6) Dispositif (10) selon la revendication 5 caractérisé en ce que le dispositif est une carte à puce.\n<CLM>\1\tProgramme d'ordinateur, caractérisé en ce qu'il comprend des instructions pour mettre en oeuvre, par un dispositif (10), le procédé selon l'une quelconque des revendications 1 à 4 lorsque ledit programme est exécuté par un processeur (111) dudit dispositif (10).\n<CLM>\1\tMoyens de stockage (112, 113, 114), caractérisés en ce qu'ils stockent un programme d'ordinateur comprenant des instructions pour mettre en oeuvre, par un dispositif (10), le procédé selon l'une quelconque des revendications 1 à 4, lorsque ledit programme est exécuté par un processeur (111) dudit dispositif (10). 20 25