PGP (Pretty Good Privacy) – co to jest?
Może być używany do podpisywania, szyfrowania i odszyfrowywania prawie wszystkiego, a w rzeczywistości jest znacznie lepszy niż „pretty good”!
Pretty Good Privacy (PGP) to protokół szyfrowania danych, który wykorzystuje kombinację szyfrowania symetrycznego i asymetrycznego. Dzięki temu może umożliwić dwóm stronom poufną wymianę danych. PGP umożliwia także odbiorcy uwierzytelnienie tożsamości nadawcy i weryfikację, czy wiadomość nie została zmieniona podczas przesyłania. Wbrew temu, co może sugerować jego nazwa, w rzeczywistości zapewnia bardzo solidną, sprawdzoną ochronę.
PGP został opracowany, aby uniemożliwić dostawcom poczty e-mail, dostawcom Internetu, hakerom i rządom czytanie e-maili i innych poufnych komunikatów. Został także pomyślany w taki sposób, aby umożliwić dziennikarzom, informatorom, działaczom politycznym i innym poufną wymianę informacji drogą elektroniczną bez obawy, że jakiś przeciwnik podsłucha i odczyta wiadomości. Od pierwszej publikacji w 1991 roku stał się de facto standardem szyfrowania wiadomości e-mail.
PGP używa bezpiecznego protokołu wymiany kluczy, który jest bardzo dobrze ugruntowany i szeroko stosowany do zabezpieczania komunikacji w Internecie (np. SSL, TLS). Niektórzy klienci poczty e-mail obsługują natywnie szyfrowanie PGP, co sprawia, że wysyłanie zaszyfrowanych wiadomości e-mail jest bardzo proste. Gdy nie jest obsługiwany przez klienta poczty, PGP może być trudny w użyciu. Wymaga dodatkowego oprogramowania do ręcznego generowania kluczy szyfrowania i wymiany ich między komunikującymi się stronami.
Przykład Pretty Good Privacy
Najlepszym sposobem na zrozumienie, jak działa PGP, jest przykład. Załóżmy, że nadawca chce bezpiecznie wysyłać dane do odbiorcy:
- Nadawca prosi odbiorcę o wygenerowanie asymetrycznej pary kluczy prywatny/publiczny i przesłanie mu klucza publicznego.
- Generowany jest klucz przez nadawcę który dodatkowo szyfruje przesyłane dane.
- Nadawca następnie używa klucza publicznego odbiorcy do zaszyfrowania klucza symetrycznego używanego do szyfrowania danych.
- Nadawca przesyła zaszyfrowane dane (zaszyfrowane kluczem symetrycznym) wraz z zaszyfrowanym kluczem symetrycznym (zaszyfrowanym kluczem publicznym odbiorcy).
- Odbiorca używa swojego odpowiedniego klucza prywatnego do odszyfrowania klucza symetrycznego, a następnie używa klucza symetrycznego do odszyfrowania danych.
Dlaczego opisana powyżej sekwencja jest bezpieczna? Dlaczego uniemożliwia to osobie innej niż odbiorca zobaczenie chronionych danych?
Dane zaszyfrowane solidnym szyfrem z kluczem symetrycznym (np. AES) i odpowiednio dużym kluczem szyfrowania (np. 512-bitowy klucz) są praktycznie nie do złamania, więc tylko odbiorca z kluczem symetrycznym oraz kluczem prywatnym może je odszyfrować. Zaszyfrowane dane mogą być dosłownie publikowane w Internecie i swobodnie dostępne do pobrania dla każdego. Nadal będą bezpieczne, ponieważ bez klucza deszyfrującego nie ma praktycznego sposobu na ich odszyfrowanie.
PGP to świetny sposób na bezpieczną wymianę danych, o ile klucze prywatne są odpowiednio chronione, a ich właściciele mają do nich wyłączny dostęp. Jeśli klucze prywatne zostaną naruszone, ktoś może podszywać się pod nadawcę i manipulować danymi bez wiedzy odbiorcy.
Dlaczego potrzebujemy kluczy asymetrycznych i symetrycznych?
Szyfry symetryczne są znacznie bardziej wydajne obliczeniowo niż szyfry asymetryczne, więc znacznie szybciej szyfrują lub odszyfrowują duże ilości danych. Jednak problem z szyframi symetrycznymi polega na tym, że aby działały, obie strony – nadawca i odbiorca – muszą znać klucz i dlatego muszą wymyślić bezpieczny sposób wymiany klucza. Nadawca musi je znać, aby móc zaszyfrować dane, a odbiorca musi je znać, aby móc je odszyfrować.
W tym miejscu w grę wchodzą asymetryczne pary kluczy prywatny/publiczny. W przypadku kluczy asymetrycznych jeden klucz (klucz prywatny) służy do szyfrowania danych, a drugi (klucz publiczny) do odszyfrowywania. Klucz publiczny, jak sama nazwa wskazuje, może być publicznie znany, więc nie ma problemu z przesłaniem go w sposób jasny do każdego, kto chce go poznać. Klucz prywatny musi być ściśle strzeżony.
Aby bezpiecznie wymienić klucz symetryczny, nadawca używa klucza publicznego odbiorcy do zaszyfrowania klucza symetrycznego. Oznacza to, że tylko odbiorca z odpowiednim kluczem prywatnym może odszyfrować klucz symetryczny, a następnie uzyskać dostęp do zaszyfrowanych nim danych.
Dlaczego nie możemy użyć kluczy asymetrycznych do zaszyfrowania i odszyfrowania danych?
Szyfry asymetryczne wymagają dużej mocy obliczeniowej. Każda operacja szyfrowania/odszyfrowywania jest bardzo kosztowna obliczeniowo i zajmuje dużo czasu. Oznacza to, że szyfrowanie lub odszyfrowywanie dużej ilości danych jest nieefektywne. Stosowanie szyfrów asymetrycznych ogranicza się zatem do umożliwienia bezpiecznej wymiany kluczy symetrycznych, po czym nadawca i odbiorca mogą korzystać ze znacznie wydajniejszego szyfru symetrycznego.
Co można jeszcze zrobić z PGP?
Oprócz umożliwienia wymiany zaszyfrowanych danych, PGP może być również używany do cyfrowego podpisywania danych. Dzięki temu jego odbiorca może zweryfikować tożsamość nadawcy oraz ich integralność.
Aby zweryfikować tożsamość nadawcy, odbiorca używa klucza publicznego nadawcy do odszyfrowania wiadomości, którą mogła zaszyfrować tylko osoba mająca dostęp do odpowiedniego klucza prywatnego. Dzięki temu sprawdzane jest, że właścicielem klucza publicznego jest ten, który wysłał wiadomość, a nie ktoś inny.
Aby zweryfikować integralność przesłanych danych, nadawca hashuje wysłane dane i szyfruje hash swoim kluczem prywatnym. Odbiorca może zweryfikować, czy dane nie zostały naruszone poprzez odszyfrowanie skrótu danych nadawcy przy użyciu swojego klucza publicznego, niezależnie hashując otrzymane dane i porównując swój skrót z hashem nadawcy. Jeśli te dwa skróty są zgodne, wysłane dane są dokładnie takie same jak dane otrzymane. Jeśli skróty różnią się, oznacza to, że dane zostały zmodyfikowane gdzieś w trakcie przesyłania.