Klucz prywatny i publiczny to podstawa blockchain. Posługujemy się nimi na co dzień, jednak warto dokładnie poznać czym się różnią oraz jaki jest ich związek z adresem w sieci. No i przekonać się, dlaczego właściwie Twoje krypto są bezpieczne.
Klucze, adresy, frazy seed
Wszystkie kryptowaluty opierają się na kryptografii, pozwalającej zabezpieczyć dane przed sfałszowaniem. Jest ona wykorzystywana do tworzenia kluczy publicznych i prywatnych, adresów w sieci oraz zabezpieczających konto fraz seed.
Z tekstu o portfelach kryptowalut wiemy, że nasze monety i tokeny przechowywane są w sieci blockchain, nieco podobnie jak waluta fiat na rachunku bankowym. Aby zrobić z niej użytek, potrzebujemy numeru konta, hasła, czasem dodatkowego uwierzytelnienia… Podobnie jest w krypto.
Znajomość klucza publicznego jest niezbędna do wysłania, a prywatnego – do odebrania kryptowalut w sieci blockchain.
Choć klucze prywatne, klucze publiczne, adresy i frazy seed służą różnym celom, są ze sobą ściśle powiązane i stanowią podstawę bezpiecznych transakcji. Można je scharakteryzować następująco:
- Klucz prywatny: losowo wygenerowana, unikalna i tajna liczba, najczęściej zapisana w kodzie szesnastkowym. Klucz umożliwia kontrolę użytkownika nad jego kontem. Ten, kto uzyska do niego dostęp, może transferować powiązane z nim zasoby.
- Klucz publiczny: wygenerowany z klucza prywatnego, najczęściej za pomocą funkcji krzywej eliptycznej. Może być udostępniony, nie można go bowiem użyć do odgadnięcia klucza prywatnego. Używany jest do tworzenia adresów.
- Adres portfela: identyfikator używany do transakcji krypto, podobny do numeru konta bankowego. Wyprowadzany jest z klucza publicznego za pomocą haszowania, jest jego krótszą i wygodniejszą wersją.
- Fraza seed: inaczej fraza zalążkowa, sekwencja słów dopasowana do klucza prywatnego. Służy jako kopia zapasowa do odzyskiwania klucza i powiązanego portfela kryptowalut. Umożliwia dostęp do naszych środków z nowego portfela.
Wszystkie te elementy są ze sobą ściśle powiązane, przy czym to klucz prywatny jest pierwotnym źródłem wszystkich pozostałych.
Jak działają klucze prywatne i publiczne
Klucze kryptograficzne mają dwa podstawowe zastosowania:
- Szyfrowanie. Zapewnia ochronę informacji, poprzez uniemożliwienie jej odczytania przez osobę nie posiadającą klucza,
- Podpisywanie transakcji. Potwierdza jej autentyczność, uniemożliwiając jej sfałszowanie.
Funkcje te doskonale wyjaśniono na stronach Ledgera, poniżej przedstawimy nieco uproszczoną wersję.
Aby wysłać komuś środki, określamy kwotę oraz adres odbiorcy w sieci blockchain. Podpisujemy transakcję naszym kluczem prywatnym. Po opublikowaniu transakcji walidatorzy sprawdzają, czy ten podpis pasuje do naszego klucza publicznego i czy saldo pozwala na wykonanie transakcji. Jeśli wszystko gra, transakcja zostanie zatwierdzona i odpowiednio zmienią się salda na kontach stron. Jeśli następnie odbiorca użyje swojego klucza prywatnego, będzie mógł rozporządzać przesłanymi środkami.
PKC oznacza kryptografię asymetryczną, w której klucz publiczny i prywatny są różne. Pozwala to na szyfrowanie informacji przy użyciu klucza publicznego i rozpowszechnianie jej bez ryzyka odszyfrowania.
Generowanie klucza prywatnego
Klucze prywatne tworzone są przy użyciu funkcji losowych w celu zapewnienia ich unikalności i bezpieczeństwa.
Pierwszym krokiem jest znalezienie bezpiecznego źródła losowości, które da w 100% przypadkowe liczby. Oprogramowanie Bitcoin wykorzystuje generatory liczb losowych, potrzebujące danych wejściowych, dlatego może być wymagane np. poruszanie myszką przez kilka sekund.
Ruch zostaje przetworzony na nieprzewidywalną w założeniu wartość liczbową. Będzie to 256-bitowa liczba z przedziału 0-2 do potęgi 256. Ten zbiór zawiera ogromną ilość liczb, porównywalną z liczbą atomów we Wszechświecie. Taka liczba, zapisana w kodzie szesnastkowym (64 cyfry szesnastkowe, każda po 4 bity = 256 bitów) stanie się właśnie naszym kluczem prywatnym. Może on wyglądać następująco: 1B87323A4EC74028A15A9272A2B0E9E52CAD330AC530EDCC32C8FFC6A526DBAB
Następnie klucz publiczny jest obliczany na podstawie prywatnego przy użyciu krzywej eliptycznej. Jest to skomplikowana operacja matematyczna, najważniejsza jest jednak jej jednokierunkowość, uniemożliwiająca uzyskanie klucza prywatnego przy znajomości publicznego. Ostatnim etapem jest wygenerowanie adresu w sieci w drodze jego haszowania.
Wyczerpujący opis generowania kluczy znajdziemy na stronie O’Reilly Media.
Skoro klucz prywatny to liczba, możemy sami wygenerować ją offline. Jeśli rzucimy monetą 256 razy i zapiszemy wyniki, otrzymamy klucz w formacie binarnym. Teraz wystarczy zamienić zapis na szesnastkowy i voilà – utworzyliśmy własny klucz!
Zastosowanie i cechy kluczy
Pozwólmy sobie ma małą analogię. Kiedy niespodziewanie dostajemy paczkę, nadaną przez wujka z Ameryki, chcemy być pewni kilku rzeczy. Czy to naprawdę on ją wysłał? (potrzebny podpis). Czy nikt nie wie co jest w środku? (poufność). Czy nie została naruszona podczas transportu? (zabezpieczenie przed manipulacją).
Kryptografia klucza publicznego rozwiązuje te problemy. Kiedy mamy funkcjonujący system, zapewnia on nam:
- uwierzytelnianie: dane zostały wysłane przez wskazanego nadawcę,
- integralność danych: informacje nie zostały zmienione,
- poufność: wiadomość nie może zostać odczytana przez innych,
- niezaprzeczalność: twórca danych nie może twierdzić, że to nie on je wysłał,
- wszechstronność: kryptografię klucza publicznego możemy wykorzystywać do wielu do różnych celów, nie tylko przesyłania krypto.
Ograniczenia kluczy i kryptografii
Choć kryptografia klucza publicznego to znakomity wynalazek, nie ma na świecie rzeczy doskonałych. Ona także ma swoje ograniczenia.
- jeśli odbiorca zgubi swój klucz prywatny, dane zostaną utracone na zawsze,
- jeśli ktoś zdobędzie dostęp do klucza prywatnego, przechwyci związane z nim dane i zasoby,
- szyfrowanie wymaga mocy obliczeniowej, najwygodniej więc przesyłać dane niewielkiego rozmiaru,
- kryptografia z kluczem publicznym jest wolniejsza niż kryptografia z kluczem symetrycznym,
- szyfrowanie danych jest podatne na wzrost w mocy obliczeniowej i przełomy w matematyce,
- możliwy jest atak poprzez przechwycenie i zmianę klucza publicznego, zanim dotrze on do zamierzonego odbiorcy.
Ponieważ klucz prywatny daje pełną kontrolę, jego zdobycie lub wyłudzenie jest marzeniem wszystkich hakerów. Z tego powodu powinien on być bezpiecznie przechowywany, najlepiej w portfelu hardware.
Oczywiście problem kluczy i kryptografii jest znacznie bardziej złożony niż to przedstawiliśmy, zostawmy jednak te sprawy matematykom. Z praktycznego punktu widzenia warto zapamiętać jedno – każdy proszący Cię o podanie swojego klucza prywatnego lub frazy seed jest oszustem.
Inwestowanie jest ryzykowne. Inwestuj odpowiedzialnie.