Reklama

Gnu Privacy Guard (GPG)

Erewhon, pt., 12/01/2007 - 15:08
Kategorie:

logo-gnupg_0.pngCała filozofia tej technologii polega na posiadaniu specjalnej pary kluczy, prywatnego oraz publicznego. Klucz prywatny powinien być przez nas zabezpieczony i nie rozpowszechniany. Klucz publiczny powinien być ogólne dostępny i udostępniany każdemu, kto chce wysłać do nas zaszyfrowaną wiadomość, bądź sprawdzić nasz podpis cyfrowy.
Klucze publiczne można umieścić na specjalnych, przeznaczonych do tego celu serwerach.

Generowanie klucza

Na początku będziemy musieli wygenerować pary kluczy: prywatny i publiczny.

[user@host]$ gpg --gen-key

Zostaniemy zapytani o rodzaj klucza:

Please select what kind of key you want:
   (1) DSA and ElGamal (default)
   (2) DSA (sign only)
   (4) RSA (sign only)
Your selection?

Wybieramy pierwszą opcję dzięki, której będziemy mogli nie tylko podpisywać ale i szyfrować informacje.

Następnie wybieramy długość klucza, wybieramy znowu domyślną wartość:

About to generate a new ELG-E keypair.
              minimum keysize is  768 bits
              default keysize is 1024 bits
    highest suggested keysize is 2048 bits
What keysize do you want? (1024) 1024

Następnie zostaniemy zapytani o termin ważności klucza, dla większości przypadków wystarczająca będzie opcja 0 (bezterminowo):

Please specify how long the key should be valid.
         0 = key does not expire
        = key expires in n days
      w = key expires in n weeks
      m = key expires in n months
      y = key expires in n years
Key is valid for? (0)

Zostaniemy jeszcze poproszeni o podanie danych identyfikacyjnych (Imienia, Nazwiska, e-maila) i hasła. Dane identyfikacyjne będą się pojawiały innym użytkownikom po zaimportowaniu naszego klucza publicznego.
Po wpisaniu hasła zostaną wreszcie wygenerowane nasze nowe klucze. Ilość czasu potrzebna do ich utworzenia jest zależna od szybkości procesora, wybranej długości klucza oraz entropii podanych informacji (hasło, dane identyfikacyjne). Dodatkowo zostaniemy poproszeni o pomoc przy generowaniu liczb pierwszych. Polegać będzie ona na wykonywaniu jak największej ilości operacji podczas procesu tworzenia naszych kluczy.

Eksportowanie klucza publicznego

Aby wyeksportować nasz klucz lub kogokolwiek wpisanego do naszej bazy kluczy wydajemy polecenie:


[user@host]$ gpg --output key.pgp --armor --export adres@mailowy_osoby.pl

W bieżącej kartotece w pliku key.pgp zostanie zapisany klucz publiczny. Opcja --armor spowoduje, że zbiór zostanie zapisany w formacie ASCII (domyślnie jest on zapisywany w postaci binarnej). Tak zapisany plik możemy opublikować na naszej stronie internetowej.

Można również wysłać nasz klucz publiczny na serwer kluczy komendą:

[user@host]$ gpg --keyserver certserver.pgp.com --send-key 5AFCCBDC

Importowanie kluczy publicznych

Aby zaimportować klucz publiczny wydajemy komendę:

[user@host]$ gpg --import klucz.pgp

Można również z serwera kluczy pobrać klucz publiczny podając identyfikator klucza bądź adres mailowy:

gpg --keyserver wwwkeys.pgp.net --recv-keys C6F888DF

Sprawdzanie kluczy

Teraz można sprawdzić wszystkie klucze publiczne w naszej bazie wydając polecenie:

[user@host]$ gpg --list-keys

Aby zweryfikować autentyczność klucza z nadawcą weryfikujemy jego odcisk:

[user@host]$ gpg --fingerprint adres@mailowy.pl

Po ustaleniu (np. telefonicznie) poprawności odcisku możemy go ostatecznie podpisać:


[user@host$ gpg --sign-key adres@mailowy.pl

Podpisywanie wiadomości

Aby podpisać wiadomość zawartą w zbiorze tekstowym wydajemy następującą komendę:

[user@host]$ gpg --clearsign ./wiadomosc.txt

Zostaniemy zapytani o nasze hasło i po jego podaniu na dysku pojawi się zbior wiadomosc.txt.asc wraz z cyfrową sygnaturą.

Sprawdzenie autentyczności zbioru

Po wydaniu komendy:

[user@host]$ gpg --verify ./wiadomosc.txt.asc

zostanie zweryfikowana wiadomość i mamy pewność czy jest ona prawdziwa i pochodzi od naszego nadawcy.

Szyfrowanie wiadomości

Po wydaniu komendy:

[user@host]$ gpg --encrypt --sign --armor --recipient adres@mailowy.pl tekst.txt

Teraz w bieżącym katalogu powinien pojawić się zaszyfrowany (opcja --encrypt) kluczem publicznym użytkownika adres@mailowy.pl (--recipient adres@mailowy.pl), podpisany (--sign) oraz zapisany w postaci ASCII (--armor) plik tekst.txt.asc. Pamiętajmy, że ostatnim argumentem musi być ścieżka do pliku w którym jest zapisana treść naszej wiadomości.

Rozszyfrowanie wiadomości

Użytkownik otrzymując od nas zaszyfrowaną przesyłkę, musi ją rozszyfrować:

[user@host]$ gpg --output wiadomość --decrypt ./tekst.txt.asc

Po podaniu hasła odbezpieczającego klucz prywatny, GPG rozszyfruje i zweryfikuje wiadomość zapisaną w bieżącym katalogu w pliku tekst.txt.asc (--decrypt ./tekst.txt.asc).

Wyszukiwanie kluczy publicznych

Aby wyszukać na serwerze kluczy, klucz wydajemy komendę:

[user@host]$ gpg --keyserver wwwkeys.pgp.net --search-keys j.krijthe@tiscali.nl

Usuwanie kluczy

Aby usunąć błędnie zaimportowany klucz lub klucz, który stracił ważność, wydajemy komendę:

[user@host]$ gpg --delete-keys user@serwer.pl

W przypadku gdy chcemy usunąć swoją główną parę kluczy (publiczny / prywatny), bądź utworzyliśmy kilka takich par i np. jedna z nich nie jest już nam potrzebna, wtedy najpierw musimy użyć opcji --delete-secret-keys . Dla przykładu, załóżmy, że komuś udało się wejść w posiadanie naszego klucza prywatnego. Musimy teraz jak najszybciej wygenerować nową parę kluczy oraz rozesłać wszystkim znajomym nasz nowy klucz publiczny. Najpierw jednak musimy pozbyć się starej, nieaktualnej już pary. Usuwamy więc w pierwszej kolejności klucz prywatny:

[user@host]$ gpg --delete-secret-keys adres@mailowy.pl

Będziemy musieli dwukrotnie potwierdzić naszą decyzję, po czym zostanie nam jeszcze do usunięcia klucz publiczny:


[user@host]$ gpg --delete-keys adres@mailowy.pl

Szyfrowanie symetryczne
Ciekawą i często przydatną opcją jest możliwość symetrycznego szyfrowania plików z pomocą GnuPG. Możemy w ten sposób zakodować dowolny plik na naszym dysku. W tym przypadku nasze klucze nie są używane, a jedynie pojedyncze hasło, które jest potrzebne do zaszyfrowania i rozszyfrowania pliku. Chcąc zaszyfrować np. plik dane.txt z katalogu bieżącego, wystarczy, że wydamy polecenie:

[user@host]$ gpg --symmetric dane.txt

Po podaniu hasła szyfrującego powinniśmy teraz posiadać obok pliku jawnego dane.txt, jego zakodowaną wersję dane.gpg. Pamiętajmy, że oryginał nie jest automatycznie usuwany. Teraz, gdy będziemy chcieli rozkodować nasz plik, wydamy polecenie:

[user@host]$ gpg --output dane.txt --decrypt dane.gpg

Otrzymamy (oczywiście po podaniu odpowiedniego hasła) zapisaną w pliku dane.txt, rozszyfrowaną wiadomość z dane.gpg. Domyślnie program wyświetla wynik tej operacji na standardowym wyjściu, jednak dzięki opcji --output zapiszemy wszystko w osobnym pliku. Dzięki symetrycznemu szyfrowaniu dostęp do jawnych danych zawartych w pliku dane.gpg mają jedynie osoby znające nasze hasło. Jest to szczególnie przydatne gdy musimy ważne dane umieścić na ogólnodostępnym serwerze, a chcemy, aby ich treść mogły poznać tylko niektóre osoby.

podczas pisania tej porady korzystałem z http://7thguard.net i artykułu Architektura klucza publicznego w Gnu Privacy Guard (GPG) autorstwa: Krzysztofa Śniadoch

Średnia: 5 (5 głosy(ów))

Odpowiedzi

Baltazar Gąbka (niezweryfikowany) komentuje:
pon., 15/01/2007 - 14:48

Dobra robota.

Erewhon (niezweryfikowany) komentuje:
pon., 15/01/2007 - 17:38

Ja tylko uprościłem artykuł z portalu 7thguard.net i przygotowałem go pod siebie, więc o dobrej robocie nie ma mowy :).
Zresztą pod artykułem jest informacja o tym na jakiej podstawie pisałem moją poradę.

Ale dziękuję za zauważenie tego artykułu.

Baltazar Gąbka (niezweryfikowany) komentuje:
czw., 18/01/2007 - 07:48

Tzn. ja już wcześniej interesowałem się GPG. Ale wszędzie było opisane to zbyt szczegółowo, niekiedy mało zrozumiałym językiem. Tak apropo nie tylko zauważyłem artykuł a z niego skorzystałem. Od czasu pierwszego mojego komentarza, moje PSI szyfruje wiadomości, dziękuje za artykuł.

Erewhon (niezweryfikowany) komentuje:
czw., 18/01/2007 - 11:51

To cieszę się, że tak "niechcący" pomogłem :)

Igor (niezweryfikowany) komentuje:
pon., 09/06/2008 - 22:05

Dzieki przyda sie bardzo! :)

Dodaj nową odpowiedź

Zawartość pola nie będzie udostępniana publicznie.
  • Adresy internetowe są automatycznie zamieniane w odnośniki, które można kliknąć.
  • Dozwolone znaczniki HTML: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <img> <pre> <blockquote>
  • Znaki końca linii i akapitu dodawane są automatycznie.
CAPTCHA
To pytanie sprawdza czy jesteś człowiekiem, a aby zapobiec przed spamem.
Image CAPTCHA
Enter the characters shown in the image.