Waarom software verifiëren - ‘Don’t trust, verify!
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!

Voorbeelden van aanvallen

Met een foute software-versie kan de aanvaller bijvoorbeeld proberen om uw bitcoin sleutels te stelen. Daarnaast kan deze tijdens het uitvoeren van een bitcoin transactie 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. 

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). 

Jos_verifying_digital_signature_on_a_computer_using_crptography_a7e46eda-7327-4b48-8ba5-eafc0d1dd680
Gemaakt met Midjourney: verifying digital signature on a computer using cryptography

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. 

  1. Download en installeer gpg: Windows of OSX 

Deze gids is geschreven voor Windows-gebruikers. Apple commando’s kunnen verschillen maar de principes blijven hetzelfde.

 

  1. 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. 
  • Maak een OpenGPG sleutel
  • Vul een willekeurige naam en e-mail in en klik ‘next’. Het e-mail adres hoeft niet echt te bestaan.
  • Wacht tot de sleutel is aangemaakt en bevestig nogmaals het gekozen wachtwoord.
  1. 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.

Sla het bestand op met de naam pgp_keys.gpg op de locatie C//Downloads
  1. 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 <craigraw@gmail.com>“ importedgpg: total number processed:  1gpg: imported: 1

  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. 

  • Vergelijk zijn Keybase sleutel uit de eerdere stappen met Twitter en Github (onderaan pagina) 

Open Kleopatra en ga naar het certificaten tabje. Rechtermuisklik op Craig Raw en kies ‘certificeren’. Klik op het volgende scherm ‘certificeren’. 

  1. 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.

 

  1. 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 <craigraw@gmail.com>” [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.

  1. 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.