Kryptowaluty i kryptografia #2 – Szyfrowanie wiadomości

Szyfrowanie wiadomości tak jak obiecałem w poprzednim artykule nie wymaga doktoratu z matematyki. Ostatnio poruszyliśmy historię kryptografii, na jakie nurty się dzieli się i trochę o nich opowiedzieliśmy. Teraz czas przejść do zajęć praktycznych.  Pod koniec tego wpisu każdy będzie w stanie wysłać solidnie zaszyfrowaną wiadomość przy użyciu kryptografii asymetrycznej.

Może ktoś już z was słyszał o szyfrowaniu PGP (ang. Pretty Good Privacy) albo GPG nazywanym też GnuPG (ang. GNU Privacy Guard).  Są to praktycznie tożsame oprogramowania kryptograficzne, z tą różnicą, że GPG należy do wolnego oprogramowania a PGP nie i dlatego skupimy się na GPG. Z racji tego jak ważne jest formatowanie, wszystkie zaszyfrowane, bądź podpisane cyfrowo teksty są wrzucone na pastebin.com.

Oprogramowanie szyfrujące.

Pierwszy krok do rozpoczęcia przygody to oczywiście ściągnięcie odpowiedniego oprogramowania – Gpg4win to darmowy program, który nam absolutnie wystarczy.

Dla chętnych jest opcja wsparcia twórców przelewem PayPal albo Bitcoin, jeśli nie chcemy tego robić wybieramy 0$ i klikamy “Download”.

Przechodzimy przez proces instalacji oprogramowania klikając kilka razy “Next”.

Uruchamiamy GPA i wtedy program zapyta czy chcemy wygenerować klucz, zaczekajmy jednak chwilę.

Wybierzmy „Preferences” i zaznaczmy obie z podkreślonych opcji.

Generowanie kluczy

Następnie wybierzmy zakładkę “Keys” i “New Key”

W poniższym polu wpisujemy nazwę i e-mail jaki chcemy powiązać z kluczem prywatnym oraz zmieniamy wielkość klucza algorytmu RSA na 3072 bity.

Robimy tak ponieważ domyślnie powstałby klucz o wielkości 2048 bitów, a zgodnie z zaleceniami NSA klucze o wielkości 3072 i większej spełniają standardy klasyfikacji TOP SECRET. Opcjonalnie możliwe jest dodanie komentarza i daty utraty ważności przez klucz. 

Bezpieczeństwo kluczy

Kolejnym krokiem jest wpisanie hasła i następnie powtórzenie go. Tutaj bardzo ważna informacja, zobaczcie, że nie ma słowa “password” a “passphrase”. W dzisiejszych czasach mocne hasło jest często źle postrzegane. Hasło, które jest trudne do zapamiętania dla człowieka może być łatwe do złamania dla komputera. Najlepsze dla bezpieczeństwa są całe zwroty, które są dla nas łatwe do zapamiętania i równocześnie trudne do złamania. Mówił o tym Edward Snowden w tym video podając za przykład mocnego hasła frazę “margaretthatcheris110%SEXY”.

Polecam również stworzenie kopii zapasowej, zachowując ją ze względów bezpieczeństwa na dysku zewnętrznym albo pamięci USB. Pamiętajcie, że tak jak z Bitcoinami tylko wy jesteście odpowiedzialni za bezpieczeństwo swoich środków i kluczy. Jeśli zapomnicie hasła, zgubicie plik to najprawdopodobniej nikt nie będzie w stanie wam pomóc. Kopię zapasową można wykonać klikając prawym przyciskiem myszy na klucz i wybierając opcję “Export keys”.

Klucz publiczny – importowanie i eksportowanie

Tak więc mamy własną parę kluczy. Zgodnie z ich nazwami klucz prywatny powinien pozostać tajny a publiczny może być udostępniany. Tylko wtedy przyszły nadawca może zaszyfrować wiadomość tak abyśmy tylko my mogli ją odczytać.

Po kliknięciu prawym przyciskiem myszy na klucz wybieramy opcję “Copy” i wtedy w schowku znajduje się klucz publiczny. Wygląda on tak jak tutaj.

Można go wrzucić na serwer keys.gnupg.net wybierając zakładkę “Servers” a potem “Send Keys…”  albo właśnie na popularne pastebin.com. Chcąc dodać cudzy klucz publiczny zapisujemy go w pliku tekstowym i wybieramy “Import” a następnie zaznaczamy ten plik tekstowy.

W naszym zestawie kluczy pojawił się nowy klucz, który się różni ikoną . Oznacza on oczywiście klucz publiczny.

Jeśli wrzuciliśmy nasz klucz na serwer to wystarczy podać komuś “Key ID”. Wtedy wybieramy zakładkę “Servers” i “Retrieve keys…” wpisując w okienku uzyskane Key ID. Zachęcam do sprawdzenia z moim CA34B201, ponieważ przyda się to w następnych przykładach.

W efekcie powinna wyświetlić się wiadomość:

Sign, verify, encrypt, derypt.

Tak więc podsumowując, na tym etapie mamy własną parę kluczy (prywatny i publiczny) oraz klucz publiczny odbiorcy. Możemy więc przejść do wysyłania wiadomości.

Przez zakładkę “Windows” otwieramy “Clipboard” . Znajdują się tam są 4 interesujące nas możliwości.

Sign – oznacza podpisanie jakiegoś tekstu swoim kluczem prywatnym. Tak podpisany tekst z całą pewnością należy do właściciela klucza. Jeśli cokolwiek zostanie w nim zmienione to nie przejdzie weryfikacji.

Po napisaniu dowolnego tekstu w Clipboard i wybraniu “Sign” należy wybrać jakim kluczem ma on zostać podpisany, wprowadzić hasło a w efekcie otrzymamy:

https://pastebin.com/41SqCucM

Verify – Po skopiowaniu powyższego tekstu do “Clipboard” i wybraniu “Verify” oprogramowanie potwierdzi, że słowa “Nauka szyfrowania z Bithub.pl jest prosta.” zostały podpisane moim kluczem prywatnym.

Jeśli jednak cokolwiek zostałoby zmienione, nawet kropka na końcu zdania efekt byłby taki.

Encrypt – Jest to szyfrowanie wiadomości wpisanej w Clipboard, należy pamiętać, że tylko posiadacz klucza prywatnego będzie mógł ją odczytać. Jeśli napisałeś długą wiadomość zbyt szybko ją zaszyfrowałeś to nie ma możliwości cofnięcia procesu aby sprawdzić ją raz jeszcze przed wysłaniem – trzeba pisać od nowa.

Przykład zaszyfrowanej wiadomości:

https://pastebin.com/fFJNHA17

Decrypt – odszyfrowanie wiadomości znajdującej się w Clipboard. Należy wprowadzić hasło do klucza prywatnego i wtedy pojawi się tekst jawny.

Wiadomości zaszyfrowane można również podpisać swoim kluczem, albo podpisać wiadomość swoim kluczem i później ją zaszyfrować. Tak więc odbiorca po odszyfrowaniu może potwierdzić podpis dla dodatkowej pewności kto do niego napisał.

Mam nadzieję, że po tym poradniku jesteście w stanie:

– stworzyć własną parę kluczy algorytmu RSA (prywatny, publiczny) o odpowiedniej wielkości,

– wymyślić mocne hasło, które będzie dla was łatwe do zapamiętania,

– wysłać komuś swój klucz publiczny różnymi sposobami,

– importować cudzy klucz publiczny,

– podpisać i zweryfikować wiadomości,

– szyfrować wysyłane wiadomości i odszyfrowywać przychodzące.

Zajęcia praktyczne dla czytelników

https://pastebin.com/G1qCmeAM

 

Pozostałe artykuły z serii Kryptowaluty i Kryptografia:

Kryptowaluty i kryptografia #1

Kryptowaluty i kryptografia #3 – Szyfrowanie OTR wiadomości

Kryptowaluty i kryptografia #4 – Bitmessage

Kryptowaluty bezpiecznie kupisz lub sprzedasz w sieci kantorów i bitomatów FlyingAtom
Komentarze