Temps de lecture : 6 min
Vos fichiers binaires contiennent des données critiques vis-à-vis de la propriété intellectuelle ? Sans précaution, ces données pourraient être compromises pendant le processus de fabrication sous contrat par une société tierce, et ainsi annuler tous les efforts déployés pour la sécurité dans les phases de développement.
Cet article décrit les solutions qui peuvent être mises en œuvre grâce au système de programmation de production « FlashRunner 2.0 » de notre partenaire SMH, afin de s’assurer d’une programmation sécurisée en matière de protection de données, de traçabilité du processus de programmation et de qualité de celui-ci.
Cybersécurité et fabrication électronique
La cybersécurité fait référence à la protection aux cyberattaques des systèmes connectés à Internet, incluant le hardware, les logiciels et les données.
Dans le monde des microcontrôleurs, et en particulier dans le secteur de la fabrication industrielle, ce terme a été réinterprété et prend plusieurs autres significations. La cybersécurité peut être liée aux thèmes suivants :
Dans le monde des microcontrôleurs, et en particulier dans le secteur de la fabrication industrielle, ce terme a été réinterprété et prend plusieurs autres significations. La cybersécurité peut être liée aux thèmes suivants :
- Antipiratage : le processus de programmation est sous-traité à une société tierce, et les clients veulent s’assurer que le firmware ne peut pas être volé ou falsifié ; ils veulent aussi réduire les risques de reconstruction non autorisée de données hexadécimales
- Traçabilité : la programmation fait généralement partie du processus de fabrication des cartes électroniques, ce qui exige des normes élevées en matière de traçabilité. Le résultat final, l’horodatage du processus de programmation ne sont que quelques-unes des informations à rechercher.
- Flash matching : le client exige les preuves d'un processus de programmation correct
Antipiratage
Les systèmes de programmation FlashRunner de la société SMH Technologies comportent un outil de chiffrement de firmware qui peut être utilisé comme méthode de lutte contre le piratage des données.
Supposons que vous souhaitiez confier le processus de fabrication de vos cartes électroniques à une société tierce, qui utilisera le système « FlashRunner 2.0 » pour flasher celles-ci. Très tôt dans le processus de fabrication, le fabricant de cartes vous demandera un firmware à flasher dans le(s) microcontrôleur(s) de la carte.
Supposons que vous souhaitiez confier le processus de fabrication de vos cartes électroniques à une société tierce, qui utilisera le système « FlashRunner 2.0 » pour flasher celles-ci. Très tôt dans le processus de fabrication, le fabricant de cartes vous demandera un firmware à flasher dans le(s) microcontrôleur(s) de la carte.
Comment sécuriser votre firmware, contre les tentatives de vol ?
Pour fonctionner, le FlashRunner 2.0 nécessite la conversion de ce firmware au format propriétaire FRB, cette conversion pouvant être réalisée à l'aide du logiciel GUI Workbench de SMH.
Pendant ce processus de conversion, le fichier FRB peut être converti en un format de fichier crypté, nommé fichier FRS (pour plus d'informations sur la procédure à suivre, reportez-vous au chapitre 3.9 du Manuel du programmeur FlashRunner 2.0 disponible sur http://www.smh-tech.com/). La méthode de chiffrement mise en œuvre est l’AES256 obtenue par mot de passe partagé. Cela signifie que seul le logiciel GUI Workbench possède une clé de chiffrement et que le FlashRunner 2.0 est doté d'une clé de déchiffrement intégrée. Par conséquent, le fichier FRS ne peut pas être reconverti en contenu de données d'origine. Ce fichier FRS ne peut être stocké que dans la mémoire du FlashRunner 2.0.
Cette méthode simple offre un moyen sûr et efficace de sécuriser votre logiciel contre les tentatives de vol, mais elle présente une limitation : une fois que le FlashRunner 2.0 commence à programmer, les données transmises par câble entre le FlashRunner 2.0 et le dispositif DUT sont déchiffrées.
Comment pouvons-nous garder les données cryptées également sur le câble ?
La solution : Établir une forme de communication chiffrée, de sorte que le déchiffrage sera effectué à l'intérieur du composant cible. La mise en œuvre de cette fonctionnalité dépend de la cible car elle est liée à la façon dont les spécifications de programmation du microcontrôleur cible sont conçues.
Comment établir une communication chiffrée, et effectuer le déchiffrage à l'intérieur du composant cible ?
Certains composants peuvent être flashés dans l'application, au travers d’un petit firmware dans la RAM, qui fait programmer la mémoire intégrée. Cela nous donne l’opportunité de concevoir un firmware dédié de flashage personnalisé :
- Le FlashRunner 2.0 envoie les données chiffrées par le câble directement au DUT qui est chargé avec notre firmware de flashage personnalisé en RAM.
- Notre firmware de flashage personnalisé contient la clé de déchiffrement qui sera utilisée pour déchiffrer les données et flasher la mémoire intégrée.
Traçabilité
Les processus de fabrication des cartes électroniques exigent des normes élevées, y compris en termes de traçabilité.
Le FlashRunner 2.0 propose plusieurs méthodes capables de fournir une traçabilité à l’ensemble du système :
- Fonction de logging : fournit un historique complet des commandes exécutées. Chaque commande est enregistrée avec son propre horodatage
01|2|000101-00:42:09|---#TPCMD CONNECT
01|2|000101-00:42:10|Requested ProtClock: 12500000.
01|2|000101-00:42:10|eMMC user data size: 59640 MB
01|2|000101-00:42:10|>|
Le protocole FlashRunner 2.0 est basé sur un protocole d'envoi-réception simple. Chaque commande envoyée recevra une réponse. Chaque exécution de projet a un état de retour clair : PASS/FAIL
- Message de retour d’erreur : chaque commande a son propre message de retour d'erreur, qui est fourni dans son intégralité dans une fonction « pile de retour erreur »
01|2|000430-22:30:06|---#TPCMD CONNECT
03|2|000430-22:30:06|Requested ProtClock: 20000000.
01|2|000430-22:30:06|Requested ProtClock: 20000000.
03|2|000430-22:30:11|00000040!|
03|4|000430-22:30:11|03|ERR--050000E3|(null)|[file ../emmc_hal.c, line 247, funct HAL_waitEoc()]
03|4|000430-22:30:11|03|ERR--050000D0|(null)|[file ../emmc.c, line 377, funct EMMC_readExtCsd()]
03|4|000430-22:30:11|03|ERR--050000D1|(null)|[file ../emmc.c, line 304, funct EMMC_initCard()]
03|4|000430-22:30:11|03|ERR--00000040|(null)|[file ../drv_api.c, line 650, funct CmdExe_Connect()]
03|4|000430-22:30:11|03|ERR--00000040|(null)|[file ../Src/pi-algo.c, line 388, funct cmd_TPCMD()]
01|2|000430-22:30:11|00000040!|
L'outil GUI Workbench fournit des statistiques simples sur le nombre total de cycles de programmation. D'autres implémentations peuvent être effectuées sur votre propre banc de test à l'aide de la librairie d'interface (DLL) FlashRunner.
Flash matching
Chaque site d’assemblage de cartes électroniques doit assurer au client que le processus de programmation a été effectué correctement, et fournir la preuve de cela.
Pour cette raison, chaque pilote FlashRunner contient en standard la méthode Verify ReadOut qui lit le contenu de la mémoire flash et le compare à celui du firmware original.
D'autres méthodes, lorsque cela a du sens, sont implémentées : La méthode Verify Checksum, est plus rapide, car elle compare des nombres représentant la somme de nombres corrects.
Un autre instrument utile lors de l'analyse de pré-production est la méthode DUMP. Cette dernière est implémentée en tant que commande standard dans le pilote FlashRunner 2.0. DUMP permet de lire et d’enregistrer dans un fichier l’intégralité du contenu de la mémoire qui vient d’être flashée.
Pour cette raison, chaque pilote FlashRunner contient en standard la méthode Verify ReadOut qui lit le contenu de la mémoire flash et le compare à celui du firmware original.
D'autres méthodes, lorsque cela a du sens, sont implémentées : La méthode Verify Checksum, est plus rapide, car elle compare des nombres représentant la somme de nombres corrects.
Un autre instrument utile lors de l'analyse de pré-production est la méthode DUMP. Cette dernière est implémentée en tant que commande standard dans le pilote FlashRunner 2.0. DUMP permet de lire et d’enregistrer dans un fichier l’intégralité du contenu de la mémoire qui vient d’être flashée.
Caractéristiques supplémentaires
Plusieurs autres fonctionnalités sont disponibles sur les pilotes FlashRunner, qui implémentent des routines de sécurité spécifiques. Pour en savoir plus, vous pouvez vous inscrire sur le WIKI SMH, afin d'avoir accès à toutes les informations relatives aux drivers FlashRunner. Pour chaque pilote, une description de la commande est présentée, avec une liste complète de ces fonctionnalités.
Solutions FlashRunner
L'environnement de production recherche en permanence l'efficacité, la productivité et la qualité. Ces nécessités sont couvertes par la famille FlashRunner 2.0 qui, grâce à sa grande flexibilité et universalité, offre une gamme complète de produits de 1 à 32 canaux indépendants et parallèles.
En particulier, les fonctions d’antipiratage et de sécurité de la famille FlashRunner 2.0 permettent de s’assurer d’une programmation sécurisée en matière de protection de données, de traçabilité du processus de programmation et de la qualité de celui-ci.
La famille FlashRunner 2.0 est composée de 3 types de produit :
En particulier, les fonctions d’antipiratage et de sécurité de la famille FlashRunner 2.0 permettent de s’assurer d’une programmation sécurisée en matière de protection de données, de traçabilité du processus de programmation et de la qualité de celui-ci.
La famille FlashRunner 2.0 est composée de 3 types de produit :
FR2.0 propose jusqu’à 16 voies de programmation indépendantes et parallèles (voire plus par multiplexage), et adresse plus particulièrement les besoins de programmation en flan de cartes.
FlashRunner LAN 2.0 NXG : par son design ultra-compact, il est spécialement conçu pour s'intégrer facilement dans un moyen de test/programmation, et allie les hautes performances issues de la technologie FR2.0 et une flexibilité qui lui permet d’être configurable de 1 à 4 canaux de programmation indépendants et parallèles.
FR HS (High Speed) est le dernier né de la famille FlashRunner 2.0 et met en œuvre une technologie de pointe qui offre la vitesse la plus élevée à tous les domaines, et permet de gérer une très grande quantité de données en maintenant les meilleures performances de programmation possibles :
- Programmation de microcontrôleurs et mémoires série, jusqu’à 32 voies indépendantes et parallèles.
- Programmation de mémoires parallèles de grandes tailles, en particulier eMMC et NAND.