Klucz GPG – jak szyfrować i odszyfrowywać pliki w Linuksie

Oskar Gajzler
Przez
Oskar Gajzler
Redaktor IINTE.edu.pl, na co dzień zajmuje się technologiami internetowymi i tłumaczeniem skomplikowanych tematów na prosty język. Pisze poradniki o tym, jak załatwiać sprawy przez internet, jak...
12 min czytania

Poradnik wyjaśnia, czym jest GPG/GnuPG, jak wygenerować klucze, a następnie krok po kroku pokazuje szyfrowanie i odszyfrowywanie plików w Linuksie – zarówno z użyciem samego hasła, jak i pary kluczy (publiczny/prywatny). Znajdziesz tu też typowe błędy, dobre praktyki oraz gotowe komendy do skopiowania.

1. Co to jest GPG i po co szyfrować pliki?

GnuPG (GPG) to wolne narzędzie do szyfrowania i podpisywania danych, zgodne ze standardem OpenPGP. Służy do:

  • szyfrowania plików i wiadomości,
  • odszyfrowywania danych,
  • podpisywania cyfrowego (potwierdzania autora i integralności danych),
  • zarządzania kluczami kryptograficznymi.

W praktyce możesz wybrać jedną z dwóch metod: szyfrowanie symetryczne (jedno hasło, szybkie i proste do zabezpieczania pojedynczych plików) lub szyfrowanie asymetryczne (para kluczy: publiczny do szyfrowania, prywatny do odszyfrowania – bezpieczniejsze w komunikacji i pracy zespołowej).

2. Instalacja GPG w popularnych dystrybucjach

Na większości dystrybucji Linuksa GPG jest domyślnie zainstalowany. Jeżeli nie, użyj menedżera pakietów swojej dystrybucji. Oto szybkie instrukcje dla popularnych systemów:

  • Debian / Ubuntu / Mint – uruchom polecenia:
    sudo apt update
    sudo apt install gnupg
    ;
  • Fedora – uruchom polecenie:
    sudo dnf install gnupg;
  • RHEL / CentOS / Rocky / Alma – uruchom polecenie (na starszych systemach może być yum):
    sudo yum install gnupg;
  • Arch / Manjaro – uruchom polecenie:
    sudo pacman -S gnupg.

Aby sprawdzić wersję zainstalowanego GPG, użyj:

gpg --version

3. Podstawy – jak działa szyfrowanie w GPG

3.1. Szyfrowanie symetryczne (na hasło)

Najważniejsze cechy tej metody to:

  • jeden sekretny klucz = hasło, które znasz tylko ty,
  • ten sam sekret służy do szyfrowania i odszyfrowania pliku,
  • rozwiązanie prostsze, ale wymaga bezpiecznego przekazania hasła odbiorcy.

3.2. Szyfrowanie asymetryczne (klucze publiczny/prywatny)

W skrócie mechanizm działania wygląda tak:

  • Para kluczy – każdy użytkownik ma klucz publiczny i odpowiadający mu klucz prywatny;
  • Klucz publiczny – możesz go udostępniać innym, służy do szyfrowania wiadomości i plików dla ciebie;
  • Klucz prywatny – przechowujesz go w tajemnicy, służy do odszyfrowywania oraz składania podpisów cyfrowych;
  • Dane zaszyfrowane twoim kluczem publicznym odszyfrujesz wyłącznie swoim kluczem prywatnym.

Typowe zastosowania to przesyłanie plików konkretnym osobom bez ustalania wspólnego hasła oraz automatyczne szyfrowanie kopii zapasowych, które odszyfrujesz tylko ty.

4. Szybkie szyfrowanie pliku na hasło (symetryczne)

To najszybszy sposób, gdy chcesz po prostu „zapiąć plik na hasło”.

4.1. Szyfrowanie pliku

Załóżmy, że masz plik dane.docx. Użyj polecenia:

gpg -c dane.docx

Po wydaniu komendy pamiętaj o tych zasadach:

  • -c to skrót od --symmetric – szyfrowanie symetryczne,
  • GPG poprosi o dwukrotne podanie hasła,
  • po operacji powstanie plik dane.docx.gpg.

Oryginalny plik nie jest automatycznie kasowany – jeśli chcesz, usuń go ręcznie (i w miarę bezpiecznie):

shred -u dane.docx

Uwaga: shred może nie być w pełni skuteczny na dyskach SSD i systemach plików z journalingiem, ale jest lepszy niż zwykłe rm.

4.2. Odszyfrowanie pliku

Aby odszyfrować plik, użyj:

gpg dane.docx.gpg

Możesz też jawnie wskazać nazwę pliku wynikowego:

gpg --output dane_odkodowane.docx --decrypt dane.docx.gpg

Najważniejsze komendy do skopiowania:

# szyfrowanie
gpg -c plik
# odszyfrowanie
gpg plik.gpg
# albo
gpg --output plik-odszyfrowany --decrypt plik.gpg

5. Wygenerowanie własnej pary kluczy GPG (asymetrycznie)

Aby szyfrować pliki „na użytkownika” (nie na hasło), potrzebujesz pary kluczy.

5.1. Tworzenie klucza

W terminalu uruchom kreator:

gpg --full-generate-key
# lub skrót:
gpg --full-gen-key

Przebieg kreatora wygląda następująco:

  1. Typ klucza – wciśnij Enter (domyślnie RSA and RSA – opcja 1);
  2. Rozmiar klucza – wciśnij Enter dla domyślnych 2048/3072 bitów lub wpisz np. 4096;
  3. Okres ważności – np. 1y (rok), 2y, 0 dla bezterminowego;
  4. Potwierdzenie – wpisz y i Enter;
  5. Dane użytkownika – podaj:
  • imię i nazwisko (np. „Jan Kowalski”),
  • adres e‑mail (np. [email protected]),
  • komentarz (opcjonalnie).
  1. Hasło (passphrase) – ustaw mocne, długie hasło (inne niż do e‑maila/systemu).

Po chwili klucz zostanie wygenerowany i zapisany w twoim pierścieniu kluczy.

5.2. Wyświetlanie listy kluczy

Aby zobaczyć swoje klucze prywatne, użyj:

gpg --list-secret-keys

Aby wyświetlić swoje klucze publiczne, użyj:

gpg --list-keys

6. Eksport i import klucza publicznego

Aby ktoś mógł zaszyfrować dane „dla ciebie”, musi mieć twój klucz publiczny.

6.1. Eksport własnego klucza publicznego (do wysłania innym)

Najpierw znajdź identyfikator swojego klucza:

gpg --list-keys

Załóżmy, że twój e‑mail to [email protected]. Wykonaj jeden z poniższych eksportów:

Eksport w formacie binarnym:

gpg --export [email protected] > jan_public.gpg

Eksport w formacie tekstowym (ASCII – wygodniejszy do wklejania i wysyłania mailem):

gpg --armor --export [email protected] > jan_public.asc

Plik jan_public.asc lub jan_public.gpg wyślij rozmówcy (np. jako załącznik).

6.2. Import obcego klucza publicznego

Gdy otrzymasz klucz publiczny innej osoby (np. anna_public.asc), zaimportuj go poleceniem:

gpg --import anna_public.asc

Następnie sprawdź, czy klucz widnieje na liście:

gpg --list-keys

7. Szyfrowanie plików kluczem publicznym odbiorcy

To jest właściwe „szyfrowanie dla kogoś” – tylko osoba posiadająca odpowiedni klucz prywatny będzie w stanie odczytać plik.

7.1. Szyfrowanie pliku dla konkretnego odbiorcy

Załóżmy, że chcesz zaszyfrować plik tajne.txt dla użytkownika [email protected] (jej klucz publiczny masz już zaimportowany). Wykonaj:

gpg --recipient [email protected] --encrypt tajne.txt
# skrócona forma:
gpg -r [email protected] -e tajne.txt

Po operacji powstanie plik tajne.txt.gpg. Przesyłasz tylko zaszyfrowany plik, oryginał możesz skasować (np. shred -u tajne.txt).

7.2. Szyfrowanie z wyjściem ASCII (np. do wklejenia w maila)

Jeżeli chcesz uzyskać zaszyfrowaną treść jako „czytelny” tekst, użyj opcji ASCII armor:

gpg --recipient [email protected] --encrypt --armor tajne.txt
# lub
gpg -r [email protected] -e -a tajne.txt

Powstanie plik tajne.txt.asc z nagłówkiem „—–BEGIN PGP MESSAGE—–”.

8. Odszyfrowywanie plików zaszyfrowanych kluczem publicznym

Załóżmy, że to ty jesteś odbiorcą i masz swój klucz prywatny w GPG, a otrzymałeś plik tajne.txt.gpg zaszyfrowany twoim kluczem publicznym.

8.1. Odszyfrowanie do nowego pliku

Aby odszyfrować do wskazanego pliku, użyj:

gpg --output tajne.txt --decrypt tajne.txt.gpg
# skrócona wersja:
gpg -o tajne.txt -d tajne.txt.gpg

GPG poprosi o hasło do twojego klucza prywatnego. Po poprawnym uwierzytelnieniu plik zostanie odszyfrowany.

Jeżeli plik jest w ASCII (.asc), zastosuj:

gpg --output tajne.txt --decrypt tajne.txt.asc

9. Szyfrowanie i odszyfrowywanie wielu plików / katalogów

GPG szyfruje pliki, nie katalogi. Jeśli chcesz zaszyfrować cały katalog, wykonaj te kroki:

  1. Spakuj katalog (np. tar + gzip):

tar -czf projekt.tar.gz projekt/

  1. Zaszyfruj powstałe archiwum (wybierz jedną z metod):

Symetrycznie (na hasło):

gpg -c projekt.tar.gz

Asymetrycznie (np. dla Anny):

gpg -r [email protected] -e projekt.tar.gz

  1. Po odszyfrowaniu odbiorca rozpakowuje archiwum:

tar -xzf projekt.tar.gz

W środowiskach graficznych (np. Ubuntu + Seahorse/„Hasła i klucze szyfrowania”) możesz użyć menu kontekstowego: kliknij prawym na plik/katalog → „Zaszyfruj” → wybierz klucz odbiorcy → OK.

10. Różnica – szyfrowanie symetryczne vs asymetryczne

Poniższa tabela ułatwi szybkie porównanie metod:

Cecha Symetryczne (gpg -c) Asymetryczne (klucz publiczny/prywatny)
Klucz jedno hasło para: publiczny/prywatny
Użycie w pojedynkę bardzo wygodne wygodne, zwłaszcza do backupów
Przesyłanie danych innym wymaga przekazania hasła (problem bezpieczeństwa) szyfrujesz kluczem publicznym odbiorcy – bez ustalania hasła
Bezpieczeństwo przy wielu odbiorcach słabsza kontrola (wiele osób zna to samo hasło) każdy ma własny klucz, możesz szyfrować dla wielu naraz
Złożoność konfiguracji proste wymaga generowania, importu i zarządzania kluczami

Do szybkiego zabezpieczania lokalnych plików wybierz szyfrowanie symetryczne.

Do komunikacji i profesjonalnych zastosowań stosuj szyfrowanie asymetryczne.

11. Podpisywanie plików (opcjonalnie, ale przydatne)

Oprócz szyfrowania możesz podpisywać pliki, aby odbiorca miał pewność, że pochodzą od ciebie i nie zostały zmodyfikowane.

11.1. Podpis binarny (oddzielny plik .sig)

Aby wygenerować podpis odseparowany, użyj:

gpg --detach-sign dokument.pdf

W wyniku otrzymasz plik dokument.pdf.sig. Weryfikacja po stronie odbiorcy (mającego twój klucz publiczny):

gpg --verify dokument.pdf.sig dokument.pdf

11.2. Podpis + szyfrowanie

Możesz zaszyfrować i podpisać jednocześnie, aby odbiorca wiedział, kto wysłał plik. Dla tajne.txt (dla Anny) użyj:

gpg --sign --encrypt --recipient [email protected] tajne.txt
# lub
gpg -s -e -r [email protected] tajne.txt

Odbiorca po odszyfrowaniu będzie mógł zweryfikować podpis i źródło.

12. Typowe problemy i ich rozwiązania

12.1. „Nie można znaleźć klucza dla odbiorcy”

Sprawdź, czy klucz publiczny odbiorcy jest w twoim pierścieniu kluczy:

gpg --list-keys

Jeżeli go brakuje, zaimportuj plik z kluczem:

gpg --import klucz_odbiorcy.asc

12.2. Błąd przy odszyfrowywaniu – złe hasło / passphrase

Upewnij się, że wpisujesz hasło do klucza prywatnego, a nie hasło do systemu czy e‑maila. Jeśli plik był szyfrowany symetrycznie (-c), hasło to to samo, które podałeś podczas szyfrowania.

12.3. Brak uprawnień do zapisu pliku po odszyfrowaniu

Wskaż jawnie katalog i nazwę pliku wynikowego, do których masz prawa zapisu:

gpg --output ~/tajne.txt --decrypt tajne.txt.gpg

13. Dobre praktyki bezpieczeństwa

Przed rozpoczęciem pracy z GPG upewnij się, że stosujesz następujące zasady:

  • silne hasło – do klucza prywatnego: długie (minimum 12–16 znaków), z małymi/dużymi literami, cyframi i znakami specjalnymi;
  • kopia zapasowa klucza prywatnego – bez niego nie odszyfrujesz danych; przechowuj backup w bezpiecznym miejscu (np. zaszyfrowany kontener, nośnik offline);
  • ostrożne usuwanie oryginałów – po zaszyfrowaniu sprawdź, czy plik da się odszyfrować, dopiero potem bezpiecznie kasuj oryginały;
  • weryfikacja kluczy publicznych – przed użyciem czyjegoś klucza potwierdź odcisk (fingerprint) innym kanałem, np. telefonicznie;
  • aktualizacje – utrzymuj system i GPG w aktualnej wersji (łatki bezpieczeństwa).

14. Gotowe scenariusze do zastosowania

14.1. Zabezpieczenie prywatnego pliku na własnym laptopie

Wykonaj poniższe kroki, aby szybko zabezpieczyć i sprawdzić plik:

# szyfrowanie na hasło
gpg -c budzet.xlsx
# sprawdzenie odszyfrowania
gpg --output budzet_decrypted.xlsx --decrypt budzet.xlsx.gpg
# bezpieczne usunięcie oryginału
shred -u budzet.xlsx

14.2. Wysłanie poufnego pliku klientowi

  1. Poproś klienta o jego klucz publiczny (np. klient_public.asc).
  2. Zaimportuj klucz do swojego GPG:

gpg --import klient_public.asc

  1. Zaszyfruj plik dla adresu klienta:

gpg -r [email protected] -e umowa.pdf

  1. Wyślij umowa.pdf.gpg (np. e‑mailem, przez SFTP itp.).

14.3. Automatyczny backup zaszyfrowany tylko twoim kluczem

  1. Wygeneruj klucz GPG (jak w sekcji 5).
  2. Użyj prostego skryptu do tworzenia i szyfrowania archiwum:

#!/bin/bash
TAR=/tmp/backup-$(date +%F).tar.gz
tar -czf "$TAR" /home/user/dokumenty
gpg -r [email protected] -e "$TAR"
shred -u "$TAR"

  1. Plik backup-YYYY-MM-DD.tar.gz.gpg możesz trzymać w chmurze – odszyfrujesz go tylko ty.
Udostępnij ten artykuł
Obserwuj
Redaktor IINTE.edu.pl, na co dzień zajmuje się technologiami internetowymi i tłumaczeniem skomplikowanych tematów na prosty język. Pisze poradniki o tym, jak załatwiać sprawy przez internet, jak bezpiecznie korzystać z sieci i jak dobierać sprzęt oraz oprogramowanie. Prywatnie tropi nowinki technologiczne i testuje je, zanim opisze.
Brak komentarzy

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Wymagane pola są oznaczone *