I kryptovalutornas värld dyker begreppen privat nyckel, offentlig nyckel och adress upp regelbundet. Men de är fortfarande ganska missförstådda av många och kan orsaka en del förvirring. I den här artikeln ska vi reda ut vad de egentligen innebär.
Bitcoin och adresser
I Bitcoin registreras alla transaktioner i ett stort offentligt register som kallas blockchain. Bitcoins överförs mellan adresser, vilka vanligtvis ges i form av teckensträngar, till exempel:
1J5LQL86oA9Q4wT4D91GECbY4caioj5a4p.
En adress fungerar ungefär som ett konto som tillhör en användare och används för att lagra, ta emot och skicka bitcoins.
I allmänhet är en adress kopplad till en privat nyckel och en offentlig nyckel. Dessa spelar en avgörande roll i den digitala signaturen, som gör det möjligt att spendera de bitcoins som finns på den aktuella adressen. Den privata nyckeln fungerar som ett lösenord för att komma åt kontot, medan den offentliga nyckeln används för att verifiera signaturen offentligt – utan att avslöja den privata nyckeln.
Vad är en privat nyckel?
En privat nyckel är ett slumpmässigt nummer mellan 1 och 2²⁵⁶ (vilket motsvarar cirka 1,1579 × 10⁷⁷). Att generera en ny privat nyckel innebär helt enkelt att välja ett nummer inom detta intervall. Säkerheten i detta system bygger på att antalet möjliga kombinationer är så enormt att det är statistiskt omöjligt att två personer råkar få samma privata nyckel om den genereras slumpmässigt.
Privata nycklar representeras vanligtvis i Base58 i form av en teckensträng. De börjar alltid med en 5, K eller L. Till exempel:
Kzczf8E4oq8MLakhRS479gpZpSe2e6u2xErKHQNqpeFMPEK4irtc
Den privata nyckeln gör det möjligt att spendera bitcoins från en viss adress, och ska därför hållas hemlig – därav namnet privat nyckel. Man äger alltså bara sina bitcoins om man har tillgång till sina privata nycklar.
Privata nycklar lagras oftast i det som kallas plånböcker eller wallets. Dina privata nycklar sparas på din enhet, oavsett om du använder en smartphone, dator eller en hårdvaruplånbok (hardware wallet) som t.ex. Ledger Nano S. Vanligtvis genereras dessa nycklar deterministiskt från en återställningsfras på 12 till 24 ord. Det är därför avgörande att spara denna fras noggrant, eftersom den gör det möjligt att återfå dina medel om din enhet blir stulen eller går sönder.
Om du har bitcoins på en börs som Coinbase eller Kraken, så är det börsen som förvarar dina bitcoins åt dig (precis som en bank) – vilket innebär att du inte har tillgång till dina privata nycklar.
Vad är en offentlig nyckel?
En offentlig nyckel är alltid kopplad till en privat nyckel. När det gäller Bitcoin beräknas den offentliga nyckeln från den privata nyckeln med hjälp av en asymmetrisk kryptografialgoritm som kallas ECDSA (Elliptic Curve Digital Signature Algorithm eller elliptisk kurvbaserad digital signaturalgoritm).
Denna operation utförs med hjälp av den elliptiska kurvan secp256k1, som illustreras nedan. Processen är enkelriktad, vilket innebär att det är omöjligt att återskapa den privata nyckeln enbart utifrån den offentliga nyckeln.
Paret privat nyckel / offentlig nyckel används vid signering av transaktioner. Användaren signerar sin transaktion med sin privata nyckel, och de andra aktörerna i nätverket verifierar signaturen med den offentliga nyckeln. Om den offentliga nyckeln motsvarar signaturen, valideras transaktionen och läggs till i blockkedjan. Annars avvisas den av nätverket. I denna process avslöjas den privata nyckeln aldrig, och endast den offentliga nyckeln är känd för alla, vilket är anledningen till att den kallas « offentlig » nyckel.
Offentliga nycklar hanteras automatiskt av de program som bygger transaktionerna. Användaren ser vanligtvis aldrig sin offentliga nyckel direkt. De representeras oftast i hexadecimal form. Till exempel är den offentliga nyckeln som är kopplad till den privata nyckeln vi nämnde tidigare:
02f5e25778dcee9539b25799831277eb8e731ffcbdcd9e68f79f8ca43c570b94ba
Notera att även om offentliga nycklar är just offentliga, så avslöjas de vanligtvis bara vid transaktionstillfället. Den information som användaren gör publik för att ta emot medel är inte den offentliga nyckeln – utan adressen.
Enkla adresser
En enkel adress beräknas från den offentliga nyckeln genom hashfunktioner. Den offentliga nyckeln hashas först med funktionen SHA-256, och resultatet hashas därefter med RIPEMD-160.
För att uttrycka det mer matematiskt: Om K är den offentliga nyckeln, så beräknas adressen a enligt:
a = RIPEMD160(SHA256(K))
Båda dessa hashfunktioner är irreversibla, vilket innebär att det är omöjligt att återskapa den offentliga nyckeln från adressen.
Precis som den privata nyckeln, representeras adresser vanligtvis i Base58 i form av en teckensträng. De börjar alltid med en 1. Adressen som motsvarar vårt exempel på nyckelpar ovan är:
1KMnRF6NbRnLg8KkqBGorSyLGM14BVR2LS
Adressen beräknas från den offentliga nyckeln, som i sin tur beräknas från den privata nyckeln. Dessa operationer är ensidiga, vilket betyder att ingen kan återskapa din privata nyckel (eller ens din offentliga nyckel om du aldrig gjort en transaktion) från din adress!
Det är också värt att notera att de senaste plånböckerna automatiskt genererar nya nycklar och adresser för varje betalning. Detta förbättrar transaktionssekretessen, eftersom alla transaktioner registreras på blockkedjan. En användare använder därför vanligtvis tiotals olika adresser.
Andra typer av adresser
Här har vi pratat om de traditionella enkla adresserna. Inom branschen kallas dessa ofta för Pay-to-Public-Key-Hash (P2PKH), eftersom varje adress representerar en hash av en offentlig nyckel (public key).
Det finns en annan typ av adress som kallas Pay-to-Script-Hash (P2SH), som används för adresser som härrör från mer komplexa skript. Dessa börjar med en 3, till exempel:
3KspPat3qWB1eFrxSLqCv6e4ozuxB9Bkya
P2SH-adresser används särskilt för gemensamma konton (multisignatur-adresser).
Med SegWit har nya typer av adresser uppstått: Pay-to-Witness-Public-Key-Hash och Pay-to-Witness-Script-Hash. Dessa nya adresstyper fungerar i stort sett på samma sätt som de tidigare nämnda. Dessa adresser är unika eftersom de representeras i Base32 och börjar med « bc1 », till exempel:
bc1qe9s87yw62zu5qe7873x3zh3ahhls7677k4y5jt
Cold storage
Eftersom beräkningen av privata nycklar och adresser är helt deterministisk, kan de genereras offline. Det innebär att det inte krävs någon nätverksanslutning för att skapa ett konto. Denna egenskap utnyttjas av säkerhetsskäl: genom att generera nycklar och adresser på en enhet som inte är ansluten till Internet minskar man risken för hackning drastiskt. Detta kallas kallförvaring (cold storage) och används ofta i hårdvaruplånböcker.
Man kan också skapa kallförvaring genom att generera privata nycklar på en dator som är offline och skriva ner dem på papper – detta kallas en pappersplånbok (paper wallet).
Hur skapar man en pappersplånbok?