OpenPGP-nyckelinspektör & paketanalysator

Klistra in en armorerad OpenPGP-nyckel, signatur eller ett meddelande — eller läs in en binär .gpg-fil — och se fingeravtrycket, nyckel-ID:t, användar-ID:n, undernycklar, signaturpaket och det råa paketträdet. Allt sker i webbläsaren; inget laddas upp.
Endast tolk. Detta verktyg avkodar och visar OpenPGP-data — det verifierar aldrig signaturer kryptografiskt, dekrypterar aldrig och frågar aldrig efter lösenfraser. För att faktiskt verifiera eller dekryptera, använd GnuPG (gpg --verify, gpg -d) med en egen nyckelring. Och som med alla verktyg: riktiga privata nycklar hör hemma i nyckelringen, inte i en webbläsarflik.
Accepterar alla armor-typer: PUBLIC KEY BLOCK, PRIVATE KEY BLOCK, MESSAGE, SIGNATURE, ARMORED FILE.
binär nyckelringsexport / .sig / .gpg — läses lokalt, laddas aldrig upp
Vad detta verktyg kontrollerar — och vad det avsiktligt inte gör
Det avkodar armorn (etikett, rubriker, base64-nyttolast, CRC-24-kontrollsumman för överföringen), tolkar varje paket i gammalt och nytt huvudformat, läser v4-, v5- och v6-nyckelpaket (algoritm, MPI-storlekar, skapandetid), beräknar v4-fingeravtryck (SHA-1) och v6-fingeravtryck (SHA-256), härleder nyckel-ID:n, listar användar-ID:n, undernycklar och signatur-subpaket. Det verifierar inte signaturer (det kräver hela RFC 9580 §5.2.4-hash- och verifieringsmaskineriet plus en betrodd nyckelring), dekrypterar inte och hämtar inte nycklar från nyckelservrar. Jämför alltid utdata med GnuPG: gpg --show-keys file.asc skriver ut fingeravtryck och användar-ID:n, gpg --list-packets file.asc dumpar paketstrukturen.
Exempelnycklar på denna sida — de fyra Exempel-knapparna klistrar in en riktig RSA-2048 OpenPGP v4-nyckel som genererats enbart för denna sida (aldrig använd någon annanstans). Exempelns privata nyckel är lagrad okrypterad (S2K-användning 0) med avsikt, så att tolken kan visa layouten för de hemliga MPI:erna; en verkligen exporterad privat nyckel skulle i stället visa sin chiffer och S2K-härledning.
Självtest
Kör tolken igen mot den inbäddade exempelnyckeln, en fristående signatur och ett signerat meddelande: armor-etiketter, CRC-24-kontroll och avsiktlig korrumpering, paketetikettsekvenser, v4-fingeravtryck och nyckel-ID mot oberoende beräknade värden, användar-ID:n, undernyckelfingeravtryck, detektering av hemlig nyckel, samt negativa tester (skräp och avkortade paket måste avvisas). Inget skickas någonstans.
OpenPGP förklarat från grunden
I en mening: OpenPGP är en öppen standard (RFC 4880, uppdaterad av RFC 9580 2024) för end-to-end-kryptering och digitala signaturer, mest känd för att skydda e-post — och allt färdas i små märkta binära paket som vanligtvis är inslagna i ett textvänligt "armor"-lager.
Vad är OpenPGP?

PGP ("Pretty Good Privacy") släpptes av Phil Zimmermann 1991 som ett program som vem som helst kunde använda för att kryptera och signera meddelanden. För att komma ifrån problemet med en enda leverantör standardiserades meddelandeformatet som OpenPGP (RFC 2440 1998, RFC 4880 2007, RFC 9580 2024). Idag är GnuPG den vanligaste implementationen, och samma paketformat förekommer också i signerade git-incheckningar, signering av programpaket, nyckelservrar och DNS-posten OPENPGPKEY.

Modellen är end-to-end: var och en av parterna genererar ett personligt nyckelpar; det som krypteras för en part kan bara dekrypteras av dess privata nyckel, som aldrig lämnar datorn. I stället för en central certifikatutfärdare (som i TLS) kommer förtroendet för andras nycklar från att signera varandras nycklar — ett "förtroendenät" (web of trust). Om man använder det nätet eller helt enkelt jämför fingeravtryck utanför kanalen (ett telefonsamtal, ett visitkort) är upp till var och en; formatet tvingar inte fram något av dem.

Vad är en OpenPGP-nyckel?

En OpenPGP-"nyckel" är egentligen ett litet paket av paket: ett primärt nyckelpaket (ankaret för identiteten, normalt tillåtet att signera), ett eller flera User ID-paket ("Alice <alice@example.com>"), självsignaturer som binder dessa ID:n till den primära nyckeln, och eventuellt undernycklar med egna bindande signaturer — typiskt en separat krypteringsundernyckel, så att den dyrbara primära nyckeln kan hållas offline. Hela det armorerade blocket som klistras in på denna sida är just detta paket.

Fingeravtrycket är hashen av det primära nyckelpaketet — SHA-1 (20 byte) för v4-nycklar, SHA-256 (32 byte) för v6-nycklar — beräknad enbart över den publika delen. Nyckel-ID:t är bara de sista 8 byten av ett v4-fingeravtryck (de första 8 för v5). Fingeravtryck är det som jämförs utanför kanalen för att säkerställa att ingen bytt ut nyckeln på vägen; nyckel-ID:n är ett kort handtag för nyckelservrar och är inte kollisionssäkra mot en envis angripare.

Algoritm-IDNamnTypisk användning i en nyckel
1RSAKlassisk allroundare; 2048–4096 bitar, signera och/eller kryptera
19ECDSANIST-kurvor (P-256 m.fl.), signering
18ECDHCurve25519/P-256-nyckelutbyte, krypteringsundernycklar
22EdDSAEd25519-signering (den moderna standarden i GnuPG 2.4+)
25X25519Krypteringsundernycklar parade med Ed25519-primärnycklar (v6-nycklar)

Ett privat nyckelblock bär de hemliga talen efter den publika delen: en S2K-användningsoktett som anger hur de skyddas (0 = oskyddad, 254/255 = lösenfras-härledd nyckel med en chiffer), sedan de hemliga MPI:erna och en kontrollsumma. Denna sida visar skyddsläget men frågar aldrig efter en lösenfras och försöker aldrig dekryptera det hemliga materialet.

Vad är ett OpenPGP-paket?

Under armorn är varje OpenPGP-objekt en sekvens av paket. Varje paket börjar med en taggbyte: det gamla formatet packar en 4-bitars pakettyp och en längdtyp i den, medan det nya formatet (CTB, bit 6 satt) använder en 6-bitars typ och längdbyte som till och med kan beskriva data i delvisa segment. Vanliga taggar: 6 = publik nyckel, 5 = hemlig nyckel, 14 = undernyckel, 13 = User ID, 2 = signatur, 4 = enpassignatur, 11 = bokstavlig data, 8 = komprimerad data, 18 = krypterad och MDC-skyddad data. Denna sida skriver ut taggen, huvudformatet, längden och en hexdump för varje paket den hittar, och ger ett fel med bytepositionen när ett paketrubrik är felaktig.

Signaturpaket bär sin metadata i hashade och ohashade subpaketområden. Endast det hashade området täcks av signaturen själv; det ohashade området (historiskt använt för signerarens nyckel-ID) kan fritt skrivas om av vem som helst under överföringen, så läsare måste behandla det som en ledtråd, aldrig som ett faktum. Självsignaturen på ett User ID är det som faktiskt binder namnet till nyckeln; ett nyckelpaket ensamt, inklistrat på egen hand, bevisar inte vem som äger det.

ASCII-armor är textomslaget: -----BEGIN PGP PUBLIC KEY BLOCK-----, valfria rubriker såsom Version: eller Comment:, base64 av paketströmmen och en avslutande rad =xxxx med en 24-bitars CRC. Den CRC:n fångar bara överföringsfel — ändras ett base64-tecken flaggar denna sida det — men den är inte en signatur och bevisar ingenting om författarskap.

Vanliga misstag
  • Att lita på en nyckel utan att jämföra fingeravtryck. Vem som helst kan generera en nyckel med vilket namn som helst. Jämförelsen av fingeravtryck över en kanal som redan är betrodd (personligen, per telefon) är hela autentiseringssteget.
  • Att förväxla armor-CRC med en signatur. En "CRC OK"-markering betyder att base64-texten klarade överföringen, inget mer. Verifiering är en kryptografisk operation som denna sida avsiktligt inte utför.
  • Att använda nyckel-ID:n som identitet. 64-bitars nyckel-ID:n kan förfalskas av en angripare med måttlig beräkningskraft (en "nyckel-ID-kollision"); citera alltid fullständiga fingeravtryck.
  • Att klistra in riktiga privata nycklar på webbsidor. Även en lokal sida utan uppladdning, som denna, är en vana man inte vill skaffa sig. Exemplen här är engångsnycklar som genererats för demonstrationen.
  • Att anta att "PGP MESSAGE" betyder krypterat. Armor-etiketten säger ingenting om innehållet — exempelmeddelandet på denna sida är signerat men i klartext, och pakettagg 18 mot 11 är det som faktiskt skiljer krypterad data från bokstavlig data.
  • Importera v3-nycklar. Version 3-nycklar (design från före 1996, svaga 16-bitars nyckel-ID:n) har varit avskaffade sedan 2014; denna inspektör avvisar dem med avsikt.
Vanliga frågor

Verifierar detta signaturer? Nej. Det tolkar och visar. Signaturverifiering kräver hela RFC 9580 hash-trailer-konstruktionen, signerarens publika nyckel och ett beslut om att lita på den nyckeln — uppgiften för GnuPG eller ett OpenPGP-bibliotek.

Hur skiljer sig detta från openpgp.js? openpgp.js är en fullständig implementation (krypterar, dekrypterar, signerar, verifierar) som bäddas in i en app; denna sida är en beroendefri inspektör för att läsa och granska OpenPGP-strukturer i webbläsaren.

Kan den läsa en GnuPG-export? Ja — v4-, v5- och v6-nycklar, fristående signaturer och meddelanden. Version 3-nycklar avvisas med en notering (avskaffade sedan 2014).

Varför finns det ett hex-indataläge? Rå OpenPGP-data är binär; har man en hexdump av en nyckelring eller en .gpg-fil klistrar man in hexen, och tolken behandlar den precis som de avkodade byten.

Laddas något upp? Nej. Tolkning, fingeravtrycksberäkning och rapportgenerering sker helt i denna flik; sidan körs enbart i webbläsaren.