La sécurité devient une préoccupation grandissante dans le secteur de l'Internet des objets (IoT). La sécurité matérielle a donc été renforcée, car elle représente une vraie promesse pour protéger les appareils contre les cyberattaques. Dans cet article, nous étudierons les exemples de sécurité matérielle existants et la façon dont ils sont utilisés pour sécuriser les appareils IoT.
L'essor de la sécurité matérielle
La prolifération d'appareils et de solutions IoT a créé de nombreuses opportunités de développement technique, notamment la génération de données dédiées à l'intelligence artificielle et la capacité de gérer et de contrôler des processus à distance. Toutefois, les technologies IoT sont comme une épée à double tranchant : elles offrent également des opportunités aux cybercriminels, sous forme d'attaques par déni de service de masse (DDoS), de vol de données, de piratage réseau et d'atteinte à la vie privée. Alors que certaines de ces attaques peuvent être évitées grâce à l'utilisation d'une sécurité basée sur des logiciels, celle-ci ne peut pas empêcher toutes les attaques.
Par exemple, un appareil IoT pourrait être utilisé pour sécuriser des transmissions de données, mais si le matériel du périphérique est attaqué physiquement, alors aucune routine logicielle ne peut le protéger. C'est là qu'intervient la sécurité matérielle et c'est pourquoi elle est de plus en plus populaire avec les SoC, les microcontrôleurs et les processeurs. Habituellement, la sécurité matérielle consiste en un matériel capable d'accélérer la sécurité logicielle, comme les moteurs de chiffrement, mais les concepteurs sont allés plus loin, jusqu'à créer des systèmes qui protègent le métal lui-même.
Type d'attaques matérielles
On ne parle pas souvent des attaques matérielles dans les actualités. C'est peut être parce qu'accéder physiquement à un périphérique peut être une tâche difficile à réaliser. Par exemple, on peut pirater un compte de messagerie de diverses manières grâce à une connexion Internet, mais le vol d'un ordinateur pour accéder à des e-mails sauvegardés dans le système est une toute autre tâche. Mais même lorsqu'on parvient à se procurer un appareil physiquement, accéder à toutes les données sur cet appareil ne demande pas de grandes compétences.
Attaque par canal auxiliaire
Lors d'une attaque par canal auxiliaire, un système très sécurisé est indirectement attaqué via des sous-systèmes non sécurisés, externes à celui-ci. Par exemple, les fichiers d'un compte d'utilisateur protégé par un mot de passe sur Windows peuvent être facilement accessibles si le disque dur est extrait, puis connecté à un autre ordinateur. L'attaquant n'a qu'à "prendre le contrôle" du dossier pour, soudainement, accéder à tous les fichiers. Le mot de passe du compte utilisateur, qui est sécurisé, n'est pas requis, et le système sécurisé est facilement contourné.
Martèlement de mémoire
Le martèlement de mémoire est un exploit particulier qui s'applique à lamémoire vive dynamiqueà densité élevée. Grâce au nombre croissant de transistors et à la réduction de la taille des wafers en silicone, les cellules de mémoire dans une puce moderne de mémoire vive dynamique sont incroyablement rapprochées. En fait, les cellules de mémoire vive dynamique sont désormais tellement proches que les cellules ont une petite chance de modifier la valeur des cellules voisines.
Un martèlement de mémoire tire profit de ce problème et peut être utilisé pour modifier la valeur des lignes de mémoire "protégées," en altérant la valeur de la mémoire contenu dans les lignes voisines. Cette capacité pour un attaquant d'injecter des valeurs dans des espaces protégés auxquels ils n'ont pas accès, peut en théorie être utilisé pour outrepasser les systèmes de sécurité et injecter du code malveillant qui pourrait avoir des privilèges au niveau du noyau.
Exemples de sécurité matérielle
Pour protéger des appareils contre les attaques matérielles, les concepteurs peuvent déployer des mesures de sécurité à l'intérieur du silicone même, qui s'exécutent en dehors de la portée du logiciel. Quels exemples de sécurité existent actuellement dans le domaine matériel ?
Accélération du chiffrement
Comme nous l'avons déjà mentionné, c'est l'une des premières formes de sécurité matérielle et il s'agit plus d'une défense périphérique que matérielle. L'accélération du chiffrement effectue des fonctions cryptographiques dans le matériel et non le logiciel, ce qui permet non seulement d'accélérer les applications, mais aussi de fournir au matériel des systèmes qui ne peuvent pas être exploités dans le logiciel.
Par exemple, une version logicielle d'AES peut être soumise à une injection de code dont le résultat chiffré est facilement réversible par l'attaquant, mais une version matérielle d'AES est immuable et ne peut être attaquée.
Générateur de nombres aléatoires physique
Alors qu'un générateur de nombres aléatoires peut être considéré comme une accélération cryptographique, il est assez important pour constituer une catégorie propre. Presque toutes les formes de chiffrement reposent sur des nombres aléatoires, et plus un nombre est aléatoire, meilleur sera le chiffrement qui utilise ce nombre. Les générateurs de nombres aléatoires qui sont écrits dans le logiciel utilisent presque toujours autant de temps que leur amorce et peuvent donc être facilement attaquables pour un pirate.
Un exemple d'une situation dans laquelle des nombres aléatoires ont été incorrectement utilisés, c'est lorsque deux experts en sécurité ont été capable de pirater à distance une Jeep et de prendre le contrôle total du véhicule. Cette attaque a été réalisée en se connectant au système multimédia de la voiture et en utilisant cette connexion pour envoyer des messages via le bus CAN de la voiture. Les pirates ont réussi à prendre le contrôle de la direction, des freins et de l'accélérateur.
Cette attaque n'a pu être possible que grâce à la façon dont le mot de passe du Wi-Fi de la voiture a été généré, celle-ci étant supposée être "aléatoire." Le mot de passe Wi-Fi a été généré en se basant sur la date et l'heure auxquelles le système multimédia a été allumé pour la première fois. Habituellement, cela serait sécurisé, mais comme l'heure et la date de fabrication d'une voiture peuvent facilement être déterminées par année et mois, un attaquant ne doit s'intéresser qu'à 15 millions de combinaison. Si l'heure du jour peut-être correctement devinée, il n'y a plus que 7 millions de possibilités, et 7 millions de mot de passe Wi-FI peuvent être l'affaire d'une heure pour une attaque de force brutale. Avec l'utilisation de nombres aléatoires physiques, le mot de passe Wi-Fi serait très difficile à cracker. Mais parce que celui-ci était basé sur des éléments non aléatoires, il a facilement été contourné.
Chiffrement de mémoire
Le chiffrement de données remonte à des milliers d'années, et à l'utilisation de messages codés pour masquer des informations aux yeux indiscrets. C'est la même chose en informatique, où des données à transmettre sont souvent chiffrées avant d'être envoyées. Toutefois, cette méthode de chiffrement commence à être appliquée au stockage de données en mémoire, avec les ROM et RAM bénéficiant désormais d'options de chiffrement. Cette approche permet aux concepteurs de garantir que si un attaquant obtient le contenu d'une RAM ou d'une ROM, les informations en elles-mêmes sont illisibles sans accès au bon matériel.
La protection de mémoire n'est pas nouvelle, avec de nombreux microcontrôleurs notamment des bits de protection de lecture qui empêchent de cloner un firmware. Le chiffrement de mémoire flash n'est pas nouveau non plus, avec de nombreux FPGA facilitant le chiffrement de la mémoire flash de configuration. Toutefois, cette nouvelle génération de chiffrement de mémoire est en route et permet des vitesses d'accès presque identiques.
Démarrage sécurisé
L'un des problèmes majeurs rencontrés avec presque tous les processeurs : comment un processeur peut-il être sûr que le code qu'il a lancé est authentifié et non malveillant ? Alors que l'authenticité du code de démarrage du noyau de n'importe quel système ne peut jamais être vérifiée, les étapes de démarrage suivantes le peuvent, et la plupart des attaquants tenteront d'injecter du code soit dans le code de démarrage du noyau, soit dans l'application qui est ensuite chargée.
Afin d'éviter cela, les développeurs ont introduit des méthodes de démarrage sécurisées dans des processeurs qui commencent par exécuter le code de démarrage, qui est immuable et donc immunisé contre les attaques d'injection de code. Ce code de démarrage s'intéresse ensuite à l'application qui est sur le point d'être chargée et vérifie l'intégrité du code. Si du code injecté est détecté, le système peut soit s'exécuter dans un état limité, soit envoyer des avertissements à un système d'exploitation pour l'informer que des problèmes d'intégrité de code ont été détectés.
Zones de confiance
Les zones de confiance sont assez nouvelles pour les microcontrôleurs, mais elles constituent une très ancienne technique pour les processeurs. Les zones de confiance aident à résoudre le problème de processeurs en ignorant le code exécuté s'il est malveillant.
Il est maintenant important de préciser que toutes les instructions de processeurs ne sont pas fondamentalement dangereuses. Mais certaines peuvent l'être, et notamment inclure l'accès au matériel, le pointeur de pile ou des systèmes critiques. Donc, les processeurs modernes ont des niveaux de privilège selon lesquels l'OS s'exécute avec les privilèges ultimes et a accès à toutes les instructions, alors que les processeurs que l'OS exécute suivent un plus faible privilège. Ces processus ne peuvent pas accéder à des instructions sensibles et sont donc moins à même de causer des dommages ou d'attaquer des systèmes critiques sur un processeur.
Aujourd'hui, de nombreux SoC et microcontrôleurs introduisent ces zones à leurs noyaux, et un OS s'exécutera sur un noyau pendant que les processus s'exécuteront soit sur le même noyau avec de moindres privilèges, soit sur un deuxième noyau avec des fonctionnalités supprimées.
Les broches d'altération
Les broches d'altération représentent une fonctionnalité matérielle particulièrement utile car elles sont difficiles à détecter et à contourner. Certaines attaques matérielles nécessitent que l'attaquant supprime physiquement des pièces pour gagner l'accès à l'E/S, comme des ports de débogage et des canaux de mémoire. Selon l'appareil, une broche d'altération est celle qui détecte lorsqu'un événement mécanique externe survient, comme l'ouverture d'un boîtier, par exemple. Une fois cet événement détecté, la broche d'altération peut donner l'ordre au processeur de suivre une routine en particulier, qui peut aller du simple redémarrage pour empêcher la lecture de données sensibles, à une action plus drastique, comme un effacement complet de la mémoire. Les broches d'altération peuvent aussi être utilisées sur des broches mieux dissimulées qui peuvent sembler ne rien faire à l'attaquant et donc ne pas être remarquées.
Sécurité matérielle avancée : moniteurs de bus
Tous les exemples de sécurité matérielle précédemment cités sont souvent associés dans un même module et offrent aux utilisateurs toute une gamme d'options de sécurité. Toutefois, il existe un nouveau genre de sécurité matérielle peu à peu introduite, qui offre une sécurité selon un tout nouveau modèle : les moniteurs de bus.
Les moniteurs de bus sont des systèmes de sécurité très avancés directement intégrés dans le SoC d'un microcontrôleur et qui opèrent indépendamment du système. Les moniteurs de bus sont connectés à plusieurs bus et connexions internes, notamment des broches d'E/S, des registres, des bus de données internes et des ports de programmation. Sous opération nominale, les connexions internes du dé créent un état stable à partir duquel le moniteur de bus apprend. Lorsqu'un code malveillant est injecté, ou en cas d'attaque matérielle sur une broche, l'état stable du moniteur de bus est perturbé. Le moniteur de bus agit alors contre l'anomalie. Cela dépend du moniteur de bus. Certains peuvent renvoyer des exceptions de l'OS, alors que d'autres peuvent entraîner le redémarrage du système. Certains moniteurs de bus peuvent même détourner des requêtes de registre potentiellement malveillantes du processeur et retourner des valeurs nulles tout en enregistrant la tentative d'attaque.
Conclusion
Alors que la mise en application d'une sécurité matérielle augmentera le coût du silicone, les avantages d'une sécurité basée sur le matériel augmentera la sécurité des conceptions. La sécurité logicielle ne peut pas tout faire, et un système entièrement basé sur la sécurité logicielle constitue une cible facile pour un attaquant, alors que ceux qui intègrent une sécurité matérielle seront beaucoup plus solides.
En effet, la possibilité de chiffrer la mémoire à la volée permet de sécuriser des appareils à long terme et offre un confort supplémentaire à ceux qui veulent utiliser l'électronique sans fuite d'informations. Les technologies telles que les moniteurs de bus permettront la naissance de systèmes de sécurité plus intelligents, capables d'apprendre des attaques et d'empêcher de façon préventive de futures attaques, en reconnaissant les signes d'un modèle.
Dans l'ensemble, la sécurité matérielle deviendra la norme des pratiques de sécurité et les appareils n'intégrant pas ces fonctionnalités resteront cantonnés à des opérations et des tâches basiques.