Ofta pratas det om att man med bitcoin har möjligheten att hantera sina pengar själv, utan att behöva lita på någon tredje part. Det är sant men den verkliga bilden är betydligt mer nyanserad än så och det finns många aspekter att fundera över när du väljer hur du ska hantera dina bitcoin.
En mycket tidig webbaserad bitcoinplånbok var blockchain.info (numera blockchain.com) som när den lanserades presenterades som en bra kompromiss mellan att (1) förvara sina bitcoin (sina privata nycklar) hos någon annan och (2) ha hand om dem själv på sin egen dator/mobil. De förvarar nämligen dina privata nycklar åt dig men endast i krypterad i form där ditt lösenord krävs för att för att dekryptera dem, och denna kryptering/dekryptering sker på din egen dator innan någonting skickas till deras server.
Det positiva med detta är ju då alltså att även om du skulle slarva bort din mobil eller liknande så vet du att du fortfarande kan komma åt dina bitcoin, du behöver inte tänka på förvaringen av dem, Men detta är förstås under förutsättning att du inte glömmer bort ditt lösenord. Glömmer du bort det så är det kört. Ett annat sätt som dina bitcoin skulle kunna försvinna på är förstås om sajten försvinner och du inte exporterat dina krypterade nycklar och har dem på ytterligare ett ställe. Så, sammanfattningsvis, du kommer inte helt undan att förvara någonting själv och du slipper inte heller helt undan risken att du glömmer bort/tappar bort något.
Men tilliten då, är du helt säker på att de inte kan komma åt dina nycklar? Med en sådan här webbaserad plånbok så kan du i teorin granska javascript-koden i din webbläsare och se exakt vad som händer för att försäkra dig om att inga privata nycklar lämnar din dator i okrypterad form. Det förutsätter ju förstås att du har kompetensen att granska koden, men inte bara det, man måste också fundera över om du ska göra detta varje gång du använder sajten. Det skulle ju faktiskt kunna vara så att den kod du granskade igår inte alls är den som skickas till dig när du idag besöker sajten. Här finns två olika risker, den första är att företaget i sig faktiskt försöker lura dig, den andra är att de blivit hackade och att det är hackarna som nu bytt ut koden för att komma åt dina privata nycklar.
De risker vi pratar om här handlar inte bara om den här typen av plånbok utan faktiskt de flesta varianter. Många plånböcker stoltserar med att ha öppen källkod men frågan om hur du vet att det faktiskt är koden du kan se på t.ex. GitHub som också är koden som körs kvarstår. Använder du t.ex. Bitcoin Core så finns det flera sätt att försäkra dig om att det faktiskt är rätt kod du kör. Du kan verifiera att checksumman för den fil du laddat ned också är den som listas i en fil på Bitcoin Cores hemsida (och du kan verifiera att filen med checksumman faktiskt är signerad av utvecklarna). Du kan också om du vill gå steget längre och bygga koden själv för att sedan verifiera att checksumman för det du byggt överensstämmer med den publicerade checksumman.
Återigen finns nyanser och detaljer. Ska man vara riktigt noga bör man förstås ta extra steg för att säkerställa att den signatur som man verifierar faktiskt är signerad med rätt signeringsnyckel. Vad händer om sajten du hämtar signeringsnyckeln från har blivit hackad? Eller om din dator blivit hackad och det program du använder för verifiering är utbytt mot en falsk kopia. Det här är förstås ett rabbit hole som aldrig tar slut. Hårdvaruplånböcker brukar ha olika typer av verifieringar så att du kan säkerställa att du inte fått en falsk enhet, eller att någon modifierat den på vägen. Själva processen för hur den verifikationen går till är dock oftast svårt för gemene man att ha tillräcklig teknisk förståelse för att förstå så i praktiken litar du ändå åtminstone i någon mån på en tredje part.
Poängen med denna långa utläggning är att visa på att du i princip alltid i någon mån litar på någon annan och din uppgift blir därför inte att helt eliminera detta utan att försöka förstå var dessa risker är som störst och vad du kan göra för att minska dem. Att man i viss mån måste lita på andra är självklart i ett modernt samhälle - vem skulle t.ex. verifiera korrektheten i en bil man köpt ned i minsta detalj innan man sätter sig bakom ratten? Eller alternativt, bygga sin egen bil från scratch? Ingen gör, eller kan förväntas göra, det och då handlar det ändå om en maskin du sätter dig i, där en felkonstruktion kan kosta dig ditt liv.
Ok, så nu när vi vet att vi alltid litar på någon annan, låt oss titta lite på hur vi gör det och hur vi kan minska riskerna med det. I fallet med bilen bygger din tillit förmodligen dels på att du köper bilen av ett företag som tillverkat massor av bilar tidigare, och du har ännu inte hört att de (med vilje) skulle ha gjort något för att riskera förarnas säkerhet. Det är också väldigt osannolikt att de skulle vilja just dig något illa, och därmed se till att din bil fungerar sämre än alla andras.
Om du laddar ned en plånboksapp som har öppen källkod till din mobil så litar du förmodligen bl.a. på:
- Det finns duktiga tekniska, oberoende personer som har granskat koden
- Koden som visas upp publikt (på t.ex. GitHub) är samma som den som körs på din mobil
- Operativsystemet på din mobil är säkert så att ingen annan app kan komma åt informationen
Punkt 2 har vi sett att man på olika sätt kan verifiera med checksummor och signaturer men för en mobilapp som installeras genom en app store är det svårt. T.ex. Blockstream har en sida som visar hur du kan verifiera binärerna för deras mobilapp men då får du nog se till att installera den binären manuellt på din mobil sedan om du ska vara säker på vilken app som körs.
Den stora fördelen med öppen källkod är att det är möjligt att granska koden och i bästa fall också möjligt att verifiera att koden som körs matchar den granskade koden. För vissa stora projekt är det en ovärderlig hjälp att ha många ögon som kan hjälpa till att upptäcka eventuella säkerhetshål. Att ett projekt har öppen källkod är dock långt ifrån någon garanti för att koden faktiskt är granskad av många personer och när det gäller små eller nya projekt ska du nog snarare förutsätta att så inte är fallet.. Ska du välja mellan att förvara dina bitcoin i en app från en etablerad, välkänd aktör vars kod inte är öppen och att ha dem i "Nisses nya open source wallet" som släpptes i förrgår så bör du förmodligen välja det första, även fast Nisses app har öppen källkod.
När det gäller bitcoin är multisig-lösningar där du kan använda flera olika plånböcker från olika tillverkare ett kraftfullt sätt att minska beroendet på en enskild extern part. Använder du en enskild hårdvaruplånbok så behöver du i ganska hög grad lita på tillverkaren. Använder du tre hårdvaruplånböcker från olika tillverkare i en 2-av-3-lösning så kan du klara dig undan även om en av dem skulle innehålla omedvetna säkerhetsbrister eller vara medvetet manipulerad.
Generellt sett är alltså tipset detta: När du väljer ett sätt att förvara dina bitcoin, fundera noga på exakt vilka du behöver lita på för att detta ska vara säkert och i vilken grad du faktiskt litar på dessa personer. Fundera också över vad som är det värsta som kommer att kunna hända om du missbedömt dem.