L'omniprésence et la simplicité du Raspberry Pi ont beaucoup contribué à sa popularité, et pas seulement auprès des amateurs passionnés. Au fil des années, et grâce à l'introduction du Compute Module Raspberry Pi, le nano-ordinateur monocarte s'est également fait une place dans les applications industrielles. Pour autant, les appareils fondés sur cette approche étaient jusqu'ici atteints d'une faiblesse majeure : la principale solution de stockage de masse — à savoir les cartes SD — ne disposait d'aucune forme de protection des données.

Le Raspberry Pi lui-même ne propose pas de démarrage sécurisé digne de confiance. Ainsi, n'importe quel utilisateur courant peut retirer la carte SD, en faire une copie et examiner les fichiers, les micrologiciels et toutes les données utilisateur recueillies. Pour remédier à cette situation, Swissbit a développé une solution destinée à chiffrer les données de la carte SD, en incorporant l'infrastructure d'authentification nécessaire à une solution de démarrage sécurisée.

Swissbit AG

Le siège de la société Swissbit AG, filiale de Siemens AG jusqu'en 2001, se trouve en Suisse. Spécialisée dans les produits de mémoire et de stockage, l'entreprise crée et fabrique des solutions de stockage sans équivalent en s'appuyant sur ses propres compétences internes de conception et ses installations de production situées à Berlin, en Allemagne. La solution Secure Boot pour Raspberry Pi est l'un des produits issus de cet éventail inégalé de capacités.

Raspberry Pi et absence de sécurité

Si vous travaillez avec un Raspberry Pi, vous remarquerez qu'il utilise une chaîne de confiance implicite : quel que soit le support de démarrage utilisé, il essaie d'exécuter le code à partir de ce support. Ce qui l'expose aux attaques pouvant compromettre le système d'exploitation de l'appareil. Comme tout utilisateur ou attaquant dispose d'un accès complet aux données du périphérique de démarrage, vous ne pouvez même pas identifier qu'un système a été copié ou modifié avec des logiciels malveillants ou des outils d'exploration de données. Dans le pire des cas, des tiers pourraient utiliser le dispositif pour attaquer les réseaux auxquels le Raspberry Pi est connecté.

Pour résoudre cette lacune, l'ajout d'une solution de démarrage mieux sécurisée à un Raspberry Pi trouve tout son sens. Cependant, comme il est impossible de changer le matériel lui-même, une solution intelligente et adaptable aux déploiements existants est nécessaire. C'est ici qu'entre en piste la carte PS-45u DP « Raspberry Edition » de Swissbit avec ses points forts et son prix raisonnable. Comme il s'agit d'une carte SD, la solution vient simplement remplacer le support de stockage existant tout en incorporant, en toute transparence, à votre matériel, un démarrage sécurisé et une protection des données.

Au cœur d'une carte SD

Pour comprendre le caractère unique de cette solution et l'intérêt de posséder des installations de production de mémoire, commençons par examiner la composition d'une carte SD. Ses deux composants essentiels sont la mémoire flash NAND et le contrôleur de mémoire. Le contrôleur gère les séquences d'écriture, d'effacement et de lecture envoyées par l'hôte à l'aide de commandes standardisées. Les mémoires flash NAND, de plus en plus denses, ne sont pas elles-mêmes sans défaut. À un endroit ou à un autre de la mémoire, certains bits ne se comporteront pas parfois comme prévu. Ces défauts doivent être détectés et, si possible, corrigés. En outre, chaque opération d'écriture et de lecture dans une mémoire flash NAND « use » les bits de mémoire, ce qui provoque au fil du temps des défaillances. Le contrôleur de mémoire gère également ce problème.

Il agit comme un microcontrôleur (voir l'exemple de la figure 1) avec une unité centrale, un matériel spécialisé pour la gestion de la mémoire flash, et l'interface hôte. Interposé entre votre appareil (l'hôte) et la mémoire NAND brute, ce contrôleur masque les opérations réelles de lecture et d'écriture, traite les bits erronés et gère la progression de l'usure pour prolonger la durée de vie de la carte SD. Moins il y a d'opérations d'écriture de données, plus la probabilité d'échec est faible.
 

Exemple de mise en œuvre d'un contrôleur de carte SD
Figure 1 : Exemple de mise en œuvre d'un contrôleur de carte SD. (Source : Hyperstone).

PS-45u DP « Raspberry Edition »

Comme Swissbit conçoit et fabrique ses cartes SD, son contrôleur de mémoire peut être optimisé ou étendu selon les besoins. Les cartes SD grand public se contentent de présenter la mémoire NAND à l'hôte, alors que cette nouvelle solution dispose d'éléments de sécurité supplémentaires. La solution PS-45u DP « Raspberry Edition », représentée par la figure 2, est une carte SD dotée d'une sécurité renforcée fonctionnant de manière indépendante de l'unité centrale hôte.
 

PS-45u DP Raspberry Pi Edition
Figure 2 : PS-45u DP « Raspberry Edition ». (Source : Swissbit).

Le tableau 1 donne de plus amples détails sur la spécification technique de la carte.

Spécifications PS-45u
Tableau 1 : Spécifications de la carte PS-45u.

L'hôte, ici le Raspberry Pi, voit simplement une carte SD et peut accéder aux données qu'elle contient si elle est déverrouillée. Actuellement, la version « Raspberry Edition » de la carte PS-45u DP fonctionne avec les modèles Raspberry Pi 2 et Raspberry Pi 3B+. L'authentification est mise en œuvre dans une phase de pré-démarrage, personnalisée par Swissbit, pour déverrouiller l'accès aux données de la carte SD. En outre, la carte est durcie pour garantir l'intégrité des données en cas de coupure de courant. Ceux qui ont l'habitude d'utiliser le Raspberry Pi avec des cartes SD savent que pour certaines marques, les données peuvent être altérées, même suite à un arrêt ordonné, à cause de parasites sur les rails électriques et les lignes de données. Cependant, aucune carte SD ne peut empêcher l'interruption d'une opération d'écriture du système d'exploitation : au mieux, il faudra alors tenter une restauration lors du démarrage suivant du système.

La carte PS-45u DP « Raspberry Edition » est disponible en versions 8 Go et 32 Go directement auprès de Mouser Electronics. Outre leur robustesse accrue, ces cartes offrent également un chiffrement et une authentification intégrés. Pour l'authentification, trois méthodes énumérées dans le tableau 2 sont proposées. Cela signifie que les données ne seront déverrouillées et accessibles qu'avec le bon jeton d'accès - un code confidentiel, un jeton USB ou un serveur d'authentification.

Comparaison des méthodes d'authentification
Tableau 2 : Comparaison des méthodes d'authentification.

La méthode à base de code confidentiel (PIN) prévoit qu'un code prédéfini doit être saisi au démarrage sur la ligne de commande. La méthode USB intervient en conjonction avec la clé USB PU-50n (figure 3) sous la forme d'un jeton d'authentification également disponible chez Swissbit.

Clé USB PU-50n
Figure 3 : Clé USB PU-50n. (Source : Swissbit).

La spécification technique du produit figure dans le tableau 3.

Spécifications clé PU-50n
Tableau 3 : Spécifications de la clé PU-50n.

Il s'agit d'une solution similaire à un dongle de licence, mis à disposition avec certains outils de conception de circuits imprimés coûteux. L'ultime option est la méthode NET. Elle nécessite la mise en place d'un serveur d'authentification sur votre réseau, chargé d'authentifier ou refuser l'utilisation de la carte SD.

Pour évaluer un système sécurisé par code confidentiel, vous avez besoin d'un Raspberry Pi (modèle 3B+ recommandé) et d'une carte PS-45u DP « Raspberry Edition ». Pour évaluer la méthode NET en complément de la méthode à base de code confidentiel, vous avez besoin d'un deuxième Raspberry Pi et d'une carte microSD ordinaire (recommandé : S-50u).

Pour l'évaluation de la méthode USB en complément de la méthode à base de code confidentiel, vous aurez besoin d'une carte PS-45u DP « Raspberry Edition ». La figure 4 donne un aperçu succinct des éléments requis pour évaluer l'une des trois méthodes.

​  Figure 4 : Éléments nécessaires pour chaque méthode
Figure 4 : Éléments nécessaires pour chaque méthode.

Mise à niveau pour une sécurité renforcée des applications existantes

Étant donné que le Raspberry Pi doit accéder au démarrage à certains fichiers du micrologiciel de base, la carte PS-45u DP « Raspberry Edition » a été conçue avec une fonction de sécurité unique qui permet une intégration transparente aux projets existants. Si la carte SD est sécurisée, la première partition est en lecture seule. Le RPi peut ainsi charger le micrologiciel de base et la première partie du logiciel qui vérifie si un jeton valide est installé. Bien que ce micrologiciel de phase initiale puisse être lu par n'importe qui, il empêche tout attaquant d'accéder au reste de la carte SD. Il protège ainsi votre installation logicielle contre les accès non autorisés à l'aide de l'une des trois méthodes d'authentification potentielles suivantes.

Méthode à base de code confidentiel (PIN)

L'utilisation de la carte SD avec la méthode à base de code confidentiel est l'approche la plus simple pour renforcer la sécurité. La carte SD doit être configurée conformément au manuel d'utilisation RPi du SDK Swissbit SecureBoot. Actuellement, Windows est nécessaire pour configurer la carte SD (voir figure 5). Les outils fournis permettent de définir un code confidentiel pour la carte, et l'utilisation du jeu de caractères ASCII standard est fortement recommandée. Même si vous pouvez verrouiller et déverrouiller votre carte dans Windows à l'aide des caractères spéciaux de votre clavier, il faut noter que le Raspberry Pi oblige à utiliser un clavier britannique (qwerty) au démarrage. Ceci peut être agaçant pour des utilisateurs de claviers non britanniques et de codes PIN alphanumériques. Par exemple, si un code PIN « qwertz » a été défini dans l'outil Windows et que le Raspberry Pi démarre avec un clavier allemand connecté, vous devrez entrer « qwerty » (puisque « y » et « z » sont permutés dans la configuration du clavier allemand par rapport au clavier britannique) pour vous authentifier avec succès.

Utilitaire de configuration de carte SD
Figure 5 : Utilitaire de configuration de carte SD.

Outre les difficultés liées à la disposition du clavier, cette approche implique également que le code PIN doit être saisi à chaque démarrage pour déverrouiller la carte SD et poursuivre le processus (la figure 6 montre l'invite pour saisir le code confidentiel). Les attaques par force brute, qui consistent à introduire un code PIN correct en testant de nombreuses combinaisons jusqu'à trouver la bonne, constituent un risque global avec une telle approche d'authentification. Une carte SD peut empêcher cette situation en s'appuyant sur du matériel. Lors de la configuration de la carte, vous pouvez définir le nombre de tentatives de saisie de code erroné avant de refuser tout nouvel essai. Une fois la limite atteinte, vous pouvez appliquer un code confidentiel de superviseur (que vous avez, espérons-le, défini et noté) pour déverrouiller et modifier le code de la carte SD. Faute de pouvoir le faire, la carte ne peut plus être déverrouillée.

Demande de code confidentiel
Figure 6 : Demande de code confidentiel.

Méthode USB

La méthode USB permet d'effectuer à tout moment un démarrage sécurisé. Il s’agit ici d'ajouter une clé USB Swissbit PU-50n DP servant de jeton de sécurité (figure 3). Le système est configuré comme l'indique le manuel d'utilisation, la carte SD et la clé PU-50n DP étant préparées avec le même code confidentiel. La clé PU-50n DP contient le même micrologiciel sécurisé que la carte PS-45u DP. Suite au démarrage du Raspberry Pi avec la carte SD PS-45u DP, une authentification par défi-réponse est déclenchée. Si le code confidentiel de la clé PU-50n DP correspond à celui de la carte PS-45u DP, le processus de démarrage se poursuit. La figure 7 représente un Raspberry Pi ainsi configuré. La figure 8 montre un démarrage réussi avec une clé USB PU-50n DP connectée.

Démarrage sécurisé à l'aide d'un jeton USB
Figure 7 : Démarrage sécurisé à l'aide d'un jeton USB.
Authentification USB à l'aide de la carte PU-50n
Figure 8 : Authentification USB à l'aide de la carte PU-50n.

Méthode NET

Alors que les méthodes à base de code confidentiel et USB permettent de mettre facilement à niveau la sécurité pour les appareils autonomes dépourvus d'accès au réseau, la méthode NET concerne plus particulièrement les appareils en réseau câblé. Il faut donc pour cela un serveur de licences interne au réseau, dont le Raspberry Pi doté d'une carte PS-45u DP se servira pour déverrouiller la carte SD. Une image Raspberry Pi prête à l'emploi est disponible pour le serveur de licences et peut être enregistrée sur une carte SD standard de 16 Go. Le serveur de licences fonctionne sur Raspberry OS et dispose d'une interface web pour la configuration des appareils. Le processus d'installation est décrit dans le manuel d'utilisation de Swissbit NetPolicyServer.

Après démarrage, le bureau démarre et tente, à l'aide d'un navigateur, d'établir une connexion à l'adresse https://localhost/NetPolicyServer/. La page web de configuration s'affiche ensuite (figure 9).

Interface utilisateur du Net Policy Server
Figure 9 : Interface utilisateur du Net Policy Server.

Pour ajouter un appareil au serveur de licences, il est nécessaire de disposer de l'UID de la carte SD que vous activez, ainsi que du mot de passe correspondant. Il est possible d'obtenir ces informations à l'aide de l'utilitaire Windows utilisé pour la préparation de la carte SD. Selon le guide de préparation de la carte SD, il est nécessaire d'indiquer une adresse IP (figure 10). Actuellement, le système est limité aux réseaux IPv4. Si vous ne souhaitez pas entrer une adresse IP pour votre serveur, il existe une possibilité non officielle d'indiquer à la place un nom DNS. Cette approche n'est pas abordée dans le manuel et suppose que vous en preniez le risque.
 

Configuration d'une adresse IP de serveur avec la méthode NET
Figure 10 : Configuration d'une adresse IP de serveur avec la méthode NET.

Une fois le client configuré, le serveur de méthode NET sera contacté à chaque tentative de démarrage. Le Raspberry Pi et le serveur utilisent un système de défi-réponse pour déverrouiller la carte SD. Si le serveur ne donne pas la bonne réponse ou n'est pas disponible, le processus de démarrage s'arrête et la carte SD reste verrouillée. Ce processus centralisé assure la gestion des périphériques à partir du serveur, ce qui permet de les désactiver au cas où ils ne seraient plus autorisés à démarrer. La figure 11 montre le processus de démarrage, avec des informations d'identification incorrectes définies du côté du serveur et un échec du démarrage. La figure 12 montre la réponse lorsque le démarrage a été réalisé avec succès.

Échec du démarrage en raison d'un code confidentiel incorrect
Figure 11 : Échec du démarrage en raison d'un code confidentiel incorrect.
Démarrage avec un code confidentiel correct
Figure 12 : Démarrage avec un code confidentiel correct.

Mise à niveau du matériel existant

L'avantage de la mise à niveau du matériel existant réside dans la simplicité du processus de remplacement d'une carte SD par la carte PS-45u DP « Raspberry Edition ». Les exemples et les fichiers fournis supposent que vous utilisiez une version de Linux sur votre appareil. Ainsi, une installation existante peut être clonée lorsque les fichiers permettant d'activer les fonctions de sécurité de la carte PS-45u DP ont été ajoutés, conformément au manuel.

Vous pourriez argumenter que le RPi devrait être capable de faire la même chose en utilisant un chiffrement de disque logiciel. Malheureusement, sur cette plateforme, les opérations cryptographiques doivent être effectuées par logiciel. Il en résulte une charge élevée du processeur des Raspberry Pi 2 et 3 lors des accès au disque, ce qui entraîne des goulots d'étranglement de performances lors de l'exécution des applications standard. Comme la carte PS-45u DP « Raspberry Edition » implémente le chiffrement du disque dans le contrôleur intégré de la carte SD, les charges de traitement dues à ce chiffrement lui sont déléguées, ce qui présente l'avantage supplémentaire de ne pas exposer les clés de chiffrement. Une fois la carte PS-45u DP déverrouillée, les applications installées fonctionnent comme une carte SD normale, sans pénaliser les performances. En fonction de votre application et de la méthode de mise en œuvre choisie, une mise à niveau de la sécurité peut être réalisée dans un délai raisonnable.

Selon Swissbit, la carte « Raspberry Edition » a été conçue comme un kit d'apprentissage et d'évaluation pratique destiné à illustrer comment « mettre à niveau » la fonctionnalité de démarrage sécurisé sur des plateformes embarquées qui en sont, à l'origine, dépourvues. Pour les applications de production basées sur Raspberry, Swissbit recommande d'utiliser le Raspberry Compute Module CM3+ durci.

Souhaits et conclusion

La carte PS-45u DP « Raspberry Edition » prend actuellement en charge les modèles Raspberry Pi 2 et 3, car ce sont les versions de SoC les plus utilisées (aussi bien pour les versions standard et Compute). Pour pouvoir utiliser le Raspberry Pi 4, il faudra attendre que les composants requis soient prêts et testés. Il en va de même pour le serveur de méthode Net, qui peut être considéré comme une démo technique fonctionnelle plutôt que comme un produit complet et finalisé. Il serait bon de disposer d'une documentation sur la construction d'un serveur de méthode Net, mais aussi d'informations générales sur les protocoles utilisés pour éviter d'avoir à fouiller dans le code pour les obtenir. De plus, ceux d'entre nous qui n'utilisent pas Windows aimeraient configurer le PS-45u DP sans avoir besoin d'une machine virtuelle ou d'une installation à double démarrage.

Malgré ces modestes souhaits pour la sortie d'un produit de nouvelle génération, l'approche globale de cette carte SD sécurisée offre un moyen simple de protéger les données contre tout accès indésirable. Autre atout, le serveur de réseau centralisé servant à l'authentification fait de cette solution un excellent choix lors de la mise à niveau de dispositifs existants pour renforcer la sécurité. Non seulement la carte PS-45u DP protège vos données contre le vol, mais elle restreint aussi l'accès physique au système de fichiers du Raspberry Pi, ce qui empêche les attaquants de compromettre la plateforme.


Traduction : Pascal Godart