OpenPGP-nøkkelinspektør & pakkeanalysator

Lim inn en armert OpenPGP-nøkkel, signatur eller melding — eller last inn en binær .gpg-fil — og se fingeravtrykket, nøkkel-ID-en, bruker-ID-er, undernøkler, signaturpakker og det rå pakketreet. Helt i nettleseren; ingenting lastes opp.
Kun tolker. Dette verktøyet dekoder og viser OpenPGP-data — det verifiserer aldri signaturer kryptografisk, dekrypterer aldri og ber aldri om passfraser. For å faktisk verifisere eller dekryptere, bruk GnuPG (gpg --verify, gpg -d) med egen nøkkelring. Og som med ethvert verktøy: ekte private nøkler hører hjemme i nøkkelringen, ikke i en nettleserfane.
Godtar alle armeringstyper: PUBLIC KEY BLOCK, PRIVATE KEY BLOCK, MESSAGE, SIGNATURE, ARMORED FILE.
binær nøkkelringeksport / .sig / .gpg — leses lokalt, lastes aldri opp
Hva dette verktøyet kontrollerer — og hva det bevisst ikke gjør
Det dekoder armeringen (etikett, headere, base64-nyttelast, CRC-24-transportsjekksummen), tolker hver pakke i både gammelt og nytt headerformat, leser v4/v5/v6-nøkkelpakker (algoritme, MPI-størrelser, opprettelsestid), beregner v4-fingeravtrykk (SHA-1) og v6-fingeravtrykk (SHA-256), utleder nøkkel-ID-er, og lister bruker-ID-er, undernøkler og signatursubpakker. Det verifiserer ikke signaturer (det krever hele RFC 9580 §5.2.4-maskineriet for hashing og verifisering pluss en betrodd nøkkelring), dekrypterer ikke, og henter ikke nøkler fra nøkkelservere. Kryssjekk alt utdata mot GnuPG: gpg --show-keys file.asc skriver ut fingeravtrykk og bruker-ID-er, og gpg --list-packets file.asc dumper pakkestrukturen.
Eksempelnøkler på denne siden — de fire eksempelknappene limer inn en ekte RSA-2048 OpenPGP v4-nøkkel som kun er generert for denne siden (aldri brukt noe sted). Eksempelet med privat nøkkel er lagret ukryptert (S2K-bruk 0) med vilje, slik at tolkeren kan vise oppsettet for den hemmelige MPI-en; en ekte eksportert privat nøkkel ville i stedet vist sin chiffer og S2K-utledning.
Selvtest
Kjører tolkeren på nytt mot den innebygde eksempelnøkkelen, en frakoblet signatur og en signert melding: armeringsetiketter, CRC-24-kontroll og bevisst korrupsjon, pakketaggsekvenser, v4-fingeravtrykk og nøkkel-ID mot uavhengig beregnede verdier, bruker-ID-er, undernøkkelfingeravtrykk, deteksjon av hemmelig nøkkel, pluss negative tester (søppelinndata og avkortede pakker må avvises). Ingenting sendes noe sted.
OpenPGP forklart fra grunnen av
I én setning: OpenPGP er en åpen standard (RFC 4880, oppdatert av RFC 9580 i 2024) for ende-til-ende-kryptering og digitale signaturer, mest kjent for å sikre e-post — og alt sendes i små merkede binærpakker som vanligvis er pakket inn i et tekstvennlig "armeringslag".
Hva er OpenPGP?

PGP ("Pretty Good Privacy") ble lansert av Phil Zimmermann i 1991 som et program alle kunne bruke til å kryptere og signere meldinger. For å komme unna problemet med én leverandør ble meldingsformatet standardisert som OpenPGP (RFC 2440 i 1998, RFC 4880 i 2007, RFC 9580 i 2024). I dag er GnuPG den vanligste implementasjonen, og det samme pakkeformatet dukker også opp i signerte git-commits, signering av programvarepakker, nøkkelservere og OPENPGPKEY DNS-posten.

Modellen er ende-til-ende: man og korrespondenten genererer hvert sitt personlige nøkkelpar; alt som krypteres for en, kan bare dekrypteres med den private nøkkelen, som aldri forlater maskinen. I stedet for en sentral sertifikatmyndighet (som i TLS) kommer tillit til andres nøkler fra at man signerer hverandres nøkler — "tillitsnettet". Om man bruker det nettet eller bare sammenligner fingeravtrykk utenfor kanalen (et telefonanrop, et visittkort), er opp til den enkelte; selve formatet tvinger ingen av delene.

Hva er en OpenPGP-nøkkel?

En OpenPGP-"nøkkel" er egentlig en liten pakke med pakker: én primærnøkkelpakke (ankeret for identiteten, vanligvis tillatt å signere), én eller flere bruker-ID-pakker ("Alice <alice@example.com>"), selvsignaturer som binder disse ID-ene til primærnøkkelen, og eventuelt undernøkler med egne bindingssignaturer — typisk en egen krypteringsundernøkkel, slik at den verdifulle primærnøkkelen kan holdes frakoblet. Hele den armerte blokken som limes inn på denne siden, er den pakken.

Fingeravtrykket er hashen av primærnøkkelpakken — SHA-1 (20 byte) for v4-nøkler, SHA-256 (32 byte) for v6-nøkler — beregnet over bare den offentlige delen. Nøkkel-ID-en er bare de siste 8 bytene av et v4-fingeravtrykk (de første 8 for v5). Fingeravtrykk er det som sammenlignes utenfor kanalen for å forsikre seg om at ingen byttet nøkkelen på veien frem; nøkkel-ID-er er et kort håndtak for nøkkelservere og er ikke kollisjonssikre mot en besluttsom angriper.

Algoritme-IDNavnTypisk bruk i en nøkkel
1RSAKlassisk allrounder; 2048–4096 bit, signering og/eller kryptering
19ECDSANIST-kurver (P-256 osv.), signering
18ECDHCurve25519/P-256-nøkkelavtale, krypteringsundernøkler
22EdDSAEd25519-signering (standard i GnuPG 2.4+)
25X25519Krypteringsundernøkler parret med Ed25519-hovednøkler (v6-nøkler)

En privat nøkkelblokk bærer de hemmelige tallene etter den offentlige delen: en S2K-bruksoktet som sier hvordan de er beskyttet (0 = ubeskyttet, 254/255 = passfrase-utledet nøkkel med en chiffer), deretter de hemmelige MPI-ene og en sjekksum. Denne siden viser beskyttelsesmodusen, men ber aldri om en passfrase og forsøker aldri å dekryptere det hemmelige materialet.

Hva er en OpenPGP-pakke?

Under armeringen er hvert OpenPGP-objekt en sekvens av pakker. Hver starter med en tagg-byte: det gamle formatet pakker en 4-bits pakketype og en lengdetype inn i den, mens det nye formatet (CTB, bit 6 satt) bruker en 6-bits type og lengdebyte som til og med kan beskrive data i delvise biter. Vanlige tagger: 6 = offentlig nøkkel, 5 = hemmelig nøkkel, 14 = undernøkkel, 13 = bruker-ID, 2 = signatur, 4 = enkeltpass-signatur, 11 = literale data, 8 = komprimerte data, 18 = kryptert og MDC-beskyttede data. Denne siden skriver ut tagg, headerformat, lengde og en heksadesimal dump for hver pakke den finner, og gir feil med en bytepossisjon når en pakkeheader er ugyldig.

Signaturpakker bærer metadataene sine i hashede og uhashede subpakkeområder. Bare det hashede området dekkes av selve signaturen; det uhashede området (historisk brukt for utsteder-nøkkel-ID) kan skrives om fritt av hvem som helst underveis, så lesere må behandle det som et hint, aldri som fakta. Selvsignaturen på en bruker-ID er det som faktisk binder navnet til nøkkelen; en nøkkelpakke alene, limt inn for seg selv, beviser ingenting om hvem den tilhører.

ASCII-armering er tekstomslaget: -----BEGIN PGP PUBLIC KEY BLOCK-----, valgfrie headere som Version: eller Comment:, base64 av pakkestrømmen, og en siste =xxxx-linje som holder en 24-bits CRC. Den CRC-en fanger bare opp korrupsjon under transport — endres ett base64-tegn, flagger denne siden det — men den er ikke en signatur og beviser ingenting om forfatterskap.

Vanlige feil
  • Å stole på en nøkkel uten å sammenligne fingeravtrykk. Hvem som helst kan generere en nøkkel med et hvilket som helst navn. Sammenligningen av fingeravtrykk over en kanal man allerede stoler på (personlig, per telefon) er hele autentiseringssteget.
  • Å forveksle armerings-CRC med en signatur. En "CRC OK"-merkelapp betyr at base64-teksten kom gjennom transporten, ikke mer. Verifisering er en kryptografisk operasjon som denne siden bevisst ikke utfører.
  • Å bruke nøkkel-ID-er som identitet. 64-bits nøkkel-ID-er kan forfalskes av en angriper med moderat regnekraft (en "nøkkel-ID-kollisjon"); siter alltid hele fingeravtrykk.
  • Å lime inn ekte private nøkler på nettsider. Selv en lokal side uten opplasting, som denne, er en vane man ikke ønsker å utvikle. Eksemplene her er engangsnøkler generert for demoen.
  • Anta at "PGP MESSAGE" betyr kryptert. Armeringsetiketten sier ingenting om innholdet — eksempelmeldingen på denne siden er signert, men i klartekst, og det er pakketaggen 18 kontra 11 som faktisk skiller kryptert fra literale data.
  • Import av v3-nøkler. Versjon 3-nøkler (designet før 1996, med svake 16-bits nøkkel-ID-er) har vært avskrevet siden 2014; denne inspektøren avviser dem med vilje.
Ofte stilte spørsmål

Verifiserer dette signaturer? Nei. Det tolker og viser. Signaturverifisering krever hele RFC 9580 hash-trailer-konstruksjonen, signatørens offentlige nøkkel og en avgjørelse om man stoler på den nøkkelen — jobben til GnuPG eller et OpenPGP-bibliotek.

Hvordan er dette forskjellig fra openpgp.js? openpgp.js er en fullstendig implementasjon (kryptere, dekryptere, signere, verifisere) som bygges inn i en app; denne siden er en avhengighetsfri inspektør for å lese og revidere OpenPGP-strukturer i nettleseren.

Kan den lese GnuPG-eksporten min? Ja — v4-, v5- og v6-nøkler, frakoblede signaturer og meldinger. Versjon 3-nøkler avvises med en merknad (avskrevet siden 2014).

Hvorfor finnes det en heksinndatamodus? Rå OpenPGP-data er binære; har man en heksadesimal dump av en nøkkelring eller en .gpg-fil, lim inn heksen, så behandler tolkeren den nøyaktig som de dekodede byteene.

Lastes noe opp? Nei. Tolkning, fingeravtrykk og rapportgenerering skjer alt i denne fanen; siden kjøres helt i nettleseren.