Wstęp do systemów wielozadaniowych laboratorium 21 — Szyfrowanie
Jarosław Piersa
Wydział Matematyki i Informatyki, Uniwersytet Mikołaja Kopernika
2014-01-23
Cel zajęć
szyfrowanie danych
wymiana zaszyfrowanych wiadomości
uwierzytelnienie (czy wiadomość faktycznie pochodzi od danego użytkownika)
Narzędzia
Linux / UNIX: GnuPG http://www.gnupg.org/
Windows: gpg4win http://gpg4win.org/
Manual:
http://www.gnupg.org/gph/en/manual.html
Tworzenie kluczy
Klucze są przechowywane na katalogu $HOME/.gnupg
Na czas ćwiczeń proszę wykonać jego kopię (jeżeli istnieje)!
l s − l a ˜/.gnupg gpg − −list −keys
Tworzenie kluczy
Generowanie pary kluczy $HOME/.gnupg
gpg −−gen−key
Listujemy ponownie:
gpg − −list −keys
Klucze publiczne
Klucz prywatny (sec) służy do odszyfrowywania wiadomości i nikt poza właścicielem nie powinien mieć do niego dostępu Klucz publiczny (pub) służy do szyfrowania wiadomości, które może odszyfrować właściciel klucza prywatnego
Jeżeli chcemy wysłać wiadomość zaszyfrowaną do innego użytkownika X, to najpierw musimy od X otrzymać jego klucz publiczny
Eksportowanie klucza publicznego
Eksportowanie klucza publicznego
gpg −−armor −−output n a z w a p l i k u . a s c \
−−export I d e n t y f i k a t o r K l u c z a
plik nazwa pliku.asc należy przekazać osobie X która chce wysłać do nas wiadomość
można udostępnić na stronie www lub dopisać do .plan (w trakcie zajęć również wysłać pocztą)
Importowanie klucza
X uzyskał plik z kluczem publicznym osoby Y:
plik z kluczem Y.asc X importuje klucz:
gpg −−armor −−import p l i k z k l u c z e m Y . a s c
X sprawdza listę kluczy
gpg − −list −keys
Podpisanie klucza
X po upewnieniu się, że klucz faktycznie pochodzi od Y, X podpisuje zaimportowany klucz
gpg −−edit−key i d e n t y f i k a t o r Y gpg −−edit−key y @ a d r e s . y
X podpisuje klucz poleceniem sign
UWAGA! X podpisuje klucz, tylko gdy ma absolutną pewność, że należy on do Y.
UWAGA! Stwierdzenie czy “klucz od Y” faktycznie pochodzi od Y jest najsłabszym punktem systemu
Scenariusz A: Szyfrowanie na własne potrzeby
X chce zaszyfrować własne dane, aby chronić je przed niepowołanym dostępem
X szyfruje plik i usuwa oryginał
gpg −−output z a s z y f r o w a n y P l i k \
−−symmetric o r y g i n a l n y P l i k
gdy plik jest potrzebny, X go odszyfrowuje:
gpg −−output o r y g i n a l n y P l i k \
−−decrypt z a s z y f r o w a n y P l i k
Scenariusz B: Szyfrowanie korespondencji
X chce wysłać zaszyfrowaną wiadomość do Y
X redaguje wiadomość w postaci pliku wiadomoscDoY.txt X szyfruje plik kluczem publicznym Y-a
gpg −−output zaszyfrowanaWiadomoscDoY −−encrypt \
− −recipient Y wiadomoscDoY.txt
X wysyła zaszyfrowany plik jako załącznik
Scenariusz B: Szyfrowanie korespondencji c.d.
Y otrzymał plik zaszyfrowanaWiadomoscOdX
Y odszyfrowuje wiadomość własnym kluczem prywatnym
gpg −−output wiadomoscOdX \
− −decript zaszyfrowanaWiadomoscOdX
Y czyta wiadomość
Uwierzytelnienie / autentyzacja
X chce potwierdzić, że to właśnie on jest nadawcą i wiadomość nie została po drodze zmodyfikowana
X redaguje wiadomoscDoY i podpisuje ją własnym kluczem prywatnym
gpg −−output podpisanaWiadomoscDoY \
−−sign wiadomoscDoY
lub
gpg −−output podpisanaWiadomoscDoY \
− −clearsign wiadomoscDoY
X wysyła wiadomość
Uwierzytelnienie / autentyzacja
Y otrzymał podpisaną wiadomość wiadomoscOdX Y sprawdza podpis kluczem publicznym X
gpg − −verify podpisanaWiadomoscDoY
Y czyta wiadomość
Uwierzytelnienie / autentyzacja
uży-szkodnik Z przechwycił podpisaną wiadomość wiadomoscOdX i zmodyfikował jej treść i / lub sygnaturę Z-owi wydaje się, że bez ciężkiej aparatury jest w stanie sfałszować wiadomość tak aby Y nie zauważył
Y sprawdza podpis zmodyfikowanej wiadomości
gpg − −verify podpisanaWiadomoscDoY
otrzymuje:
gpg : S i g n a t u r e made pon , 21 s t y 2 0 1 3 , 1 2 : 5 6 : 0 2 CET u s i n g RSA k e y ID A16C0C47 gpg : BAD s i g n a t u r e f r o m ” I k s I k s i n s k i ( X , X) <x@x . domena . p l>”
Y usuwa wiadomość bez czytania i podejmuje środki
zwiększające bezpieczeństwo (zmiana haseł, generowanie nowych
Zadanie domowe
Wygeneruj parę kluczy, eksportuj klucz publiczny i umieść na własnej stronie www / pliku .plan lub na forum na moodle Z moodle pobierz i zaimportuj klucz publiczny prowadzącego Wyślij do prowadzącego zaszyfrowaną wiadomość / z
zaszyfrowanym załącznikiem
Wyślij do prowadzącego podpisaną wiadomość / z podpisanym załącznikiem
treścią wiadomości może być na plik z rozwiązaniem któregoś z wcześniejszych zadań domowych
Dalsze stosowanie:
Projekt implementujący bezpieczeństwo w warstwie sieci (ssl) na licencji gnu
http://www.openssl.org/
Dokumentacja do interfejsu tworzenia certyfikatów http://www.openssl.org/docs/apps/CA.pl.html Plugin szyfrujący/autoryzujący do Thunderbirda
https://addons.mozilla.org/pl/thunderbird/addon/enigmail/