background image

INŻYNIERIA BEZPIECZEŃSTWA – 

LABORATORIUM

 

 

PODPIS CYFROWY 

 
 

1.  Podpis cyfrowy 

 

Podpis  cyfrowy  jest  to  elektroniczny  odpowiednik  tradycyjnego  podpisu  odręcznego.  W 
odróżnieniu  od  tradycyjnego  podpisu  odręcznego  na  podpis  cyfrowy  składa  się  ciąg  bitów 
dołączony  do  wiadomości,  który  odzwierciedla  indywidualną  cechę  użytkownika  oraz 
autentyczność przesyłanych informacji. 
 
Algorytmy podpisu cyfrowego projektuje się w oparciu o wybrany szyfr. Obecnie najbardziej 
rozpowszechnioną  metodą  stosowaną  w  podpisie  elektronicznym  jest  schemat  podpisu 
dokumentów  cyfrowych  w  systemach  kryptograficznych  z  kluczem  publicznym  i 
jednokierunkową funkcją skrótu. W systemie tym do każdego użytkownika zostaje przypisana 
para  kluczy:  klucz  do  podpisywania  wiadomości  (prywatny)  oraz  klucz  do  weryfikacji 
podpisu (publiczny).  
 
Klucz  prywatny  jest  tajny  i  służy  do  zaszyfrowania  skrótu  informacji  tworząc  w  ten  sposób 
podpis cyfrowy.  Przy  pomocy  klucza publicznego, który jest  ogólno  dostępny  (dostęp może 
być ograniczony do grupy osób w danej instytucji czy firmie), odbiorca informacji deszyfruje 
skrót wiadomości i na jej podstawie weryfikuje tożsamość nadawcy. 
 
Do funkcji podpisu elektronicznego należą: 

  uwierzytelnianie, 

 

niezaprzeczalność, 

 

integralność, 

  identyfikacja, 

 

poufność. 

 
 
Uwierzytelnianie  –  polega  na  sprawdzeniu  czy  dana  wiadomość  została  podpisana  przez 
domniemanego  użytkownika  poprzez  deszyfracje  ogólnodostępnym  kluczem  publicznym 
skrótu wiadomości. Jeżeli sumy kontrolne się zgadzają oznacza to, że dany dokument został 
podpisany przez domniemanego użytkownika jego kluczem prywatnym. 
 
Niezaprzeczalność  –  jest  to  funkcja  powiązana  z  funkcją  uwierzytelniającą.  Jeżeli  nadawca 
dokumentu  (np.  zamówienia)  będzie  zaprzeczał  nadania  dokumentu  a  odbiorca  pomyślnie 
zidentyfikuje  nadawcę  przy  pomocy  jego  klucza  publicznego  to  odbiorca  jest  w  stanie 
udowodnić nadanie dokumentu przez określonego użytkownika. 
 
Integralność  –  zapewnia  ochronę  dokumentu  przed  wprowadzaniem  do  niej  zmian  przez 
osoby  trzecie.  Ponieważ  podpis  cyfrowy  jest  tworzony  poprzez  szyfrowanie  skrótu 

background image

wiadomości  przy  pomocy  klucza  prywatnego  nadawcy  to  każda  najmniejsza  zmiana 
wiadomości sprawia, że suma kontrolna nie będzie się zgadzała. 
 
Identyfikacja  –  poprzez  organy  certyfikujące,  które  wydały  parę  kluczy  (prywatny  oraz 
publiczny)  i  przekazały  je  osobą  zainteresowanym  jest  możliwość  zidentyfikowanie 
osoby/właściciela klucza prywatnego. 
 
Poufność  –  istnieje  możliwość  szyfrowania  nie  tylko  samego  skrótu  wiadomości  lecz  także 
całej  informacji.  W  tym  celu  wiadomość  szyfruje  się  kluczem  publicznym  adresata  (nie 
nadawcy) a adresat wiadomości może ją odszyfrować swoim kluczem prywatnym. 
 

2.  Zasada działania podpisu cyfrowego 

 

 

Rys. 1. Diagram tworzenia i weryfikacji podpisu elektronicznego

 

 
Pierwszym  elementem  wymaganym  do  złożenia/stworzenia  podpisu  elektronicznego  jest 
sama wiadomość ponieważ nie da się uzyskać podpisu cyfrowego na „pustej stronie”. Kiedy 
posiadamy już odpowiednią wiadomość, na której chcemy złożyć podpis oraz zakładamy, że 
użytkownik  posiada  już  swój  klucz  prywatny  oraz  publiczny  możemy  przejść  do  kolejnych 
etapów zaprezentowanych na rys. 1. 
 
W  pierwszym  kroku  nadawca  posługując  się  specjalnym  programem  tworzy  skrót 
wiadomości,  który  jest  szyfrowany  algorytmem  SHA-1  (ang. 

Secure  Hash  Algorithm-1

)  lub 

MD5  (ang. 

Massage  Digest  5

).  Tak  powstałe  streszczenie  będzie  miało  stałą  długość 

(najczęściej 128 lub 160 bitów). 
 
W kolejnym kroku następuje szyfrowanie skrótu wiadomości kluczem prywatnym nadawcy.  
Tak zaszyfrowany skrót staje się podpisem elektronicznym.  
 
W momencie kiedy nadawca utworzył podpis cyfrowy może przesłać wiadomość za pomocą 
mediów  elektronicznych  na  dwa  sposoby.  W  pierwszym  może  przesłać  wiadomość  oraz 

background image

podpis  w  jednym  np.  mailu  albo  też  może  przesłać  je  odrębnie  w  różnych  przedziałach 
czasowych. 
 
Odbiorca  po  otrzymaniu  wiadomości  z  tekstem  oraz  podpisem  przystępuje  do  weryfikacji 
dokumentu.  W  tym  celu  podobnie  jak  nadawca  tym  samym  algorytmem  tworzy  skrót 
wiadomości  a  następnie  przechodzi  do  etapu  deszyfrowania  podpisu  elektronicznego  przy 
pomocy klucza publicznego nadawcy. Jeżeli skróty wiadomości są sobie równe oznacza to, że 
nadawca został uwierzytelniony oraz tekst wiadomości nie został modyfikowany przez osoby 
trzecie. 
 
 

3. 

Rola certyfikatów w podpisie cyfrowym

 

 
Aby  zweryfikować  czy  dany  dokument  faktycznie  został  przesłany  przez  nadawcę 
deszyfrujemy  jego  podpis  elektroniczny  kluczem  publicznym  i  porównujemy  w  ten  sposób 
powstały  skrót  informacji  ze  skrótem  wygenerowanym  przez  nas  samych.  I  tu  pojawia  się 
pytanie  czy  jeżeli  oba  skróty  są  sobie  równe  czy  mamy  100%  pewność,  że  dany  klucz 
publiczny odpowiada naszemu nadawcy.  
 
Klucz  publiczny  składa  się  z  ciągu  bitów  i  nie  posiada  sam  w  sobie  informacji  o  swoim 
właścicielu  takich  jak  np.  imię,  nazwisko  czy  adres.  W  takim  razie  w  jaki  sposób  możemy 
zidentyfikować tożsamość nadawcy? 
 
Jednym  ze  sposobów  identyfikacji  właściciela  klucza  jest  sprawdzenie  tzw.  odcisku  klucza 
publicznego. Aby tego dokonać należy wyświetlić za pomocą programu szyfrującego odcisk 
klucza  publicznego  (ang. 

fingerprint

).  W  efekcie  otrzymamy  ciąg  kilkunastu  cyfr  będących 

skrótem  kryptograficznym  klucza  publicznego.  Kiedy  już  posiadamy  odcisk  danego  klucza 
możemy  skontaktować  się  np.  telefonicznie  z  przypuszczalnym  właścicielem  klucza  i 
poprosić go o podyktowanie odcisku jego klucza. Jeżeli oba odciski są sobie równe oznacza 
to,  że  dany  klucz  publiczny  należy  do  spodziewanego  nadawcy.  Wadą  tej  metody  jest 
potrzeba  bezpośredniego  kontaktu  z  nadawcą  wiadomości.  Czas  weryfikacji  może  się 
wydłużyć jeżeli nie będziemy wstanie skontaktować się z nadawcą wiadomości. 
 
Aby  wyeliminować  potrzebę  nawiązywania  bezpośredniego  kontaktu  została  wprowadzona 
metoda  certyfikacji  kluczy.  Certyfikacja  kluczy  polega  na  dodaniu  do  niego  informacji  o 
właścicielu  oraz  podpisanie  go  jego  kluczem  prywatnym  przez  zaufany  urząd  certyfikujący 
tzw. CA (ang. 

Certification Authority

). Do takich urzędów można zaliczyć państwowe urzędy 

oraz komercyjne firmy, których wiarygodność została potwierdzona. 
 
Struktura  takiego  certyfikatu,  zasady  jego  unieważniania  oraz  ich  atrybutów  została 
znormalizowana  poprze  standard  X.509,  który  został  zaproponowany  w  1978  roku  przez 
Lorena Kohnfeldra a jego pierwsza wersja została opublikowana w 1988 roku. 
 
Certyfikat taki zgodny ze standardem X.509 powinien zawierać następujące informacje: 

  numer wersji – zawiera informację o wersji certyfikatu; 

  numer seryjny – unikalny numer certyfikatu przydzielony użytkownikowi; 

  identyfikator  algorytmu  –  rodzaj  algorytmu  użyty  do  podpisania  certyfikatu  i  jego 

parametry; 

  wystawca – nazwa organu wydającego certyfikat; 

 

okres ważności certyfikatu – zawiera datę startu oraz końca ważności certyfikatu; 

background image

 

dane właściciela – zawiera informację o właścicielu klucza/certyfikatu; 

  klucz  publiczny  –  zawiera  klucz  publiczny  oraz  informację  o  typie  i  parametrach 

algorytmu zastosowanego do jego utworzenia; 

 

podpis organu certyfikującego – podpis urzędu wystawiającego certyfikat utworzony 
za pomocą klucza prywatnego tego urzędu; 

 
 
 
 
 

4.  Demonstracja  generowania  kluczy  i  składanie  podpisu  cyfrowego 

przy użyciu programu CrypTool  

 
a)  Pobieramy  i  instalujemy  program  CrypTool  w  wersji  1.4.30  ze  strony: 

http://www.cryptool.org/index.php/pl/download-topmenu-63.html

. 

 
b)  Uruchamiamy  program  CrypTool  w  wersji  1.4.30  i  przystępujemy  do  wygenerowania 
klucza prywatnego i publicznego oraz certyfikatu. 
 
W  tym  celu  przechodzimy  do  menu  „Podpis  cyfrowy”  i  wybieramy  opcję 
PKI→Generowanie/Import  Klucza”.  W  efekcie  zostanie  wywołane  okno  przedstawione  na 
rys. 2. 
 

 

Rys. 2. Generowanie kluczy oraz certyfikatu. 

 
 

W części „Algorytm” służącej do wyboru algorytmu szyfrującego klucze zaznacz opcję „RSA” 
i ustaw długość klucza na 1024 bitów. 
 

background image

Następnie  w  części  „Dane  użytkownika”  wypełnij  pola  swoimi  danymi  i  podaj  „PIN”.  PIN 
jest  o  tyle  ważny,  że  zabezpiecza  hasłem  nasz  klucz  prywatny  w  celu  jego  ochrony  przed 
niepożądanym użyciem. 
 
Kiedy  wszystkie  pola  są  uzupełnione  przechodzimy  do  etapu  generowania  kluczy.  W  tym 
celu wybieramy przycisk „Wygeneruj nową parę kluczy…”.  
 
Po  pomyślnym  wygenerowaniu  kluczy  możemy  je  obejrzeć  poprzez  opcję  „Pokaz  pary 
kluczy…
”, w której możliwe jest wyświetlenie parametrów kluczy oraz podgląd certyfikatu. 
 
c)  Kiedy mamy utworzone nasze klucze oraz certyfikat przechodzimy do etapu podpisywania 
dokumentów. 
 
Postępujemy następująco: 

 

tworzymy  przy  pomocy  notatnika  plik  tekstowy,  w  którym  zamieszczamy  dowolną 
treść np. streszczenie jakiegoś artykułu z dowolnego portalu internetowego, 

 

z menu CrypToola wybieramy opcję „Plik→Nowy”, 

 

z menu CrypToola wybieramy opcję „Podpis cyfrowy→Demonstracja Podpisu”, 

 

posługując  się  kolejnymi  elementami  diagramu  importujemy  nasz  plik  tekstowy 
(„Otwórz  dokument”)  i  postępujemy  dalej  zgodnie  z  kolejnymi  blokami  pamiętając 
aby  jako  klucz  prywatny  służący  do  podpisu  dokumentu  wybrać  wygenerowany  w 
punkcie  c)  klucz  używając  bloku  zaznaczonego  zielonym  okręgiem  (blok  „Stwórz 
klucz
” pomijamy) na rys. 3. 

 

 

Rys. 3. Generowanie podpisu krok po kroku. 

 
 
Na  etapie  bloku  „Dostarcz  certyfikat”  wybieramy  przycisk  „Importuj  certyfikat  i  klucz”  a 
następnie  zaznaczamy  wygenerowany  klucz/certyfikat  z  listy  podając  nasz  sekretny  PIN 
zabezpieczający przed niepożądanym użyciem klucza prywatnego. 
 
Etap  tworzenia  podpisu  cyfrowego  kończymy  poprzez  przycisk  „Zachowaj  podpis”.  W 
efekcie otrzymujemy podpis elektroniczny. 
 
Utworzony przez nas podpis zapisujemy poprzez „Plik→Zapisz jako”. 

background image

 
4) Weryfikacja podpisu cyfrowego. 
 
W  tym  celu  wybieramy  z  menu  „Podpis  cyfrowy→Zweryfikuj  podpis”.  W  efekcie  zostanie 
wywołane okno z wyborem  klucza, w którym  wybieramy klucz publiczny  utworzony przez 
nas  w  punkcie  b)  oraz  zaznaczamy  opcję  „Wyświetl  wyniki  pośrednie”.  Przystępujemy  do 
weryfikacji podpisu poprzez przycisk „Zweryfikuj podpis”. 
 
W  nowo  otwartym  oknie  rozpocznij  weryfikacje  poprzez  przycisk  „Weryfikuj”    i  porównaj 
wartości  skrótu  dokumentu  zawarte  w  dwóch  przedostatnich  polach.  Czy  wartości  są  takie 
same? Jeżeli tak to co to oznacza? 
 

5.  Zadania do samodzielnego wykonania 

 

a)  Utwórz  nowy  klucz  w  programie  CrypTool  (zgodnie  z  punktem  4.  podpunkt  b)  a 

następnie  dokonaj  weryfikacji  podpisu  cyfrowego  utworzonego  w  punkcie  4. 
podpunkt c. Czy wartości w dwóch przedostatnich polach są takie same? Jeżeli nie to 
co to oznacza? 

b)  Korzystając 

menu 

programu 

CrypTool  

Podpis  cyfrowy→PKI→Wyświetlenie/Eksport  klucza”  wyeksportuj  klucz  użyty  do 
stworzenia  podpisu  cyfrowego  z  punktu  4.  podpunkt  c.  Następnie  wymień  się  z 
sąsiadem podpisami elektronicznymi i kluczami. Zaimportuj klucz sąsiada korzystając 
z  opcji  „Podpis  cyfrowy→PKI→Generowanie/Import  klucza”.  Dokonaj  weryfikacji 
podpisu  sąsiada  korzystając  z  opcji  „Podpis  cyfrowy→Wyodrębnij  podpis”.  Zwróć 
uwagę na pole „Podpisujący” . Czy weryfikacja przebiegła pomyślnie? Jeżeli tak to co 
to oznacza? 

c)  Zmodyfikuj jeden znak podpisu cyfrowego utworzonego w punkcie 4. podpunkt c za 

pomocą  notatnika  Windows.  Zapisz  zmiany  a  następnie  otwórz  podpis  cyfrowy  w 
programie  CrypTool.  Przeprowadź  weryfikacje  podpisu  elektronicznego  używając 
klucza  publicznego  za  pomocą,  którego  został  stworzony  podpis.  Czy  weryfikacja 
przebiegła pomyślnie? Jeżeli nie to jakie nasuwają się wnioski? 

 
 
LITERATURA 
 

1.  „Podstawy kryptografii. Wydanie II”, Marcin Karbowski, 12/2007 Helion 
2.  Wikipedia 
3.  Strona producenta programu Crypttool: 

http://www.cryptool.org/