Brevet FR3146744A1 — publié le 20240920

Procédé d’amorçage sécurisé pour un FPGA, et carte de circuits imprimés comprenant un FPGA configuré pour réaliser le procédé d’amorçage sécurisé L’invention concerne un procédé d’amorçage sécurisé pour un FPGA (2) relié à une mémoire d’amorçage de démarrage (3) dans laquelle est stockée une première clé chiffrée (6) et à une mémoire d’amorçage nominal (4) dans laquelle est stockée une image de FPGA (7), le procédé comprenant : une étape d’amorçage de démarrage dans laquelle le FPGA (2) est configuré pour récupérer (S1) la première clé chiffrée (6) et la déchiffrer (S2) en utilisant une clé PUF (8), et copier (S3) la première clé déchiffrée (11) dans une BBRAM (10) ; puis une étape d’amorçage nominal (S4) dans laquelle le FPGA (2) est configuré pour déchiffrer l’image chiffrée de FPGA (7) en utilisant la première clé déchiffrée (11) stockée dans la BBRAM (10), puis effacer la première clé déchiffrée (11). Figure à publier avec l’abrégé : Figure 1 Procédé d’amorçage sécurisé pour un FPGA, et carte de circuits imprimés comprenant un FPGA configuré pour réaliser le procédé d’amorçage sécurisé La présente invention concerne le domaine de la cryptographie, et porte en particulier sur un procédé d’amorçage sécurisé pour un FPGA et sur une carte de circuits imprimés comprenant un FPGA configuré pour réaliser ledit procédé d’amorçage sécurisé. Lors de leur processus d’amorçage, certains types de réseaux prédiffusés programmables par l’utilisateur (ou FPGA, correspondant à l’expression anglo-saxonne « Field Programmable Gate Array ») utilisent une clé sensible en texte clair stockée dans une mémoire volatile sauvegardée par batterie (ou BBRAM, correspondant à l’expression anglo-saxonne « Battery Backed Random Access Memory »). Cette clé sensible en texte clair est impliquée au tout début d’une racine de confiance matérielle (correspondant à l’expression anglo-saxonne « hardware root of trust »)du FPGA et assure la première étape du déchiffrement de confidentialité de l’image de FPGA chiffrée qui est stockée dans une mémoire non volatile à l’extérieur du FPGA et comprend des trains de bits de logiciel ou de logique programmable. Si la valeur de cette clé sensible en texte clair est connue d’un agresseur, les trains de bits de l’image de FPGA peuvent alors être facilement déchiffrés en vue d’une rétroingénierie. Cette clé sensible en texte clair est conservée par une batterie de sauvegarde de BBRAM, de manière à ne pas être perdue lors de la mise hors tension du FPGA. Cette clé sensible en texte clair est ainsi vulnérable vis-à-vis des agresseurs, en particulier lorsqu’uniquement l’alimentation de secours est active. Certains FPGA de la marque Xilinx® peuvent également utiliser, lors de leur processus d’amorçage, soit une clé en texte clair stockée dans une BBRAM, soit une clé de fonction physique inclonable (ou PUF, correspondant à l’expression anglo-saxonne « Physical Unclonable Function »). L’amorçage sécurisé de la racine de confiance matérielle du FPGA commence alors par le déchiffrement de l’image de FPGA (stockée de manière chiffrée dans une mémoire non volatile externe au FPGA) en utilisant une clé interne initiale du FPGA désignée Clé_0, cette Clé_0 pouvant être soit une clé PUF, soit une clé BBRAM, seule l’une de ces deux clés étant utilisée lors de l’étape d’amorçage. La fonction principale de la Clé_0 est de déchiffrer la première clé chiffrée, désignée Clé_1, de l’image de FPGA chiffrée. La Clé_1 déchiffrée permet ensuite de déchiffrer la première partition chiffrée, désignée partition_1, de l’image de FPGA chiffrée et permet également de déchiffrer la deuxième clé chiffrée, désignée Clé_2, de l’image de FPGA chiffrée. La Clé_2 déchiffrée permet par la suite de déchiffrer la deuxième partition chiffrée, désignée partition_2, de l’image de FPGA chiffrée et permet également de déchiffrer la troisième clé chiffrée, désignée Clé_3, de l’image de FPGA chiffrée, et ainsi de suite jusqu’à la dernière partition chiffrée, désignée partition_N, de l’image de FPGA chiffrée, de telle sorte qu’à la fin du processus d’amorçage, l’algorithme de déchiffrement (par exemple, selon la norme de chiffrement avancé ou norme AES) du FPGA a entièrement déchiffré l’image de FPGA. Le Tableau 1 ci-dessous décrit les avantages et les inconvénients pour chacune des clés PUF et BBRAM. Clé d’amorçage Fonction principale Avantages Inconvénients Clé PUF Première clé utilisée pour démarrer le déchiffrement de l’image de FPGA - Aucune batterie externe n’est nécessaire. - Rend difficile la mystification (nécessiterait que le dispositif sur la carte soit remplacé). Non lisible. - Seul un train de bits chiffré avec cette clé peut configurer le FPGA. - Permanente, la clé ne peut pas être effacée ou mise à jour. - Moins sécurisée qu’une solution BBRAM (c’est-à-dire que les preuves niveau dispositif restent) -> Propriété moins appropriée pour des applications sensibles/sécurisées. Clé BBRAM Première clé utilisée pour démarrer le déchiffrement de l’image de FPGA - Volatile et reprogrammable. - Effacement de clé passif et actif (c’est-à-dire que les preuves peuvent être supprimées) -> Propriété plus appropriée pour des applications sensibles/sécurisées. - Non lisible sauf pour le FPGA Zynq7000 Xilinx®. - Nécessite une batterie externe. - De nombreux vendeurs de batteries ne spécifient pas un fonctionnement à haute température et/ou de longues durées de vie (bien que certains vendeurs commencent maintenant à proposer des batteries bêtavoltaïques qui aident à traiter ces problèmes). - Lisible pour le FPGA Zynq7000 Xilinx®. - Certaines attaques physiques sont connues. En règle générale, la clé BBRAM est préférée à la clé PUF lors du processus d’amorçage, étant donné qu’elle est effaçable et reprogrammable. La clé BBRAM a cependant l’inconvénient de devoir être conservée par une alimentation de secours (par exemple, une batterie de secours), autrement elle serait perdue dès la coupure de l’alimentation électrique principale du FPGA et le FPGA ne pourrait alors plus s’amorcer. La clé BBRAM est écrite en usine dans la BBRAM interne du FPGA en utilisant une interface JTAG (correspondant à l’expression anglo-saxonne « Joint Test Action Group »). Pour des raisons de sécurité, l’interface JTAG du FPGA est ensuite désactivée en usine. Ainsi, si le déchiffrement d’image utilise la clé BBRAM, une batterie de secours doit être connectée une fois que l’interface JTAG est désactivée. Ainsi, l’utilisation classique d’une clé BBRAM dans un FPGA est de la garder en mémoire en utilisant une batterie de secours même lorsque l’alimentation principale est éteinte, la consommation électrique étant alors de quelques micro ampères (seule une très petite zone logique étant alimentée). Un agresseur peut ainsi facilement récupérer la clé BBRAM dans ce mode à très faible puissance (aucun bruit n’étant présent sur l’alimentation électrique de la BBRAM), étant donné qu’il n’y a pas de logiciel actif ou de logique programmable active s’exécutant sur le FPGA. La présente invention vise à résoudre les inconvénients de l’état antérieur de la technique, en proposant un procédé d’amorçage sécurisé pour un FPGA, comprenant une étape d’amorçage de démarrage dans laquelle une clé chiffrée stockée dans une mémoire non volatile externe est déchiffrée à l’aide d’une clé PUF puis copiée dans la BBRAM du FPGA, puis une étape d’amorçage nominal dans laquelle la clé déchiffrée stockée temporairement dans la BBRAM est utilisée pour déchiffrer l’image de FPGA puis effacée immédiatement après. Le procédé selon la présente invention permet ainsi d’améliorer les mécanismes d’amorçage sécurisé des FPGA en réduisant les inconvénients liés à l’utilisation d’une clé BBRAM, étant donné que le stockage de la clé en texte clair dans BBRAM n’est pas permanent mais temporaire. La présente invention a donc pour objet un procédé d’amorçage sécurisé pour un réseau prédiffusé programmable par l’utilisateur (FPGA) relié à une mémoire non volatile d’amorçage de démarrage dans laquelle est stockée une première clé chiffrée et à une mémoire non volatile d’amorçage nominal dans laquelle est stockée une image chiffrée de FPGA, caractérisé par le fait qu’il comprend : - une étape d’amorçage de démarrage dans laquelle le FPGA est configuré pour : • récupérer la première clé chiffrée stockée dans la mémoire non volatile d’amorçage de démarrage ; • déchiffrer la première clé chiffrée en utilisant une seconde clé de fonction physique inclonable (PUF) stockée dans le FPGA ; et • copier la première clé déchiffrée dans une mémoire vive sauvegardée par batterie (BBRAM) interne du FPGA ; puis - une étape d’amorçage nominal dans laquelle le FPGA est configuré pour : • déchiffrer l’image chiffrée de FPGA stockée dans la mémoire non volatile d’amorçage nominal à l’aide de la première clé déchiffrée stockée dans la BBRAM ; et • dès que la première clé déchiffrée a été utilisée pour le déchiffrement de l’image chiffrée de FPGA, effacer la première clé déchiffrée de la BBRAM. Ainsi, aucune clé en texte clair vulnérable n’est stockée dans la BBRAM du FPGA lorsque l’alimentation électrique principale du FPGA est éteinte. La présente invention permet ainsi une amélioration du processus d’amorçage sécurisé du FPGA, en stockant la clé sensible dans un format chiffré (à savoir, la première clé chiffrée) dans la mémoire non volatile d’amorçage de démarrage, et en la déchiffrant, lors de la première étape d’amorçage de démarrage, à l’aide d’une clé PUF puis en la stockant temporairement dans la BBRAM du FPGA et en l’utilisant pendant une très courte durée pendant la seconde étape d’amorçage nominal avant de l’effacer. Le stockage temporaire de la clé BBRAM sensible en texte clair (par exemple, pendant seulement quelques centaines de millisecondes) au lieu de toujours la conserver présente dans la BBRAM du FPGA permet ainsi de réduire le temps d’exposition à des attaques physiques. La présente invention permet ainsi la suppression du besoin pour la batterie de secours de conserver la clé sensible en texte clair, et permet en outre de facilement recharger la clé même lorsque l’interface JTAG est définitivement désactivée en usine pour des applications de sécurité en rechargeant la version chiffrée de la clé sur la mémoire non volatile d’amorçage de démarrage. Le procédé selon l’invention est, par exemple, applicable à des familles de FPGA Xilinx® telles que Zynq-7000 SoC, Zynq Ultrascale+ MPSoC, et Zynq Ultrascale+ RFSoC, et par extension à n’importe quelle famille de FPGA Xilinx® utilisant les mêmes mécanismes de sécurité. Le procédé selon la présente invention est basé sur l’utilisation de deux étapes d’amorçage consécutives, dans lesquelles on force le FPGA à démarrer l’amorçage par une étape d’amorçage de démarrage puis, à la fin de l’étape d’amorçage de démarrage, on force le FPGA à s’amorcer dans une étape d’amorçage nominal. L’image d’amorçage de démarrage (contenant la première clé chiffrée) est chiffrée et stockée dans la mémoire non volatile d’amorçage de démarrage dédiée. L’amorçage de démarrage utilise une clé PUF en tant que Clé_0 pour le déchiffrement de l’image d’amorçage de démarrage. Le rôle principal de l’amorçage de démarrage est ainsi de déchiffrer la première clé chiffrée en utilisant une clé PUF. Cette clé PUF peut être la clé PUF du FPGA ou, de préférence, un bloc PUF dédié dans le FPGA. A la fin de l’amorçage de démarrage, la première clé déchiffrée est copiée dans la BBRAM et on force ensuite le FPGA à s’amorcer dans l’étape d’amorçage nominal en utilisant la clé en texte clair stockée temporairement dans la BBRAM, la clé en texte clair étant effacée (effacement actif) de la BBRAM à une phase très précoce de l’amorçage nominal (c’est-à-dire, juste après le déchiffrement de la première clé chiffrée (Clé_1) de l’image de FPGA stockée dans la mémoire non volatile d’amorçage nominal). Il peut également être prévu que la clé en texte clair soit effacée au bout d’une certaine durée, quelle que soit l’issue de l’amorçage. Le Tableau 2 ci-dessous montre les améliorations sur l’utilisation de la clé BBRAM de la présente invention vis-à-vis du Tableau 1 associé à l’état antérieur de la technique. Clé d’amorçage Fonction principale Avantages Inconvénients Clé BBRAM Première clé utilisée pour démarrer le déchiffrement de l’image nominale (image sensible) - Volatile et reprogrammable. - Présente dans le dispositif pendant quelques centaines de millisecondes. - Effacement de clé passif et actif (c’est-à-dire que les preuves peuvent être supprimées) -> Propriété plus appropriée pour des applications sensibles/sécurisées. - Non lisible sauf pour FPGA Xilinx® Zynq7000. - Lisible pour FPGA Xilinx® Zynq7000. Cet inconvénient est réduit car la clé est présente pendant quelques centaines de millisecondes uniquement. - Certaines attaques physiques sont connues. Cet inconvénient est réduit car la clé est présente pendant quelques centaines de millisecondes uniquement et pendant sa présence l’alimentation électrique est bruitée en raison de l’activité du logiciel s’exécutant sur le FPGA. - Composants supplémentaires et temps d’amorçage (quelques secondes ajoutées en raison de l’amorçage de démarrage). Selon une caractéristique particulière de l’invention, une fois que la première clé déchiffrée est copiée dans la BBRAM, le FPGA est configuré pour effacer la première clé déchiffrée de la BBRAM après une durée comprise entre 100 et 1500 millisecondes. Selon une caractéristique particulière de l’invention, la mémoire non volatile d’amorçage de démarrage comprend une première mémoire non volatile non amovible et une seconde mémoire non volatile externe amovible, la première clé chiffrée comprenant une première partie de clé chiffrée stockée dans la première mémoire non volatile non amovible et une seconde partie de clé chiffrée stockée dans la seconde mémoire non volatile externe amovible. Ainsi, la première clé chiffrée sensible est stockée dans un format divisé et chiffré, de telle sorte que la première clé ne peut être déchiffrée que si la seconde mémoire non volatile externe amovible est connectée au FPGA. Selon une caractéristique particulière de l’invention, dans l’étape d’amorçage de démarrage, le FPGA est configuré pour : - vérifier si la seconde mémoire non volatile externe amovible est ou non reliée au FPGA ; - lorsque la seconde mémoire non volatile externe amovible est reliée au FPGA, récupérer la première partie de clé chiffrée stockée dans la première mémoire non volatile non amovible, et récupérer la seconde partie de clé chiffrée stockée dans la seconde mémoire non volatile externe amovible ; - combiner la première partie de clé chiffrée et la seconde partie de clé chiffrée pour former une clé de BBRAM chiffrée ; et - déchiffrer la clé de BBRAM chiffrée en utilisant la seconde clé PUF stockée dans le FPGA, et copier la clé de BBRAM déchiffrée dans la BBRAM du FPGA. Ainsi, lors de l’étape d’amorçage de démarrage, si la seconde partie de clé chiffrée est présente (c’est-à-dire, si la seconde mémoire non volatile externe amovible contenant la seconde partie de clé chiffrée est reliée au FPGA), l’étape d’amorçage de démarrage permet de déchiffrer la combinaison de la première et de la seconde partie de clé chiffrée de manière à créer la clé de BBRAM déchiffrée servant à l’amorçage nominal. La combinaison de la première partie de clé chiffrée et de la seconde partie de clé chiffrée pour former une clé de BBRAM chiffrée peut par exemple être une simple concaténation. On pourrait également envisager un quelconque autre type d’algorithme de combinaison standard ou propriétaire, sans s’écarter du cadre de la présente invention, l’algorithme de combinaison devant toutefois être réversible (c’est-à-dire, la fonction de combinaison devant avoir une fonction réciproque de « décombinaison »). Dans la présente invention, le retrait de la seconde mémoire non volatile externe amovible contenant la seconde partie de clé chiffrée permet ainsi de rendre le produit intégrant l’article cryptographique contrôlé (CCI) du FPGA déclassifié pour des applications cryptographiques. En effet, lorsque la seconde mémoire non volatile externe est retirée, le FPGA ne peut plus s’amorcer dans le mode nominal. Dans ce cas, des attaques ne sont pas possibles. En outre, des attaques physiques liées à une analyse d’alimentation ne sont également pas possibles. Selon une caractéristique particulière de l’invention, la seconde partie de clé chiffrée comprend au moins un facteur de validité, et dans lequel l’étape consistant à combiner la première partie de clé chiffrée et la seconde partie de clé chiffrée est effectuée uniquement dans le cas où le FGPA a préalablement authentifié l’au moins un facteur de validité de la seconde partie de clé chiffrée. Ainsi, lors de l’étape d’amorçage de démarrage, le déchiffrement de la clé de BBRAM chiffrée a lieu uniquement si la seconde partie de clé chiffrée est valide (c’est-à-dire, authentifiée par le FPGA à l’aide de l’au moins un facteur de validité). Il est à noter que la première partie de clé chiffrée pourrait également comprendre un ou plusieurs facteurs de validité permettant au FPGA d’authentifier la première partie de clé chiffrée, sans s’écarter du cadre de la présente invention. Les mécanismes d’authentification de clé utilisés peuvent, par exemple, être : contrôle de redondance cyclique et en-tête, vérification de la date de validité, nombre de bits, etc. La présente invention a également pour objet une carte de circuits imprimés comprenant un FPGA dans lequel est stockée une seconde clé PUF, une mémoire non volatile d’amorçage de démarrage dans laquelle est stockée une première clé chiffrée, et une mémoire non volatile d’amorçage nominal dans laquelle est stockée une image chiffrée de FPGA, le FPGA étant configuré pour réaliser le procédé d’amorçage sécurisé tel que décrit ci-dessus. Selon une caractéristique particulière de l’invention, la mémoire non volatile d’amorçage de démarrage comprend une première mémoire non volatile non amovible intégrée à la carte de circuits imprimés et une seconde mémoire non volatile amovible externe à la carte de circuits imprimés, la première clé chiffrée comprenant une première partie de clé chiffrée stockée dans la première mémoire non volatile non amovible et une seconde partie de clé chiffrée stockée dans la seconde mémoire non volatile amovible externe. Pour mieux illustrer l’objet de la présente invention, on va en décrire ci-après, à titre illustratif et non limitatif, des modes de réalisations préférés, avec référence aux dessins annexés. Sur ces dessins : est un schéma de principe d’une carte de circuits imprimés selon un premier mode de réalisation de la présente invention ; et est un schéma de principe d’une carte de circuits imprimés selon un second mode de réalisation de la présente invention. Si l’on se réfère à la , on peut voir qu’il y est représenté une carte de circuits imprimés 1 selon un premier mode de réalisation de la présente invention. La carte de circuits imprimés 1 comprend un réseau prédiffusé programmable par l’utilisateur (FPGA) 2, une mémoire non volatile d’amorçage de démarrage 3 et une mémoire non volatile d’amorçage nominal 4. La carte de circuits imprimés 1 comprend en outre une alimentation électrique principale 5 configurée pour alimenter en puissance le FPGA 2, la mémoire non volatile d’amorçage de démarrage 3 et la mémoire non volatile d’amorçage nominal 4. Une première clé chiffrée 6 est stockée dans la mémoire non volatile d’amorçage de démarrage 3. Une image chiffrée de FPGA 7 est stockée dans la mémoire non volatile d’amorçage nominal 4. Le FPGA 2 est configuré pour réaliser un procédé d’amorçage sécurisé comprenant les étapes suivantes : - une étape d’amorçage de démarrage dans laquelle le FPGA 2 est configuré pour : • récupérer S1 la première clé chiffrée 6 stockée dans la mémoire non volatile d’amorçage de démarrage 3 ; • déchiffrer S2, à l’aide d’un module d’algorithme de déchiffrement 9 (par exemple, de norme AES) du FPGA 2, la première clé chiffrée 6 en utilisant une seconde clé de fonction physique inclonable (PUF) 8 stockée en mémoire dans le FPGA 2 ; et • copier S3 la première clé déchiffrée 11 dans une mémoire vive sauvegardée par batterie (BBRAM) 10 interne du FPGA 2 ; puis - une étape d’amorçage nominal S4 dans laquelle le FPGA 2 est configuré pour : • déchiffrer, à l’aide du module d’algorithme de déchiffrement 9 du FPGA 2, l’image chiffrée de FPGA 7 stockée dans la mémoire non volatile d’amorçage nominal 4 en utilisant la première clé déchiffrée 11 stockée dans la BBRAM 10 ; et • dès que la première clé déchiffrée 11 a été utilisée pour le déchiffrement de l’image chiffrée de FPGA 7, effacer la première clé déchiffrée 11 de la BBRAM 10. La seconde clé PUF 8 peut être la clé PUF du FPGA 2 ou, de préférence, un bloc PUF dédié dans le FPGA 2. Aucune clé en texte clair vulnérable n’est ainsi stockée dans la BBRAM 10 du FPGA 2 lorsque l’alimentation électrique principale 5 est éteinte, de telle sorte que des attaques physiques liées à une analyse d’alimentation ne sont pas possibles. Une fois que la première clé déchiffrée 11 est copiée dans la BBRAM 10, le FPGA 2 peut effacer la première clé déchiffrée 11 de la BBRAM 10 après une durée comprise entre 100 et 1500 millisecondes, ce qui permet de réduire le temps d’exposition à des attaques physiques. Le procédé d’amorçage sécurisé décrit ci-dessus est, par exemple, applicable à des familles de FPGA Xilinx® telles que Zynq-7000 SoC, Zynq Ultrascale+ MPSoC, et Zynq Ultrascale+ RFSoC, et par extension à n’importe quelle famille de FPGA Xilinx® utilisant les mêmes mécanismes de sécurité. De même, l’invention n’est pas limitée aux FPGA Xilinx® et peut trouver à s’appliquer à toute famille de FPGA, existante ou future, utilisant un amorçage tel que décrit dans la présente demande. Si l’on se réfère à la , on peut voir qu’il y est représenté une carte de circuits imprimés 12 selon un second mode de réalisation de la présente invention. Les éléments communs entre le premier mode de réalisation de l’invention sur la et ce second mode de réalisation de l’invention portent le même chiffre de référence, et ne seront pas décrits plus en détail ici lorsqu’ils sont de structures identiques. La carte de circuits imprimés 12 selon le second mode de réalisation est identique à la carte de circuits imprimés 1 selon le premier mode de réalisation, à l’exception du fait que la carte de circuits imprimés 12 comprend, à la place de la mémoire non volatile 3 de la , une première mémoire non volatile non amovible 3a qui est intégrée à la carte de circuits imprimés 12 et dans laquelle est stockée une première partie de clé chiffrée 6a. En outre, une seconde mémoire non volatile amovible 3b est externe à la carte de circuits imprimés 12 et stocke une seconde partie de clé chiffrée 6b. Avantageusement, la seconde mémoire externe 3b est une petite mémoire série connectée sur un connecteur. La détection de sa connexion physique se fait par un signal discret lorsque la seconde mémoire externe 3b est physiquement branchée. L’authentification peut se faire par plusieurs méthodes possibles : par exemple, un identificateur (ID) unique stocké dans la seconde mémoire non volatile externe 3b et dans la première mémoire non volatile non amovible 3a, cet ID serait unique par couple mémoire externe 3b, mémoire non amovible 3a ; une liste d’IDs autorisés et ou d’autres champs d’identification stockés à la fois dans la mémoire externe 3b et dans la mémoire non amovible 3a pourraient également être envisagés. Par ailleurs, l’algorithme de déchiffrement peut également être du type avec authentification comme l’AES-GCM. Dans ce second mode de réalisation, à l’étape d’amorçage de démarrage du procédé d’amorçage sécurisé décrit ci-dessus, le FPGA 2 est configuré pour : - vérifier si la seconde mémoire non volatile externe amovible 3b est ou non reliée au FPGA 2 de la carte de circuits imprimés 12 ; - lorsque la seconde mémoire non volatile externe amovible 3b est bien reliée au FPGA 2, récupérer S1a la première partie de clé chiffrée 6a stockée dans la première mémoire non volatile non amovible 3a, et récupérer S1b la seconde partie de clé chiffrée 6b stockée dans la seconde mémoire non volatile externe amovible 3b ; - combiner la première partie de clé chiffrée 6a et la seconde partie de clé chiffrée 6b pour former une clé de BBRAM chiffrée (ou première clé chiffrée combinée) ; et - déchiffrer S2, à l’aide du module d’algorithme de déchiffrement 9 du FPGA 2, la clé de BBRAM chiffrée en utilisant la seconde clé PUF 8 stockée dans le FPGA 2, et copier S3 la clé de BBRAM déchiffrée (ou première clé déchiffrée) 11 dans la BBRAM 10 du FPGA 2. Il est ainsi possible de combiner la première partie de clé chiffrée 6a et la seconde partie de clé chiffrée 6b, par exemple par concaténation des deux, pour former la clé de BBRAM chiffrée. Il est à noter qu’un quelconque autre type d’algorithme de combinaison standard ou propriétaire pourrait être utilisé, sans s’écarter du cadre de la présente invention, l’algorithme de combinaison devant toutefois être réversible (c’est-à-dire, la fonction de combinaison devant avoir une fonction réciproque de « décombinaison »). Ainsi, lorsque la seconde mémoire non volatile externe amovible 3b contenant la seconde partie de clé chiffrée 6b n’est pas physiquement branchée à la carte de circuits imprimés 12, le produit intégrant l’article cryptographique contrôlé (CCI) du FPGA 2 est alors déclassifié pour des applications cryptographiques, de telle sorte que le FPGA 2 ne peut plus s’amorcer dans le mode nominal, des attaques ne sont alors plus possibles. Avantageusement, la seconde partie de clé chiffrée 6b comprend au moins un facteur de validité, et, dans le procédé d’amorçage sécurisé décrit ci-dessus, l’étape consistant à combiner la première partie de clé chiffrée 6a et la seconde partie de clé chiffrée 6b est effectuée uniquement dans le cas où le FGPA 2 a préalablement authentifié l’au moins un facteur de validité de la seconde partie de clé chiffrée 6b, ce qui permet de garantir la validité de la seconde partie de clé chiffrée 6b. Il est à noter que la première partie de clé chiffrée 6a pourrait également comprendre un ou plusieurs facteurs de validité permettant au FPGA 2 de l’authentifier, sans s’écarter du cadre de la présente invention. Les mécanismes d’authentification de clé utilisés par le FPGA 2 peuvent, par exemple, être : contrôle de redondance cyclique et en-tête, vérification de la date de validité, nombre de bits, etc. Il est bien entendu que les modes de réalisations particuliers qui viennent d’être décrits ont été donnés à titre indicatif et non limitatif, et que des modifications peuvent être apportées sans que l’on s’écarte pour autant de la présente invention. Procédé d’amorçage sécurisé pour un réseau prédiffusé programmable par l’utilisateur, FPGA, (2) relié à une mémoire non volatile d’amorçage de démarrage (3 ; 3a, 3b) dans laquelle est stockée une première clé chiffrée (6 ; 6a, 6b) et à une mémoire non volatile d’amorçage nominal (4) dans laquelle est stockée une image chiffrée de FPGA (7), caractérisé par le fait qu’il comprend : - une étape d’amorçage de démarrage dans laquelle le FPGA (2) est configuré pour : • récupérer (S1) la première clé chiffrée (6 ; 6a, 6b) stockée dans la mémoire non volatile d’amorçage de démarrage (3 ; 3a, 3b) ; • déchiffrer (S2) la première clé chiffrée (6 ; 6a, 6b) en utilisant une seconde clé de fonction physique inclonable, PUF, (8) stockée dans le FPGA (2) ; et • copier (S3) la première clé déchiffrée (11) dans une mémoire vive sauvegardée par batterie, BBRAM, (10) interne du FPGA (2) ; puis - une étape d’amorçage nominal (S4) dans laquelle le FPGA (2) est configuré pour : • déchiffrer l’image chiffrée de FPGA (7) stockée dans la mémoire non volatile d’amorçage nominal (4) à l’aide de la première clé déchiffrée (11) stockée dans la BBRAM (10) ; et • dès que la première clé déchiffrée (11) a été utilisée pour le déchiffrement de l’image chiffrée de FPGA (7), effacer la première clé déchiffrée (11) de la BBRAM (10). Procédé d’amorçage sécurisé selon la revendication 1, caractérisé par le fait que, une fois que la première clé déchiffrée (11) est copiée dans la BBRAM (10), le FPGA (2) est configuré pour effacer la première clé déchiffrée (11) de la BBRAM (10) après une durée comprise entre 100 et 1500 millisecondes. Procédé d’amorçage sécurisé selon la revendication 1 ou 2, caractérisé par le fait que la mémoire non volatile d’amorçage de démarrage comprend une première mémoire non volatile non amovible (3a) et une seconde mémoire non volatile externe amovible (3b), la première clé chiffrée comprenant une première partie de clé chiffrée (6a) stockée dans la première mémoire non volatile non amovible (3a) et une seconde partie de clé chiffrée (6b) stockée dans la seconde mémoire non volatile externe amovible (3b). Procédé d’amorçage sécurisé selon la revendication 3, caractérisé par le fait que, dans l’étape d’amorçage de démarrage, le FPGA (2) est configuré pour : - vérifier si la seconde mémoire non volatile externe amovible (3b) est ou non reliée au FPGA (2) ; - lorsque la seconde mémoire non volatile externe amovible (3b) est reliée au FPGA (2), récupérer (S1a) la première partie de clé chiffrée (6a) stockée dans la première mémoire non volatile non amovible (3a), et récupérer (S1b) la seconde partie de clé chiffrée (6b) stockée dans la seconde mémoire non volatile externe amovible (3b) ; - combiner la première partie de clé chiffrée (6a) et la seconde partie de clé chiffrée (6b) pour former une clé de BBRAM chiffrée ; et - déchiffrer (S2) la clé de BBRAM chiffrée en utilisant la seconde clé PUF (8) stockée dans le FPGA (2), et copier la clé de BBRAM déchiffrée dans la BBRAM (10) du FPGA (2). Procédé d’amorçage sécurisé selon la revendication 4, caractérisé par le fait que la seconde partie de clé chiffrée (6b) comprend au moins un facteur de validité, et dans lequel l’étape consistant à combiner la première partie de clé chiffrée (6a) et la seconde partie de clé chiffrée (6b) est effectuée uniquement dans le cas où le FGPA (2) a préalablement authentifié l’au moins un facteur de validité de la seconde partie de clé chiffrée (6b). Carte de circuits imprimés (1 ; 12) comprenant un FPGA (2) dans lequel est stockée une seconde clé PUF (8), une mémoire non volatile d’amorçage de démarrage (3 ; 3a, 3b) dans laquelle est stockée une première clé chiffrée (6 ; 6a, 6b), et une mémoire non volatile d’amorçage nominal (4) dans laquelle est stockée une image chiffrée de FPGA (7), le FPGA (2) étant configuré pour réaliser le procédé d’amorçage sécurisé selon l’une des revendications 1 à 5. Carte de circuits imprimés (12) selon la revendication 6 en dépendance de la revendication 4, caractérisée par le fait la mémoire non volatile d’amorçage de démarrage comprend une première mémoire non volatile non amovible (3a) intégrée à la carte de circuits imprimés (12) et une seconde mémoire non volatile amovible (3b) externe à la carte de circuits imprimés (12), la première clé chiffrée comprenant une première partie de clé chiffrée (6a) stockée dans la première mémoire non volatile non amovible (3a) et une seconde partie de clé chiffrée (6b) stockée dans la seconde mémoire non volatile amovible externe (3b).