tirsdag 8. desember 2020

Offentleg nøkkel som lokkemat

Låsing- og opplåsingsscript i P2PKH
Viss du er over gjennomsnittet interessert i Bitcoin, er Marty Bent og Matt Odells Tales From The Crypt (TFTC) ein obligatorisk podkast, i alle fall "Rabbit Hole Recap" som er ei oppdatering av dei viktigaste sakeene i Bitcoin-verda siste veke. I RHR frå 30.11 presenterte dei ein ganske spesiell konspirasjonsteori: Satoshi Nakamotos bitcoin er eigentleg lokkemat ("bait") for kvante-datamaskiner (Quantum Computing - QC). 

Eg bryr meg vanlegvis ikkje om konspirasjonteoriar, og det trur eg ikkje Matt og Marty gjer heller, men denne var ganske morsom, og gir anledning til litt refleksjonar rundt adressetypar i Bitcoin. Den første adresse-typen i Bitcoin var "Pay to Public Key", eller P2PK som den vanlegvis blir forkorta. 

Satoshis P2PK-bitcoin som honningfelle
Teorien går då ut på at dette er litt av ein lokkemat for QC, for dersom denne teknologien klarer å knekka offentleg nøkkel-kryptografien, dvs. å finna den private nøkkelen gitt den offentlege, er gevinsten heile Satoshis formue. Teorien seier vidare at dersom kinesarane er dei første som klarer å utvikla QC så langt, vil dei halda det hemmeleg så lenge som muleg fordi dei då får tilgang til store mengder hemmeleg informasjon. Men så seier teorien vidare at ein eller annan i systemet ikkje klarer å dy seg fordi alle som arbeider med kryptografi kjenner til Bitcoin og dei store summane som er kontrollerte av Satoshis private nøkkel. Vedkommande vil då bruka teknologien og rana til seg formuen, og vips er Kina avslørt som innehavar av teknologi som kan knekka det meste av det som er kryptert på nettet. 

Artig historie, om ikkje anna :)

P2PKH
Etter kvart vart adressetypen Pay to Public Key Hash, P2PKH, innført. Med P2PKH blir den offentlege nøkkelen køyrt gjennom hash-funksjonen RIPEMD-160 og resultatet blir den offisielle Bitcoin-adressa til mottakaren. Fordelen med denne metoden er at den offentlege nøkkelen ikkje blir eksponert, annan enn akkurat i validering, og dette skaper eit ekstra vern mot brute force-angrep mot digitale signaturar. P2PKH-adresser startar alltid med '1'. 

Men truleg vart adressetypen innført først og fremst fordi adressa vart ein god del kortare enn den offentlege nøkkelen. Komprimering av offentleg nøkkel ("Compressed Public Key") var ikkje kjent då Bitcoin vart sett i gang. Hadde Satoshi kjent til metoden ville kanskje den ha vorte brukt i staden for P2PKH, men det får me truleg aldri vita.

Andre adressetypar
P2PKH er den desidert vanlegaste adresseforma i Bitcoin og ein analyse av UTXO-settet i 2017/18 viste at den utgjorde om lag 82 % av alle UTXO. I 2012 vart ein ny adressetype føreslått av Gavin Andresen, teken i bruk. Det var PayToScriptHash, P2SH. Denne adressetypen opna også for multi-signturar, og adressetypen startar alltid med eit 3-tal ('3....'). Innbakt i P2SH er det to typar adresser: P2WPKH (Pay to Witness Public Key Hash) og P2WSH (Pay to Witness Script Hash).

Artikkelen nemnt over, viser følgjande fordeling på adressetypar i 2017/18:

P2PKH: 81,99 % 
P2SH:  17,11 %
P2PK:   0,12 %
Andre:  0,78 %

Som om ikkje det var nok, er det også innført ein ny måte å koda (teiknsetja) adressene på. Kall det gjerne ulike typar alfabet for Bitcoin-adresser. Den vanlege teiknsetjinga har vore Base-58, eit teiknsett som inneheld alle små og stor bokstavar pluss tal, men minus teikn som lett kan forvekslast, enten med tal eller bokstavar: 'I' (stor I for Ivar) 'l' (liten L), 'O' (stor O for Ola) og 0 (null).

Ei ny teiknsetjing er Bech32. Det er eit teiknsett med 32 teikn og har små bokstavar pluss tal, minus følgjande teikn: '1' (eitt-tal), 'b', 'i', og 'o' (liten O). Bech32-koda adresser startar alltid med 'bc1'

Oppsummert
Ei Bitcoin-adresse startar alltid med ein av desse teikn-kombinasjonane:

'1': Den "gamle" P2PKH-typen adresser, koda med Base58-teiknsett
'3': Den nyare P2SH-typen, men framleis koda med Base58
'bc1': P2SH-adresser koda med Bech32

I tillegg finst det Bitcoin-adresser som startar med 'n' eller 'm', og det er testnett-adresser.

Ingen kommentarer: