OpenPGP-nøgleinspektør & pakkeanalysator

Indsæt en armor-kodet OpenPGP-nøgle, signatur eller besked — eller indlæs en binær .gpg-fil — og se fingeraftrykket, nøgle-ID'et, bruger-ID'er, undernøgler, signaturpakker og det rå pakketræ. Helt i browseren; intet uploades.
Kun parser. Dette værktøj afkoder og viser OpenPGP-data — det verificerer aldrig signaturer kryptografisk, dekrypterer aldrig og beder aldrig om adgangsfraser. For at verificere eller dekryptere bruges GnuPG (gpg --verify, gpg -d) med en lokal nøglering. Og som med ethvert værktøj: rigtige private nøgler hører hjemme i nøgleringen, ikke i en browserfane.
Accepterer alle armor-typer: PUBLIC KEY BLOCK, PRIVATE KEY BLOCK, MESSAGE, SIGNATURE, ARMORED FILE.
binær nøglering-eksport / .sig / .gpg — læses lokalt, uploades aldrig
Hvad dette værktøj kontrollerer — og hvad det bevidst ikke gør
Det afkoder armor (label, headere, base64-nyttelast, CRC-24-transportkontrolsummen), analyserer hver pakke i både gammelt og nyt headerformat, læser v4/v5/v6-nøglepakker (algoritme, MPI-størrelser, oprettelsestidspunkt), beregner v4-fingeraftryk (SHA-1) og v6-fingeraftryk (SHA-256), udleder nøgle-ID'er og lister bruger-ID'er, undernøgler og signatur-underpakker. Det verificerer ikke signaturer (det kræver hele RFC 9580 §5.2.4-hash-og-verificér-mekanismen plus en betroet nøglering), dekrypterer ikke og henter ikke nøgler fra nøgleservere. Krydstjek al output mod GnuPG: gpg --show-keys file.asc udskriver fingeraftryk og bruger-ID'er, og gpg --list-packets file.asc dumper pakkestrukturen.
Eksempelnøgler på denne side — de fire Eksempel-knapper indsætter en rigtig RSA-2048 OpenPGP v4-nøgle, der kun er genereret til denne side (aldrig brugt andre steder). Eksempelnøglen til private nøgler er bevidst gemt ukrypteret (S2K-brug 0), så parseren kan vise layoutet for de hemmelige MPI'er; en rigtig eksporteret privat nøgle ville i stedet vise sin chiffer og S2K-afledning.
Selvtest
Kører parseren igen mod den indlejrede eksempelnøgle, en frakoblet signatur og en signeret besked: armor-labels, CRC-24-kontrol og bevidst korruption, pakketag-sekvenser, v4-fingeraftryk og nøgle-ID mod uafhængigt beregnede værdier, bruger-ID'er, fingeraftryk for undernøgler, registrering af hemmelige nøgler samt negative tests (skrald-input og afkortede pakker skal afvises). Intet sendes nogen steder hen.
OpenPGP forklaret fra bunden
I én sætning: OpenPGP er en åben standard (RFC 4880, opdateret af RFC 9580 i 2024) til ende-til-ende-kryptering og digitale signaturer, mest kendt for at sikre e-mail — og alt transporteres i små mærkede binære pakker, som normalt er pakket ind i et tekstvenligt "armor"-lag.
Hvad er OpenPGP?

PGP ("Pretty Good Privacy") blev udgivet af Phil Zimmermann i 1991 som et program, alle kunne bruge til at kryptere og signere beskeder. For at undgå problemet med én leverandør blev beskedformatet standardiseret som OpenPGP (RFC 2440 i 1998, RFC 4880 i 2007, RFC 9580 i 2024). I dag er GnuPG den mest udbredte implementering, og det samme pakkeformat optræder også i signerede git-commits, signering af softwarepakker, nøgleservere og OPENPGPKEY-DNS-posten.

Modellen er ende-til-ende: hver part genererer et personligt nøglepar; det, der krypteres til en modtager, kan kun dekrypteres af dennes private nøgle, som aldrig forlader maskinen. I stedet for en central certifikatudsteder (som TLS) kommer tilliden til andres nøgler fra at signere hinandens nøgler — "tillidsnettet". Om man bruger dette net eller blot sammenligner fingeraftryk uden for båndet (et telefonopkald, et visitkort), er op til den enkelte; selve formatet tvinger ikke til nogen af delene.

Hvad er en OpenPGP-nøgle?

En OpenPGP-"nøgle" er egentlig et lille bundt pakker: én primær nøglepakke (identitetsankeret, normalt tilladt til at signere), en eller flere bruger-ID-pakker („Alice <alice@example.com>“), selvsignaturer, der binder disse ID'er til den primære nøgle, og valgfrit undernøgler med deres egne bindingssignaturer — typisk en separat krypteringsundernøgle, så den værdifulde primære nøgle kan forblive offline. Hele den armor-kodede blok, der indsættes på denne side, er netop dette bundt.

Fingeraftrykket er den primære nøglepakkes hash — SHA-1 (20 bytes) for v4-nøgler, SHA-256 (32 bytes) for v6-nøgler — beregnet over kun den offentlige del. Nøgle-ID'et er blot de sidste 8 bytes af et v4-fingeraftryk (de første 8 for v5). Fingeraftryk er det, man sammenligner uden for båndet for at sikre, at ingen har byttet nøglen på vejen til modtageren; nøgle-ID'er er et kort håndtag til nøgleservere og er ikke kollisionssikre over for en målrettet angriber.

Algoritme-IDNavnTypisk brug i en nøgle
1RSAKlassisk alrounder; 2048–4096 bit, signering og/eller kryptering
19ECDSANIST-kurver (P-256 osv.), signering
18ECDHCurve25519/P-256 nøgleaftale, krypteringsundernøgler
22EdDSAEd25519-signering (den moderne standard i GnuPG 2.4+)
25X25519Krypteringsundernøgler parret med Ed25519-primærnøgler (v6-nøgler)

En privat nøglepakke bærer de hemmelige tal efter den offentlige del: en S2K-brugsoktet, der siger, hvordan de er beskyttet (0 = ubeskyttet, 254/255 = nøgle afledt af en adgangsfrase med en chiffer), derefter de hemmelige MPI'er og en kontrolsum. Denne side viser beskyttelsestilstanden, men beder aldrig om en adgangsfrase og forsøger aldrig at dekryptere det hemmelige materiale.

Hvad er en OpenPGP-pakke?

Under armoren er hvert OpenPGP-objekt en sekvens af pakker. Hver starter med en tagbyte: det gamle format pakker en 4-bit pakketype og en længdetype ind i den, og det nye format (CTB, bit 6 sat) bruger en 6-bit type og længdebytes, der endda kan beskrive data i delvise bidder. Almindelige tags: 6 = offentlig nøgle, 5 = hemmelig nøgle, 14 = undernøgle, 13 = bruger-ID, 2 = signatur, 4 = one-pass-signatur, 11 = bogstavelige data, 8 = komprimerede data, 18 = krypterede og MDC-beskyttede data. Denne side udskriver tag, headerformat, længde og et hex-dump for hver pakke, den finder, og giver en fejl med bytepositionen, når en pakkeheader er misdannet.

Signaturpakker bærer deres metadata i hashede og ikke-hashede underpakkeområder. Kun det hashede område dækkes af selve signaturen; det ikke-hashede område (historisk brugt til signatørens nøgle-ID) kan frit omskrives af hvem som helst undervejs, så læsere skal behandle det som et hint og aldrig som et faktum. Selvsignaturen på et bruger-ID er det, der faktisk binder navnet til nøglen; en nøglepakke alene, indsat på egen hånd, beviser ikke, hvem der ejer den.

ASCII-armor er tekstindpakningen: -----BEGIN PGP PUBLIC KEY BLOCK-----, valgfrie headere som Version: eller Comment:, base64 af pakkestrømmen og en afsluttende =xxxx-linje med en 24-bit CRC. Denne CRC fanger kun transportfejl — vendes ét base64-tegn, markerer denne side det — men den er ikke en signatur og beviser intet om forfatterskab.

Almindelige fejl
  • At stole på en nøgle uden at sammenligne fingeraftryk. Hvem som helst kan generere en nøgle med et hvilket som helst navn. Sammenligningen af fingeraftryk over en kanal, man allerede stoler på (personligt eller pr. telefon), er hele autentificeringstrinnet.
  • At forveksle armor-CRC med en signatur. Et "CRC OK"-mærke betyder kun, at base64-teksten overlevede transporten, intet mere. Verifikation er en kryptografisk operation, som denne side bevidst ikke udfører.
  • At bruge nøgle-ID'er som identitet. 64-bit nøgle-ID'er kan forfalskes af en angriber med moderat regnekraft (en "nøgle-ID-kollision"); citér altid fulde fingeraftryk.
  • At indsætte rigtige private nøgler på websider. Selv en lokal side uden upload som denne er en vane, man ikke bør opbygge. Eksemplerne her er engangsnøgler, genereret til demoen.
  • Antagelse om at "PGP MESSAGE" betyder krypteret. Armor-labelen siger intet om indholdet — eksempelbeskeden på denne side er signeret, men klartekst, og det er pakketag 18 mod 11, der faktisk skelner krypteret fra bogstavelige data.
  • Import af v3-nøgler. Version 3-nøgler (design fra før 1996, svage 16-bit nøgle-ID'er) har været forældede siden 2014; denne inspektør afviser dem med vilje.
Ofte stillede spørgsmål

Verificerer den signaturer? Nej. Den analyserer og viser. Signaturverifikation kræver hele RFC 9580-hash-trailer-konstruktionen, signatørens offentlige nøgle og en afgørelse af, om nøglen er til at stole på — opgaven for GnuPG eller et OpenPGP-bibliotek.

Hvordan adskiller den sig fra openpgp.js? openpgp.js er en fuld implementering (krypter, dekrypter, signér, verificér), der indlejres i en app; denne side er en afhængighedsfri inspektør til at læse og granske OpenPGP-strukturer i browseren.

Kan den læse min GnuPG-eksport? Ja — v4-, v5- og v6-nøgler, frakoblede signaturer og beskeder. Version 3-nøgler afvises med en note (forældet siden 2014).

Hvorfor findes der en hex-inputtilstand? Rå OpenPGP-data er binære; har man et hex-dump af en nøglering eller en .gpg-fil, indsættes hex'en, og parseren behandler den præcis som de afkodede bytes.

Uploades noget? Nej. Analyse, fingeraftryk og rapportgenerering sker alt sammen i denne fane; siden kører helt i browseren.