Prowadzący: dr inż. Marcin Markowski
Nr grupy: 5
Termin: Pon TP 15:15
Sprawozdanie z laboratorium
Technologie Sieciowe 2
Szyfrowanie i podpisywanie informacji - OpenPGP
Zapoznanie z podstawowymi algorytmami kryptograficznymi.
Tworzenie, eksport i import kluczy.
Podpisywanie e-maili oraz plików.
Zadania do wykonania
Generowanie kluczy przy użyciu GnuPG.
Do wygenerowania kluczy użyliśmy programu GnuPG, który wywoływany jest z linii poleceń następującą komendą: gpg -–gen-key
Program poprosił o określenie rodzaju klucza (zgodnie z instrukcją wybraliśmy opcję DSA i Elgamala), długość klucza (2048) oraz termin ważności klucza (bez określonego terminu ważności). Ponadto należało podać imię i nazwisko oraz adres e-mail. Po wprowadzeniu tych danych program poprosił o wykonanie kilku ruchów myszką w celu wygenerowania wartości losowych.
Po wygenerowaniu klucza mogliśmy sprawdzić poprawność jego danych wydając polecenie
gpg -–list-keys.
Dodawanie, usuwanie i modyfikowanie kluczy
W celu modyfikacji już wygenerowanego klucza w linii poleceń należało wydać polecenie
gpg -–edit-key oraz określić, który klucz chcemy edytować. W celu dodania klucza możemy użyć polecenia addkey, natomiast w celu usunięcia delkey.
Wygodnym sposobem na dodawanie, usuwanie i modyfikowanie kluczy jest użycie graficznego programu GNU Privacy Assistant (w skrócie GPA). Dostęp do tych opcji mamy bezpośrednio z paska poleceń programu, co widać na poniższym ekranie.
Edytując klucz możemy zmienić hasło oraz datę ważności. Klucz możemy także usunąć lub dodać nowy. Wszystkie opcje wyświetlają okna dialogowe, w których możemy określić żądane parametry.
Unieważnianie klucza
W celu unieważnienia klucza należy skorzystać z polecenia gpg -–edit-key a następnie użyć opcji revkey. Unieważnienie można wykonać również z poziomu menadżera kluczy GPA oraz utworzonego wcześniej certyfikatu unieważnienia. Po wyeksportowaniu takiego certyfikatu na serwer kluczy unieważnimy nasz klucz publiczny.
Podpisywanie kluczy, budowanie sieci zaufania
Stworzenie sieci zaufania wymagało zaimportowania klucza innej osoby, a następnie podpisania go. Czynności te można było wykonać zarówno z poziomu linii poleceń, jak i graficznego GPA.
Jak widać na powyższym ekranie, w celu podpisania klucza najpierw należało użyć polecenia gpg –edit-key, a następnie sign.
Oczywiście, żeby móc podpisać klucz, najpierw należało go zaimportować z serwera kluczy lub z dysku. W zależności od wybranego sposobu komenda do zaimportowania wygląda następująco:
import klucza z pliku na dysku: gpg --import <nazwapliku>
import z serwera kluczy: gpg --keyserver <serwerkluczy> --recv-key <klucz>
Wykorzystanie serwerów kluczy. Eksport i import kluczy publicznych.
W celu wyeksportowania klucza na serwer kluczy wystarczy użyć komendy:
gpg --keyser <serwerkluczy> --send-keys <klucz>. Klucze wygenerowane na zajęciach udało nam się przesłać na serwer pgp.mit.edu.
Eksport klucza:
Import klucza:
Jak widać na powyższych ekranach, korzystaliśmy z następujących poleceń:
eksport klucza na serwer: gpg --keyser <serwerkluczy> --send-keys <klucz>
wyszukiwanie klucza na serwerze: gpg --keyserver <serwerkluczy> --search-key <adresemail>
import z serwera kluczy: gpg --keyserver <serwerkluczy> --recv-key <klucz>
Szyfrowanie, deszyfrowanie, podpisywanie i weryfikacja podpisu plików.
Podpisanie pliku możemy przeprowadzić z poziomu linii poleceń: gpg –output <podpisanyplik> –clearsign <nazwapliku>. Użycie podpisu wymagało podania hasła do klucza. Zdecydowanie wygodniejszą metodą jest użycie menu kontekstowego po kliknięciu prawym przyciskiem na plik, który chcemy podpisać. Wybieramy opcję Sign and encrypt, a w kolejnym oknie Sign oraz klucz, którym chcemy podpisać plik.
Po wykonaniu operacji program powiadomi nas stosownym komunikatem, czy zakończyła się ona pomyślnie.
Podobnie przeprowadzamy weryfikację podpisu - z menu wybieramy opcję Verify. Po zakończeniu operacji zostaniemy poinformowani o poprawności odpowiednim komunikatem. Bardzo podobnie wygląda proces szyfrowania (Encrypt) i deszyfrowania (Decrypt) pliku – również wywołujemy je z menu kontekstowego.
W linii poleceń możemy skorzystać z następujących poleceń:
weryfikowanie podpisu: gpg --verify <podpis>
szyfrowanie: gpg --recipient <odbiorca> --output <plik> --encrypt <plik>
odszyfrowanie gpg –decrypt <plik>.
Szyfrowanie, deszyfrowanie, podpisywanie i weryfikacja podpisu e-maili.
Ten punkt wykonaliśmy w programie Mozilla Thunderbird z zainstalowaną wtyczką Enigmail. Podpisanie i szyfrowanie wiadomości okazało się bardzo proste i wystarczyło użyć jednej opcji dostępnej na pasku narządzi w oknie wiadomości (OpenPGP).
Sprawdzenie poprawności podpisu w otrzymanej wiadomości odbywa się automatycznie. W razie błędów program powiadomi nas o tym odpowiednim komunikatem. Odszyfrowanie również wykonywane jest automatycznie i odbywa się w momencie otrzymania wiadomości.
Podsumowanie
Dzięki wykonanym ćwiczeniom poznaliśmy zagadnienia związane z tematyką szyfrowania. Nauczyliśmy się także jak wygenerować klucze oraz jak nimi zarządzać i wykorzystywać je do szyfrowania plików i wiadomości e-mail. Szyfrowanie zapewnia bezpieczeństwo naszych danych, nawet gdyby okazało się, że przesyłane przez nas dane zostaną przechwycone, ponieważ do odczytania konieczny jest klucz, który posiada jedynie wybrana przez nas osoba. Wtyczka Enigmail do programu Mozilla Thunderbird sprawia, że ochrona naszych wiadomości staje się bardzo prosta i można z niej korzystać nie posiadając nawet specjalistycznej wiedzy na ten temat. Dzięki temu nasza prywatna korespondencja nie zostanie odczytana przez osoby trzecie, a także da nam pewność, że otrzymana wiadomość jest autentyczna.