I en tidigare artikel om Shamir’s secret sharing nämnde vi kort multisignaturer, eller “multisig”, som länge varit en del av Bitcoin. Kortfattat så innebär det att man kan kräva att flera olika nycklar används för att skicka en transaktion, alltså som ett sånt där lås som kräver att flera nycklar vrids om innan det öppnas. Det här kan konfigureras på mer eller mindre avancerade sätt men ett vanligt upplägg är “2 av 3” där 3 nycklar existerar men endast två av dem krävs för att utföra en transaktion. En sådan lösning har flera fördelar, bl.a. att en nyckel kan tappas bort utan att man förlorar åtkomsten till sina pengar samtidigt som det inte räcker för en tjuv att komma över 1 av nycklarna.
Användningen av den här typen av avancerade skydd kanske främst förknippas med företag eller individer som har hand om stora mängder pengar och därför behöver tänka några varv extra på hur tillgångar ska skyddas men faktum är att det finns goda anledningar att försöka få den här tekniken i händerna även på “vanliga användare” (vi återkommer till varför längre ned).
En användarvänlig lösning
En plånbok som var tidigt ute med multisig var Copay, en open source-plånbok som lanserades av BitPay och denna är fortfarande ett av de enklaste sätten att komma igång med multisig i praktiken. Såhär går det till i Copay:
- Ladda ned Copay t.ex. till din mobil eller till din dator.
- Skapa en ny “delad plånbok”. Här anger du villkoren som gäller, t.ex. 2 av 3
- Ladda ned Copay till ännu en dator/mobil.
- Välj nu istället för att skapa en plånbok att “ansluta till en delad plånbok”. Skanna QR-koden eller kopiera koden som visas på din första enhet.
- Upprepa steg 3 och 4 en eller flera gånger på ytterligare enheter, beroende på hur många “copayers” du valt.
Nu har du en multisig-plånbok uppdelad över flera enheter som du kontrollerar. Valde du 2 av 3 så måste alltså minst 2 av enheterna signera när du vill skicka bitcoin. För att ta emot bitcoin till plånboken kan du använda vilken som helst av enheterna och väljer helt enkelt alternativet “receive” som i de flesta andra plånböcker.
För att skicka gör du följande:
- På den ena av enheterna, välj att skicka och knappa in belopp samt adress du vill skicka till. Godkänn.
- På de andra enheterna dyker nu automatiskt ett s.k. “proposal” upp. Kontrollera förslaget på en av dessa enheter och signera.
Det här är faktiskt mycket smidigt och kräver ingen speciell teknisk förkunskap hos användarna. Copay använder något som kallas Bitcore wallet service för att synkronisera transaktionerna mellan dina enheter och som standard används en server som ägs av BitPay, vilket alltså innebär att de tar del av viss metadata kring dina transaktioner. Det går dock att ställa in i appen om man hellre vill använda sig av en annan server.
Vad fattas?
Även om Copay är smidigt så finns några aspekter som saknas för att få till ett verkligt säkert system. Det ena problemet är att alla dessa plånböcker är online och man drar alltså inte nytta av offline-aspekten hos hårdvaruplånböcker. Hackar någon din dator så räcker det förvisso inte men det finns förmodligen en ökad risk att någon som kommit in i din dator även kan lura sig in i någon av dina övriga enheter. Det andra är att eftersom samma mjukvara används på alla ställen så kan buggar i mjukvaran påverka alla dina 3 enheter och därmed eliminera hela poängen med ditt multisig-upplägg. Mjukvaran blir en s.k. single point of failure.
Att använda hårdvaruplånböcker i kombination med multisig har varit möjligt ett tag i Electrum även om användarvänligheten fortfarande lämnar mycket att önska. Saleem Rashid har skrivit ett blogginlägg där han visar hur man sätter upp en 2 av 3-lösning med tre olika hårdvaruplånböcker, i hans fall en Digital Bitbox, en Ledger Nano S samt en Trezor. Här har man alltså spridit ut riskerna mycket väl. Eftersom hårdvaruplånböcker är tänkta att fungera på så sätt att dina tillgångar är säkra även om datorn skulle vara infekterad så är det här en lösning som skyddar dig även om det t.ex. skulle finnas buggar i en av hårdvaruplånböckerna.
Det är värt att notera att även om hårdvaruplånböcker presenteras som mycket säkra så har det under åren hittats en mängd brister, allt från mycket allvarliga buggar där man kunnat få enheten att lämna ut de privata nycklarna, till mindre allvarliga. Dessa fixas förstås med tiden men man måste räkna med att det fortfarande finns brister som ännu inte upptäckts. För en genomgång av brister som hittats i hårdvaruplånböcker se den här presentationen av Stepan Snigirev. Det här innebär alltså att för att uppnå riktig hög säkerhet behöver man använda flera olika hårdvaruplånböcker av olika märken.
Finns det då några brister kvar med Electrum-lösningen (om vi tänker oss att den blev lite lättare att använda)? Själva mjukvaran i Electrum är förstås fortfarande en sorts single point of failure men den är ändå mycket begränsad i det här fallet. Eftersom en bugg i Electrum ändå inte kan få hårdvaruplånböckerna att lämna ifrån sig sina privata nycklar så bör du vara säker så länge du följer de instruktioner som visas på hårdvaruplånböckerna och kontrollerar informationen där. Electrum skulle på något vis behöva lura dig att använda hårdvaruplånboken på fel sätt. Det finns dock en annan brist med Electrum vilket är integriteten. Plånboken är beroende av en server och med denna server delar du en hel del metadata om dina transaktioner, såvida du inte själv sätter upp en Electrum-server, något som kräver en del tekniskt kunnande.
För att göra det enklare för olika plånböcker att göra multisig-transaktioner tillsammans har en standard tagits fram för hur plånböcker kan dela med sig av osignerade eller delvis signerade transaktioner. Formatet kallas PSBT (Partially Signed Bitcoin Transaction) och beskrivs i BIP-174 men det är än så länge ganska få plånböcker som stödjer detta. Hårdvaruplånboken Coldcard är den första som har stöd för PSBT både i den mening att du kan “ta in” en delvis signerad transaktion från en annan källa och slutföra signeringen men även att du kan påbörja en signering och exportera ut den delvis signerade transaktionen så att en annan plånbok kan slutföra den.
Förhoppningsvis kommer stödet för PSBT snart att vara en självklarhet i såväl hårdvaruplånböcker och andra plånböcker och därmed möjliggöra både enkla och säkra multisig-lösningar även för vanliga användare.