Inspektor kluczy OpenPGP i parser pakietów

Wklej pancerzowany klucz, podpis lub wiadomość OpenPGP — albo wczytaj binarny plik .gpg — i zobacz odcisk palca, identyfikator klucza, identyfikatory użytkowników, podklucze, pakiety podpisów i surowe drzewo pakietów. Działa w całości w przeglądarce; nic nie jest wysyłane.
Tylko parser. To narzędzie dekoduje i wyświetla dane OpenPGP — nigdy nie weryfikuje kryptograficznie podpisów, nie odszyfrowuje i nie prosi o hasła. Aby faktycznie zweryfikować lub odszyfrować, użyj GnuPG (gpg --verify, gpg -d) z własnym pierścieniem kluczy. A jak w przypadku każdego narzędzia: prawdziwe klucze prywatne należą do pierścienia kluczy, a nie do karty przeglądarki.
Przyjmuje każdy typ pancerza: PUBLIC KEY BLOCK, PRIVATE KEY BLOCK, MESSAGE, SIGNATURE, ARMORED FILE.
binarny eksport pierścienia kluczy / .sig / .gpg — czytany lokalnie, nigdy nie wysyłany
Co to narzędzie sprawdza — a czego celowo nie robi
Dekoduje pancerz (etykieta, nagłówki, ładunek base64, suma kontrolna transportu CRC-24), parsuje każdy pakiet w starym i nowym formacie nagłówka, czyta pakiety kluczy v4/v5/v6 (algorytm, rozmiary MPI, czas utworzenia), oblicza odciski palca v4 (SHA-1) i v6 (SHA-256), wyprowadza identyfikatory kluczy, wypisuje identyfikatory użytkowników, podklucze i podpakiety podpisów. Nie weryfikuje podpisów (to wymaga pełnej maszynerii haszowania i weryfikacji z RFC 9580 §5.2.4 oraz zaufanego pierścienia kluczy), nie odszyfrowuje i nie pobiera kluczy z serwerów kluczy. Każdy wynik sprawdzaj w GnuPG: gpg --show-keys plik.asc wypisuje odcisk palca i identyfikatory użytkowników, a gpg --list-packets plik.asc zrzuca strukturę pakietów.
Przykładowe klucze na tej stronie — cztery przyciski Przykład wklejają prawdziwy klucz OpenPGP v4 RSA-2048, wygenerowany wyłącznie na potrzeby tej strony (nigdzie nie używany). Przykładowy klucz prywatny jest przechowywany niezaszyfrowany (użycie S2K 0) celowo, aby parser mógł pokazać układ tajnych MPI; prawdziwie wyeksportowany klucz prywatny pokazałby zamiast tego swój szyfr i wyprowadzenie S2K.
Autotest
Ponownie uruchamia parser na osadzonym przykładowym kluczu, odłączonym podpisie i podpisanej wiadomości: etykiety pancerza, przejście CRC-24 i celowe uszkodzenie, sekwencje tagów pakietów, odcisk palca v4 i identyfikator klucza wobec niezależnie obliczonych wartości, identyfikatory użytkowników, odciski palca podkluczy, wykrywanie klucza tajnego, a także testy negatywne (śmieciowe wejście i obcięte pakiety muszą być odrzucone). Nic nie jest nigdzie wysyłane.
OpenPGP wyjaśniony od podstaw
W jednym zdaniu: OpenPGP to otwarty standard (RFC 4880, zaktualizowany przez RFC 9580 w 2024) do szyfrowania end-to-end i podpisów cyfrowych, najbardziej znany z zabezpieczania poczty — a wszystko przesyła się w małych, oznaczonych pakietach binarnych, zwykle opakowanych w tekstową warstwę „pancerza”.
Czym jest OpenPGP?

PGP („Pretty Good Privacy”) wydał Phil Zimmermann w 1991 roku jako program, z którego każdy mógł korzystać do szyfrowania i podpisywania wiadomości. Aby uciec od problemu jednego dostawcy, format wiadomości został ustandaryzowany jako OpenPGP (RFC 2440 w 1998, RFC 4880 w 2007, RFC 9580 w 2024). Dziś najpopularniejszą implementacją jest GnuPG, a ten sam format pakietów pojawia się też w podpisanych commitach git, podpisywaniu pakietów oprogramowania, serwerach kluczy i rekordzie DNS OPENPGPKEY.

Model jest end-to-end: nadawca i odbiorca generują każdy osobistą parę kluczy; to, co zaszyfrowano dla odbiorcy, może odszyfrować wyłącznie jego klucz prywatny, który nigdy nie opuszcza komputera. Zamiast centralnego urzędu certyfikacji (jak w TLS) zaufanie do kluczy innych osób bierze się z podpisywania nawzajem swoich kluczy — „sieć zaufania”. To, czy korzysta się z tej sieci, czy po prostu porównuje odciski palca poza pasmem (rozmowa telefoniczna, wizytówka), zależy od użytkownika; sam format niczego nie wymusza.

Czym jest klucz OpenPGP?

„Klucz” OpenPGP to tak naprawdę mały pakiet pakietów: jeden pakiet klucza głównego (kotwica tożsamości, zwykle uprawniony do podpisywania), jeden lub więcej pakietów identyfikatora użytkownika („Alice <alice@example.com>”), samopodpisy wiążące te identyfikatory z kluczem głównym i opcjonalnie podklucze z własnymi podpisami wiążącymi — zwykle osobny podklucz szyfrujący, aby cenny klucz główny mógł pozostać offline. Cały pancerzowany blok, który zostanie wklejony na tę stronę, to właśnie ten pakiet.

Odcisk palca to skrót pakietu klucza głównego — SHA-1 (20 bajtów) dla kluczy v4, SHA-256 (32 bajty) dla kluczy v6 — liczony tylko z części publicznej. Identyfikator klucza to po prostu ostatnie 8 bajtów odcisku palca v4 (pierwsze 8 dla v5). Odciski palca porównuje się poza pasmem, by upewnić się, że nikt nie podmienił klucza w drodze do odbiorcy; identyfikatory kluczy to krótki uchwyt dla serwerów kluczy i nie są odporne na kolizje wobec zdeterminowanego atakującego.

Identyfikator algorytmuNazwaTypowe zastosowanie w kluczu
1RSAKlasyczny wszechstronny; 2048–4096 bitów, podpis i/lub szyfrowanie
19ECDSAKrzywe NIST (P-256 itd.), podpisywanie
18ECDHUzgadnianie kluczy Curve25519/P-256, podklucze szyfrujące
22EdDSAPodpisywanie Ed25519 (nowoczesny domyślny w GnuPG 2.4+)
25X25519Podklucze szyfrujące sparowane z kluczami głównymi Ed25519 (klucze v6)

Blok klucza prywatnego niesie tajne liczby po części publicznej: bajt użycia S2K mówiący, jak są chronione (0 = niechronione, 254/255 = klucz wyprowadzony z hasła z szyfrem), a potem tajne MPI i suma kontrolna. Ta strona pokazuje ten tryb ochrony, ale nigdy nie prosi o hasło i nie próbuje odszyfrować tajnego materiału.

Czym jest pakiet OpenPGP?

Pod pancerzem każdy obiekt OpenPGP to sekwencja pakietów. Każdy zaczyna się bajtem tagu: stary format upycha w nim 4-bitowy typ pakietu i typ długości, nowy format (CTB, z ustawionym bitem 6) używa 6-bitowego typu i bajtów długości, które mogą nawet opisywać dane w częściowych fragmentach. Popularne tagi: 6 = klucz publiczny, 5 = klucz tajny, 14 = podklucz, 13 = identyfikator użytkownika, 2 = podpis, 4 = podpis jednorazowy, 11 = dane literalne, 8 = dane skompresowane, 18 = dane szyfrowane i chronione MDC. Ta strona wypisuje tag, format nagłówka, długość i zrzut hex dla każdego znalezionego pakietu i zgłasza błąd z pozycją bajtu, gdy nagłówek pakietu jest zniekształcony.

Pakiety podpisów niosą swoje metadane w obszarach podpakietów hashowanych i niehashowanych. Tylko obszar hashowany jest objęty samym podpisem; obszar niehashowany (historycznie używany do identyfikatora klucza wystawcy) może być swobodnie przepisany przez każdego w czasie transportu, więc czytelnicy muszą traktować go jako wskazówkę, nigdy jako fakt. To samopodpis na identyfikatorze użytkownika faktycznie wiąże imię z kluczem; sam pakiet klucza, wklejony sam w sobie, niczego nie dowodzi o tym, kto go posiada.

Pancerz ASCII to tekstowe opakowanie: -----BEGIN PGP PUBLIC KEY BLOCK-----, opcjonalne nagłówki, takie jak Version: lub Comment:, base64 strumienia pakietów i końcowa linia =xxxx z 24-bitową sumą CRC. Ta suma wyłapuje tylko uszkodzenia transportu — przerzuć jeden znak base64, a ta strona to zaznaczy — ale nie jest podpisem i niczego nie dowodzi o autorstwie.

Typowe błędy
  • Ufanie kluczowi bez porównania odcisków palca. Każdy może wygenerować klucz z dowolnym imieniem. Porównanie odcisku palca przez kanał, któremu już ufa się (osobiście, telefonicznie), to cały krok uwierzytelniania.
  • Mylenie sumy CRC pancerza z podpisem. Odznaka „CRC OK” oznacza tylko tyle, że base64 przetrwał podróż, i nic więcej. Weryfikacja to operacja kryptograficzna, której ta strona celowo nie wykonuje.
  • Traktowanie identyfikatorów kluczy jako tożsamości. 64-bitowe identyfikatory kluczy może sfałszować atakujący o skromnej mocy obliczeniowej ("kolizja identyfikatora klucza"); zawsze cytuj pełne odciski palca.
  • Wklejanie prawdziwych kluczy prywatnych na strony internetowe. Nawet lokalna strona bez wysyłania, jak ta, to nawyk, którego nie warto wyrabiać. Przykładowe klucze tutaj to jednorazowe klucze wygenerowane na potrzeby demonstracji.
  • Zakładanie, że „PGP MESSAGE” oznacza zaszyfrowane. Etykieta pancerza nic nie mówi o zawartości — przykładowa wiadomość na tej stronie jest podpisana, ale jawna; to tag pakietu 18 lub 11 faktycznie rozróżnia zaszyfrowane od danych literalnych.
  • Import kluczy v3. Klucze w wersji 3 (projekt sprzed 1996, słabe 16-bitowe identyfikatory kluczy) są wycofane od 2014 roku; ten inspektor celowo je odrzuca.
FAQ

Czy to weryfikuje podpisy? Nie. Parsuje i wyświetla. Weryfikacja podpisu wymaga pełnej konstrukcji hash-trailer z RFC 9580, klucza publicznego podpisującego oraz decyzji, czy ufa się temu kluczowi — to zadanie GnuPG albo biblioteki OpenPGP.

Czym to się różni od openpgp.js? openpgp.js to pełna implementacja (szyfrowanie, odszyfrowywanie, podpisywanie, weryfikacja), którą osadza się w aplikacji; ta strona to bezzależnościowy inspektor do czytania i audytowania struktur OpenPGP w przeglądarce.

Czy może odczytać mój eksport GnuPG? Tak — klucze v4, v5 i v6, podpisy odłączone i wiadomości. Klucze wersji 3 są odrzucane z adnotacją (wycofane od 2014 roku).

Dlaczego jest tryb wejścia hex? Surowe dane OpenPGP są binarne; jeśli dostępny jest zrzut hex pierścienia kluczy albo pliku .gpg, wklej hex, a parser potraktuje go dokładnie jak zdekodowane bajty.

Czy cokolwiek jest wysyłane? Nie. Parsowanie, obliczanie odcisków palca i generowanie raportu odbywają się w tej karcie; strona działa w całości w przeglądarce.