Quand sécurité rime enfin avec liberté individuelle - Au cœur des préoccupations de tous les acteurs de l'univers fascinant des Blockchains décentralisées et des cryptomonnaies, la capacité de pouvoir stocker ses actifs en toute sécurité constitue un objectif ultime qu'il faut se donner les moyens de tenter d'atteindre.
À l'heure où les hacks se multiplient sur les différents points de vulnérabilité des applications construites sur ou en connexion avec les registres décentralisés, la bonne gestion des clés privées devient absolument cruciale. Analysons ensemble les différentes méthodes de stockage de cryptomonnaies actuellement disponibles, ainsi que quelques règles générales qu'il est toujours bon d'avoir en tête.
Qu'est-ce qu'un portefeuille ou « wallet » de cryptomonnaies?
Terme désignant de façon générique un étui muni de compartiments permettant de stocker la monnaie fiduciaire, le portefeuille - ou wallet - renvoie plus spécifiquement, dans l'univers des technologies de registres distribués, à un objet ou un programme informatique permettant la conservation et la gestion de crypto-actifs sur un compte dédié. Il constitue une forme d'interface faisant le lien entre l'utilisateur appartenant au monde matériel et les protocoles Blockchain immatériels.
Le wallet de cryptomonnaies a en réalité pour vocation de stocker les informations secrètes liées à un compte, à savoir une ou plusieurs clés privées, associées à une ou plusieurs clés publiques et in fine une ou plusieurs adresses publiques, permettant d'interagir avec la Blockchain et d'envoyer et/ou recevoir des coins et tokens.
Les portefeuilles de cryptomonnaies constituent ainsi de véritables porte-clés pouvant se matérialiser sous différentes formes :
- Papier ou tout objet physique sur lequel est inscrit la seed phrase ou phrase de récupération, aussi appelée phrase mnémonique ou mnémotechnique, et mathématiquement liée aux clés privées du compte
- Fichier texte informatique contenant la seed phrase ou directement la ou les clé(s) privée(s)
- Logiciel informatique permettant le stockage de clés privées
- Appareil physique contenant et gérant les clés privées de façon autonome
Il est fréquent de désigner les comptes de plateformes d'échange comme des portefeuilles, la plupart du temps à tort. En effet, hormis le cas de figure marginal des portefeuilles non hébergés proposés par certaines plateformes, les comptes associés à ces dernières ne correspondent pas à des wallets personnels à proprement parler. Vous n'avez accès et ne détenez qu'une adresse publique, la clé privée associée étant soigneusement conservée par l'entreprise, à des fins de «sécurité» et de facilité d'usage. En résumé, un wallet est assimilable à une banque personnelle, une plateforme d'échange à une crypto-banque.
Nous voyons par ailleurs émerger de nouveaux modèles de portefeuilles, aux fonctionnalités encore plus nombreuses, que sont les smart contract wallets. Nous détaillerons plus loin dans cet article les enjeux associés à ces portefeuilles d'un nouveau genre qui promettent de faciliter l'accès à l'écosystème crypto au plus grand nombre.
Comment sont générées les adresses de cryptomonnaies?
Qu'est ce qu'une phrase de récupération ou seed phrase?
Largement démocratisée depuis plusieurs années, la phrase de récupération ou seed phrase permet de conserver, sous une forme lisible et plus accueillante qu'une série barbare de 0 et de 1, la racine d'une clé privée maîtresse permettant de générer un portefeuille déterministe (HD wallet ou Hierarchical Deterministic Wallet) contenant plusieurs clés privées, associées elles-mêmes à plusieurs clés et adresses publiques.
La seed phrase comporte classiquement 12, 18 ou encore 24 mots selon la longueur du nombre aléatoire choisi. Elle est créée à partir d'un nombre de 128 bits (12 mots), 192 bits (18 mois) ou 256 bits (24 mots) choisi aléatoirement, puis converti en une liste de mots en utilisant, pour la grande majorité des wallets, les standards du BIP-39 (Bitcoin Improvement Proposal 39). Ainsi, le nombre est «converti» en une «phrase mmémonique» constituée d'une suite de mots piochés dans un dictionnaire standardisé comportant 2048 mots.
D'un point de vue plus technique, la création d'une seed phrase de 24 mots peut se résumer de la sorte :
- Génération d'une séquence de 256 bits aléatoires
- Les 8 premiers bits de l’empreinte numérique SHA-256 de la séquence sont ajoutés à la fin des 256 bits initiaux, ce qui donne une séquence 264 bits
- Les 264 bits sont divisés en 24 groupes de 11 bits
- Chaque groupe de 11 bits est converti en un nombre compris entre 1 et 2 048
- Le nombre de chaque groupe est traduit en un mot à l'aide de la liste de mots BIP-39, ce qui donne la seed phrase de 24 mots
La phrase de récupération constitue donc la racine de votre clé privée maîtresse vous permettant d'accéder, via un wallet, à l'ensemble de vos clés privées et des fonds associés. Il est possible d'importer une seed phrase générée à l'aide des standards BIP-39 sur n'importe quel portefeuille compatible BIP-39. Il est également possible d'utiliser la même phrase sur différents portefeuilles pour pouvoir utiliser les mêmes comptes sur des supports variés.
Gardez bien à l’esprit que la possession de votre phrase signifie la possession de vos fonds. Plus vous l'utilisez, plus vous l’exposez à un système potentiellement compromis.
Dérivation des clés et fonctionnement du couple clé privée / clé publique
Une fois le nombre aléatoire et la seed phrase générés, la plupart des portefeuilles vous permettra de créer un compte (et donc une clé privée) pour les différentes Blockchains.
Concrètement, dans le cas d'un portefeuille déterministe (écrasante majorité des portefeuilles actuels), le nombre aléatoire va être étiré, c'est-à-dire qu'il va subir plusieurs étapes de hachage et être transformé en un nombre de 512 bits. Pour ce faire, la fonction HMAC-SHA512 va être appliquée 2048 fois. L'application de la fonction de hachage un si grand nombre de fois permet notamment d'augmenter la difficulté de cassage de la graine par force de calcul brute. Le nombre alors obtenu sera appelé graine.
La même fonction HMAC-SHA512 est ensuite appliquée une unique fois à la graine, permettant d'obtenir la clé privée maîtresse et le code de chaîne maître (nécessaire pour effectuer la dérivation des clés).
Une clé privée étendue parent (extended private key) est définie, constituée de la clé privée maîtresse associée au code de chaîne maître, et commence toujours par «xprv».
De la clé privée maîtresse est dérivée une clé publique à l'aide d'une courbe elliptique. On définit ensuite une clé publique étendue incluant la clé publique et le code de chaîne maître, et commençant toujours par «xpub».
La dérivation consiste alors à créer un certain nombre de clés privées et publiques étendues enfant à partir des clés étendues parents, en procédant comme suit :
- Application de la fonction HMAC-SHA512 à la clé publique étendue
- Séparation du condensat obtenu en 2 parties : première partie de 256 bits additionnée à la clé privée étendue puis convertie en format de 256 bits afin d'obtenir la clé privée enfant, deuxième partie de 256 bits représente le code de chaîne enfant
- La clé publique enfant peut ensuite être obtenue à partir de la clé privée enfant
Ce couple clé privée / clé publique enfant pourra ensuite être utilisé pour dériver un nouveau couple de clés petit-enfant, et ainsi de suite.
Cet ensemble de clés privées dérivées d'une clé privée maîtresse constitue un portefeuille hiérarchique déterministe ou HD wallet. Chacune des clés privées générées peut alors produire une clé publique puis une adresse à partir de laquelle vous pouvez réaliser des transactions.
Dans le cas du Bitcoin, la processus de création de la clé publique puis de l'adresse publique à partir de la clé privée est le suivant :
- Obtention de la clé publique en multipliant le générateur de la courbe elliptique secp256k1 définie sur le corps des nombres réels par la clé privée
- Application de la fonction de hachage SHA-256 à la clé publique, puis application de la fonction de hachage RIPEMD-160 au résultat afin d'obtenir l'adresse publique, qui constitue la suite de caractères représentée en base 58 (pour plus de lisibilité) que vous avez l'habitude de manipuler
Chaque blockchain établit sa méthode afin de générer une adresse publique depuis la clé privée. Ceci explique que vous possédiez des adresses publiques d'aspect radicalement différent malgré une phrase de récupération commune.
Vous disposez ainsi, à l'aide d'une seed phrase correspondant à un nombre généré aléatoirement, d'un nombre quasi-infini de couples clés privés clés publiques, sur la Blockchain de votre choix.
Plusieurs modèles de portefeuille aux caractéristiques variables
Portefeuille chaud ou hot wallet
Outil polyvalent par excellence, le portefeuille chaud - ou hot wallet - stocke les clés privées en ligne et est directement connecté à internet. Il permet alors à son propriétaire d'interagir sans difficulté avec le monde du Web3 dans son ensemble. Sa facilité d'utilisation est contrebalancée par le risque élevé de piratage, du fait de nombreux points d'attaques potentiels. Il est ainsi fortement recommandé d'utiliser ce type de portefeuille pour un usage au quotidien avec de faibles montants. La conservation sur le long terme ne devrait pas s'effectuer sur ce type de support.
Plusieurs catégories de portefeuilles sont regroupées dans les hot wallets :
- Noeuds complets
- Noeuds légers
- Portefeuilles web et applicatifs standards
- Extensions de navigateur
Chacune présente des caractéristiques propres que nous allons détailler ci-dessous.
Noeud complet
Le noeud complet, ou full node - constitue un membre à part entière d'un réseau Blockchain décentralisé. Il participe activement à l'ensemble des tâches indispensables au bon fonctionnement de ce dernier, et conserve en archive une copie intégrale de la chaîne de blocs, continuellement mise à jour. Également, il reçoit, valide et retransmet les transactions non confirmées aux noeuds auxquels il est connecté. Il vérifie en permanence la validité des nouveaux blocs ajoutés à la chaîne.
À chaque noeud complet s'associe un portefeuille avec sa clé privée unique. Nécessitant pour une grande majorité des Blockchains actuellement établies un espace de stockage non négligeable, il est évident qu'il ne constitue pas la porte d'entrée idéale pour un utilisateur ordinaire. Il reste néanmoins un outil participant à la décentralisation du réseau et la souveraineté individuelle (puisque ne nécessitant pas de relai tiers afin d'émettre une transaction), tout acteur impliqué dans l'écosystème est donc invité, dans la mesure du possible, à déployer un noeud complet, notamment Bitcoin.
Noeud léger
Les nœuds légers, quant à eux, ne téléchargent pas la chaîne de blocs intégralement. Ils ne participent pas directement à la sécurisation du réseau mais effectuent une vérification simplifiée des transactions, en connexion avec un noeud complet ou une infrastructure de serveurs dédiés. Il ne nécessite que peu de puissance informatique et de mémoire de stockage.
Également dénommés portefeuilles VPS (Vérification de Paiement Simplifiée), ils sont disponibles sur ordinateur et sur mobile. Ils procurent nécessairement une moins bonne confidentialité qu'un noeud complet puisqu'il est nécessaire d'interagir avec une entité tierce. On peut donc les assimiler à des terminaux de communication.
Un portefeuille léger dépend donc totalement du nœud auquel il est connecté. Si ce nœud est corrompu ou malintentionné, il n'existe aucun moyen de le savoir et de s'en prémunir.
Citons en guise d'exemple Electrum pour le réseau Bitcoin.
Portefeuilles web et applicatifs standards
Contrairement aux plateformes d'échange qui, rappelons-le, ne constituent pas de réels wallets de cryptomonnaies, les portefeuilles web et applicatifs vous permettent de garder le contrôle de vos clés privées. En effet, celles-ci sont conservées par l'application ou l'interface en ligne et ne sont jamais révélées à autrui. Par ailleurs, vous êtes en possession de la phrase de récupération.
Dans la grande majorité des cas, le portefeuille n'effectue aucune vérification des transactions et se satisfait des informations fournies par les serveurs du produit utilisé. Il existe également un risque de phishing de l'interface web utilisée, aboutissant au vol de vos clés privées. Ce risque est plus modéré en cas d'usage d'une application dédiée, à condition que celle-ci ne soit pas compromise.
Le portefeuille web le plus connu est certainement MyEtherWallet permettant d'accéder au réseau Ethereum et disponible sur ordinateur comme sur mobile via une application dédiée.
Extensions de navigateur
Portefeuilles permettant d'interagir aisément avec toutes les applications décentralisées liées au Web3, ils sont tous disponibles sur les principaux navigateurs. Contrairement aux nœuds légers, ces portefeuilles ne procèdent pas toujours à la vérification des transactions.
Il est possible de les utiliser de différentes manières, avec un niveau de sécurité variable :
- Extension de navigateur comme portefeuille principal : vous entrez votre phrase de récupération ou vous en générez une nouvelle à l'aide du générateur automatique de l'extension, risque important de phishing
- Intermédiaire permettant des interactions avec un hardware wallet : beaucoup plus sécurisé, vous autorisez une connexion entre votre portefeuille matériel et l'extension, toute transaction devant être signé sur le portefeuille matériel afin d'être diffusée sur le réseau
Citons en exemple Metamask, emblématique extension de navigateur développée par Consensys en 2016. D'autres ont également le vent en poupe, avec notamment Rabby intéressant pour sa simplicité d'utilisation, ou encore Frame pour les utilisateurs plus avancés.
Portefeuille froid ou cold wallet
Les portefeuilles froids, ou cold wallets, sont des solutions de stockage hors-ligne des clés privées, permettant de se prémunir du risque de hack informatique et du vol des fonds qui en résulterait.
Solution idéale pour la conservation dans la durée de crypto-actifs, notamment si la valeur des avoirs est conséquente. Les plateformes d'échange de cryptomonnaies, cibles privilégiées pour les hackers malintentionnés, ont systématiquement recours à cette méthode pour conserver les fonds de leurs utilisateurs.
Théoriquement, tout appareil électronique qui reste constamment hors-ligne peut servir de portefeuille froid moyennant quelques acrobaties de programmation.
Deux principales formes de cold wallets ont émergé depuis la naissance des cryptomonnaies :
- Portefeuille papier ou paper walllet
- Portefeuille matériel ou hardware wallet
Portefeuille papier ou paper walllet
Difficile d'imaginer plus basique que le paper wallet : un bout de papier contenant, classiquement, une suite de 64 chiffres hexadécimaux traduisant une séquence de 256 bits et correspondant à la clé privé, ainsi que l'adresse publique associée. Également, le portefeuille papier peut ne contenir que la phrase de récupération, de laquelle il est possible de retrouver la clé privée et l'adresse publique.
Il est important d'insister sur le fait que la génération de la phrase de récupération et de la clé privée doit nécessairement avoir été réalisée hors-ligne. Dans le cas contraire, le bénéfice du stockage à froid est remis en doute, puisque la clé privée peut avoir été compromise lors de sa création.
Tout support matériel peut être utilisé afin de conserver les précieuses informations liées à votre compte. Ledger propose par exemple des plaques métalliques
Il est possible, par exemple, de générer des portefeuilles papiers à usage unique grâce à bitaddress.org et d'obtenir ainsi un code QR facilitant les transactions.
Notons toutefois que pour signer des transactions et donc envoyer des cryptomonnaies, il sera nécessaire d'intégrer votre phrase de récupération ou votre clé privée dans un logiciel (en ligne) ou dans un hardware wallet (hors-ligne).
Portefeuille matériel ou hardware wallet
Avancée majeure dans la sécurisation des cryptomonnaies, les hardware wallets permettent de générer et de conserver les clés privées ainsi que de signer des transactions hors-ligne. Tout est pensé pour que les informations les plus sensibles liées à vos comptes soient entièrement gérées sans interaction avec internet.
Ledger, licorne française au rayonnement mondial, constitue le leader incontesté dans le domaine. Utilisant la carte à puce comme élément central de sécurité, Ledger garantit une sécurité inégalée, et fournit tous les efforts nécessaires afin de challenger constamment la fiabilité et la robustesse des composants utilisés, notamment grâce au travail du Donjon.
Conseils de base en cas d'usage exclusif de plateformes d'échanges de cryptomonnaies
Situation déconseillée du fait des risques inhérents au concept même d'entité centralisée, plusieurs parmi vous conservent néanmoins l'entièreté de leurs fonds sur les plateformes d'échange de cryptomonnaies. Facilité de gestion, d'usage, responsabilité déléguée... nombreuses sont les explications justifiant ce constat.
L'histoire des cryptomonnaies, aussi courte soit-elle, nous enseigne qu'aucune plateforme centralisée n'est digne d'une confiance aveugle. Cependant, si vous souhaitez tout de même vous y fier, nous vous conseillons de prendre en considération les recommandations suivantes :
- Utiliser une adresse mail unique ad hoc lors de la création d'un compte sur une plateforme d'échange
- Utiliser un mot de passe de compte complexe, unique, et stocké hors-ligne
- Activer toutes les options proposées par la plateforme permettant de renforcer la sécurité du compte, authentification à deux facteurs notamment
Gardez toujours en tête le célèbre adage «not your keys, not your coins».
Smart contract wallets en deux mots
Les difficultés engendrées par la nécessité de conserver une longue liste de mots, très souvent sur un papier ou sur un fichier word, ont fait naître une idée novatrice : utiliser un contrat intelligent en guise de portefeuille, ne nécessitant pas la conservation obligatoire d'une phrase de récupération ou d'une clé privée, et permettant l'ajout de nombreuses fonctionnalités, dont notamment :
- Déclenchement d'actions automatiques, paiement par exemple
- Interaction avec d'autres smart contract wallets
- Multi-signatures
- Authentification à 2 facteurs
- Combinaison de plusieurs transactions afin de réduire les frais associés
- Fonction de récupération sociale : possibilité de nommer une personne de confiance pour récupérer le portefeuille
- Fonctions d'urgence : geler le compte, désactiver un appareil de confiance...
- Fonctions de programmation : retrait maximal par période de temps, etc
- Création d'une liste noire
- Interactions avancées avec les protocoles DeFi
Nul doute que ce type de portefeuille, bien plus élaboré et réduisant le poids de la responsabilité liée à la conservation de la phrase de récupération, devrait continuer de se développer. Citons le cas particulier du gaming pour lequel un tel portefeuille s'avère quasi-indispensable. En effet, il est absolument impossible d'obtenir une expérience utilisateur agréable et fluide avec un portefeuille classique ne permettant pas une gestion automatisée des transactions. De plus en plus de portefeuilles, notamment sur les solutions de 2nde couche (layer 2) utilisent les contrats intelligents pour délivrer leurs portefeuilles.
La sécurisation des cryptomonnaies anime de nombreux débats et à juste titre : comment pouvons-nous concevoir une émancipation du système financier traditionnel en l'absence d'outil fiable permettant d'asseoir notre souveraineté monétaire individuelle? Ces dernières années ont vu émerger de nombreuses technologies - principalement les hardware wallets - apportant une sécurité accrue dans la gestion des actifs numériques. Ne négligez sous aucun prétexte l'importance d'une rigueur stricte dans le stockage et l'utilisation de vos fonds.