Randstorm / BitcoinJS

Randstorm: de browserfout achter oude Bitcoin-portefeuilles

Welke software is gedocumenteerd, welke versies zijn relevant, en hoe u een oude portemonnee achterlaat zonder de kwetsbare sleutels mee te nemen.

Laatste update 18-09-2026

Wat er eigenlijk misging

Randstorm betreft sleutelgeneratie in oudere browsersoftware. JSBN’s SecureRandom() kon een onvoldoende entropiebron combineren met een voorspelbare browser Math.random(). Unciphered maakte het probleem bekend op 14 november 2023 en meldde kwetsbare portefeuilles gemaakt in 2011–2015. Dit is een geobserveerde periode, geen oordeel over elke portemonnee uit die jaren.

Math.random()Browserafhankelijke startwaarden
SecureRandom()Een entropiebuffer voedt een PRNG
PrivésleutelGeldig formaat, mogelijk voorspelbare oorsprong

De naam SecureRandom is geen garantie voor veiligheid. In de door Coinpunk geïnspecteerde broncode vult de fallback een 256-byte buffer met Math.random(), mengt de klok erbij en voedt een Arcfour-generator. Een grote buffer kan geen onvoorspelbaarheid leveren die zijn invoer mist. Dezelfde bron bevat ook sterkere Web Crypto- en Node.js-paden: het bereiken van de fallback is het belangrijke onderscheid.

Dit is een defect in de manier waarop een privésleutel werd gekozen. Het is geen breuk in de Bitcoin-handtekeningverificatie. Het openen van een oude backup in een nieuwere app behoudt die sleutels; het overzetten van fondsen naar onafhankelijk gegenereerde sleutels verandert wat het uitgeven autoriseert.

Portefeuilles, versies en de grenzen van het bewijs

Lees een bibliotheekversie apart van een portemonneeversie. Voor een gehoste website is de code die op de dag van sleutelcreatie werd geserveerd belangrijker dan de app-versie van vandaag. De tabel onderscheidt een gedocumenteerd incident van bevindingen in de broncode.

Bewijs gecontroleerd op 19-09-2026
ProjectVersie of periodeWat dit vaststelt
BitcoinJS / bitcoinjs-lib0.1.3Als voorbeeld genoemd in de bekendmaking. JSBN werd gebruikt tot maart 2014; dit stelt geen volledige reeks getroffen versies vast voor elke afgeleide.
Blockchain.info
Blockchain.com
Historische webportemonnee; geen genummerd getroffen bereik geverifieerdEen klantportemonnee was het startpunt van Unciphered’s onderzoek. Dit impliceert niet elke Blockchain.com-portemonnee of de huidige app.
bitaddress.org2.6.5 · 2.8.0
2013-12-01 · 2014-01-18
2.6.5 werkte JSBN bij naar 1.4. 2.8.0 voegde volledige-pool Web Crypto-initialisatie en verplichte muis-/toetsenbordentropie toe. Dit zijn gedocumenteerde wijzigingen, geen bewezen grens van “alle eerdere versies kwetsbaar / alle latere versies veilig”.
Coinpunk0.2.1
63ca325be538
De geïnspecteerde repository-snapshot labelt zichzelf 0.2.1 en bevat een Math.random()/Arcfour-fallback naast sterkere paden. Dit is een codebevinding, geen bewijs dat elke uitrol de fallback gebruikte. Ontwikkeling is gestopt.

Dit overzicht behandelt de hier geverifieerde implementaties; het is geen uitputtende lijst van getroffen portefeuilles. Een niet-vermeld product is niet automatisch onaangetast. Een oude creatiedatum of een adres dat met 1 begint is niet voldoende om de generator te identificeren.

Bereid de bestemming één keer voor

De drie onderstaande routes gebruiken een nieuwe Electrum Desktop-portemonnee als bestemming. Menunamen verwijzen naar de Engelstalige 4.8.2 desktopinterface die voor dit artikel is gecontroleerd. Download de huidige release van de officiële site; 4.8.2 is een referentie voor de instructies, geen permanente minimumversie.

Hardware wallets die wij aanbevelen als nieuwe bestemming →

Electrum — officiële download- en handtekeningcontroles ↗

  1. Download Electrum voor uw besturingssysteem op een vertrouwde, bijgewerkte computer. Volg de officiële handtekeninginstructies en controleer onafhankelijk de handtekeningvingerafdruk vóór installatie.
  2. Kies File → New/Restore, noem de portemonnee randstorm-new, selecteer dan Standard wallet → Create a new seed. Noteer en bevestig de nieuwe woorden op papier en stel een wachtwoord in voor het portemonneebestand. Importeer het oude geheim niet.
  3. Maak vóór het storten een recovery-check met File → New/Restore → Standard wallet → I already have a seed, gebruik alleen de NIEUWE papieren backup. Vergelijk het eerste ontvangstadres in beide portefeuilles via View → Addresses en het tabblad Addresses. Houd beide portefeuilles tijdens deze controle.
  4. Gebruik in randstorm-new Receive → Request (Onchain als Lightning is ingeschakeld). Kopieer het Bitcoin-adres. De portemonnee-specifieke route hieronder moet naar dit adres sturen, met de vergoeding en volledige bestemming gecontroleerd vóór goedkeuring.

Blockchain.info: gebruik de portemonnee met de oude adressen

Deze route is voor een historische Blockchain.info-portemonnee die u nog via Blockchain.com kunt bereiken. De huidige verzendinstructies beschrijven de webinterface van vandaag, niet een niet-geverifieerd scherm uit 2012. Een Trading Account-saldo is een ander product.

  1. Bewaar de originele versleutelde backup en inloggegevens. Controleer in de webportemonnee Settings → Wallets & Addresses → Bitcoin op apart geïmporteerde adressen. Vergelijk uw bekende oude publieke adressen met de weergegeven tegoeden; een nieuwe herstelzin mag niet worden aangenomen als dekking voor geïmporteerde sleutels.
  2. Open Send in het Wallet-dashboard, selecteer Bitcoin en voer het nieuwe Electrum-adres in als externe bestemming. Begin met een klein bedrag, kies Continue, controleer het adres, bedrag en vergoeding, en klik dan op Send.
  3. Wacht op bevestiging in Electrum’s History. Stuur dan het resterende besteedbare saldo, rekening houdend met de vergoeding. Controleer elk afzonderlijk gefinancierd geïmporteerd adres; de succesvolle test alleen maakt de oude portemonnee niet leeg. Stop met het gebruik van alle gepensioneerde ontvangstadressen.

Blockchain.com: huidige verzendinstructies ↗

bitaddress.org: een papieren portemonnee overzetten met Sweep

Een bitaddress-afdruk vertegenwoordigt meestal een enkele sleutel, geen moderne herstelzin. Bewaar het papier en het originele HTML-bestand: de bestandsnaam of voettekst kan de release identificeren. De versiegeschiedenis helpt de setup te reconstrueren; het certificeert geen individuele sleutel.

  1. Identificeer de privésleutel, niet het publieke ontvangstadres. Een mainnet WIF begint gewoonlijk met 5, K of L; een BIP38-versleutelde sleutel begint met 6P. Het voorvoegsel is slechts een formaathint. Bewaar de originele compressievorm omdat die het corresponderende adres bepaalt.
  2. Voor BIP38 eerst lokaal en offline ontsleutelen met een geverifieerde kopie uit de officiële bitaddress-repository: Wallet Details → voer de versleutelde sleutel in → View Details → voer de passphrase in → Decrypt BIP38. Vergelijk het resulterende adres met het papier voordat u de bijpassende WIF gebruikt. Voer de sleutel nooit in op een live website of genereer een vervangende portemonnee met deze oude tool.
  3. Open in de NIEUWE Electrum-bestemmingsportemonnee Wallet → Private keys → Sweep. Voer alleen de onversleutelde WIF in dit lokale dialoogvenster in. Controleer dat de bestemming bij randstorm-new hoort, bekijk de transactie en vergoeding vóór verzending.
  4. Sweep verplaatst het besteedbare saldo dat door de opgegeven sleutel wordt beheerd in één transactie. Het is geen import en geen kleine testsequentie zoals hierboven. Herhaal voor andere gefinancierde papieren portemonneesleutels en bewaar de originelen totdat alle verwachte ontvangsten bevestigd zijn.

bitaddress.org — officiële repository en ondertekende bestanden ↗

Coinpunk: beveilig de backup vóór het aanraken van de oude server

Coinpunk was zelfgehost, dus er is geen universele huidige inlogsite of herstelservice. Deze labels komen uit repository-snapshot 63ca325be538, waarvan package.json versie 0.2.1 aangeeft. Een aangepaste uitrol kan verschillen.

  1. Als uw oorspronkelijke vertrouwde installatie nog werkt, open Backup → Download en bewaar meerdere kopieën van de versleutelde portemonnee. Bewaar ook de inlog-ID, het wachtwoord en de serverbackup. Update of herinstalleer de enige overgebleven instantie niet eerst.
  2. Het historische Send Bitcoins-formulier bevat Bitcoin address to send to, Amount en een weergegeven vergoeding. Gebruik het alleen als de originele instantie nog betrouwbaar werkt en het bestemmingsadres ondersteunt. Forceer geen bc1-adres in deze oude software; de geïnspecteerde adresparser gebruikt Base58Check.
  3. Voor een incompatibele bestemming of een offline server, bewaar de backup en herstel de sleutels lokaal met hulp die deze Coinpunk-versie begrijpt. Het portemonneemodel slaat keyPairs op, inclusief change keys, binnen een versleutelde payload. Dit is geen Electrum-seed of een Bitcoin Core wallet.dat; hernoemen van het bestand kan het niet converteren.
  4. Zodra de herstelde WIF-sleutels aan de originele adressen zijn gekoppeld, gebruik Electrum’s Sweep-procedure hierboven voor elke gefinancierde sleutel. Controleer de volledige set, inclusief change-adressen. Bewaar de versleutelde backup en het wachtwoord totdat de ontvangsten op de bestemming overeenkomen met het verwachte saldo.

Hardware wallets die wij aanbevelen als nieuwe bestemming

Voor deze migratie raden wij Trezor Safe 3 aan als u fysieke knoppen prefereert, of Trezor Safe 5 als een groter touchscreen adrescontroles makkelijker maakt. Beide kunnen de nieuwe ondertekeningssleutels op een apart apparaat bewaren. Het kopen van een apparaat lost een oude sleutel niet op: maak een volledig nieuwe portemonnee op het apparaat aan.

Als Amazon-partner verdien ik aan in aanmerking komende aankopen.

Trezor Safe 3

Twee knoppen en een monochroom scherm: onze keuze voor lezers die bewuste knopbevestiging willen. Verifieer het volledige ontvangstadres op het apparaat vóór het overzetten van het oude saldo.

Bekijk Trezor Safe 3 op Amazon

Trezor Safe 5

Een 1,54-inch kleurentouchscreen met haptische feedback: onze keuze wanneer schermgrootte en touchbediening het belangrijkst zijn. Het comfortabelere scherm maakt hergebruikte of blootgestelde sleutels niet veilig.

Bekijk Trezor Safe 5 op Amazon

De Amazon-links openen een regionale productzoekopdracht, geen geverifieerde verkoperslijst. Controleer de verkoper via Trezor’s officiële Amazon-winkels of geautoriseerde wederverkopers. Gebruik de apparaat-authenticatiecontroles tijdens de setup; gebruik nooit een meegeleverde, vooraf geschreven portemonneebackup.

  1. Begin op trezor.io/start en installeer Trezor Suite. Volg de apparaat-specifieke setup en authenticatiecontroles, kies Create a new wallet en voltooi de backup-check op het apparaat. Bewaar de backup offline. Herstel de oude portemonnee of de software-portemonnee-seed uit het bovenstaande voorbeeld niet op dit apparaat.
  2. Voor een normale verzending selecteert u het Bitcoin-account in Trezor Suite, kiest u Receive en verifieert u het volledige adres op het verbonden apparaat. Gebruik dit adres in plaats van het software-portemonnee-adres in de Blockchain.com-route. Controleer de ontvangen overboeking en de bevestigingen in Trezor Suite in plaats van in History van Electrum.
  3. Voor de Electrum Sweep-route verbindt u de nieuw geconfigureerde Trezor en maakt u een Electrum-portemonnee met File → New/Restore → Standard wallet → Use a hardware device. Volg Trezor’s Electrum-gids en gebruik het bijpassende Bitcoin-account en adresstype. Verifieer een ontvangstadres op de Trezor en gebruik dit als sweep-bestemming. Voer alleen de OUDE WIF-sleutel in Sweep in; typ nooit de Trezor-backupwoorden in Electrum of een website.

Trezor: verbind het apparaat met Electrum ↗

Bronnen en reikwijdte

Deze casestudy behandelt historische browserimplementaties en hun verschillende migratieroutes. Voor de bredere relatie tussen entropie, seed phrases en hardware wallets, ga verder met het achtergrondartikel.

Achtergrond: hoe zwakke portemonnee-seeds ontstaan →

Gecontroleerd op 19-09-2026 tegen primaire documentatie en broncode. Er zijn geen echte fondsen of privésleutels gebruikt bij het testen. De tabel is geen uitputtende lijst of diagnose van uw portemonnee.

FAQ

Herkent BitcoinJS 0.1.3 mijn portemonneeversie?

Nee. Het identificeert een bibliotheekvoorbeeld genoemd in de Randstorm bekendmaking. Een portemonnee kan die bibliotheek bundelen of aanpassen zonder de versie aan de gebruiker te tonen. De originele portemonneebouw en browseromgeving moeten nog steeds worden geïdentificeerd.

Bewijst bitaddress.org 2.8.0 dat mijn papieren portemonnee veilig is?

De changelog documenteert sterkere entropieverzameling in 2.8.0. Het certificeert niet hoe een individuele sleutel werd gegenereerd, welke browserfuncties beschikbaar waren, of het bestand gewijzigd is. Het artikel behandelt het daarom als een gedocumenteerde wijziging, niet als een universele veiligheidsgrens.

Waarom gebruikt de papieren portemonneeroute Sweep in plaats van Import?

Import houdt de originele privésleutel in gebruik. Sweep maakt een transactie die de besteedbare fondsen overzet naar de voorbereide bestemmingsportemonnee. De nieuwe portemonnee moet onafhankelijk gegenereerde sleutels hebben, en bestemming en vergoeding moeten vóór verzending worden gecontroleerd.

Kan Electrum een Coinpunk-backup direct openen?

De geïnspecteerde Coinpunk-versie slaat een versleutelde portemonneepayload op, geen Electrum-seed. Bewaar de backup, inlog-ID en wachtwoord. Herstel de sleutels lokaal met versiespecifieke expertise, en koppel ze aan de originele adressen voordat u de sweep-route gebruikt.