Jaką rolę pełnią Cyfrowe Podpisy?
Strona Główna
Artykuły
Jaką rolę pełnią Cyfrowe Podpisy?

Jaką rolę pełnią Cyfrowe Podpisy?

Średnio zaawansowany
Opublikowane Aug 19, 2019Zaktualizowane Jan 31, 2023
7m

Podpis cyfrowy, to inaczej swoisty mechanizm kryptograficzny służący do weryfikacji autentyczności i integralności danych cyfrowych. Podpisy cyfrowe (ang. Digital Signatures) możemy zdefiniować więc jako cyfrowa wersja zwykłych - odręcznych - podpisów, ale o wyższym poziomie złożoności i bezpieczeństwa od tradycyjnego podpisu.

Podpisy cyfrowe najprościej wytłumaczyć jako specjalny kod dołączony do wiadomości lub dokumentu. Po wygenerowaniu kod ten działa jako dowód, że wiadomość nie została zmieniona w drodze od nadawcy do odbiorcy.

Chociaż koncepcja zabezpieczania komunikacji za pomocą kryptografii sięga aż do czasów starożytnych, to podpisy cyfrowe, jakie znamy obecnie stały się rzeczywistością dopiero latach 70. XX wieku. Stało się to możliwe dzięki powstaniu kryptografii klucza publicznego (ang. Public Key Cryptography - PKC). Skoro jesteśmy już przy PKC, to aby lepiej zrozumieć jak działają podpisy cyfrowe, musimy najpierw zrozumieć podstawy funkcji skrótu i kryptografii klucza publicznego.


Funkcje haszujące

Haszowanie jest jednym z podstawowych elementów każdego systemu wykorzystującego podpisy cyfrowe. Proces mieszania polega na przekształceniu danych o dowolnej wielkości w dane wyjściowe o stałym rozmiarze. Proces zamiany dowolnych danych wejściowych na stały (pod względem rozmiaru) zestaw danych wyjściowych możliwy jest dzięki tzw. funkcjom skrótu (and. hash functions). Dane wyjściowe generowane przez funkcje skrótu określane są jako tzw. wartość haszu (ang. hash value) lub skrót wiadomości (ang. message digest).
W połączeniu z osiągnięciami kryptografii, tak zwane kryptograficzne funkcje skrótu mogą być używane do generowania has value (digest), który działa jak swoisty unikalny i cyfrowy odcisk palca. Kryptografia dba o to, aby każda zmiana danych wejściowych (wiadomości) powodowała wygenerowanie zupełnie innych danych wyjściowych (hash value).


Kryptografia klucza publicznego (PKC)

Kryptografia klucza publicznego - inaczej PKC - oznacza odpowiednio skonstruowany system kryptograficzny, który do swojego działania wykorzystuje parę kluczy: jeden klucz publiczny i jeden klucz prywatny. Obydwa klucze są ze sobą powiązane matematycznie i mogą być używane zarówno do szyfrowania danych, jak i tworzenia podpisów cyfrowych.

Narzędzia szyfrujące wykorzystujące PKC są zdecydowanie bardziej bezpiecznie od podstawowych metod wliczających się do grupy metod tzw. szyfrowania symetrycznego. O ile w starszych systemach komputerowych do szyfrowania i deszyfrowania informacji wykorzystywany jest tylko jeden klucz, to systemy oparte o PKC umożliwiają zaszyfrowanie danych za pomocą klucza publicznego i deszyfrowanie tych danych za pomocą odpowiedniego klucza prywatnego.

PKC ma również tę właściwość iż samo w sobie może również zostać wykorzystana do generowania podpisów cyfrowych. Zasadniczo proces ten polega na zahaszowaniu wiadomości (lub danych cyfrowych) wraz z kluczem prywatnym osoby podpisującej wiadomość lub dane. Odbiorca takiej wiadomości może sprawdzić, czy podpis jest ważny, używając do tego celu klucza publicznego podanego przez osobę podpisującą wiadomość.

W zależności od zastosowania i potrzeb podpisy cyfrowe mogą ulegać dodatkowemu szyfrowaniu, ale nie muszą. Dla przykładu, sieć blockchain Bitcoin wykorzystuje PKC i podpisy cyfrowe, ale w ich syntezie nie dochodzi do zaszyfrowania tych podpisów - w co ciągle wierzy (niesłusznie) wiele osób. Z technicznego punktu widzenia, walidacja transakcji w sieci Bitcoin odbywa się przy użyciu tak zwanego Algorytm Podpisu Cyfrowego Krzywej Eliptycznej (ECDSA).


Jak działają podpisy cyfrowe

W kontekście kryptowalut, na system podpisów cyfrowych najczęściej składają się trzy komponenty (fazy): faza hashowania, podpisywania i weryfikowania.

Haszowanie danych

Pierwszym krokiem na drodze powstania podpisu cyfrowego jest zahaszowanie wiadomości lub danych cyfrowych. W procesie tym dane wejściowe przepuszczane są przez algorytm haszujący, który zajmuje się wygenerowaniem hash value (tj. message digest). Przy tej okazji warto przypomnieć, iż o ile dane wejściowe mogą się różnić długością lub strukturą, to dane wyjściowe zawsze będą miały tę samą długość.

Co jednak istotne, to fakt iż do wygenerowania podpisu cyfrowego nie trzeba trudzić się zahaszowaniem danych wejściowych. Aby podpisać wiadomość można wykorzystać bezpośrednio klucz prywatny. W przypadku kryptowalut jednak, dane wejściowe zawsze ulegają procesowi haszhowania, ponieważ obsługa skrótów o stałej długości (rozmiarze) ułatwia i upraszcza resztę procesu tworzenia i weryfikowania podpisów cyfrowych.

Podpisywanie

Po zaszyfrowaniu informacji odpowiednim algorytmem, nadawca wiadomości musi ją podpisać. To właśnie w tej chwili do gry wkracza PKC. Istnieje kilka rodzajów algorytmów podpisów cyfrowych, a każdy z nich charakteryzuje się własnym mechanizmem działania. Zasadniczo jednak w całym procesie chodzi o to, aby zaszyfrowana wiadomość została ostatecznie podpisana za pomocą klucza prywatnego, po to, aby jej odbiorca wiadomości mógł następnie sprawdzić ważność tej wiadomości za pomocą odpowiedniego klucza publicznego (dostarczonego mu przez podpisującego wiadomość).

Innymi słowy, jeśli klucz prywatny nie zostanie uwzględniony w procesie generowania podpisu cyfrowego, to odbiorca wiadomości nie będzie mógł użyć odpowiadającego mu klucza publicznego do zweryfikowania jego ważności. O ile zarówno klucz publiczny, jak i prywatny są generowane przez nadawcę wiadomości, to jedynie klucz publiczny może być tym, którym podpisujący wiadomość może się podzielić z innymi.

Przy tej okazji warto zauważyć, iż podpisy cyfrowe są bezpośrednio związane z treścią każdej wiadomości. W odróżnieniu od podpisów odręcznych, które wydają się być takie same niezależnie od wiadomości, każda podpisana cyfrowo wiadomość będzie miała inny podpis cyfrowy.

Weryfikowanie

Aby lepiej zrozumieć cały proces, aż do ostatniej fazy posłużymy się przykładem. Wyobraźmy sobie, że Ula decyduje się na napisanie tajnej wiadomości do Andrzeja. W tym celu Ula haszuje tę wiadomość i łączy ją ze swoim kluczem prywatnym, aby stworzyć cyfrowy podpis. Powstały w ten sposób podpis od teraz będzie działał jako unikalny cyfrowy odcisk palca tej konkretnej wiadomości.

Po otrzymaniu wiadomości od Uli, Andrzej może sprawdzić wiarygodność (ważność) podpisu cyfrowego Uli za pomocą klucza publicznego dostarczonego mu przez samą Ulę. W ten sposób Bob może mieć pewność, że podpis został utworzony przez Ulę, ponieważ tylko ona ma dostęp do swojego klucza prywatnego, któremu odpowiada wskazany klucz publiczny - a przynajmniej każdy przyjmuje takie założenie, bowiem to czy Ula w międzyczasie nie podzieliła się z kimś swoim kluczem prywatnym pozostaje otwartą kwestią.

To właśnie dlatego tak ważne jest, aby Ula przechowywała swój klucz prywatny w tajemnicy przed kimkolwiek innym. Jeśli ktokolwiek wejdzie w posiadanie klucza prywatnego Uli, to będzie mógł tworzyć podpisy cyfrowe i udawać przed innymi, że jest Ulą. W kontekście Bitcoina oznacza to, że ktoś mógłby użyć klucz prywatny Uli, aby przenieść lub wydać jej Bitcoiny bez jej zgody.


Dlaczego podpisy cyfrowe są tak istotne?

Podpisy cyfrowe wdrażane do systemów i wykorzystywane w nich do osiągnięcia trzech konkretnych celów: integralności danych, uwierzytelnienia (autentyczności) i niezaprzeczalności danych.

  • Integralność danych. Andrzej w każdej chwili może sprawdzić, czy wiadomość wysłana mu przez Ulę nie została w jakikolwiek sposób zmieniona po drodze. Każda modyfikacja wiadomości spowodowałaby powstanie zupełnie innego niż oryginalny podpisu.
  • Autentyczność. Tak długo, jak klucz prywatny Uli pozostanie w tajemnicy, tak długo Andrzej będzie mógł użyć swojego klucza publicznego do potwierdzenia, że dostarczone mu wiadomości z podpisami cyfrowymi zostały utworzone przez Ulę i nikogo innego.
  • Niezaprzeczalność. W chwili w której Ula podejmie się wygenerowania podpisu, traci ona możliwość zaprzeczenia, że dana wiadomość została podpisana jej cyfrowym podpisem, chyba, że w posiadanie jej klucza prywatnego w jakikolwiek sposób wjedzie ktoś postronny.


Przykłady wykorzystania

Podpisy cyfrowe można stosować znakowania różnego rodzaju dokumentów i certyfikatów cyfrowych. Podpisy cyfrowe same w sobie charakteryzują się kilkoma naturalnymi przykładami ich zastosowania. Najczęściej wykorzystywane są w następujących branżach:  

  • Technologii Informacyjnej. W celu zwiększenia bezpieczeństwa systemów komunikacji internetowej.
  • Finansów. Podpisy cyfrowe można wdrożyć do zwiększenia autentyczności audytów, raportów wydatków, umów pożyczek i wielu innych.
  • Prawnej. W celu cyfrowego podpisywania wszelkiego rodzaju umów biznesowych i umów prawnych, w tym dokumentów na szczeblu rządowym.
  • Zdrowotnej. Podpisy cyfrowe mogą zapobiegać fałszowaniu recept i dokumentacji medycznej.
  • Blockchain. Podpisy cyfrowe gwarantują, że jedynie prawowici właściciele danych kryptowalut są w stanie podpisać transakcję w celu przeniesienia środków (o ile w posiadanie kluczy prywatnych nie wejdą osoby postronne).


Ograniczenia

Każdy z systemów w którym wykorzystywane są podpisy cyfrowe, aby był wydajny i wiarygodny musi uporać się z trzema podstawowymi wymaganiami: 

  • Algorytmem. Jakość algorytmów wykorzystywanych w procesie podpisywania cyfrowego jest bardzo istotna. Problem ten obejmuje wybór nie tylko rzetelnych funkcji haszujących ale też i takich, które są wydajne.
  • Implementacją  Jeśli nawet algorytm haszujący będzie bardzo dobry, ale jego implementacja już nie, to system podpisu cyfrowego najprawdopodobniej nie będzie odporny na ataki.
  • Bezpieczeństwem kluczy prywatnych. Jeżeli na jakimkolwiek etapie dojdzie do sytuacji w której klucz prywatny zna nie tylko właściciel, ale i osoba postronna, to właściwości podpisu cyfrowego stworzonego na jego bazie, tj. autentyczność i niezaprzeczalność tracą na ważności. W przypadku użytkowników kryptowalut, utrata lub wyjawienie klucza prywatnego może spowodować znaczne straty finansowe.


Podpisy elektroniczne a podpisy cyfrowe

Podpisy cyfrowe są szczególnym rodzajem podpisów elektronicznych - które odnoszą się do dowolnej elektronicznej metody podpisywania dokumentów i wiadomości. Dlatego wszystkie podpisy cyfrowe są podpisami elektronicznymi, ale nie zawsze można stwierdzić, iż jest tak samo w drugą stronę.

Główną różnicą między nimi jest metoda uwierzytelniania. Do tworzenia podpisów cyfrowych najczęściej wykorzystywane są różne techniki kryptograficzne, tak jak chociażby funkcje haszujące czy kryptografia klucza publicznego.


Zakończenie

Funkcje haszujące oraz kryptografia klucza publicznego są podstawowymi komponentami nowoczesnych systemów podpisów cyfrowych. W przypadku ich wdrożenia na zasadach stojących w zgodzie z tzw. "sztuką", podpisy cyfrowe mogą zwiększyć bezpieczeństwo, zapewnić integralność i ułatwić uwierzytelnianie wszelkiego rodzaju danych cyfrowych w systemie do którego zostały zaimplementowane.

W dziedzinie technologii blockchain podpisy cyfrowe służą do podpisywania i autoryzacji transakcji kryptowalutowych. Są one szczególnie ważne w przypadku takich kryptowalut jak np. Bitcoin, ponieważ to właśnie podpisy cyfrowe stroją na straży tego, iż środki zdeponowane na konkretnych adresach mogą być wydane jedynie przez posiadaczy przypisanych do nich kluczy prywatnych.

Pomimo tego, iż podpisy elektroniczne, jak i cyfrowe służą ludzkości już od wielu lat, to w dalszym ciągu istnieje wiele możliwości rozwoju tych dziedzin. Znaczna część dzisiejszej biurokracji wciąż opiera się na tzw. papierkowej robocie, jednak nieustannie postępująca digitalizacja każdego aspektu naszego życia może w pewnym momencie przyczynić się do wykładniczego wzrostu implementacji cyfrowych metod podpisywania danych w ujęciu globalnym.