Brevet FR3158569A1 — publié le 20250725

Le procédé (P) de génération par un intégrateur (I) d’un fichier exécutable binaire chiffré implique la compilation de bibliothèques logicielles à l’aide d’une bibliothèque de développement d’un kit SDK. Les bibliothèques, fournies par des fournisseurs (V), sont destinées à un processeur de signal numérique embarqué. Le procédé comprend : Une détermination d’une clé de chiffrement de groupe et partage entre l’intégrateur et les fournisseurs. Chaque fournisseur détermine un secret propre, chiffre ses bibliothèques avec un algorithme symétrique utilisant ce secret et la clé de groupe. La bibliothèque de développement compile les bibliothèques chiffrées après récupération des secrets des fournisseurs. Le fichier exécutable binaire est ensuite chiffré avec l’algorithme symétrique en utilisant la clé de groupe et un secret final dérivé des secrets des fournisseurs. Figure pour l’abrégé : Fig 1. Procédé de protection de codes logiciels. Domaine de l’invention La présente invention concerne un procédé de protection de codes logiciels. Domaine de l’invention Les applications pour processeurs de signal numérique (pour l’anglais digital signal processors ) complexes sont de moins en moins des solutions à fournisseur unique. Cela signifie que plusieurs fournisseurs (pour l’anglais vendors ) peuvent fournir un ou plusieurs codes ou programmes informatiques, ci-après bibliothèque logicielle, protégés par des droits de propriété intellectuelle (pour l’anglais IP software ), intégrés en une application par un intégrateur (pour l’anglais integrator ) ou un client. Les fournisseurs peuvent ne pas vouloir partager le code informatique avec d’autres fournisseurs ou avec le client lui-même. À cet effet, il est proposé, selon un premier aspect de l’invention, un procédé de génération par un intégrateur d’un fichier exécutable binaire chiffré. Le procédé comporte une étape de compilation de bibliothèques logicielles au moyen d’une bibliothèque de développement compilée faisant partie d’un kit d’outils de développement logiciel distribué audit intégrateur. Les bibliothèques logicielles sont générées par des fournisseurs et compilées pour un processeur, par exemple un processeur de signal numérique, embarqué, dit cible embarquée. Le procédé selon l’invention comporte : une étape de détermination d’une clé de chiffrement, dite de groupe, et une étape de partage de ladite clé de groupe entre l’intégrateur et les fournisseurs, par chacun desdits fournisseurs : une étape de détermination d’un secret propre audit fournisseur, dit secret dudit fournisseur, puis, pour chacune des bibliothèques logicielles dudit fournisseur, une étape de chiffrement, par ledit fournisseur, de ladite bibliothèque logicielle au moyen d’un algorithme de chiffrement symétrique, pour obtenir une bibliothèque, dite chiffrée, ledit algorithme de chiffrement symétrique utilisant le secret dudit fournisseur et ladite clé de groupe, par la bibliothèque de développement compilée : pour chacun des fournisseurs, une étape de récupération du secret dudit fournisseur, puis, pour chacune des bibliothèques logicielles chiffrées dudit fournisseur, une étape de déchiffrement de la bibliothèque chiffrée pour obtenir une bibliothèque, dite logicielle, au moyen dudit algorithme de chiffrement symétrique, la compilation des bibliothèques logicielles pour obtenir ledit fichier exécutable binaire, chiffrer ledit fichier exécutable au moyen dudit algorithme de chiffrement symétrique en utilisant la clé de groupe et un secret, dite final, déterminé à partir des secrets de chacun des fournisseurs. La clé de chiffrement de groupe peut être une clé AES, chacun des fournisseurs déterminant un vecteur d’initialisation, l’algorithme de chiffrement symétrique étant l’algorithme AES en mode d’opération CTR, le secret dudit fournisseur étant ledit vecteur d’initialisation. Le procédé peut comporter, au niveau de la cible, une étape de réception dudit fichier exécutable chiffré puis une étape de déchiffrement dudit fichier exécutable chiffré au moyen dudit algorithme de chiffrement symétrique en utilisant la clé de groupe et le secret final. Le procédé peut comporter une étape de stockage par un tiers de confiance des bibliothèques logicielles et/ou de la bibliothèque de développement compilée. Les étapes du procédé effectuées par la bibliothèque de développement compilée peuvent se dérouler sur une machine appartenant à, ou contrôlée par, un tiers de confiance. Brève description des figures D’autres caractéristiques et avantages de l’invention apparaîtront au cours de la lecture de la description détaillée qui va suivre pour la compréhension de laquelle on se reportera aux dessins annexés sur lesquels : FIG. 1 est un schéma illustrant les différentes étapes d’un procédé P selon l’invention. Description détaillée de l’invention Les modes de réalisation décrits ci-après n’étant nullement limitatifs, on pourra notamment considérer des variantes de l’invention ne comprenant qu’une sélection de caractéristiques décrites, par la suite isolées des autres caractéristiques décrites, si cette sélection de caractéristiques suffit à conférer un avantage technique ou pour différencier l’invention par rapport à l’état de la technique antérieure. Cette sélection comprend au moins une caractéristique, de préférence fonctionnelle sans détails structurels, ou avec seulement une partie des détails structurels si cette partie uniquement suffit à conférer un avantage technique ou pour différencier l’invention par rapport à l’état de la technique antérieure. Il est maintenant décrit un procédé P de de génération par un intégrateur (I) d’un fichier exécutable binaire chiffré comportant une étape de compilation de bibliothèques logicielles au moyen d’une bibliothèque de développement compilée faisant partie d’un kit d’outils de développement logiciel compilé SDK distribué audit intégrateur. Le kit d’outils de développement logiciel compilé peut par exemple être distribué au moyen d’un dépôt logiciel accessible en ligne ou d’une archive sur un support informatique. Les bibliothèques logicielles sont générées par différents fournisseurs et compilées pour une cible (pour l’anglais target ) embarquée . L’adjectif embarqué se réfère de manière générale à un système contraint, pour lequel le processus de déploiement et d’exécution d’un logiciel est contrôlable par l’entité en charge de ce déploiement. La cible embarquée est par exemple un processeur de signal numérique. Le processeur de signal numérique est par exemple le processeur GAP fabriqué par la déposante. Le procédé P comporte une étape Ei de détermination d’une clé de chiffrement, dite de groupe, et une étape Ep de partage de ladite clé de groupe entre l’intégrateur et les fournisseurs. La clé de groupe est par exemple une clé AES (pour l’anglais Advanced Encryption Standard ). Lorsque la clé de chiffrement de groupe est déterminée par l’intégrateur, le procédé comporte une étape de transmission de ladite clé de groupe à chacun des fournisseurs. Le procédé P selon l’invention comporte, par chacun des fournisseurs : une étape de détermination d’un secret propre audit fournisseur, dit secret dudit fournisseur, puis, pour chacune des bibliothèques logicielles dudit fournisseur, une étape de chiffrement, par ledit fournisseur, de ladite bibliothèque logicielle au moyen d’un algorithme de chiffrement symétrique, pour obtenir une bibliothèque, dite chiffrée, ledit algorithme de chiffrement symétrique utilisant le secret dudit fournisseur et la clé de groupe. Pour chacun des fournisseurs, les bibliothèques chiffrées de chacun des fournisseurs sont par exemple stockées dans un serveur de fichier dudit fournisseur. Le procédé P comporte en outre la mise en œuvre, par la bibliothèque de développement compilée, des étapes suivantes : une étape de récupération du secret dudit fournisseur au moyen d’un algorithme de chiffrement asymétrique, pour chacune des bibliothèques chiffrées de chacun desdits fournisseurs, une étape de déchiffrement de de ladite bibliothèque chiffrée au moyen dudit algorithme de chiffrement symétrique, pour obtenir une bibliothèque, dite logicielle. la compilation des bibliothèques logicielles pour obtenir ledit fichier exécutable binaire, le chiffrement dudit fichier exécutable au moyen dudit algorithme de chiffrement symétrique en utilisant la clé de groupe et un secret, dit final, déterminé à partir des secrets de chacun des fournisseurs. Ainsi, seule la bibliothèque de développement compilée dispose d’un accès temporaire à une version déchiffrée d’une bibliothèque d’un fournisseur. Avantageusement, les bibliothèques déchiffrées par la bibliothèque de développement compilée sont stockées dans une mémoire volatile uniquement accessible par la bibliothèque de développement compilée. De préférence, ladite mémoire volatile est effacée dès que possible, c’est-à-dire une fois l’étape de compilations des bibliothèques logicielles terminée. Avantageusement, la mise en œuvre de la bibliothèque de développement compilée est effectuée sur un ordinateur appartenant à, ou contrôlé par, un tiers de confiance. Le fait de passer par un tiers de confiance réduit le risque d’accès malveillant à une version « en clair » de la bibliothèque en mémoire, même volatile. L’algorithme de chiffrement symétrique est par exemple l’algorithme AES en mode d’opération compteur CTR (pour l’anglais CounTeR mode) . La clé de chiffrement de groupe est par exemple une clé AES, chacun des fournisseurs détermine un vecteur d’initialisation, l’algorithme de chiffrement symétrique étant l’algorithme AES en mode d’opération CTR, le secret dudit fournisseur étant ledit vecteur d’initialisation. La récupération du secret du fournisseur par la bibliothèque de développement compilée est par exemple réalisée après une authentification qui peut se faire par l’intermédiaire d’une infrastructure à clé publique. Le procédé comporte, au niveau de la cible, une étape de réception dudit fichier exécutable chiffré puis une étape de déchiffrement dudit fichier exécutable chiffré au moyen dudit algorithme de chiffrement symétrique en utilisant la clé de groupe et le secret final. Le secret final est par exemple obtenu en opérant un XOR entre les secrets de chacun des fournisseurs. Le secret final peut être reconstruit par la cible à partir des secrets de chacun des fournisseurs, qui peuvent être connus de la cible par récupération auprès du fournisseur au moyen d’un algorithme de chiffrement asymétrique, ou le secret final peut être fourni par un tiers de confiance, après sauvegarde préalable lors de la mise en œuvre de la bibliothèque de développement compilée. Le stockage dans une mémoire non volatile de la cible (stockage désigné par le terme flash en langue anglaise) est ensuite réalisé avec le fichier exécutable déchiffré. Avantageusement, tout stockage temporaire de tout ou partie du fichier exécutable déchiffré est effectué dans une mémoire volatile de la cible uniquement accessible par le logiciel effectuant le déchiffrage du fichier exécutable et son stockage en mémoire non volatile. Alternativement, le fichier exécutable chiffré peut être déchiffré par un tiers de confiance, en dehors de la cible. Le tiers de confiance effectue ensuite le stockage du fichier exécutable dans une mémoire non volatile de la cible, sans besoin de déchiffrement au niveau de la cible. L’accès au fichier exécutable après son déchiffrement n’est ainsi possible que par le tiers de confiance. Bien sûr, l’invention n’est pas limitée aux exemples qui viennent d’être décrits et de nombreux aménagements peuvent être apportés à ces exemples sans sortir du cadre de l’invention. De plus, les différentes caractéristiques, formes, variantes et modes de réalisation de l’invention peuvent être associés les uns avec les autres selon diverses combinaisons dans la mesure où ils ne sont pas incompatibles ou exclusifs les uns des autres. Procédé (P) de génération par un intégrateur (I) d’un fichier exécutable binaire chiffré, comportant une étape de compilation de bibliothèques logicielles au moyen d’une bibliothèque de développement compilée faisant partie d’un kit d’outils de développement logiciel (SDK) distribué audit intégrateur, lesdites bibliothèques logicielles étant générées par des fournisseurs (V) et compilées pour un processeur embarqué, dit cible embarquée, caractérisé en ce qu’il comporte : une étape (Ei) de détermination d’une clé de chiffrement, dite de groupe, et une étape de partage (Ep) de ladite clé de groupe entre l’intégrateur et les fournisseurs, par chacun desdits fournisseurs : une étape de détermination (Es) d’un secret propre audit fournisseur, dit secret dudit fournisseur, puis, pour chacune des bibliothèques logicielles dudit fournisseur, une étape de chiffrement (Ec), par ledit fournisseur, de ladite bibliothèque logicielle au moyen d’un algorithme de chiffrement symétrique, pour obtenir une bibliothèque, dite chiffrée, ledit algorithme de chiffrement symétrique utilisant le secret dudit fournisseur et ladite clé de groupe, par la bibliothèque de développement compilée : pour chacun des fournisseurs, une étape (Er) de récupération du secret dudit fournisseur, pour chacune des bibliothèques logicielles chiffrées dudit fournisseur, une étape (Ed) de déchiffrement de la bibliothèque chiffrée pour obtenir une bibliothèque, dite logicielle, au moyen dudit algorithme de chiffrement symétrique, la compilation (Eg) des bibliothèques logicielles pour obtenir ledit fichier exécutable binaire, le chiffrement (Ee) dudit fichier exécutable au moyen dudit algorithme de chiffrement symétrique en utilisant la clé de groupe et un secret, dit final, déterminé à partir des secrets de chacun des fournisseurs. Procédé selon la revendication 1, dans lequel la clé de chiffrement de groupe est une clé AES et dans lequel chacun des fournisseurs détermine un vecteur d’initialisation, l’algorithme de chiffrement symétrique étant l’algorithme AES en mode d’opération CTR, le secret dudit fournisseur étant ledit vecteur d’initialisation. Procédé selon l’une des revendications précédentes, comportant, au niveau de la cible, une étape de réception dudit fichier exécutable chiffré puis une étape de déchiffrement dudit fichier exécutable chiffré au moyen dudit algorithme de chiffrement symétrique en utilisant la clé de groupe et le secret final. Procédé selon l’une quelconque des revendications précédentes, comportant une étape de stockage par un tiers de confiance des bibliothèques logicielles chiffrées et/ou de la bibliothèque de développement compilée.