Inspektor klíčů OpenPGP & parser paketů

Vložte zabalený klíč, podpis nebo zprávu OpenPGP — nebo načtěte binární soubor .gpg — a zobrazte otisk, ID klíče, ID uživatelů, podklíče, podpisové pakety a surový strom paketů. Vše probíhá ve vašem prohlížeči; nic se nenahrává.
Pouze parser. Tento nástroj dekóduje a zobrazuje data OpenPGP — nikdy nekontroluje podpisy kryptograficky, nikdy nešifruje ani nedešifruje a nežádá hesla. Pro skutečné ověření nebo dešifrování použijte GnuPG (gpg --verify, gpg -d) se svým klíčovým kroužkem. A jako u každého nástroje: skutečné soukromé klíče patří do vašeho klíčového kroužku, ne do karty prohlížeče.
Přijímá všechny typy zabalení: PUBLIC KEY BLOCK, PRIVATE KEY BLOCK, MESSAGE, SIGNATURE, ARMORED FILE.
export binárního klíčového kroužku / .sig / .gpg — čteno lokálně, nikdy nenahráno
Co tento nástroj kontroluje — a co záměrně nedělá
Dekóduje armor (štítek, hlavičky, užitečné zatížení base64, kontrolní součet přenosu CRC-24), rozebere každý paket ve starém i novém formátu hlavičky, čte paketové klíče v4/v5/v6 (algoritmus, velikosti MPI, čas vytvoření), počítá otisky v4 (SHA-1) a otisky v6 (SHA-256), odvozuje ID klíčů a vypisuje ID uživatelů, podklíče a podpaketů podpisů. Nekontroluje podpisy (to vyžaduje úplný mechanismus hash-and-verify podle RFC 9580 §5.2.4 a důvěryhodný klíčový kroužek), nedešifruje a nestahuje klíče z klíčových serverů. Výstupy porovnejte s GnuPG: gpg --show-keys file.asc vypíše otisk a ID uživatelů, gpg --list-packets file.asc vypíše strukturu paketů.
Ukázkové klíče na této stránce — čtyři tlačítka Ukázka vloží skutečný klíč RSA-2048 OpenPGP v4, který byl vygenerován výhradně pro tuto stránku (nikdy nebyl nikde použit). Ukázka soukromého klíče je záměrně uložena nešifrovaně (použití S2K 0), aby parser mohl ukázat rozložení tajných MPI; skutečně exportovaný soukromý klíč by místo toho ukázal svůj šifrovací algoritmus a odvození S2K.
Autotest
Znovu spustí parser nad vloženým ukázkovým klíčem, odděleným podpisem a podepsanou zprávou: štítky armoru, kontrola CRC-24 a záměrné poškození, posloupnosti značek paketů, otisk v4 a ID klíče proti nezávisle vypočteným hodnotám, ID uživatelů, otisky podklíčů, detekce tajného klíče, plus negativní testy (nesmyslný vstup a useknuté pakety musí být odmítnuty). Nic se nikam neodesílá.
OpenPGP od začátku
Ve stručnosti: OpenPGP je otevřený standard (RFC 4880, aktualizovaný RFC 9580 v roce 2024) pro šifrování typu end-to-end a digitální podpisy, nejznámější pro zabezpečení e-mailu — a vše putuje v malých označených binárních paketech, které se obvykle obalují do textově přátelské vrstvy „armor“.
Co je OpenPGP?

PGP („Pretty Good Privacy“) vydal Phil Zimmermann v roce 1991 jako program, který mohl kdokoli použít k šifrování a podepisování zpráv. Aby se vymanil z problému jednoho dodavatele, byl formát zprávy standardizován jako OpenPGP (RFC 2440 v roce 1998, RFC 4880 v roce 2007, RFC 9580 v roce 2024). Dnes je nejběžnější implementací GnuPG a stejný formát paketů se objevuje také v podepsaných commitech gitu, podepisování softwarových balíčků, klíčových serverech a v záznamu DNS OPENPGPKEY.

Model je end-to-end: vy i váš korespondent si vygenerujete osobní pár klíčů; cokoli zašifrovaného pro vás může dešifrovat jen váš soukromý klíč, který nikdy neopustí váš počítač. Místo centrální certifikační autority (jako u TLS) pochází důvěra v klíče druhých lidí z vzájemného podepisování klíčů — „web důvěry“. Zda použijete tuto síť, nebo jen porovnáte otisky mimo kanál (telefonátem, vizitkou), je na vás; samotný formát žádné z toho nevynucuje.

Co je klíč OpenPGP?

„Klíč“ OpenPGP je ve skutečnosti malý svazek paketů: jeden primární paket klíče (kotva vaší identity, obvykle smí podepisovat), jeden nebo více paketů ID uživatele („Alice <alice@example.com>“), vlastní podpisy vážící tato ID k primárnímu klíči a volitelně podklíče s vlastními vazebními podpisy — typicky samostatný šifrovací podklíč, aby mohl cenný primární klíč zůstat offline. Celý zabalený blok, který sem vložíte, je právě tento svazek.

Otisk je hash primárního paketu klíče — SHA-1 (20 bajtů) pro klíče v4, SHA-256 (32 bajtů) pro klíče v6 — počítaný jen z veřejné části. ID klíče jsou jen posledních 8 bajtů otisku v4 (prvních 8 u v5). Otisky porovnáváte mimo kanál, abyste se ujistili, že nikdo klíč po cestě k vám nevyměnil; ID klíčů jsou krátké označení pro klíčové servery a nejsou bezpečné proti kolizím vůči odhodlanému útočníkovi.

ID algoritmuNázevTypické použití v klíči
1RSAKlasický univerzál; 2048–4096 bitů, podepisování a/nebo šifrování
19ECDSAKřivky NIST (P-256 apod.), podepisování
18ECDHDohoda klíčů Curve25519/P-256, šifrovací podklíče
22EdDSAPodepisování Ed25519 (moderní výchozí v GnuPG 2.4+)
25X25519Šifrovací podklíče spárované s primárními Ed25519 (klíče v6)

Blok soukromého klíče nese tajná čísla za veřejnou částí: oktet S2K používání, který říká, jak jsou chráněna (0 = nechráněno, 254/255 = klíč odvozený z hesla se šifrou), pak tajné MPI a kontrolní součet. Tato stránka ukazuje tento režim ochrany, ale nikdy nežádá heslo a nepokouší se dešifrovat tajný materiál.

Co je paket OpenPGP?

Pod armorem je každý objekt OpenPGP posloupnost paketů. Každý začíná bajtem značky: starý formát do něj skládá 4bitový typ paketu a typ délky, nový formát (CTB, nastavený bit 6) používá 6bitový typ a bajty délky, které mohou popsat i data v částečných blocích. Běžné značky: 6 = veřejný klíč, 5 = tajný klíč, 14 = podklíč, 13 = ID uživatele, 2 = podpis, 4 = jednopruhový podpis, 11 = doslovná data, 8 = komprimovaná data, 18 = šifrovaná data chráněná MDC. Tato stránka u každého nalezeného paketu vypíše značku, formát hlavičky, délku a hex výpis a při chybné hlavičce paketu ohlásí chybu s pozicí bajtu.

Podpisové pakety nesou svá metadata v oblastech hashovaných a nehashovaných podpaketů. Podpis sám kryje jen hashovanou oblast; nehashovaná oblast (historicky používaná pro ID klíče vydavatele) může kdokoli za přenosu volně přepsat, takže čtenáři ji musejí brát jako nápovědu, nikoli jako fakt. Vlastní podpis na ID uživatele je to, co skutečně váže jméno ke klíči; samotný paket klíče, vložený sám o sobě, nic nedokazuje o tom, kdo jej vlastní.

ASCII armor je textový obal: -----BEGIN PGP PUBLIC KEY BLOCK-----, volitelné hlavičky jako Version: nebo Comment:, base64 proudu paketů a závěrečný řádek =xxxx s 24bitovým CRC. Toto CRC zachytí jen poškození při přenosu — změňte jeden znak base64 a tato stránka to označí — ale není to podpis a nic nedokazuje o autorství.

Časté chyby
  • Důvěřování klíči bez porovnání otisků. Kdokoli může vygenerovat klíč s jakýmkoli jménem. Porovnání otisku přes kanál, kterému již důvěřujete (osobně, telefonem), je celý autentizační krok.
  • Záměna CRC armoru za podpis. Odznak „CRC OK“ znamená jen to, že base64 cestou nepoškodil. Ověřování je kryptografická operace, kterou tato stránka záměrně neprovádí.
  • Používání ID klíčů jako identity. 64bitová ID klíčů může útočník s mírným výpočetním výkonem zfalšovat (tzv. „kolize ID klíče“); vždy uvádějte úplné otisky.
  • Vkládání skutečných soukromých klíčů na webové stránky. I lokální stránka bez nahrávání, jako tato, je návyk, který si nechcete osvojit. Ukázky zde jsou jednorázové klíče vygenerované pro demo.
  • Předpoklad, že „PGP MESSAGE“ znamená šifrovaná. Štítek armor neříká nic o obsahu — ukázková zpráva na této stránce je podepsaná, ale v prostém textu; rozdíl mezi šifrovanými a doslovnými daty dělá až značka paketu 18 oproti 11.
  • Import klíčů verze 3. Klíče verze 3 (návrh před rokem 1996, slabá 16bitová ID klíčů) jsou od roku 2014 zastaralé; tento inspektor je záměrně odmítá.
Časté dotazy

Ověřuje tento nástroj podpisy? Ne. Parsuje a zobrazuje. Ověření podpisu vyžaduje úplnou konstrukci hashe podle RFC 9580, veřejný klíč podepisujícího a rozhodnutí, zda tomuto klíči důvěřujete — úkol GnuPG nebo knihovny OpenPGP.

Čím se liší od openpgp.js? openpgp.js je úplná implementace (šifrování, dešifrování, podepisování, ověřování), kterou vkládáte do aplikace; tato stránka je inspektor bez závislostí pro čtení a audit struktur OpenPGP v prohlížeči.

Umí přečíst můj export GnuPG? Ano — klíče v4, v5 a v6, oddělené podpisy a zprávy. Klíče verze 3 jsou odmítnuty s poznámkou (zastaralé od roku 2014).

Proč existuje režim vstupu v hex? Surová data OpenPGP jsou binární; máte-li hex výpis klíčového kroužku nebo souboru .gpg, vložte hex a parser jej zpracuje přesně jako dekódované bajty.

Nahrává se něco? Ne. Parsování, výpočet otisků i generování zpráv probíhají na této kartě; stránka běží zcela ve vašem prohlížeči.