Clés USB, disques de stockage, lecteurs de cartes SD… Tous les jours, un grand nombre d’utilisateurs s’appuient sur ces périphériques de stockage pour effectuer des sauvegardes ou transférer des données depuis ou vers leurs PC. Ces équipements sont, en effet, pratiques et assez peu coûteux. Le problème, c’est que le protocole USB et les firmwares de ces équipements sont très peu sécurisés. En 2014, l’attaque BadUSB a montré qu’il était souvent possible de reprogrammer ces accessoires pour y intégrer des malwares.
Le protocole USB, de son côté, ne dispose d’aucun mécanisme pour vérifier l’authenticité d’un équipement. Au contraire, il est même très permissif : un périphérique USB peut – a priori – prendre n’importe quelle identité : stockage, clavier, souris… Cette « flexibilité » est d’ailleurs utilisée par les hackers pour créer des périphériques d’attaque comme USB Rubber Ducky ou LAN Turtle, qui se font respectivement passer pour un clavier ou un adaptateur réseau. Bref, l’intégrité des équipements USB n’est pas assurée. Or, il n’est pas rare qu’ils soient utilisés pour manipuler des données sensibles, voire confidentielles.
Un projet open source et open hardware
Face à ce problème, les chercheurs en sécurité de l’ANSSI ont initié, en 2014, le projet open source et open hardware « WooKey ». Son but est de créer un équipement de stockage USB qui puisse garantir son intégrité matérielle et logicielle, ainsi que la confidentialité des données stockées. Ce projet est désormais mature et les premières démonstrations publiques ont été faites récemment, le 21 mai à Monaco et le 4 juin à Paris.
Le résultat est un boîtier qui a les dimensions d’un gros étui de cartes à visite. Sur la face avant, un écran tactile permet d’entrer les codes PIN et d’afficher des menus de réglages. A l’intérieur du boîtier se trouve une carte mère réalisée sur mesure par les chercheurs de l’ANSSI, intégrant notamment une puce Cortex M4 (STM32F439), un lecteur de carte SD, un lecteur de cartes à puce et, évidemment, des interfaces USB.
Les données sont stockées de manière chiffrée sur la carte SD au moyen de l’algorithme AES-CBC-ESSIV. La puce Cortex M4 se charge du chiffrement et du déchiffrement de ces données à la volée quand elles sont échangées avec un système hôte. Cette procédure n’est autorisée qu’après l’insertion d’une carte à puce de type Javacard, dont le but est de garantir une authentification mutuelle entre l’utilisateur et le boîtier. Celle-ci s’appuie sur l’algorithme crytographique ECDH (Elliptic Curve Diffie-Hellman) et sur des paires de clés maîtres qui auront été déposées au préalable dans la puce de la carte et dans la puce du boîtier. « Côté performance, le WooKey atteint un débit d’environ 50 Mbit/s, ce qui est équivalent à une clé USB 2.0 normale », nous précise Philippe Thierry, expert en systèmes embarqués au sein de l’ANSSI.
Une authentification en plusieurs étapes
Connecter un disque WooKey à un ordinateur est sensiblement plus complexe que d’y relier un disque classique. Après insertion de la carte à puce, l’écran s’allume et invite l’utilisateur à entrer un premier code PIN baptisé « PetPIN ». S’il est correct, la carte à puce envoie une passe-phrase baptisée « PetName » qui est affichée sur l’écran et que l’utilisateur doit valider. Puis l’utilisateur doit entrer un second code PIN baptisé « UserPIN » qui permettra d’accéder aux secrets de la carte à puce et de générer les clés de déchiffrement des données.
Entrer le code PIN de déverrouillage directement sur l’appareil de stockage permet d’éviter de l’envoyer au système hôte qui peut être compromis par un malware. Le fait d’utiliser une authentification à double code PIN peut, en revanche, sembler inutilement redondant. Il est pourtant capital, car il permet de contrer les attaques impliquant de faux équipements. Supposons, en effet, qu’il n’y ait qu’un seul code PIN et qu’un attaquant arrive à voler la carte à puce et le boîtier de l’utilisateur, puis à les remplacer par des équipements similaires, mais piégés. Dès que l’utilisateur insère la fausse carte dans le faux boîtier, il compose son code PIN. Equipé d’une connexion sans fil caché, le faux boîtier peut ensuite le transférer instantanément vers l’attaquant qui possède dès lors tous les éléments pour accéder aux données : le disque de stockage et les deux facteurs d’authentification (carte à puce et code PIN).
Un microkernel créé sur mesure
Pour sécuriser toutes ces manipulations cryptographiques, le WooKey est équipé d’un microkernel créé par les chercheurs de l’ANSSI et baptisé EwoK. Il est capable de cloisonner les espaces de mémoire, de gérer différents niveaux de privilèges et d’implémenter des fonctions de sécurité classiques comme la protection contre le dépassement de mémoire (Stack/Heap Protection). « Dans les périphériques de stockage USB classiques, les firmwares ne disposent pas de toutes ces fonctionnalités. Rien n’est cloisonné, tout est visible pour tout le monde », nous explique Philippe Thierry.
Enfin, le firmware du WooKey peut être mis à jour de manière sécurisée au travers du protocole USB DFU (Device Firmware Update). Là encore, cette procédure ne peut être enclenchée qu’après avoir montré patte blanche, au travers d’une authentification mutuelle par carte à puce. L’intégrité des mises à jour est assurée par l’emploi de signatures cryptographiques.
Difficile à faire soi-même
En somme, le WooKey est le périphérique de stockage idéal pour les paranos. Malheureusement, il est impossible de s’en procurer un facilement. L’ANSSI a créé une série de prototypes qui seront déployés auprès de sa direction générale. Aucune société commerciale ne s’est, pour l’instant, intéressée à ce projet, ce qui est dommage. En théorie, il est possible de créer soi-même son WooKey, étant donné que tous les codes source et designs matériels sont disponibles en ligne. Mais il un y a un gros obstacle: la création du circuit imprimé.
A moins d’être bricoleur et membre du hackerspace Electrolab, la seule solution est de passer par un fondeur professionnel. D’après les chercheurs de l’ANSSI, il faut compter entre 174 et 300 euros par carte mère pour un batch de 10 cartes. Les tarifs tombent à quelques dizaines d’euros pour plus de mille cartes.
Sources: Projet WooKey, SSTIC 2018
🔴 Pour ne manquer aucune actualité de 01net, suivez-nous sur Google Actualités et WhatsApp.