Dans l’industrie des hardware wallets, il existe deux approches opposées en matière de conception de la sécurité : s’appuyer sur une puce sécurisée (SC) comme boîte noire, ou utiliser un firmware open source sur un microcontrôleur (MCU) à usage général. Avec la BitBox02 et la BitBox02 Nova, nous avons trouvé une architecture de sécurité qui nous permet de combiner les avantages des deux approches.
Pourquoi il est important d’utiliser une puce sécurisée
Les hardware wallets sont conçus pour protéger vos clés privées. La plupart font bien le travail face aux attaquants à distance, en gardant toutes les informations sensibles à l’écart de votre ordinateur habituel. Il devient alors difficile pour des applications de portefeuille malveillantes, des malwares ou des attaques à distance ciblées de voler vos cryptomonnaies. La sécurité physique est encore plus difficile à assurer. Un équipement spécialisé permet à un attaquant d’accéder à des informations sur le MCU, par exemple en lisant directement des données à l’intérieur d’une puce. Cela peut se faire en décapsulant la puce avec un laser ou avec de l’acide, puis en extrayant toutes les données. Ce type d’attaque peut nécessiter du matériel coûteux, mais un attaquant n’a pas forcément besoin d’un laboratoire : de tels services sont disponibles en ligne, dans des pays où l’ingénierie inverse est légale.
Les MCU à usage général sont conçus en privilégiant les performances, les fonctionnalités et le coût par rapport au reste. Ils ne sont pas conçus pour résister à de telles attaques physiques. Les puces sécurisées sont pensées avant tout pour contrer ces attaques et sont conçues pour résister au décapsulage, au probing, à l’injection de fautes, au glitching de tension, aux dépassements de tampon ou aux attaques par canal auxiliaire.
Nous pensons qu’il est raisonnable de dire que protéger physiquement les données d’un hardware wallet sans utiliser de puce sécurisée est une cause perdue.
L’inconvénient du code source fermé
Les puces sécurisées ne sont même pas si chères, alors pourquoi tous les hardware wallets ne les utilisent-ils pas ? Leur principal inconvénient est qu’elles sont à code source fermé. Le firmware qui s’exécute sur une puce sécurisée ne peut pas être publié en open source en raison d’accords de non-divulgation imposés.
Quand il s’agit du firmware qui sécurise vos bitcoins, génère des seeds aléatoires et signe vos transactions, faire confiance à un logiciel à code source fermé qui ne peut pas être audité indépendamment n’est tout simplement pas suffisant. À notre avis, vous ne devriez pas avoir à faire confiance au fabricant de votre hardware wallet — ni à chacun de ses employés — pour être du côté des « gentils », trouver consciencieusement ses propres bugs sans relecture indépendante, puis les corriger réellement.
Le meilleur des deux mondes
Pourtant, les MCU à usage général ne sont tout simplement pas à la hauteur lorsqu’il s’agit de conserver un secret numérique. Dans le meilleur des mondes, nous pourrions exécuter un firmware open source sur une puce sécurisée véritablement open source, mais aucune puce de ce type n’est disponible commercialement aujourd’hui. Bien que des projets comme TropicSquare ou des puces sécurisées sans NDA comme celle utilisée dans la BitBox02 Nova améliorent fortement la transparence et l’auditabilité, elles ne sont pas entièrement open source. La meilleure option disponible aujourd’hui est d’utiliser à la fois les avantages du firmware open source et des puces sécurisées, en les combinant de manière à ce que
- le hardware wallet n’exécute qu’un firmware open source,
- l’appareil soit renforcé contre les attaques physiques grâce à une puce sécurisée, et
- la puce sécurisée n’ait pas besoin d’être digne de confiance, puisqu’elle ne peut apprendre aucun des secrets.
L’architecture de sécurité de la BitBox02 est conçue pour atteindre ces objectifs. Nous utilisons deux puces en parallèle, un MCU à usage général et une puce sécurisée, chacune avec ses points forts. Au lieu d’exécuter directement le firmware Bitcoin sur la puce sécurisée, nous l’exécutons sur le MCU, ce qui signifie que le code est entièrement open source et peut être audité par tous. Les secrets sont également stockés sur le MCU, mais chiffrés à l’aide de plusieurs clés, dont une clé stockée sur la puce sécurisée à laquelle on ne peut accéder qu’en utilisant des fonctions dédiées de dérivation de clés (KDF).
Remarque : Cet article se concentre sur la puce sécurisée ATECC608B utilisée dans la BitBox02 d’origine. La BitBox02 Nova utilise une autre puce sécurisée, l’Optiga Trust M V3. Certains détails peuvent différer, mais l’architecture de sécurité est conceptuellement similaire.

Par rapport à l’utilisation d’un MCU seul, cette configuration offre des fonctionnalités de sécurité supplémentaires :
- lire directement les données chiffrées sur le MCU ne sert à rien en soi
- imposer un délai à chaque tentative de déverrouillage pour ralentir les attaques par force brute
- limiter le nombre maximal de tentatives de déverrouillage sur toute la durée de vie de l’appareil
- un véritable générateur de nombres aléatoires (RNG), sans qu’il soit nécessaire de lui faire confiance
- le stockage sécurisé de clés d’attestation uniques permet à la BitBoxApp ou à d’autres software wallets de vérifier cryptographiquement l’authenticité de l’appareil BitBox02
Encore une fois, nous ne voulons pas faire confiance à la puce sécurisée. C’est pourquoi notre architecture de sécurité garantit qu’elle ne pourra jamais apprendre de secrets liés aux cryptomonnaies. Dans le cas peu probable où la puce sécurisée serait compromise et se comporterait de manière malveillante, la sécurité globale redescendrait simplement au niveau d’une architecture n’utilisant pas de puce sécurisée au départ, en protégeant malgré tout vos secrets grâce au mot de passe utilisateur et à la clé du MCU.
Comment cela fonctionne-t-il en pratique ?
Sécuriser la seed
Le secret maître, aussi appelé la seed du portefeuille, à partir de laquelle toutes les clés privées sont dérivées, est chiffré et stocké dans la mémoire flash du MCU. Pour accéder à la seed, trois secrets distincts sont nécessaires, comme indiqué dans l’illustration suivante.

Bien sûr, si un attaquant était autorisé à essayer des millions de mots de passe d’appareil par minute, une telle architecture pourrait facilement être attaquée par force brute. Pour limiter ces tentatives de déverrouillage, deux compteurs sont utilisés :
- Sur le MCU, un compteur limite le nombre de déverrouillages à 10 essais consécutifs infructueux avant de réinitialiser l’appareil.
- Comme seconde ligne de défense, le compteur de durée de vie de la puce sécurisée rend l’appareil inutilisable après ~730’000 déverrouillages. Sur la BitBox02 Nova, le nombre maximal de tentatives de déverrouillage (10) est également imposé par la puce sécurisée via un compteur matériel.
Pour ralentir les tentatives de force brute, l’étirement de clé nécessaire pour obtenir le secret (K) depuis la puce sécurisée doit être exécuté 3 fois en utilisant le slot KDF, ce qui introduit un délai.
Qu’est-ce que cela signifie pour un voleur potentiel ? Si vous utilisez un mot de passe alphanumérique de 8 caractères, le voleur aurait besoin en moyenne de plus de 1000 ans pour le casser par force brute, même si le compteur de la puce sécurisée rendrait déjà l’appareil inutilisable après environ une journée d’essais. Ce scénario suppose que le compteur du MCU pourrait être contourné, de sorte que l’appareil ne soit pas réinitialisé après seulement les 10 premières tentatives de déverrouillage.
Déverrouiller la seed
La seed devient accessible au firmware open source une fois l’appareil déverrouillé avec succès. S’il manque ne serait-ce qu’un des trois secrets requis, la seed chiffrée reste inaccessible.

Ne faites pas confiance à la puce sécurisée
Dans cette architecture, il est possible d’éviter de faire confiance à la puce sécurisée. Elle n’est pas capable d’apprendre des secrets liés aux cryptomonnaies ni d’affaiblir l’aléa utilisé pour créer la seed du portefeuille.

Attestation sécurisée de l’appareil
Il est important que vous sachiez que votre BitBox02 est un appareil authentique, et non un clone malveillant. C’est pourquoi la puce sécurisée crée une clé d’attestation unique, qui est ensuite signée par Shift lors de la configuration usine de la BitBox02.
La puce sécurisée crée
- une clé privée qui ne peut pas être exportée hors de la puce sécurisée, et
- la clé publique correspondante, qui est signée par une clé racine de Shift.

Lorsque vous connectez la BitBox02 à votre ordinateur, la BitBoxApp envoie un challenge (un nombre aléatoire) à l’appareil, qui le signe puis le renvoie, accompagné de la clé publique correspondante précédemment signée par Shift.
L’application peut vérifier l’ensemble de la chaîne de certification et affiche un avertissement si cette vérification échoue.
En utilisant cette architecture de sécurité, nous ajoutons et exploitons une puce sécurisée pour améliorer fortement la sécurité physique sans compromettre nos valeurs open source ni risquer de nuire à la sécurité globale, même dans les pires scénarios.
Vous voulez plus de transparence sur la sécurité de la BitBox02 ? Jetez un œil à notre modèle de menace détaillé !
Vous n'avez pas encore de BitBox ?
La BitBox02 existe en deux éditions : la Multi edition, qui prend en charge plusieurs actifs crypto et peut être utilisée comme authentificateur de second facteur. Et la Bitcoin-only edition, dotée d’un firmware résolument minimaliste : moins de code signifie moins de surface d’attaque, ce qui améliore encore votre sécurité si vous ne stockez que du Bitcoin.

Procurez-vous-en une dans notre boutique !
Questions fréquentes (FAQ)
Quelles sont les deux principales approches de la conception de la sécurité des hardware wallets ? Dans l’industrie des hardware wallets, les deux principales approches consistent soit à s’appuyer sur une puce sécurisée (SC) comme boîte noire, soit à utiliser un firmware open source sur un microcontrôleur (MCU) à usage général.
Pourquoi est-il important d’utiliser une puce sécurisée dans un hardware wallet ? Les hardware wallets visent à protéger les clés privées. Les puces sécurisées résistent aux attaques physiques comme le décapsulage, le probing et les attaques par canal auxiliaire, ce qui les rend essentielles pour la sécurité physique.
Quel est l’inconvénient des puces sécurisées ? Le principal inconvénient est qu’elles sont à code source fermé. Le firmware sur une puce sécurisée ne peut pas être publié en open source à cause des accords de non-divulgation, ce qui rend les audits indépendants difficiles.
Comment la BitBox02 combine-t-elle les avantages du firmware open source et de la puce sécurisée ? La BitBox02 utilise deux puces : un MCU à usage général et une puce sécurisée. Le firmware Bitcoin s’exécute sur le MCU, ce qui garantit qu’il est open source. Les secrets sont stockés sur le MCU, mais chiffrés avec plusieurs clés, dont une se trouve sur la puce sécurisée.
Comment la BitBox02 garantit-elle l’authenticité de l’appareil ? La puce sécurisée crée une clé d’attestation unique signée par Shift lors de la configuration usine. La BitBoxApp vérifie cette clé, ce qui garantit l’authenticité de l’appareil.
Shift Crypto est une société privée basée à Zurich, en Suisse. Notre équipe internationale de spécialistes en ingénierie, en sécurité cryptographique et en développement Bitcoin Core conçoit les produits BitBox et fournit des services de conseil. La BitBox02, hardware wallet de deuxième génération, permet aux particuliers de stocker, protéger et effectuer facilement des transactions en cryptomonnaies. Son application compagnon, la BitBoxApp, offre une solution tout-en-un pour gérer facilement vos actifs numériques en toute sécurité.
This post was translated with the help of AI