GnuPG – Open-sourcowa wersja PGP

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

Dodaj komentarz