Avec l'Internet des objets (IdO) est largement les dispositifs populaires - de la ville intelligente sans fil à des bijoux, des choses dans presque toutes les étapes de la vie quotidienne, des choses types d'exigences délimitées de sécurité du système intégré de priorité de plus en plus urgent d'assurer la sécurité. le processus de démarrage est la première étape pour protéger les systèmes embarqués, ainsi que les obstacles pour empêcher les logiciels malveillants partie nécessaire de l'application. penchons-nous sur ses forces et ses faiblesses, et à l'industrie de l'électronique dans un processeur commun --i.MX6 un exemple pour illustrer.
Qu'est-ce qu'un bon départ?
Le «démarrage sécurisé» est le processus par lequel le système d'exploitation (SE) doit s'authentifier auprès du matériel avant de lancer la mise en miroir et le code avant de pouvoir être utilisé pour le démarrage, car le matériel doit être préparé à l'avance. L'authentification utilise du code généré par des informations d'identification sécurisées En résumé, elle garantit que les logiciels d'initialisation et d'exploitation sont la version du fabricant prévue et ne sont pas altérées par des logiciels malveillants ou des tiers malveillants.
Périphériques d'amorçage sûrs pour une utilisation unique, tels que les lecteurs électroniques utilisant largement les processeurs i.MX6 tels que les contrôleurs d'écran E-Ink intégrés i.MX6 Solo et DuaLite, utilisés principalement dans Lire des eBooks, pas des opérations générales, auquel cas il est utile de verrouiller l'environnement Linux au démarrage.
D'autres situations, comme téléphone Android pourraient avoir un choix, par exemple, en utilisant un démarrage sécurisé pourrait limiter les utilisateurs finaux d'effectuer ROM personnalisé. Capable de faire est peut-être une caractéristique, ou peut être basée sur la mise en page des produits ou des exigences de sécurité Idéalement, le moment idéal pour démarrer en toute sécurité est fondamentalement lorsque vous ne voulez pas que l'autre partie charge votre système d'exploitation ou un autre chargeur de démarrage sur votre appareil.
De plus en plus de personnes recommanderont un démarrage en toute sécurité sur les systèmes avec des niveaux d'intégration plus élevés, tels que les caméras IP Linux, car tout code de démarrage malveillant ou logiciel de système d'exploitation peut transformer votre appareil en botnet. Ou peut-être que la photo prise de l'appareil photo est téléchargée publiquement sur Internet ou même modifiée pour inclure des informations telles que le clip vidéo que l'hôte vidéo souhaite.
i.MX6 sur le processus de démarrage en toute sécurité
Une fois l'image de démarrage configurée sur i.MX6, une clé sécurisée doit être générée pour le certificat SSL généré à cette fin afin de tirer parti du démarrage sécurisé.
Ces clés sont utilisées pour générer un ensemble d'instructions de sécurité, puis compilées dans l'image de démarrage en utilisant des outils fournis par des fournisseurs tels que Freescale et NXP aujourd'hui. Le processeur prend alors le chargeur de démarrage de premier niveau, Et utilisez vos informations d'identification pour authentifier les informations d'identification générées par les outils de compilation de démarrage sécurisé.
Lors de l'écriture sur le support de démarrage, si les données de l'image clé de démarrage correspondent aux données clés stockées dans le stockage sécurisé du processeur, la commande de sécurité est exécutée, puis la valeur de hachage du mot de passe miroir est vérifiée. S'ils correspondent, le processeur commencera à charger et à exécuter votre image de démarrage.
Une fois ce processus démarré par le chargeur de démarrage interne de la CPU, vous pouvez toujours appeler la bibliothèque de démarrage sécurisée à partir du code qui a démarré le chargeur, ce qui vous permet de charger l'image du système d'exploitation et démarrer le chargeur. Programmez de la même manière pour être certifié.
À la fin de ce processus, le système d'exploitation démarrera dans un environnement sécurisé et vérifié, ce qui est raisonnable, car chaque étape effectue un test de certification du hachage de clé stocké dans le processeur.
Conception programmable unique
Du point de vue de la sécurité, ce processus génère une clé racine à partir du certificat SSL qui est fausse et ensuite gravée dans la CPU dans une conception à programmation unique (OTP) Une fois la clé gravée dans le processeur Ne peut pas changer - l'une des raisons est la sécurité.
L'image de démarrage est également signée sur la base de la clé, et les informations générées pendant le processus de signature sont combinées avec l'image.Le processeur vérifie votre clé d'image avec sa clé, et si elle correspond, La clé vérifie votre image Si elle correspond encore, vous pouvez effectuer un miroir, ce qui vous amènera à une chaîne de niveau supérieur, en commençant le processus de chargement du processeur vers le chargeur de démarrage normal, vers le système d'exploitation.
Bien sûr, cela peut être le cas pour i.MX6, en fait il existe une variété de différents types de démarrage de sécurité, tels que X86 avec démarrage de sécurité UEFI, mais pour des raisons de compréhension cet article se concentre sur i.MX6.
Utiliser du matériel
La suite matérielle i.MX6 inclut un certain nombre de mécanismes de sécurité spéciaux qui sont sûrs pour le démarrage, et la clé pour un démarrage sécurisé est le fusible unique utilisé pour graver dans la clé: une fois fusionnée, elle ne peut plus être connectée Par conséquent, la valeur de hachage est permanente une fois que votre clé est gravée. Plusieurs clés peuvent également être intégrées dans un hachage de clé unique, de sorte qu'une clé peut être révoquée si elle est compromise.
Une autre caractéristique du système est la sécurité interne du bootloader CPU, c'est un même code statique testé de sécurité. Il appartient au système d'exploitation de l'ensemble de la chaîne pour maintenir la sécurité d'une base importante.
De plus, ayant des algorithmes de chiffrement matériel des accélérateurs de i.MX6. Hash tels que AES, Triple DES hash, SHAL et algorithme SHA256, etc., peut être accéléré par processeur i.MX6, ce qui augmente considérablement la vitesse du processus de sécurité.
défaut
L'inconvénient le plus évident est que vous devez être responsables de leur propre sécurité. Si votre clé est une fuite vers le monde extérieur, les gens utilisent les clés stockées dans le processeur pour coder les signatures, donc vous devez vous assurer que les processus et la sécurité du matériel.
En outre, un processeur configuré à des fins de démarrage sécurisé ne démarre que lorsque l'image a été correctement signée, de sorte que la gravure des valeurs de hachage dans le processeur peut empêcher le processeur d'exécuter du code si des erreurs se produisent. Parce que la valeur de hachage ne correspond pas - devenant ainsi un processeur inutile.
Une fois le processeur configuré pour une exécution en toute sécurité, vous devez charger un code sécurisé qui vous permettra uniquement de le charger en toute sécurité depuis le stockage (comme une carte SD ou une mémoire flash NAND) ou de charger le logiciel Processeur (chargement d'image USB).
Par conséquent, la préparation du matériel et du processeur doit être garantie et vous devez également vous assurer que votre chargeur de démarrage est bien préparé pour cela.
Comme mentionné précédemment, votre programme de chargeur de démarrage doit appeler la bibliothèque sur le processeur de démarrage sécurisé, afin de commencer la phase suivante de la chaîne de certification. Bootloader de codage incorrect afin de garantir l'utilisation correcte de la bibliothèque, alors vous ne pouvez pas être en mesure Assurer complètement la sécurité du système d'exploitation.
Ne tombez pas dans le piège de la fausse sécurité
Vous avez besoin de comprendre est sûr et ne démarre pas i.MX6 verrouillage du système dans son ensemble, mais simplement bloquer le logiciel du système d'exploitation, il était donc possible d'écrire certains logiciels malveillants Linux exécutant sur le système d'exploitation, s'ils ont chargé avec succès, sera Nuire à l'ensemble du système.
i.MX6 certification de démarrage sécurisé
Si une sécurité plus complète est requise, vous pouvez également authentifier le reste du système de fichiers et le principe de processus de démarrage sécurisé i.MX6 de code est qu'un bloc de mémoire particulier a une valeur de hachage cryptographique spécifique et des informations de signature associées de sorte qu'il est possible Le chargement du système de fichiers racine du système d'exploitation et d'autres fichiers importants dans un emplacement fixe de la mémoire pendant le chargement du jeu d'instructions de sécurité correct vous permet d'authentifier le reste du système si nécessaire.
i.MX6 Safe Start astuces importantes
1. Assurez-vous que le processus de démarrage est sûr Une fois que vous avez décidé d'un chemin de démarrage sécurisé, vous devez vous assurer que le processus va de pair avec la fuite de la clé en production.
2. Assurez-vous que la méthode de cryptage fort garantit que la méthode de cryptage utilisée est suffisamment forte pour que l'utilisateur établisse une clé plus faible et que le démarrage sécurisé sur i.MX6 prend également en charge des compromis plus anciens ou compromis. Par conséquent, assurez-vous que votre algorithme est à jour et capable d'atteindre vos objectifs.
3. Vérifiez votre code Pour un démarrage en toute sécurité, ce qui signifie tout autre chose, y compris le démarrage du reste du code dans le chargeur, le système d'exploitation et d'autres logiciels doivent être écrits correctement sur un démarrage sans faille de sécurité.
De plus, chaque phase du processus de démarrage doit être vérifiée pour les étapes suivantes avant son exécution, et si cela n'est pas fait, ou si c'est partiellement fait, la portée de ce que l'on peut appeler la sécurité des processus sera beaucoup plus petite.
4. Authentifier Everyplace Pour une sécurité réelle, essayez d'authentifier autant de code que vous le souhaitez et assurez-vous de suivre les instructions de construction de votre bibliothèque.
Vous devez vous assurer que tout le processus est sûr, c'est-à-dire comment générer et stocker votre clé.Un démarrage sécurisé vérifie uniquement la signature, et toute image signée est considérée comme sûre par le processeur.
Donc, assurez-vous que chaque morceau de code que vous écrivez est appelé sur la bibliothèque de démarrage sécurisée du processeur pour continuer à authentifier votre miroir car la plupart des cartes i.MX6 ont plusieurs étapes Au cours du processus de démarrage, le chargeur de démarrage interne de la CPU charge d'abord le SPL, puis le SPL charge le chargeur de démarrage complet pour le charger dans le système d'exploitation.Chaque étape doit être certifiée à l'étape précédente pour confirmer qu'elle est sûre.
5. Vérifiez que le processus est validé pour s'assurer que le code effectue réellement un démarrage en toute sécurité.Il est important que même le code sécurisé puisse sauter n'importe où dans la mémoire car le processeur fonctionne comme ceci. Il est important de s'assurer que le code va authentifier l'étape suivante.
Le chargeur de démarrage le plus utilisé pour i.MX6 est U-Boot, qui supporte vraiment le démarrage sécurisé sur i.MX6, il doit être configuré, mais c'est plus simple. Il devrait y avoir moins d'erreurs.Écriture de sécurité à partir de zéro n'est pas une bonne idée, mais il est préférable d'adopter une approche connue et idéale pour la construction et l'adapter à vos besoins de conception.