Mik azok a privát kulcsok és a nyilvános kulcsok?

Bitcoinod védelmének és kezelésének kulcsai.

A Bitcoin nyilvános és privát kulcsokat használ egyrészt a bitcoin tranzakciók biztonsága érdekében, másrészt annak biztosítására, hogy bitcoinodhoz kizárólag te férhess hozzá.

A Bitcoin nem egy fizikai eszköz, hanem a tranzakciók digitális feljegyzéseként létezik a blokkláncon. Egy bitcoin összeg birtoklása egyszerűen azt jelenti, hogy van egy tranzakció a blokkláncon egy olyan címre, amelynek elköltési lehetősége felett te rendelkezel.

Ha el tudod költeni, akkor te birtoklod.

A bitcoin elköltése csak az adott bitcoin megfelelő nyilvános kulcsához tartozó privát kulcs használatával történhet. 

A privát kulcs olyan, mint egy zárható postaláda mesterkulcsa, mely nyitja a postaládát, és kizárólagos hozzáférést és kontrollt biztosít annak tartalma felett. A nyilvános kulcs pedig olyan, mint maga a lezárt postaláda, amelyet bárki láthat, és bárki dobhat be bele leveleket, de a mesterkulcs tulajdonosán kívül senki sem tudja kinyitni.

  • Privát kulcs: A titkos kulcs bitcoinod „feloldásához” és elköltési jogosultsághoz.
  • Nyilvános kulcs: A nyilvános kód, amelyet megoszthatsz másokkal, hogy bitcoint küldhessenek neked.

Amikor egy letétkezelő Bitcoin tárcát használsz, mint amilyen a Strike is, a privát kulcsokat a te nevedben tárolják, így indirekt módon te kontrollálhatod bitcoinod elköltését. Bitcoinod feletti önrendelkezés azt jelenti, hogy a bitcoinodat egy olyan címre küldöd, amelyhez tartozó privát kulcsok felett közvetlenül te rendelkezel, tehát ez az eljárás további előnyökkel és felelősséggel jár. Az önrendelkezés lényege a szuverenitás – a pénzed feletti kizárólagos kontroll gyakorlása.

Mi az a privát kulcs?

A privát kulcs egyszerűen egy nagyon nagy, titkos szám, amelyet tranzakciók jóváhagyására használnak.

Egész pontosan a privát kulcs egy egyedi 256 bites szám, ami azt jelenti, hogy egy 0 és 2²⁵⁶ vagy 1,1579 X 10⁷⁷⁷ közötti szám. A Bitcoinban ez a szám jellemzően hexadecimális formátumban van megjelenítve: 64 karakter, 0-9 közötti számokkal és A-F jelű nagybetűkkel, tehát egy privát kulcs valahogy így néz ki:

E8C5F60C6CCCD437D71597401C6A808F96C5EE74AEA6C4BCD8F24883A0DFC858

Sok modern, önrendelkező Bitcoin tárca generálja és kezeli a privát kulcsokat a tárcán belül. A privát kulcsok generálásának folyamata a véletlenszerűség (más néven „entrópia”) felhasználásával kezdődik egy „seed phrase” létrehozásához, ami egy 12-24 szóból álló szólánc, melyhez a szavak kiválasztása egy szabványosított listáról történik. Az egyedi „seed phrase” alapján ezután létrehoznak egy „seed”-et, majd egy mesterkulcsot, majd a tranzakciók lebonyolításához használt további privát kulcsokat. Összefoglalva:

  • “Seed phrase”: 12-24 véletlenszerű szóból álló egyedi sorozat, amelyből a kulcsok generálhatók vagy visszaállíthatók, amennyiben a tárca elveszik vagy megsemmisül.
  • “Seed”: A „seed phrase”-ből származó egyedi karaktersorozat, amely a mesterkulcs generálására szolgál.
  • Mesterkulcs: A „seed”-ből származtatott egyedi kulcs, amely egy vagy több privát kulcs generálására szolgál.
  • Privát kulcsok: A tárca szoftverében tárolt egyedi 256 bites számok, amelyek a mesterkulcsból származnak, és amelyeket nyilvános kulcsok létrehozására és tranzakciók jóváhagyására használnak.

Ezt az egész procedúra hierarchikus determinisztikus vagy „HD” tárca néven ismert. Ez lehetővé teszi a privát kulcsok több hierarchiájának egyetlen forrásból történő létrehozását, beleértve a privát kulcsokból generált privát kulcsokat is, és biztosítja, hogy ugyanazok a kulcsok mindig újra létrehozhatók ugyanazzal a bemenettel (azaz  „determinisztikus”). Ez egyszerűsíti a tárca mentését és helyreállítását, miközben nagyobb rugalmasságot biztosít a kulcskezelésben.

Amikor önrendelkező Bitcoin tárcát hozol létre, általában a tárca szoftvere generálja a „seed phrase”-t, és arra késztet, hogy írd le. A tárca ezután az egyedi „seed phrase”-ből generálja és kezeli a privát kulcsaidat, így könnyedén jóváhagyhatsz tranzakciókat a tárca alkalmazásban anélkül, hogy meg kellene nézned vagy közvetlenül kezelned a privát kulcsaidat.

Az önrendelkezés során a privát kulcsaid feletti rendelkezést a tárca alkalmazáshoz és a „seed phrase”-hez való hozzáférés kontrollja révén gyakorolhatod. A privát kulcsaiddal és a seed phrase-eddel kapcsolatban az a legfontosabb, hogy ezeket titokban és biztonságban kell tartani, mivel ezek segítségével költhető el a bitcoinod.

Mi az a nyilvános kulcs?

A nyilvános kulcs egy privát kulcsból generált egyedi kód, amelyet nyilvánosan meg lehet osztani anélkül, hogy a privát kulcs titkossága sérülne. A nyilvános kulcsokat az iparági szabványú kriptográfiai „egyirányú függvények” (az úgynevezett elliptikus görbe kriptográfia) segítségével generálják, ami azt jelenti, hogy míg a nyilvános kulcsot könnyű a magánkulcsból generálni, a fordítottjára nincs ismert módszer.

A nyilvános kulcsok a bitcoin fogadására szolgálnak, és alapvető fontosságúak a Bitcoin címek létrehozásában. A Bitcoin cím gyakorlatilag egy nyilvános kulcs rövidebb, hatékonyabb és ember által olvasható változata. Amikor bitcoint akarsz fogadni, a tárcád szoftvere könnyedén létrehoz egy Bitcoin címet az egyik nyilvános kulcsodból, amelyet odaadhatsz a barátodnak, hogy küldjön neked bitcoint.

Amikor eljön a bitcoin elköltésének ideje, a tárcaszoftver az összeg fogadásához használt nyilvános kulcsnak megfelelő privát kulcsot használva digitális aláírást generál a tranzakció jóváhagyásához. Ez a digitális aláírás egyesíti a privát kulcs egyediségét és magának a tranzakciónak a kriptográfiai összefoglalóját. A legfontosabb, hogy az aláírások ellenőrizhetők pusztán a nyilvános kulcs felhasználásával, anélkül, hogy maga a privát kulcs nyilvánosságra kerülne.

A bitcoin elköltését a nyilvános és a privát kulcs kombinációja teszi lehetővé.

Hogyan használják a nyilvános és a privát kulcsokat a bitcoin tranzakciókban?

A Bitcoin tranzakciók az UTXO (Unspent Transaction Outputs, vagyis el nem költött tranzakciós kimenetek) modellt követik, ami azt jelenti, hogy minden peer-to-peer tranzakciónak vannak bemenetei (a forrás) és kimenetei (a cél).

Minden egyes általad birtokolt bitcoin összeg egy korábbi tranzakció kimenete, amelyet az egyik nyilvános kulcsodból generált Bitcoin címre lett küldve. Ahhoz, hogy elköltsd ezt a bitcoint, a tranzakciót a fogadáshoz használt nyilvános kulcshoz tartozó privát kulccsal kell aláírnod. Ezért kritikus fontosságú a privát kulcsok titokban és biztonságban tartása a bitcoinnal való önrendelkezés során.

Íme egy lépésről lépésre bemutatott példa, ahogy Aliz 1 bitcoint küld Bobnak:

  1. Címkérés: Aliz elkéri Bob Bitcoin címét. A cím Bob egyik nyilvános kulcsából generálódik, amely Bob egyik privát kulcsából származik.
  2. A tranzakció létrehozása: Aliz a Bitcoin tárcája segítségével létrehoz egy tranzakciót az alábbi adatok megadásával: Bob Bitcoin címe, a küldendő összeg és a kívánt díjszabás.
  3. UTXO-k kezelése: Aliz tárcaszoftvere választja ki a bemeneteket és a kimeneteket.
    • Bemenetek: Egy 0,5 bitcoin értékű UTXO és egy 0,75 bitcoin értékű UTXO.
    • Kimenetek: Egy 1,0 bitcoin értékű UTXO Bob Bitcoin címére és egy 0,249 bitcoin értékű UTXO Aliz egyik Bitcoin címére (más néven „visszajáró” cím).
    • Különbség: A 0,001 bitcoin különbséget a bányász kapja meg díjként.
  4. A tranzakció aláírása: Aliz tárcaszoftvere digitális aláírást hoz létre, és aláírja a tranzakciót a tranzakció adatainak és az általa elköltött UTXO nyilvános kulcsának megfelelő privát kulcsok felhasználásával.
  5. Közzététel a hálózaton: Az aláírt tranzakciót közzéteszik a Bitcoin hálózaton.
  6. A tranzakció ellenőrzése: A hálózat bányászai ellenőrzik a tranzakciót azáltal, hogy a digitális aláírást összevetik Aliz nyilvános kulcsával (amely a címből származik), így biztosítva, hogy a bitcoin jogos tulajdonosa jóváhagyta a költést.
  7. Bányászat: Amikor egy bányász megtalálja a nyertes hasht, a bányász a tranzakciót más érvényes tranzakciókkal együtt egy blokkba csoportosítja, és közzéteszi azt a Bitcoin hálózaton.
  8. Hozzáadás a blokklánchoz: A csomópontok megkapják az új tranzakcióblokkot, és megerősítik annak érvényességét, mielőtt hozzáadják azt a blokkot saját blokklánc példányukhoz.