[WikiDyd] [TitleIndex] [WordIndex

Cel zajęć

Ćwiczenie z wykorzystania oprogramowania do w celu zabezpieczenia danych użytkownika, na przykładzie dwóch popularnych aplikacji: PGP(GPG) i SSH.

Wprowadzenie

Szyfrowanie danych z użyciem Gnu Privacy Guard (GPG)

GPG stanowi otwartą implementację oprogramowania o funkcjonalności PGP (Preety Good Privacy), w oparciu o licencję GPL. Program umożliwia asymetryczne szyfrowanie korespondencji w oparciu o parę kluczy: prywatny i publiczny. Unikalną cechą systemu jest dystrybucja kluczy publicznych w oparciu o sieć zaufania (ang. Web of Trust). Program zaimplementowany jest jako narzędzie wywoływane w trybie tekstowym terminala, istnieją jednakże implementacje dla klientów pocztowych trybu graficznego, np. enigmail. Przy wywołaniu programu należy podać odpowiednie opcje w formacie krótkim (np. gpg -h) lub długim (np. gpg --help).

Pierwszym krokiem jest generacja pary kluczy, którą realizuje opcja --gen-key. Proces generacji kluczy z punktu widzenia użytkownika polega na wyborze poszczególnych opcji w kolejnych etapach. Należy zwrócić uwagę na następujące warunki:

Po zakończeniu generacji kluczy, należy wyeksportować swój klucz publiczny przy użyciu opcji --export -a (eksport w formacie ASCII) w celu jego udostępnienia. Klucz publiczny innego użytkownika można dodać do swojego “kółka na klucze” (keyring) opcją --import.

Aktualny stan posiadanych kluczy dostępny jest przez opcję --list-keys, natomiast poziom zaufania do zaimportowanego klucza zmienia się przez opcję --edit-key. Jeżeli przypiszemy najwyższy poziom zaufania to tym samym wystawiamy certyfikat zaufania dla innych użytkowników, którzy ufają nam. W ten sposób budowana jest sieć zaufania. GPG umożliwia korzystanie z serwerów kluczy, ułatwiających zarządzanie i odnajdywanie kluczy publicznych innych użytkowników --search. Przykładowymi serwerami są pgp.net lub keyserver.net.

Szyfrowanie wiadomości odbywa się z użyciem opcji -e lub --encrypt i podaniem identyfikatora użytkownika, dla którego wiadomość będzie szyfrowana (wymaga to użycia klucza publicznego tej osoby). Niezależnie od szyfrowania, można wiadomość podpisać używając opcji --sign, przy czym do podpisu używany jest własny klucz prywatny. Odkodowanie wiadomości odbywa się przy użyciu opcji --decrypt, natomiast weryfikacja podpisu --verify.

Istnieje również możliwość symetrycznego szyfrowania wiadomości przy użyciu GPG, na przykład w sytuacji, w której mamy do zaszyfrowania wiadomość do pewnej grupy osób znającej ustalone hasło. Wykorzystuje się do tego celu opcję -s lub --symmetric, po użyciu której informacje zaszyfrowane będą podanym hasłem.

Bezpieczne połączenia sieciowe przy pomocy SSH

Podstawowym celem protokołu SSH jest zapewnienie bezpiecznego połączenia do pracy terminalowej w trybie tekstowym. Jest jednak wiele innych ciekawych zastosowań tego programu, takich jak tunelowanie innych protokołów, albo bezpieczne przesyłanie plików.

SSH implementuje kilka schematów potwierdzania tożsamości (uwierzytelniania). Najpopularniejsze i jednocześnie najprostrze pytanie o "login-hasło" można łatwo zastąpić przez uwierzytelnianie oparte na kryptografii asymetrycznej. Taka możliwość jest szczególnie cenna, jeśli często wykonujemy to samo połączenie. Przed uruchomieniem takiej możliwości konieczne jest wygenerowanie pary kluczy publicznego i prywatnego (program ssh-keygen), a następnie umieszczamy klucz publiczny na serwerze, na który będziemy się logować (w pliku ~/.ssh/authorized_keys).

SSH umożliwia również tunelowanie dowolnych innych protokołów poprzez bezpiecznie połączenie. Są dwa rodzaje tunelowania: lokalne i zdalne, różniące się miejscem inicjowania tunelu. Pierwsze wywoływane jest opcją -L, a drugie opcją -R.

ssh hostname -L port:host:hostport
ssh hostname -R port:host:hostport

Opcja -L utworzy tunel zaczynający się na porcie port lokalnego interfejsu sieciowego komputera, na którym uruchamiamy to połączenie, poprzez komputer hostname, aż do portu o numerze hostport na komputerze host. Zabezpieczone przez SSH będzie tylko połączenie pomiędzy komputerem uruchamiającym połączenia, a komputerem hostname. Odcinek hostname-host nie jest chroniony. Opcja -R utworzy tunel zaczynający się na porcie port lokalnego interfejsu sieciowego komputera hostname, poprzez komputer, z którego inicjowane było połączenie, aż do portu o numerze hostport na komputerze host. Zabezpieczone przez SSH będzie tylko połączenie pomiędzy komputerem uruchamiającym połączenia, a komputerem hostname. Odcinek hostname-host nie jest chroniony.

Warto wspomnieć o dwóch programach z pakietu SSH służących do transmisji plików, są to scp i sftp. Korzystanie z nich jest bardzo zbliżone do ich 'niebezpiecznych' wersji, programów cp i ftp.

Potrzebna wiedza

Do realizacji zadań na zajęciach konieczna jest zrozumienie schematu działania kryptografii asymetrycznej oraz umiejętność korzystania z programów gpg i ssh.

Dodatkowe informacje

Hasła dla Google: ssh, gpg

Przykładowe zadania

  1. Zaszyfruj plik przy pomocy klucza publicznego kolegi.
  2. Odszyfruj plik przy zaszyfowany specjalnie dla Ciebie.
  3. Podpisz dokument i zweryfikuj podpis kolegi. Ustaw wysoki poziom zaufania zaimportowanemu kluczowi kolegi.
  4. Podpisz dokument tekstowy, ale w taki sposob, aby jego treść była nadal widoczna.
  5. Podpisz dokument wykorzystując określoną funkcje skrótu (np. MD5, SHA256, SHA512).
  6. Wyszukaj klucz publiczny prowadzących zajęcia i zweryfikuj podpisany przez nich dokument.
  7. Zaszyfruj, a następnie rozszyfruj plik określonym algorytmem symetrycznym (np. 3DES, AES256, TWOFISH).
  8. Zaimportowanym kluczom kolegów ustaw odpowiednie poziomy zaufania i podpisz swoim kluczem prywatnym.
  9. Skonfiguruj SSH tak, aby podczas logowania nie było wymagane hasło.
  10. Przy pomocy SSH stwórz tunel tak, aby na wybranym porcie serwera edi zgłaszała się wybrana usługa serwera volt (np. www, pop3, smtp). Należy założyć, że nie mają Państwo konta na volt'cie.
  11. Otwórz nasłuchujący port na serwerze edi, który jest połączony za pomocą bezpiecznego tunelu z portem smtp(25) na serwerze max.
  12. Utwórz bezpieczny tunel łączący serwer edi z portem (22) na serwerze max. Nasłuchujący port na edim ma umożliwić połączenie innym komputerom z portem (22) na serwerze max.
  13. Korzystając z scp i określonego algorytmy szyfrowania prześlij pomiędzy serwerami cały katalog plików.


2015-09-23 06:44