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?
- 2. Instalacja GPG w popularnych dystrybucjach
- 3. Podstawy – jak działa szyfrowanie w GPG
- 4. Szybkie szyfrowanie pliku na hasło (symetryczne)
- 5. Wygenerowanie własnej pary kluczy GPG (asymetrycznie)
- 6. Eksport i import klucza publicznego
- 7. Szyfrowanie plików kluczem publicznym odbiorcy
- 8. Odszyfrowywanie plików zaszyfrowanych kluczem publicznym
- 9. Szyfrowanie i odszyfrowywanie wielu plików / katalogów
- 10. Różnica – szyfrowanie symetryczne vs asymetryczne
- 11. Podpisywanie plików (opcjonalnie, ale przydatne)
- 12. Typowe problemy i ich rozwiązania
- 13. Dobre praktyki bezpieczeństwa
- 14. Gotowe scenariusze do zastosowania
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:
-cto 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:
- Typ klucza – wciśnij Enter (domyślnie RSA and RSA – opcja 1);
- Rozmiar klucza – wciśnij Enter dla domyślnych 2048/3072 bitów lub wpisz np.
4096; - Okres ważności – np.
1y(rok),2y,0dla bezterminowego; - Potwierdzenie – wpisz
yi Enter; - Dane użytkownika – podaj:
- imię i nazwisko (np. „Jan Kowalski”),
- adres e‑mail (np.
[email protected]), - komentarz (opcjonalnie).
- 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:
- Spakuj katalog (np. tar + gzip):
tar -czf projekt.tar.gz projekt/
- 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
- 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
- Poproś klienta o jego klucz publiczny (np.
klient_public.asc). - Zaimportuj klucz do swojego GPG:
gpg --import klient_public.asc
- Zaszyfruj plik dla adresu klienta:
gpg -r [email protected] -e umowa.pdf
- Wyślij
umowa.pdf.gpg(np. e‑mailem, przez SFTP itp.).
14.3. Automatyczny backup zaszyfrowany tylko twoim kluczem
- Wygeneruj klucz GPG (jak w sekcji 5).
- 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"
- Plik
backup-YYYY-MM-DD.tar.gz.gpgmożesz trzymać w chmurze – odszyfrujesz go tylko ty.








