Randstorm / BitcoinJS
Randstorm : la faille du navigateur derrière les anciens portefeuilles Bitcoin
Quels logiciels sont documentés, quelles versions importent, et comment quitter un ancien portefeuille sans emporter ses clés vulnérables avec vous.
Table des matières
Ce qui a réellement mal tourné
Randstorm concerne la génération de clés dans les anciens logiciels de navigateur. SecureRandom() de JSBN pouvait combiner une source d'entropie insuffisante avec un Math.random() prévisible du navigateur. Unciphered a révélé le problème le 14 novembre 2023 et a signalé des portefeuilles vulnérables créés entre 2011 et 2015. Il s'agit d'une période observée, pas d'un verdict sur chaque portefeuille de ces années.
Le nom SecureRandom n'est pas une garantie de sécurité. Dans le code source inspecté de Coinpunk, le repli remplit un pool de 256 octets en utilisant Math.random(), mélange l'horloge et alimente un générateur Arcfour. Un grand pool ne peut pas fournir une imprévisibilité que ses entrées n'ont pas. Le même code source contient aussi des chemins plus robustes Web Crypto et Node.js : atteindre le repli est la distinction importante.
Il s'agit d'un défaut dans la manière dont une clé privée a été choisie. Ce n'est pas une faille dans la vérification de signature de Bitcoin. Ouvrir une ancienne sauvegarde dans une application plus récente préserve ces clés ; déplacer des fonds vers des clés générées indépendamment change ce qui autorise la dépense.
Portefeuilles, versions et limites des preuves
Lire une version de bibliothèque séparément d'une version de portefeuille. Pour un site hébergé, le code servi le jour de la création de la clé importe plus que la version actuelle de l'application. Le tableau distingue un incident documenté des constats dans le code source.
| Projet | Version ou période | Ce que cela établit |
|---|---|---|
| BitcoinJS / bitcoinjs-lib | 0.1.3 | Cité comme exemple dans la divulgation. JSBN a été utilisé jusqu'en mars 2014 ; cela n'établit pas une plage complète de versions affectées pour chaque dérivé. |
| Blockchain.info Blockchain.com | Portefeuille web historique ; aucune plage numérotée affectée vérifiée | Un portefeuille client a été le point de départ de l'enquête d'Unciphered. Cela n'implique pas chaque portefeuille Blockchain.com ni l'application actuelle. |
| bitaddress.org | 2.6.5 · 2.8.0 2013-12-01 · 2014-01-18 | La version 2.6.5 a mis à jour JSBN vers 1.4. La 2.8.0 a ajouté une initialisation Web Crypto sur tout le pool et une entropie obligatoire souris/clavier. Ce sont des changements documentés, pas une frontière prouvée « toutes les versions antérieures vulnérables / toutes les versions ultérieures sûres ». |
| Coinpunk | 0.2.1 63ca325be538 | Le snapshot du dépôt inspecté se nomme 0.2.1 et contient un repli Math.random()/Arcfour aux côtés de chemins plus robustes. C'est une constatation de code, pas la preuve que chaque déploiement utilisait ce repli. Le développement est arrêté. |
Cette vue d'ensemble couvre les implémentations vérifiées ici ; ce n'est pas une liste exhaustive des portefeuilles affectés. Un produit non listé n'est pas automatiquement non affecté. Une date de création ancienne ou une adresse commençant par 1 ne suffit pas à identifier le générateur.
Préparez la destination une fois
Les trois routes ci-dessous utilisent un nouveau portefeuille Electrum Desktop comme destination. Les noms de menus se réfèrent à l'interface anglaise 4.8.2 du bureau vérifiée pour cet article. Téléchargez la version actuelle depuis le site officiel ; 4.8.2 est une référence pour les instructions, pas une version minimale permanente.
Portefeuilles matériels recommandés comme nouvelle destination →
Electrum — vérifications officielles de téléchargement et de signature ↗
- Sur un ordinateur fiable et à jour, téléchargez Electrum pour votre système d'exploitation. Suivez les instructions officielles de signature et vérifiez indépendamment l'empreinte du signataire avant l'installation.
- Choisissez File → New/Restore, nommez le portefeuille randstorm-new, puis sélectionnez Standard wallet → Create a new seed. Notez et confirmez les nouveaux mots sur papier et définissez un mot de passe pour le fichier du portefeuille. N'importez pas l'ancien secret.
- Avant de déposer, créez recovery-check avec File → New/Restore → Standard wallet → I already have a seed, en utilisant uniquement la NOUVELLE sauvegarde papier. Comparez la première adresse de réception dans les deux portefeuilles via View → Addresses et l'onglet Addresses. Gardez les deux portefeuilles pendant cette vérification.
- Dans randstorm-new, utilisez Receive → Request (Onchain si Lightning est activé). Copiez l'adresse Bitcoin. La route spécifique au portefeuille ci-dessous doit envoyer à cette adresse, avec les frais et la destination complète vérifiés avant approbation.
Blockchain.info : utilisez le portefeuille qui détient les anciennes adresses
Cette route concerne un portefeuille Blockchain.info historique auquel vous pouvez encore accéder via Blockchain.com. Les instructions d'envoi actuelles décrivent l'interface web d'aujourd'hui, pas un écran 2012 non vérifié. Un solde de Trading Account est un produit différent.
- Conservez la sauvegarde chiffrée originale et les enregistrements de connexion. Dans le portefeuille web, vérifiez Settings → Wallets & Addresses → Bitcoin pour les adresses importées séparément. Faites correspondre vos anciennes adresses publiques connues aux avoirs affichés ; une nouvelle phrase de récupération ne doit pas être supposée couvrir les clés importées.
- Ouvrez Send dans le tableau de bord Wallet, sélectionnez Bitcoin et saisissez la nouvelle adresse Electrum comme destination externe. Commencez par un petit montant, choisissez Continue, vérifiez l'adresse, le montant et les frais, puis Send.
- Attendez la confirmation dans History d'Electrum. Puis envoyez le solde dépensable restant, en tenant compte des frais. Vérifiez chaque adresse importée financée séparément ; le test réussi seul ne vide pas l'ancien portefeuille. Cessez d'utiliser toutes les adresses de réception retirées.
bitaddress.org : transférer un portefeuille papier avec Sweep
Un tirage bitaddress représente généralement une seule clé, pas une phrase de récupération moderne. Conservez le papier et tout fichier HTML original : son nom ou pied de page peut identifier la version. L'historique des versions aide à reconstruire la configuration ; il ne certifie pas une clé individuelle.
- Identifiez la clé privée, pas l'adresse publique de réception. Un WIF mainnet commence généralement par 5, K ou L ; une clé chiffrée BIP38 commence par 6P. Le préfixe est seulement un indice de format. Conservez la forme de compression originale car elle détermine l'adresse correspondante.
- Pour BIP38, déchiffrez d'abord localement et hors ligne avec une copie vérifiée du dépôt officiel bitaddress : Wallet Details → saisissez la clé chiffrée → View Details → saisissez sa phrase secrète → Decrypt BIP38. Comparez l'adresse résultante avec le papier avant d'utiliser le WIF correspondant. Ne saisissez jamais la clé sur un site web en ligne ni ne générez un portefeuille de remplacement avec cet ancien outil.
- Dans le portefeuille destination Electrum NOUVEAU, ouvrez Wallet → Private keys → Sweep. Saisissez uniquement le WIF non chiffré dans cette boîte de dialogue locale. Vérifiez que la destination appartient à randstorm-new, puis examinez la transaction et les frais avant diffusion.
- Sweep transfère le solde dépensable contrôlé par la clé fournie en une seule transaction. Ce n'est pas une importation ni la séquence de petit test ci-dessus. Répétez pour les autres clés de portefeuille papier financées et conservez les originaux jusqu'à confirmation de tous les reçus attendus.
Coinpunk : sécurisez la sauvegarde avant de toucher au vieux serveur
Coinpunk était auto-hébergé, il n'existe donc pas de site de connexion universel actuel ni de service de récupération. Ces étiquettes proviennent du snapshot du dépôt 63ca325be538, dont le package.json déclare la version 0.2.1. Un déploiement modifié peut différer.
- Si votre installation originale de confiance fonctionne encore, ouvrez Backup → Download et conservez plusieurs copies du portefeuille chiffré. Conservez aussi l'identifiant de connexion, le mot de passe et la sauvegarde serveur. Ne mettez pas à jour ni ne réinstallez la seule instance survivante en premier.
- Le formulaire historique Send Bitcoins contient Bitcoin address to send to, Amount et des frais affichés. Utilisez-le seulement si l'instance originale fonctionne encore de manière fiable et supporte l'adresse de destination. Ne forcez pas une adresse bc1 dans ce vieux logiciel ; l'analyseur d'adresses inspecté utilise Base58Check.
- Pour une destination incompatible ou un serveur hors ligne, conservez la sauvegarde et récupérez ses clés localement avec une aide qui comprend cette version de Coinpunk. Le modèle de portefeuille stocke keyPairs, y compris les clés de changement, dans une charge utile chiffrée. Ce n'est pas une seed Electrum ni un wallet.dat Bitcoin Core ; renommer le fichier ne peut pas le convertir.
- Une fois les clés WIF récupérées appariées aux adresses originales, utilisez la procédure Sweep d'Electrum ci-dessus pour chaque clé financée. Vérifiez l'ensemble complet, y compris les adresses de changement. Conservez la sauvegarde chiffrée et son mot de passe jusqu'à ce que les reçus de destination correspondent au solde attendu.
Portefeuilles matériels recommandés comme nouvelle destination
Pour cette migration, nous recommandons Trezor Safe 3 si vous préférez les boutons physiques, ou Trezor Safe 5 si un écran tactile plus grand facilite les vérifications d'adresses. Les deux peuvent garder les nouvelles clés de signature sur un appareil séparé. Acheter un appareil ne corrige pas une ancienne clé : créez un portefeuille complètement nouveau sur l'appareil.
Les liens Amazon ouvrent une recherche régionale de produit, pas une liste de vendeurs vérifiés. Vérifiez le vendeur auprès des boutiques officielles Amazon de Trezor ou des revendeurs autorisés. Utilisez les contrôles d'authentification de l'appareil lors de la configuration ; n'utilisez jamais une sauvegarde de portefeuille pré-écrite fournie.
- Commencez sur trezor.io/start et installez Trezor Suite. Suivez la configuration spécifique à l'appareil et les contrôles d'authentification, choisissez Create a new wallet et complétez la vérification de sauvegarde sur l'appareil. Gardez la sauvegarde hors ligne. Ne restaurez pas l'ancien portefeuille ni la seed du portefeuille logiciel de l'exemple ci-dessus sur cet appareil.
- Pour un envoi normal, sélectionnez le compte Bitcoin dans Trezor Suite, choisissez Receive et vérifiez l'adresse complète sur l'appareil connecté. Utilisez cette adresse au lieu de celle du portefeuille logiciel dans la route Blockchain.com. Vérifiez le transfert reçu et ses confirmations dans Trezor Suite plutôt que dans History d’Electrum.
- Pour la route Electrum Sweep, connectez le Trezor nouvellement configuré et créez un portefeuille Electrum avec File → New/Restore → Standard wallet → Use a hardware device. Suivez le guide Electrum de Trezor et utilisez le compte Bitcoin et le type d'adresse correspondants. Vérifiez une adresse de réception sur le Trezor, puis utilisez-la comme destination de sweep. Saisissez uniquement l'ancienne clé WIF dans Sweep ; ne tapez jamais les mots de sauvegarde Trezor dans Electrum ou un site web.
Sources et périmètre
Cette étude de cas couvre les implémentations historiques de navigateurs et leurs différentes routes de migration. Pour la relation plus large entre entropie, phrases de seed et portefeuilles matériels, poursuivez avec l'article de fond.
Contexte : comment naissent les seeds faibles de portefeuille →
- Unciphered — divulgation Randstorm, 14 novembre 2023
- bitaddress.org — historique des versions signé
- Coinpunk — RNG inspecté et snapshot du dépôt · package.json · README
- Electrum — FAQ récupération, sweeping et confidentialité
- Electrum 4.8.2 — assistant portefeuille desktop · Desktop menus
- Blockchain.com — adresses Bitcoin importées
- bitaddress.org — implémentation BIP38 et Wallet Details
- Coinpunk — modèle de portefeuille chiffré et clés de changement · Backup · Send
- Trezor Safe 3
- Trezor Safe 5
- Trezor Suite — trezor.io/start
- Trezor — boutiques officielles et revendeurs autorisés
- Trezor — migration depuis un autre portefeuille
- Trezor Suite — réception et vérification d'une adresse
Vérifié le 19/09/2026 contre la documentation principale et le code source. Aucun fonds réel ni clé privée n'a été utilisé lors des tests. Le tableau n'est pas une liste exhaustive ni un diagnostic de votre portefeuille.
FAQ
BitcoinJS 0.1.3 identifie-t-il la version de mon portefeuille ?
Non. Il identifie un exemple de bibliothèque cité dans la divulgation Randstorm. Un portefeuille peut intégrer ou modifier cette bibliothèque sans exposer sa version à l'utilisateur. La construction originale du portefeuille et l'environnement navigateur doivent encore être identifiés.
bitaddress.org 2.8.0 prouve-t-il que mon portefeuille papier est sûr ?
Le changelog documente une collecte d'entropie renforcée en 2.8.0. Il ne certifie pas comment une clé individuelle a été générée, quelles fonctionnalités du navigateur étaient disponibles, ni si le fichier a été modifié. L'article le traite donc comme un changement documenté, pas une frontière universelle de sécurité.
Pourquoi la route portefeuille papier utilise-t-elle Sweep au lieu d'Import ?
Import conserve la clé privée originale en usage. Sweep crée une transaction qui transfère ses fonds dépensables vers le portefeuille destination préparé. Le nouveau portefeuille doit avoir des clés générées indépendamment, et la destination ainsi que les frais doivent être vérifiés avant diffusion.
Electrum peut-il ouvrir directement une sauvegarde Coinpunk ?
La version Coinpunk inspectée stocke une charge utile de portefeuille chiffrée, pas une seed Electrum. Conservez la sauvegarde, l'identifiant de connexion et le mot de passe. Récupérez les clés localement avec une expertise spécifique à la version, puis associez-les aux adresses originales avant d'utiliser la route sweep.