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.