Brevet FR3134200A1 — publié le 20231006

Protection des codes sensibles La présente description concerne un procédé comprenant : - la détection (203) par un circuit de surveillance, lors de l’exécution par un processeur d’un code stocké dans une mémoire d’un dispositif, d’une adresse de lecture dans la mémoire, la détection étant faite par l’intermédiaire d’un bus relié à la mémoire ; - la comparaison (204) par le circuit de surveillance de l’adresse avec une ou plusieurs premières adresses ; - si l’adresse est comprise dans l’une ou plusieurs premières adresses, la commande, par le circuit de surveillance, d’un circuit de commande d’horloge pour empêcher l’activation d’un ou plusieurs circuits périphériques. Figure pour l'abrégé : Fig. 2 Protection des codes sensibles La présente description concerne le domaine des procédés et dispositifs pour la sécurité de circuits électroniques, et en particulier un dispositif et un procédé permettant de protéger des codes. Lorsqu’un dispositif électronique est en fonctionnement, des codes, tels que des codes de démarrage, des codes logiciels ou des codes micrologiciels, sont exécutés par un processeur. Des données, telles que des clefs de chiffrement transitent alors sur un bus de données du dispositif, et des instructions de codes transitent alors sur un bus d’instructions du dispositif. Bien que des solutions existent pour rendre des données ou des codes inaccessibles, il serait souhaitable de protéger d’avantage l’accès à ces codes et aux données sensibles. Il existe un besoin d’améliorer la sécurisation des procédures de démarrage, et plus généralement des codes, y compris des codes applicatifs, des dispositifs de traitement. Un mode de réalisation pallie tout ou partie des inconvénients des dispositifs de traitement connus. Un mode de réalisation prévoit un procédé comprenant : - la détection par un circuit de surveillance, lors de l’exécution par un processeur d’un code stocké dans une mémoire d’un dispositif, d’une adresse de lecture dans la mémoire, la détection étant faite par l’intermédiaire d’un bus relié à la mémoire ; - la comparaison par le circuit de surveillance de l’adresse avec une ou plusieurs premières adresses ; - si l’adresse est comprise dans l’une ou plusieurs premières adresses, la commande, par le circuit de surveillance, d’un circuit de commande d’horloge pour empêcher l’activation d’un ou plusieurs circuits périphériques. Selon un mode de réalisation, la commande comprend le verrouillage d’une configuration courante du circuit de commande d’horloge, cette configuration courante imposant un état de désactivation à un ou plusieurs des circuits périphériques. Selon un mode de réalisation, la commande comprend la désactivation d’au moins un des circuits périphériques. Selon un mode de réalisation, le circuit de commande d’horloge est configuré pour désactiver et/ou activer des signaux d’horloges du ou des circuits périphériques du dispositif afin d’effectuer la désactivation et/ou l’activation du ou des périphériques, les signaux d’horloge étant générés par un circuit de génération d’horloge. Selon un mode de réalisation, si l’adresse fait partie de l’une ou plusieurs premières adresses, le circuit de surveillance bascule l’état d’un bit du circuit de commande d’horloge vers un premier état entrainant le verrouillage du circuit de commande d’horloge. Selon un mode de réalisation, lorsque le circuit de commande d’horloge est verrouillé, des signaux d’horloge générés par le circuit de génération d’horloge ne peuvent plus être modifiés par le circuit de commande. Selon un mode de réalisation, le bit du circuit de commande d’horloge est un bit de type programmable une seule fois. Selon un mode de réalisation, le procédé comprend en outre la comparaison de l’adresse avec une ou plusieurs deuxièmes adresses, dans lequel, si l’adresse fait partie de l’une ou plusieurs deuxièmes adresses, le circuit de surveillance bascule l’état du bit du circuit de commande d’horloge vers un deuxième état entrainant le déverrouillage du circuit de commande d’horloge. Selon un mode de réalisation, lorsque le circuit de commande d’horloge est déverrouillé, des signaux d’horloge générés par le circuit de génération d’horloge ne peuvent plus être modifiés par le circuit de commande. Selon un mode de réalisation, si l’adresse ne fait pas partie de l’une ou plusieurs premières ou deuxièmes adresses, le circuit de surveillance est configuré pour ne pas modifier l’état du bit du circuit de commande d’horloge. Selon un mode de réalisation, le procédé comprend en outre, avant la comparaison de l’adresse avec l’une ou plusieurs premières adresses, le stockage de l’une ou plusieurs premières adresses dans une mémoire non-volatile du dispositif. Selon un mode de réalisation, le code est un code de démarrage du processeur du dispositif. Selon un mode de réalisation, l’une ou plusieurs premières adresses forment une ou plusieurs plages d’adresses. Un mode de réalisation prévoit un dispositif comprenant un circuit de surveillance configuré pour détecter, lors de l’exécution par un processeur d’un code stocké dans une mémoire du dispositif, une adresse de lecture dans la mémoire, la détection s’effectuant par l’intermédiaire d’un bus relié à la mémoire, le circuit de surveillance étant en outre configuré pour comparer l’adresse avec une ou plusieurs premières adresses et, lorsque l’adresse fait partie de l’une ou plusieurs première adresses, pour commander un circuit de commande d’horloge afin d’empêcher l’activation d’un ou plusieurs circuits périphériques. Selon un mode de réalisation, le circuit de commande d’horloge est configuré pour désactiver et/ou activer des signaux d’horloges du ou des circuits périphériques du dispositif afin d’effectuer la désactivation et/ou l’activation du ou des périphériques, les signaux d’horloge étant générés par un circuit de génération d’horloge. Ces caractéristiques et avantages, ainsi que d'autres, seront exposés en détail dans la description suivante de modes de réalisation particuliers faite à titre non limitatif en relation avec les figures jointes parmi lesquelles : la représente, de façon très schématique et sous forme de blocs, un dispositif électronique selon un mode de réalisation de la présente description ; la est un organigramme représentant des opérations d’un procédé de démarrage sécurisé d’un dispositif électronique selon un exemple de réalisation de la présente description ; et la illustre plus en détail un bus selon un mode de réalisation de la présente description. Procédé comprenant : - la détection par un circuit de surveillance (119), lors de l’exécution par un processeur (107) d’un code (113, 115) stocké dans une mémoire (101, 103) d’un dispositif (100), d’une adresse (125, 127) de lecture dans la mémoire, la détection étant faite par l’intermédiaire d’un bus (105, 301) relié à la mémoire ; - la comparaison par le circuit de surveillance de l’adresse avec une ou plusieurs premières adresses (128) ; - si l’adresse est comprise dans l’une ou plusieurs premières adresses, la commande, par le circuit de surveillance (119), d’un circuit de commande d’horloge (121) pour empêcher l’activation d’un ou plusieurs circuits périphériques (111). Procédé selon la revendication 1, dans lequel la commande comprend le verrouillage d’une configuration courante du circuit de commande d’horloge (121), cette configuration courante imposant un état de désactivation à un ou plusieurs des circuits périphériques (111). Procédé selon la revendication 1 ou 2, dans lequel la commande comprend la désactivation d’au moins un des circuits périphériques (111). Procédé selon l’une quelconque des revendications 1 à 3, dans lequel le circuit de commande d’horloge (121) est configuré pour désactiver et/ou activer des signaux d’horloges (CLK-P) du ou des circuits périphériques (111) du dispositif (100) afin d’effectuer la désactivation et/ou l’activation du ou des périphériques, les signaux d’horloge étant générés par un circuit de génération d’horloge (123). Procédé selon l’une quelconque des revendications 1 à 4, dans lequel, si l’adresse (125, 127) fait partie de l’une ou plusieurs premières adresses (128), le circuit de surveillance (119) bascule l’état d’un bit (129) du circuit de commande d’horloge (121) vers un premier état entrainant le verrouillage du circuit de commande d’horloge (121). Procédé selon la revendication 5, dans lequel, lorsque le circuit de commande d’horloge (121) est verrouillé, des signaux d’horloge (CLK-P) générés par le circuit de génération d’horloge (123) ne peuvent plus être modifiés par le circuit de commande. Procédé selon la revendication 5 ou 6, dans lequel le bit (129) du circuit de commande d’horloge (121) est un bit de type programmable une seule fois. Procédé selon l’une quelconque des revendications 5 à 7, comprenant en outre la comparaison de l’adresse (125, 127) avec une ou plusieurs deuxièmes adresses (131), dans lequel, si l’adresse fait partie de l’une ou plusieurs deuxièmes adresses, le circuit de surveillance (119) bascule l’état du bit (129) du circuit de commande d’horloge (121) vers un deuxième état entrainant le déverrouillage du circuit de commande d’horloge (121). Procédé selon la revendication 8, dans lequel, lorsque le circuit de commande d’horloge (121) est déverrouillé, des signaux d’horloge (CLK-P) générés par le circuit de génération d’horloge (123) ne peuvent plus être modifiés par le circuit de commande. Procédé selon la revendication 8 ou 9, dans lequel, si l’adresse (125, 127) ne fait pas partie de l’une ou plusieurs premières ou deuxièmes adresses, le circuit de surveillance (119) est configuré pour ne pas modifier l’état du bit (129) du circuit de commande d’horloge (121). Procédé selon l’une quelconque des revendications 1 à 10, comprenant en outre, avant la comparaison de l’adresse (125, 127) avec l’une ou plusieurs premières adresses (128), le stockage de l’une ou plusieurs premières adresses dans une mémoire non-volatile (101) du dispositif (100). Procédé selon l’une quelconque des revendications 1 à 11, dans lequel le code (113, 115) est un code de démarrage du processeur (107) du dispositif (100). Procédé selon l’une quelconque des revendications 1 à 12, dans lequel, l’une ou plusieurs premières adresses (128) forment une ou plusieurs plages d’adresses. Dispositif (100) comprenant un circuit de surveillance (119) configuré pour détecter, lors de l’exécution par un processeur (107) d’un code (113, 115) stocké dans une mémoire (101, 103) du dispositif, une adresse (125, 127) de lecture dans la mémoire, la détection s’effectuant par l’intermédiaire d’un bus (105, 301) relié à la mémoire, le circuit de surveillance étant en outre configuré pour comparer l’adresse avec une ou plusieurs premières adresses (128) et, lorsque l’adresse fait partie de l’une ou plusieurs première adresses, pour commander un circuit de commande d’horloge (121) afin d’empêcher l’activation d’un ou plusieurs circuits périphériques (111). Dispositif selon la revendication 14, dans lequel le circuit de commande d’horloge (121) est configuré pour désactiver et/ou activer des signaux d’horloges (CLK-P) du ou des circuits périphériques (111) du dispositif (100) afin d’effectuer la désactivation et/ou l’activation du ou des périphériques, les signaux d’horloge étant générés par un circuit de génération d’horloge (123).