comment enregistrer correctement une architecture dans un fpga ic pour toujours
8
Considérant que j'ai fait une architecture pour faire quelque chose de spécifique, écrit en vhdl, par exemple.
Puis-je le «graver» dans une puce fpga, pour toujours? Ou comment dois-je le faire, en protégeant la propriété intellectuelle en sachant qu'elle peut être lue à partir de la mémoire flash série?
Les FPGA Xilinx Spartan 3AN ont un flash interne, ce qui les rend non volatils. Votre question est en fait plusieurs questions.
1) Les FPGA sont-ils volatils ou non volatils? La plupart sont volatils, nécessitant la lecture du flux binaire de configuration dans le FPGA à partir d'un périphérique de stockage non volatile externe à chaque mise sous tension. Il y en a qui sont non volatils. Comme le Xilinx S3AN que je mentionne.
2) Comment protégez-vous le flux binaire de configuration? Il y a plusieurs réponses à cette question.
Vous pouvez crypter le flux binaire; ce qui signifie que le train de bits qui est stocké sur le dispositif de stockage non volatile décrit ci-dessus est un texte chiffré unique qui ne peut être déchiffré que par le fpga unique avec la clé appropriée. Cela protégera la fonctionnalité du flux binaire contre la découverte par ingénierie inverse. C'est-à-dire que même si le train de bits chiffré peut être extrait du dispositif de stockage non volatile, que ce soit in situ ou plus destructeur, le sens ne pourra pas être fait à partir du fichier extrait car il est chiffré.
Vous pouvez également définir le train de bits pour qu'il soit interdit d'être relu. L'interface JTAG que l'on utilise pour programmer un FPGA au moment du débogage peut généralement être utilisée pour lire le flux binaire de configuration hors du fpga. La définition de l'option NO_READBACK interdit cela.
Comment le FPGA peut-il lire le bitstream chiffré s'il n'est pas possible de le déchiffrer? La réponse est bien sûr qu'il est possible de décrypter le train de bits. C'est juste un peu plus difficile parce que c'est obscurci.
ntoskrnl
Hein? Le train de bits en clair (appelez-le Bpt) est chiffré par une fonction de chiffrement Ek () qui prend le texte en clair et une clé secrète (appelez-la Key) pour créer un train de bits en texte chiffré (appelez-le Bct), donc Bct = Ek (Bpt, Key) . Celui-ci est stocké et diffusé au démarrage vers le FPGA, qui connaît la clé secrète, il peut donc le déchiffrer, Bpt = Ek (Bct, Key). Sans la clé, un tiers ne peut pas effectuer l'opération de décryptage. Compte tenu du temps de traitement et d'autres outils cryptoanalytiques, le tiers pourrait potentiellement comprendre le texte en clair, mais pas via le processus de décryptage prévu.
Jotorious
L'attaquant pourrait également simplement découvrir la clé et procéder au décryptage du texte en clair. Je suppose que la clé peut être rendue assez difficile à récupérer à partir du matériel (par exemple, une carte à puce), mais si elle est stockée dans une sorte de mémoire régulière, cela ne devrait pas être plus difficile que de récupérer le texte chiffré.
ntoskrnl
1
À droite, le cryptage n'est aussi sécurisé que la clé est sécurisée. Je ne suis pas en mesure de parler aux FPGA non Xilinx, mais sur les FPGA Xilinx, la clé n'est pas récupérable par des mesures non invasives / non destructives.
Il est possible de trouver des FPGA avec une mémoire programme non volatile intégrée. Par exemple, Microsemi (anciennement Actel) est spécialisé dans ce type d'appareil.
D'autres fournisseurs offrent la possibilité de masquer-programmer un FPGA. Par exemple, Xilinx appelle leurs FPGA " EasyPath " de leurs appareils programmés par masque . Pour autant que je sache, cela nécessite un paiement NRE, il n'est donc pas approprié pour les situations où vous pourriez avoir besoin de mettre à jour votre conception. (Pointe du chapeau à alex.forencich pour la correction)
Les FPGA EasyPath ne sont pas programmés par masque, ils sont testés sur mesure uniquement pour votre flux binaire, ce qui réduit les coûts de test et augmente le rendement (ils peuvent tolérer des défauts dans les composants que votre conception n'utilise pas). Le FPGA nécessite toujours un flash de configuration avec votre conception chargée pour fonctionner. S'il était réellement programmé par masque, le NRE serait énorme.
alex.forencich
6
Je peux au moins parler pour altera, je suppose que Xilinx aura quelque chose de similaire. Ils ont la possibilité de crypter le fichier que vous mettez en flash externe ou en EEPROM. Ensuite, vous chargez la clé de déchiffrement dans la partie altera, en utilisant son stockage de clé non volatile ou sauvegardé par batterie.
Puisque vous ne pouvez pas lire la clé, elle protège votre IP. Ils perdaient des gains de conception au profit d'Asics parce qu'ils ne pouvaient pas protéger l'IP des gens, c'est donc une caractéristique assez courante.
La seule façon d'y parvenir est d'acheter un module Flash séparé (si vous n'en avez pas déjà un sur le PGA) et de charger votre code dans le ram, mais ce n'est pas recommandé pour tous les tracas, achetez simplement quelque chose comme un CPLD si vous prévoyez une reprogrammation ultérieure ou un ASIC si vous n'avez pas l'intention de le reprogrammer à nouveau.
Il est possible de trouver des FPGA avec une mémoire programme non volatile intégrée. Par exemple, Microsemi (anciennement Actel) est spécialisé dans ce type d'appareil.
D'autres fournisseurs offrent la possibilité de masquer-programmer un FPGA. Par exemple, Xilinx appelle leurs FPGA " EasyPath " de leurs appareils programmés par masque . Pour autant que je sache, cela nécessite un paiement NRE, il n'est donc pas approprié pour les situations où vous pourriez avoir besoin de mettre à jour votre conception.(Pointe du chapeau à alex.forencich pour la correction)la source
Je peux au moins parler pour altera, je suppose que Xilinx aura quelque chose de similaire. Ils ont la possibilité de crypter le fichier que vous mettez en flash externe ou en EEPROM. Ensuite, vous chargez la clé de déchiffrement dans la partie altera, en utilisant son stockage de clé non volatile ou sauvegardé par batterie.
Puisque vous ne pouvez pas lire la clé, elle protège votre IP. Ils perdaient des gains de conception au profit d'Asics parce qu'ils ne pouvaient pas protéger l'IP des gens, c'est donc une caractéristique assez courante.
http://www.altera.com/devices/fpga/stratix-fpgas/about/security/stx-design-security.html
la source
La seule façon d'y parvenir est d'acheter un module Flash séparé (si vous n'en avez pas déjà un sur le PGA) et de charger votre code dans le ram, mais ce n'est pas recommandé pour tous les tracas, achetez simplement quelque chose comme un CPLD si vous prévoyez une reprogrammation ultérieure ou un ASIC si vous n'avez pas l'intention de le reprogrammer à nouveau.
la source