Klucz publiczny jest kryptograficznym odpowiednikiem klucza prywatnego. Razem pozwalają udowodnić posiadanie kryptowaluty bez ujawniania sekretu, który ją kontroluje.
Podsumowanie
- Klucz publiczny to duża liczba wyprowadzana matematycznie z klucza prywatnego za pomocą mnożenia na krzywej eliptycznej, funkcji jednokierunkowej, którą szybko oblicza się w przód, ale praktycznie niemożliwe jest jej odwrócenie.
- Bitcoin i Ethereum używają tej samej krzywej eliptycznej secp256k1, która generuje 256-bitowe klucze prywatne i 512-bitowe nieskompresowane klucze publiczne (lub 257-bitowe skompresowane klucze publiczne).
- Adres portfela nie jest tym samym co klucz publiczny; adres jest krótszą, zahaszowaną wersją klucza publicznego, zaprojektowaną tak, aby łatwiej było go udostępniać i bardziej odporną na niektóre teoretyczne ataki.
- Klucz prywatny podpisuje transakcje, klucz publiczny weryfikuje te podpisy, a adres otrzymuje środki. Utrata klucza prywatnego oznacza trwałą utratę dostępu; udostępnienie klucza publicznego lub adresu nie niesie ryzyka dla bezpieczeństwa środków.
- Luka w oprogramowaniu sprzętowym Coldcard z lipca 2026 r., która ujawniła słabe generowanie kluczy prywatnych dotykające 116 milionów dolarów w bitcoinach, podkreśla, dlaczego właściwe generowanie i przechowywanie kluczy pozostaje najważniejszym aspektem samodzielnego przechowywania.
Kryptografia klucza publicznego jest fundamentem każdej transakcji kryptowalutowej, jednak większość użytkowników nigdy nie wchodzi w bezpośrednią interakcję ze swoim kluczem publicznym. Widzą adresy portfeli, skanują kody QR i potwierdzają transfery, nie rozumiejąc matematycznej warstwy, która umożliwia własność bez zaufania.
Ta warstwa ma znaczenie, ponieważ jej zrozumienie zmienia sposób myślenia o bezpieczeństwie. Klucz publiczny nie jest hasłem. Nie jest sekretem. Jest to liczba, którą można udostępnić każdemu i z której nikt nie może wyprowadzić klucza prywatnego kontrolującego Twoje środki. Ta asymetria, łatwa w jedną stronę, ale niemożliwa do odwrócenia, pozwala nieznajomym w internecie wysyłać sobie pieniądze bez ufania bankowi, rządowi ani sobie nawzajem.
Jak działają pary kluczy
Każdy portfel kryptowalutowy opiera się na parze kluczy: jednym kluczu prywatnym i jednym kluczu publicznym. Klucz prywatny to losowo wygenerowana liczba, zazwyczaj o długości 256 bitów, co oznacza, że jest jedną z około 10 do potęgi 77 możliwych wartości. Dla porównania, szacowana liczba atomów w obserwowalnym wszechświecie wynosi około 10 do potęgi 80. Przestrzeń kluczy jest na tyle duża, że odgadnięcie konkretnego klucza prywatnego metodą brute force nie jest praktycznym zagrożeniem przy obecnej lub przewidywalnej technologii.
Klucz publiczny jest wyprowadzany z klucza prywatnego poprzez mnożenie na krzywej eliptycznej. Bitcoin i Ethereum używają tej samej krzywej o nazwie secp256k1. Klucz prywatny jest mnożony przez stały punkt na tej krzywej, zwany punktem generatora, a wynikiem jest inny punkt na krzywej. Tym wynikiem jest klucz publiczny.
Kluczową właściwością jest to, że to mnożenie jest funkcją jednokierunkową. Mając klucz prywatny, obliczenie klucza publicznego zajmuje ułamek sekundy. Mając tylko klucz publiczny, obliczenie klucza prywatnego wymaga rozwiązania problemu logarytmu dyskretnego na krzywej eliptycznej, dla którego nie ma znanego wydajnego rozwiązania. Ta asymetria jest całą podstawą bezpieczeństwa kryptowalut.
Klucz publiczny a adres portfela
Częstym błędnym przekonaniem jest, że adres portfela i klucz publiczny to to samo. Nie są. Adres jest wyprowadzany z klucza publicznego przez jedną lub więcej rund haszowania, proces, który skraca wynik i dodaje dodatkową warstwę bezpieczeństwa.
W Bitcoinie proces przebiega następująco. 512-bitowy nieskompresowany klucz publiczny (lub 257-bitowy skompresowany klucz publiczny) jest przepuszczany przez SHA-256, a następnie przez RIPEMD-160, co daje 160-bitowy skrót. Dodawany jest bajt wersji, dołączana jest suma kontrolna, a wynik jest kodowany w formacie Base58Check. Ostatecznym wynikiem jest znany adres Bitcoin zaczynający się od 1, 3 lub bc1.
W Ethereum proces jest prostszy. 512-bitowy klucz publiczny jest przepuszczany przez Keccak-256 (wariant SHA-3), a ostatnie 20 bajtów (160 bitów) skrótu staje się adresem. Dodawany jest prefiks „0x” i opcjonalna suma kontrolna EIP-55, aby uzyskać znany adres Ethereum.
Powodem haszowania klucza publicznego do adresu jest częściowo praktyczny (krótsze ciągi znaków są łatwiejsze do udostępnienia), a częściowo obronny. Jeśli komputery kwantowe kiedykolwiek staną się zdolne do złamania kryptografii krzywych eliptycznych, potrzebowałyby klucza publicznego, a nie adresu, aby wyprowadzić klucz prywatny. Adresy, które nigdy nie zostały użyte do wysłania transakcji, nigdy nie miały swojego klucza publicznego ujawnionego w łańcuchu, co dodaje teoretyczną warstwę odporności kwantowej.
Jak podpisy cyfrowe potwierdzają własność
Kiedy wysyłasz kryptowalutę, nie przenosisz monet z jednego miejsca do drugiego. Tworzysz wiadomość, która mówi: „Autoryzuję transfer kwoty X z mojego adresu do tego odbiorcy” i podpisujesz tę wiadomość swoim kluczem prywatnym. Podpis dowodzi, że osoba, która stworzyła wiadomość, kontroluje klucz prywatny powiązany z adresem wysyłającym, bez ujawniania samego klucza prywatnego.
Proces weryfikacji wykorzystuje klucz publiczny. Każdy, kto uruchamia węzeł w sieci, może wziąć wiadomość transakcji, podpis cyfrowy i klucz publiczny nadawcy, i przeprowadzić matematyczną weryfikację, która potwierdza, że podpis został wygenerowany przez odpowiedni klucz prywatny. Jeśli weryfikacja się powiedzie, transakcja jest ważna. Jeśli się nie powiedzie, transakcja jest odrzucana.
Dlatego utrata klucza prywatnego jest katastrofalna. Brak klucza prywatnego oznacza brak możliwości tworzenia ważnych podpisów, co oznacza brak możliwości autoryzacji transakcji z tego adresu. Środki pozostają w blockchainie, widoczne dla wszystkich, ale trwale niedostępne. Nie ma mechanizmu odzyskiwania „zapomniałem hasła”, ponieważ nie ma centralnego organu, który przechowuje kopię zapasową.
Łańcuch generowania kluczy
W nowoczesnych portfelach indywidualne klucze prywatne nie są generowane niezależnie. Zamiast tego pojedyncze ziarno główne (master seed) generuje wszystkie klucze w portfelu poprzez deterministyczny proces zdefiniowany przez BIP-32 (hierarchiczne deterministyczne portfele) i BIP-39 (mnemoniczne frazy nasienne).
Proces zaczyna się od entropii, źródła losowości. Oprogramowanie portfela lub urządzenie sprzętowe generuje losową liczbę, zazwyczaj 128 lub 256 bitów. Ta entropia jest kodowana jako fraza mnemoniczna składająca się z 12 lub 24 słów wybranych ze standaryzowanej listy 2048 słów. Fraza mnemoniczna, w połączeniu z opcjonalnym hasłem, jest przepuszczana przez funkcję wyprowadzania klucza (PBKDF2) w celu uzyskania 512-bitowego ziarna głównego.
Z ziarna głównego wyprowadzane jest hierarchiczne drzewo par kluczy. Każda gałąź drzewa może wygenerować miliardy unikalnych kluczy prywatnych oraz odpowiadających im kluczy publicznych i adresów. Dlatego pojedyncza fraza nasienna może odzyskać cały portfel ze wszystkimi jego adresami: ziarno deterministycznie regeneruje każdą parę kluczy w hierarchii.
Implikacja bezpieczeństwa jest taka, że fraza nasienna jest źródłem wszystkich kluczy. Każdy, kto uzyska frazę nasienną, może zregenerować każdy klucz prywatny, każdy klucz publiczny i każdy adres, który portfel kiedykolwiek użył lub będzie używał. Ochrona frazy nasiennej jest równoznaczna z ochroną każdej pary kluczy w portfelu jednocześnie.
Skompresowane i nieskompresowane klucze publiczne
Wczesne oprogramowanie Bitcoin używało nieskompresowanych kluczy publicznych, które zawierają zarówno współrzędne x, jak i y punktu na krzywej eliptycznej. Nieskompresowany klucz publiczny ma 65 bajtów: 1-bajtowy prefiks (0x04), następnie 32 bajty na współrzędną x i 32 bajty na współrzędną y.
Ponieważ równanie krzywej eliptycznej oznacza, że dla każdej danej współrzędnej x istnieją tylko dwie możliwe wartości y (jedna parzysta, jedna nieparzysta), wystarczy przechowywać tylko współrzędną x i jeden bit wskazujący, czy y jest parzyste, czy nieparzyste. To daje skompresowany klucz publiczny o długości 33 bajtów: 1-bajtowy prefiks (0x02 dla parzystego y, 0x03 dla nieparzystego y), a następnie 32 bajty na współrzędną x.
Skompresowane klucze oszczędzają miejsce w transakcjach, co zmniejsza opłaty. Od 2012 roku większość oprogramowania Bitcoin domyślnie używa skompresowanych kluczy publicznych. Ethereum używa nieskompresowanych kluczy publicznych wewnętrznie, ale usuwa bajt prefiksu w wyprowadzaniu adresu, używając tylko 64-bajtowych wartości x i y.
Rozróżnienie ma znaczenie dla kompatybilności. Skompresowany i nieskompresowany klucz publiczny wyprowadzony z tego samego klucza prywatnego generują różne adresy w Bitcoin. Importowanie klucza prywatnego do portfela, który używa innego formatu kompresji niż oryginalny portfel, wygeneruje inny adres, co może powodować zamieszanie, jeśli środki zostały wysłane na adres w innym formacie.
Rzeczywiste awarie bezpieczeństwa kluczy
Teoria stojąca za kryptografią klucza publicznego jest solidna, ale błędy w implementacji spowodowały znaczne straty.
W lipcu 2026 roku naukowcy odkryli, że portfel sprzętowy Coldcard generował słabe klucze prywatne przez pięć lat. Flaga kompilacji w oprogramowaniu układowym kazała urządzeniu pominąć dedykowany układ losowości sprzętowej, co skutkowało przewidywalną entropią. Atakujący przeprowadził inżynierię wsteczną słabości i zaczął opróżniać portfele 30 lipca, wypompowując około 116 milionów dolarów w bitcoinach, zanim luka została publicznie ujawniona.
Lekcja jest taka, że bezpieczeństwo pary kluczy zależy całkowicie od jakości losowości użytej do wygenerowania klucza prywatnego. Teoretycznie nie do złamania 256-bitowy klucz jest bezwartościowy, jeśli generator liczb losowych jest wadliwy, obciążony lub przewidywalny. Dlatego renomowane portfele sprzętowe używają dedykowanych prawdziwych generatorów liczb losowych i pozwalają użytkownikom dodać własną entropię (taką jak rzuty kośćmi) jako dodatkowe zabezpieczenie.
Inne historyczne incydenty obejmują lukę Android SecureRandom z 2013 roku, która spowodowała, że wiele portfeli Bitcoin generowało zduplikowane liczby losowe, umożliwiając atakującym obliczenie kluczy prywatnych z podpisów transakcji. Generator adresów vanity Profanity został wykorzystany we wrześniu 2022 roku, gdy naukowcy odkryli, że jego generowanie kluczy używało 32-bitowego ziarna, zmniejszając efektywną przestrzeń kluczy z 2 do potęgi 256 do 2 do potęgi 32, czyli około 4 miliardów możliwości, które można było brutalnie złamać w ciągu minut.
Klucze publiczne i inteligentne kontrakty
Na platformach inteligentnych kontraktów takich jak Ethereum, kryptografia klucza publicznego służy podwójnemu celowi. Zabezpiecza konta zewnętrzne (EOA), standardowe portfele użytkowników kontrolowane przez klucze prywatne, oraz uwierzytelnia wiadomości podpisane przez te konta, gdy wchodzą w interakcję z inteligentnymi kontraktami.
Gdy użytkownik wywołuje funkcję na inteligentnym kontrakcie, transakcja zawiera podpis cyfrowy wygenerowany przez klucz prywatny użytkownika. Ethereum Virtual Machine weryfikuje ten podpis względem klucza publicznego nadawcy przed wykonaniem funkcji. W ten sposób inteligentny kontrakt wie, że osoba wywołująca „prześlij 100 USDC na adres X” jest faktycznie właścicielem przesyłanych tokenów.
Portfele inteligentnych kontraktów (portfele z abstrakcją konta wprowadzone przez ERC-4337) mogą modyfikować ten model. Zamiast polegać wyłącznie na pojedynczym kluczu prywatnym, portfel inteligentnego kontraktu może wymagać wielu podpisów, uwierzytelniania biometrycznego, społecznego odzyskiwania lub limitów wydatków egzekwowanych przez kod. Klucz publiczny pozostaje częścią systemu, ale zasady określające, co stanowi ważną autoryzację, stają się programowalne.
Powiernicze a samodzielne zarządzanie kluczami
Na centralizowanej giełdzie giełda przechowuje klucze prywatne, a użytkownicy uzyskują dostęp do swoich środków poprzez tradycyjne uwierzytelnianie (nazwa użytkownika, hasło, kody dwuskładnikowe). Użytkownik nigdy nie widzi klucza publicznego ani prywatnego. Giełda podpisuje transakcje w imieniu użytkownika.
W samodzielnym przechowywaniu użytkownik posiada klucz prywatny (lub frazę początkową, która go generuje) i jest wyłącznie odpowiedzialny za jego bezpieczeństwo. Klucz publiczny i adres są wyprowadzane lokalnie, a żadna strona trzecia nie ma dostępu do możliwości podpisywania.
Kompromis jest jasny. Rozwiązania powiernicze są wygodne, ale wprowadzają ryzyko kontrahenta: jeśli giełda zostanie zhakowana, stanie się niewypłacalna lub zamrozi wypłaty, środki użytkownika są zagrożone. Samodzielne przechowywanie eliminuje ryzyko kontrahenta, ale wprowadza ryzyko operacyjne: jeśli użytkownik zgubi frazę początkową, źle ją przechowa lub padnie ofiarą phishingu, środki przepadną na zawsze.
Konfiguracje z wieloma podpisami dzielą różnicę, rozdzielając zarządzanie kluczami między wiele stron lub urządzeń. Multisig 2-z-3 wymaga dowolnych dwóch z trzech kluczy prywatnych do podpisania transakcji, więc utrata jednego klucza nie skutkuje trwałą utratą, a skompromitowanie jednego klucza nie daje atakującemu kontroli.
Czego ten artykuł nie obejmuje
Ten artykuł nie obejmuje schematów kryptografii postkwantowej, takich jak podpisy oparte na kratach, które są badane jako zamienniki kryptografii krzywych eliptycznych w przypadku, gdy wielkoskalowe komputery kwantowe staną się realne. Nie obejmuje matematyki krzywych eliptycznych poza poziomem koncepcyjnym. Nie obejmuje szczegółowych przewodników konfiguracji portfeli, ponieważ różnią się one w zależności od produktu i często się zmieniają.
Praktyczne kontrole ochrony kluczy
Nigdy nie udostępniaj swojego klucza prywatnego ani frazy początkowej. Żadna legalna usługa, agent wsparcia ani airdrop nigdy o nie nie poprosi. Każda prośba o te dane uwierzytelniające jest oszustwem bez wyjątku.
Zweryfikuj format adresu przed wysłaniem. Złośliwe oprogramowanie schowka może zastąpić skopiowany adres adresem atakującego. Zawsze wizualnie potwierdź pierwsze i ostatnie kilka znaków adresu po jego wklejeniu.
Używaj portfeli sprzętowych do znacznych zasobów. Portfele sprzętowe generują i przechowują klucze prywatne na dedykowanym chipie, który nigdy nie udostępnia ich urządzeniu podłączonemu do internetu. Przed zakupem sprawdź historię producenta w zakresie generowania entropii.
Dodaj własną entropię, gdy to możliwe. Niektóre portfele sprzętowe pozwalają użytkownikom uzupełnić generator liczb losowych urządzenia o ręcznie wprowadzoną losowość, taką jak rzuty monetą lub kostką. Zmniejsza to ryzyko wadliwego sprzętowego generatora liczb losowych.
Przechowuj kopie zapasowe frazy seed w wielu bezpiecznych miejscach. Pojedyncza kopia przechowywana w jednym miejscu jest narażona na ogień, powódź lub kradzież. Metalowe kopie zapasowe frazy seed lepiej opierają się uszkodzeniom środowiskowym niż papier.
Co to jest klucz publiczny w kryptowalutach?
Klucz publiczny to duża liczba wyprowadzona z klucza prywatnego za pomocą mnożenia na krzywej eliptycznej. Służy jako tożsamość kryptograficzna, która weryfikuje podpisy transakcji bez ujawniania klucza prywatnego. Każdy może zobaczyć klucz publiczny, a jego udostępnienie nie zagraża bezpieczeństwu środków.
Czy klucz publiczny jest tym samym co adres portfela?
Nie. Adres portfela jest wyprowadzany z klucza publicznego przez jedną lub więcej rund kryptograficznego haszowania. Adres jest krótszy i łatwiejszy do udostępnienia. W Bitcoinie ten sam klucz prywatny może generować różne adresy w zależności od tego, czy używane są skompresowane czy nieskompresowane klucze publiczne.
Czy ktoś może ukraść moje krypto, jeśli zna mój klucz publiczny?
Nie. Klucz publiczny jest przeznaczony do udostępniania. Wyprowadzenie klucza prywatnego z klucza publicznego wymaga rozwiązania problemu logarytmu dyskretnego na krzywej eliptycznej, dla którego nie ma znanego wydajnego rozwiązania przy obecnej technologii komputerowej.
Co się stanie, jeśli stracę mój klucz prywatny?
Środki powiązane z tym kluczem staną się trwale niedostępne. Nie ma mechanizmu odzyskiwania, ponieważ sieci kryptowalut nie mają centralnego organu przechowującego kopie zapasowe. Dlatego kopie zapasowe frazy seed są kluczowe dla portfeli z samodzielnym przechowywaniem.
Jaka jest różnica między kluczem publicznym a kluczem prywatnym?
Klucz prywatny to losowo wygenerowany tajny numer używany do podpisywania transakcji. Klucz publiczny jest wyprowadzany z klucza prywatnego i służy do weryfikacji podpisów. Klucz prywatny musi pozostać tajny; klucz publiczny może być swobodnie udostępniany.
Jak fraza seed ma się do kluczy publicznych i prywatnych?
Fraza seed (12 lub 24 słowa) koduje główną entropię, z której deterministycznie wyprowadzane są wszystkie klucze prywatne w portfelu. Każdy klucz prywatny generuje odpowiadający mu klucz publiczny i adres. Ochrona frazy seed chroni każdą parę kluczy, którą portfel kiedykolwiek wygeneruje.
Jakiej krzywej eliptycznej używają Bitcoin i Ethereum?
Zarówno Bitcoin, jak i Ethereum używają krzywej eliptycznej secp256k1. Generuje ona 256-bitowe klucze prywatne i 512-bitowe nieskompresowane klucze publiczne (lub 257-bitowe skompresowane klucze publiczne). Krzywa została wybrana ze względu na jej wydajność i dobrze poznane właściwości bezpieczeństwa.
Czy komputery kwantowe mogą złamać kryptografię klucza publicznego?
Teoretycznie wystarczająco potężny komputer kwantowy uruchamiający algorytm Shora mógłby wyprowadzić klucz prywatny z klucza publicznego. Jednak taki komputer kwantowy nie istnieje na rok 2026. Adresy, które nigdy nie były używane do wysyłania transakcji, nie ujawniły swojego klucza publicznego w łańcuchu, co dodaje warstwę ochrony. Badane są postkwantowe schematy podpisów jako przyszłe zamienniki.






