Bitcoin is een krachtig middel om op een soevereine manier jouw vermogen te beheren. Dit geldt echter alleen wanneer de software die je hiervoor gebruikt ook daadwerkelijk werkt zoals die is bedoeld. Een aanvaller kan namelijk een malafide versie van de software distribueren om zo toegang te krijgen tot jouw bitcoin. Dat willen we niet, en dus is het voor het veilig opslaan van bitcoin belangrijk om de bitcoinsoftware die je gebruikt te verifiëren op de echtheid daarvan. Don’t trust, verify!
Jos van ZNIP (bitcoin zelfbeheer & lightningadvies) neemt je in deze Focus-editie stap voor stap mee in de wereld van software-verificatie.
Voorbeelden van aanvallen
Met een foute software-versie kan de aanvaller bijvoorbeeld proberen om jouw bitcoinsleutels te stelen. Daarnaast kan deze tijdens het uitvoeren van een bitcointransactie het ontvangstadres wijzigen naar een ontvangstadres van de aanvaller zelf, waardoor je per ongeluk bitcoin overmaakt naar de aanvaller.
In dit artikel leer jezelf om te verifiëren of je Sparrow-wallet van de juiste bron komt, waardoor je dit soort aanvallen kunt voorkomen.
Hoe kun je software verifiëren?
Met ‘public private key’ (PGP) handtekeningen kun je verifiëren dat de software die je gedownload ook daadwerkelijk de software is die is uitgebracht door de ontwikkelaar. Bij de meeste belangrijke bitcoin-softwareprojecten wordt elke release een digitale handtekening aangeleverd door één of meerdere ontwikkelaars van het desbetreffende project waarmee je kunt controleren of de software van de goede bron komt.
Dit gebeurt overigens ook bij releases van Bitcoin Core. In editie #47 legden we dit al uit.
De digitale handtekening is te verifiëren door iedereen die de ‘public key’ van de ontwikkelaar heeft. Wanneer deze verificatie slaagt, weet je zeker dat de software vanuit de juiste bron komt en niet door iemand anders is uitgebracht.
Om software te kunnen verifiëren heb je ook software nodig; namelijk gpg of gpg 2. Hier vind je de links naar respectievelijk Windows en OSX (Apple).
Het verifiëren van een Sparrow-wallet release op Windows
In deze uitleg gaan we de software van Sparrow-wallet verifiëren. Deze stappen zijn echter ook te gebruiken voor andere softwareprojecten. Het is belangrijk om te benoemen dat je hiermee niet de kwaliteit van de software controleert; je controleert alleen of de ontwikkelaar die het project onderhoudt ook daadwerkelijk de software die jij gebruikt heeft uitgebracht. Om dit te doen hebben allereerst gpg of gpg 2 nodig.
Deze gids is geschreven voor Windows-gebruikers. Apple commando’s kunnen verschillen maar de principes blijven hetzelfde.
- Creëer zelf een key pair
Dit heb je nodig om de handtekening van Craig Raw, de ontwikkelaar van Sparrow-wallet, te valideren. Als dit eenmaal is gebeurd, hoef je dit niet steeds opnieuw te doen.
- Open Kleopatra (Dit heb je geïnstalleerd als onderdeel van gpg met Windows)
- Maak een OpenGPG sleutel
- Vul een willekeurige naam en e-mail in en klik ‘next’. Het e-mail adres hoeft niet echt te bestaan.
- Vul een wachtwoord in en schrijf deze op.
- Wacht tot de sleutel is aangemaakt en bevestig nogmaals het gekozen wachtwoord.
- Importeer de public key van Craig Raw
Ga naar Craig Raw’s Keybase account en sla vervolgens zijn public key lokaal op in de Download map.
- Importeer de public key
De public key hoef je slechts eenmaal te importeren en te valideren. Open de Opdrachtprompt op je laptop en ga naar de downloads folder:
- type ‘cd downloads’ en doe daarna ‘enter’.
Plak het volgende commando:
- gpg –import pgp_keys.gpg
1. cd downloads 2. gpg –import pgp_keys.gpg output:gpg: key E94618334C674B40: public key “Craig Raw <[email protected]>“ importedgpg: total number processed: 1gpg: imported: 1 |
- Valideer Craig Raw’s key
Voordat je dit doet moet je zeker weten dat de sleutel van Craig Raw echt is. Dit kan je doen door hem op meerdere bronnen te checken.
Open Kleopatra en ga naar het certificaten tabje. Rechtermuisklik op Craig Raw en kies ‘certificeren’. Klik op het volgende scherm ‘certificeren’.
- Download Sparrow
Ga naar https://sparrowwallet.com/download/ en download de volgende bestanden:
- Sparrow-1.7.2.exe
- Let op: deze versie kan inmiddels veranderd zijn.
- Sparrow-1.7.2-manifest.txt
- Sparrow-1.7.2-manifest.txt.asc
Het manifest- en de manifest signature-bestanden moet je bij elke nieuwe release opnieuw downloaden. Je voert deze stappen dan dus opnieuw uit, maar dan met de nieuwe versie.
- Verifieer het manifest bestand
Met de geïmporteerde PGP-keys van Craig Raw kun je de release verifiëren. Verifieer eerst het manifest bestand.
Open Opdrachtprompt en ga naar de download map:
cd Downloads |
Voer het volgende commando uit: gpg –verify <bestandsnaam>. Zorg dat de naam van het bestand exact hetzelfde is als wat je ziet in je downloads map.
gpg –verify sparrow-1.7.2-manifest.txt.asc |
Als de verificatie succesvol was, zie je het volgende:
gpg: assuming signed data in ‘sparrow-1.7.2-manifest.txt’gpg: Signature made Thu Feb 9 13:59:30 2023 SASTgpg: using RSA key D4D0D3202FC06849A257B38DE94618334C674B40gpg: Good signature from “Craig Raw <[email protected]>” [ultimate] |
Je hebt nu de handtekening van het manifest-bestand geverifieerd. Deze is dus authentiek.
Nu moeten we nog checken of de software juist is door de ‘hash’ in het sparrow-1.7.2-manifest.txt bestand te vergelijken met de hash van het sparrow-1.7.2-exe bestand.
- Verifieer de software
Voor het volgende commando in op opdrachtprompt:
- CertUtil -hashfile Sparrow-1.7.2.exe SHA256 | findstr /v “hash”
Dit commando genereert een SHA-256 hash met als input het Sparrow-1.7.2.exe bestand. De SHA-256 hash-functie genereert een unieke hash van 256 bits op basis van een input. Je kan het zien als een soort van gehaktmolen voor data waar een unieke reeks cijfers en letters uit komt.
CertUtil -hashfile Sparrow-1.7.2.exe SHA256 | findstr /v “hash” output: 90d8e456fa6ef8f5d86f84cd1bd9 44b4d9ad81ba77e14223d59e8e290480e87c |
Open het .txt bestand (Sparrow-1.7.2-manifest.txt) in de downloads map en vergelijk de hash met de output. Als deze overeenkomt dan weet je zeker dat je de software gebruikt die is uitgebracht door Craig Raw.
Als er ook maar 1 byte anders zou zijn geweest in jouw versie vergeleken met het origineel, dan zou er een andere hash uitkomen omdat een andere input een andere hash genereert.
Geverifieerd! Gefeliciteerd!
Je hebt nu de software op jouw computer geverifieerd: deze is tot op de byte hetzelfde als de versie die de ontwikkelaar heeft uitgebracht. Daardoor weet je dat er niet een kwaadwillend persoon met de versie heeft geknoeid om zo jouw bitcoin buit te maken. Wel net zo veilig dus!
Let wel, de kwaliteit van de software is hiermee niet geverifieerd, omdat er bugs in het origineel kunnen zitten. Kan je de uitgebrachte code controleren niet zélf controleren (omdat je geen computertaal praat), overweeg dan om een paar weken te wachten met het updaten naar een nieuwe versie.
Don’t trust, verify: je hoeft niemand te vertrouwen en kunt zo risico’s mitigeren.