GnuPG to open-sourcowy odpowiednik PGP, powszechnie znanego i lubianego narzędzia kryptograficznego.
Generacja pary kluczy
Aby utworzyć nową parę kluczy (czyli klucz publiczny i prywatny) należy wydać polecenie gpg –gen-key
Uwaga: przy pierwszym wywołaniu program może zakończyć swoje działanie po stworzeniu katalogu domowego programu. Należy wtedy uruchomić go ponownie.
[ziutus@duzy bash]$ gpg --gen-key gpg (GnuPG) 1.0.7; Copyright (C) 2002 Free Software Foundation, Inc. This program comes with ABSOLUTELY NO WARRANTY. This is free software, and you are welcome to redistribute it under certain conditions. See the file COPYING for details. gpg: /home/ziutus/.gnupg: katalog utworzony gpg: /home/ziutus/.gnupg/options: stworzono nowy plik ustawień gpg: aby użyć nowego pliku ustawień, należy od nowa uruchomić GnuPG
[ziutus2@localhost .gnupg]$ gpg --gen-key gpg (GnuPG) 1.2.1; Copyright (C) 2002 Free Software Foundation, Inc. This program comes with ABSOLUTELY NO WARRANTY. This is free software, and you are welcome to redistribute it under certain conditions. See the file COPYING for details.
Najpierw program zapyta o typ klucza (można wybrać domyślny)
Proszę wybrać rodzaj klucza: (1) Para kluczy dla algorytmów DSA i ElGamala (domyślne) (2) DSA (tylko do podpisywania) (5) RSA (tylko do podpisywania) Twój wybór? 1 Para kluczy dla DSA będzie miała 1024 bity długości.
Następnie o długość (domyślna 1024 bity jest wystarczająca, chociaż im dłuższy tym bardziej bezpieczny):
Nastąpi generacja nowej pary kluczy dla algorytmu(ów) ELG-E. minimalny rozmiar klucza wynosi 768 bitów domyślny rozmiar klucza wynosi 1024 bity największy sugerowany rozmiar klucza wynosi 2048 bitów Jakiej długości klucz wygenerować? (1024) 2048
Dalej o okres ważności klucza (tutaj wszystko zależy od nas):
Okres ważności klucza. 0 = klucz nie ma określonego terminu ważności= termin ważności klucza upływa za n dni w = termin ważności klucza upływa za n tygodni m = termin ważności klucza upływa za n miesięcy y = termin ważności klucza upływa za n lat Okres ważności klucza ? (0) 1y Key traci ważność: czw 15 lip 2004 08:51:07 CEST
Następnie jesteśmy proszeni o potwierdzenie wyborów:
Dane poprawne (t/n)? t
Przejdziemy do dalszej części w której podamy Imię i nazwisko właściciela, jego e-mail oraz komentarz do klucza (przeważnie podaje się swój przydomek):
Musisz określić identyfikator użytkownika aby można było rozpoznać Twój klucz; program złoży go z Twojego imienia i nazwiska, komentarza i adresu poczty elektronicznej. Będzie on miał taką postać: "Tadeusz ?eleński (Boy) " Imię i nazwisko: Krzysztof Jóźwiak Adres poczty elektronicznej: ziutus@knf.p.lodz.pl Komentarz: ziutus Używasz zestawu znaków iso-8859-2. Twój identyfikator użytkownika będzie wyglądał tak: "Krzysztof Jóźwiak (ziutus) " Zmienić (I)mię/nazwisko, (K)omentarz, adres (E)mail, przejść (D)alej czy (W)yjść z programu ? D
Na koniec podajemy hasło i program zapisuje klucze w katalogu domowym programu.
Musisz podać długie, skomplikowane hasło aby ochronić swój klucz tajny. Musimy wygenerować dużo losowych bajtów. Dobrym pomysłem podczas generowania liczb pierwszych jest wykonywanie w tym czasie innych działań (pisanie na klawiaturze, poruszanie myszką, odwołanie się do dysków); dzięki temu generator liczb losowych ma możliwość zebrania odpowiedniej ilości entropii. ..+++++.+++++++++++++++++++++++++..+++++++++++++++++++++++++++++++++++.++++++ +++++++++++++++++++++++++++++...++++++++++.+++++.+++++++++++++++..+++++..>++++ +......................................>+++++..........<..+++++............... ....................+++++ Brakuje możliwości wygenerowania odpowiedniej liczby losowych bajtów. Proszę kontynuować inne działania aby system mógł zebrać odpowiednią ilość entropii do ich wygenerowania (brakuje 220 bajtów). Musimy wygenerować dużo losowych bajtów. Dobrym pomysłem podczas generowania liczb pierwszych jest wykonywanie w tym czasie innych działań (pisanie na klawiaturze, poruszanie myszką, odwołanie się do dysków); dzięki temu generator liczb losowych ma możliwość zebrania odpowiedniej ilości entropii. +++++++++++++++++++++++++.++++++++++s++++++++++++++++++++++++++++++++++++++++ ++++++++++.f.+++++++++++++++..++++++++++++++++++++..+++++++++++++++.+++++++++ +>++++++++++>+++++.......lk.jlk...f........>+++++............<+++++>+++++..... ....................................................<.+++++................... .............................................................................. ........................>+++++..............................+++++^^^^^^^^^ gpg: /home/ziutus2/.gnupg/trustdb.gpg: baza zaufania utworzona klucz publiczny i prywatny (tajny) zostały utworzone i podpisane. klucz został oznaczony jako obdarzony absolutnym zaufaniem. pub 1024D/7C800C8B 2003-07-16 Krzysztof Jóźwiak (ziutus) Odcisk klucza = 1E9A 9F42 313C E96C D93F 0EE3 7938 10FD 7C80 0C8B sub 2048g/16CB5A24 2003-07-16 [wygasa :2004-07-15]
Zarządzanie kluczami
Wylistowanie kluczy dostępnych w bazie danych dokonamy przy pomocy polecenia gpg –list-keys
[ziutus2@localhost .gnupg]$ gpg --list-keys /home/ziutus2/.gnupg/pubring.gpg -------------------------------- pub 1024D/7C800C8B 2003-07-16 Krzysztof Jóźwiak (ziutus) sub 2048g/16CB5A24 2003-07-16 [wygasa :2004-07-15]
Stworzenie pliku podpisanego kluczem kryptograficznym
Plik podpisujemy poleceniem gpg –sign nazwa_pliku. Utworzy to osobny plik nazwa_pliku.gpg z binarnym podpisem. Zostaniemy oczywiście poproszeni o podanie hasła:
[ziutus2@localhost gpg]$ gpg --sign plik1.txt Musisz podać hasło aby odbezpieczyć klucz tajny użytkownika: "Krzysztof Jóźwiak (ziutus) " długość 1024 bitów, typ DSA, numer 7C800C8B, stworzony 2003-07-16
Sprawdzenie poprawności podpisanego pliku dokonamy dzięki poleceniu gpg –verify nazwa_pliku.gpg
[ziutus2@localhost gpg]$ gpg --verify plik1.txt.gpg gpg: Podpisano w śro 16 lip 2003 09:20:15 CEST kluczem DSA o numerze 7C800C8B. gpg: Poprawny podpis złożony przez "Krzysztof Jóźwiak (ziutus) "
Lepiej jednak utworzyć plik, w którym będzie jawnie się znajdował podpis wiadomości. Dokonamy tego przy pomocy polecenia gpg –clearsign nazwa_pliku. Utworzy to nowy plik nazwa_pliku.asc, w którym zostanie zaznaczony początek i koniec wiadomości podpisywanej, a na końcu pliku znajdzie się podpis kryptograficzny.
[ziutus2@localhost gpg]$ gpg --clearsign plik1.txt Musisz podać hasło aby odbezpieczyć klucz tajny użytkownika: "Krzysztof Jóźwiak (ziutus) " długość 1024 bitów, typ DSA, numer 7C800C8B, stworzony 2003-07-16
Sprawdzenie poprawności dokonujemy podobnie jak w poprzednim przypadku:
ziutus2@localhost gpg]$ gpg --verify plik1.txt.asc gpg: Podpisano w śro 16 lip 2003 09:28:12 CEST kluczem DSA o numerze 7C800C8B. gpg: Poprawny podpis złożony przez "Krzysztof Jóźwiak (ziutus) "
Stworzenie pliku zaszyfrowanego gpg
Najlepiej zaszyfrowany plik stworzyć poleceniem gpg -se -r nazwa_uzytkownika plik_do_zaszyfrowania.
[ziutus2@localhost gpg]$ gpg -se -r ziutus plik2.txt Musisz podać hasło aby odbezpieczyć klucz tajny użytkownika: "Krzysztof Jóźwiak (ziutus) " długość 1024 bitów, typ DSA, numer 7C800C8B, stworzony 2003-07-16
Plik taki rozpakowujemy poleceniem gpg –decrypt nazwa_pliku.gpg Należy jednak przekierować wyjście ze strumienia do innego pliku, gdyż standardowo gnupg wyświetla zawartość deszyforwanego pliku na ekranie.
gpg --decrypt plik2.txt.gpg > test2.txt
Pobieranie kluczy pgp z serwera kluczy
Czyjś klucz najlepiej pobrać z serwera kluczy (jest to najprostszy sposób). Gnupg umożliwia to dzięki opcji –recv-keys z id klucza jako parametrem. Należy jeszcze podać serwer z którego będziemy ściągać klucz (–keyserver serwer.kluczy.net) i możemy już ściągać klucz:
ziutus@ziutus:~$ gpg --keyserver www.keyserver.net --recv-keys 0x4B19D38FE77B534D gpg: /home/ziutus/.gnupg/trustdb.gpg: baza zaufania utworzona gpg: klucz E77B534D: klucz publiczny ,,Brian Rectanus '' wczytano do zbioru gpg: Ogółem przetworzonych kluczy: 1 gpg: dołączono do zbioru: 1