OpenPGP-sleutelinspecteur & pakketparser

Plak een ASCII-armor OpenPGP-sleutel, handtekening of bericht — of laad een binair .gpg-bestand — en bekijk de vingerafdruk, sleutel-ID, gebruikers-ID's, subsleutels, handtekeningpakketten en de ruwe pakketboom. Volledig in uw browser; er wordt niets geüpload.
Alleen parser. Deze tool decodeert en toont OpenPGP-gegevens — hij verifieert handtekeningen nooit cryptografisch, ontsleutelt nooit en vraagt nooit om wachtwoordzinnen. Om echt te verifiëren of te ontsleutelen gebruikt u GnuPG (gpg --verify, gpg -d) met uw eigen sleutelring. En zoals bij elke tool: echte privésleutels horen in uw sleutelring, niet in een browsertabblad.
Accepteert elk armortype: PUBLIC KEY BLOCK, PRIVATE KEY BLOCK, MESSAGE, SIGNATURE, ARMORED FILE.
binaire sleutelringexport / .sig / .gpg — lokaal gelezen, nooit geüpload
Wat deze tool controleert — en wat hij bewust niet doet
Hij decodeert de armor (label, headers, base64-payload, de CRC-24-transportcontrolesom), parseert elk pakket in oud en nieuw headerformaat, leest v4/v5/v6-sleutelpakketten (algoritme, MPI-groottes, aanmaaktijd), berekent v4-vingerafdrukken (SHA-1) en v6-vingerafdrukken (SHA-256), leidt sleutel-ID's af, en somt gebruikers-ID's, subsleutels en handtekeningsubpakketten op. Hij verifieert geen handtekeningen (dat vereist de volledige hash-en-verifieer-mechanismen van RFC 9580 §5.2.4 plus een vertrouwde sleutelring), ontsleutelt niet en haalt geen sleutels van sleutelservers op. Controleer elke uitvoer tegen GnuPG: gpg --show-keys file.asc toont vingerafdruk en gebruikers-ID's, gpg --list-packets file.asc dumpt de pakketstructuur.
Voorbeeldsleutels op deze pagina — de vier knoppen Voorbeeld plakken een echte RSA-2048 OpenPGP v4-sleutel die puur voor deze pagina is gegenereerd (nergens anders gebruikt). De voorbeeldprivésleutel is bewust niet versleuteld opgeslagen (S2K-gebruik 0), zodat de parser de layout van de geheime MPI's kan tonen; een echte geëxporteerde privésleutel zou in plaats daarvan zijn cijfer en S2K-afleiding tonen.
Zelftest
Voert de parser opnieuw uit tegen de ingebedde voorbeeldsleutel, een losse handtekening en een ondertekend bericht: armorlabels, CRC-24-controle en opzettelijke beschadiging, reeksen pakkettags, v4-vingerafdruk en sleutel-ID tegen onafhankelijk berekende waarden, gebruikers-ID's, vingerafdrukken van subsleutels, detectie van geheime sleutels, plus negatieve tests (rommelinvoer en afgekapte pakketten moeten worden geweigerd). Er wordt niets ergens naartoe verzonden.
OpenPGP vanaf nul uitgelegd
In één zin: OpenPGP is een open standaard (RFC 4880, bijgewerkt door RFC 9580 in 2024) voor end-to-end-versleuteling en digitale handtekeningen, het bekendst om het beveiligen van e-mail — en alles reist in kleine gelabelde binaire pakketten die meestal in een tekstvriendelijke "armor"-laag zijn verpakt.
Wat is OpenPGP?

PGP ("Pretty Good Privacy") werd in 1991 door Phil Zimmermann uitgebracht als programma dat iedereen kon gebruiken om berichten te versleutelen en te ondertekenen. Om het probleem van één leverancier te vermijden, werd het berichtenformaat gestandaardiseerd als OpenPGP (RFC 2440 in 1998, RFC 4880 in 2007, RFC 9580 in 2024). Tegenwoordig is GnuPG de meest gebruikte implementatie, en hetzelfde pakketformaat komt ook voor in ondertekende git-commits, het ondertekenen van softwarepakketten, sleutelservers en het OPENPGPKEY-DNS-record.

Het model is end-to-end: u en uw correspondent genereren elk een persoonlijk sleutelpaar; wat voor u wordt versleuteld, kan alleen door uw privésleutel worden ontsleuteld, die uw apparaat nooit verlaat. In plaats van een centrale certificaatautoriteit (zoals bij TLS), komt het vertrouwen in andermans sleutels voort uit het over en weer ondertekenen van elkaars sleutels — het "web of trust". Of u dat web gebruikt of gewoon vingerafdrukken buiten de band vergelijkt (een telefoontje, een visitekaartje), is aan u; het formaat dwingt geen van beide af.

Wat is een OpenPGP-sleutel?

Een OpenPGP-"sleutel" is eigenlijk een klein bundeltje pakketten: één primair sleutelpakket (uw identiteitsanker, gewoonlijk toegestaan om te ondertekenen), een of meer gebruikers-ID-pakketten ("Alice <alice@example.com>"), zelfhandtekeningen die die ID's aan de primaire sleutel binden, en optioneel subsleutels met hun eigen bindingshandtekeningen — meestal een aparte versleutelingssubsleutel, zodat de kostbare primaire sleutel offline kan blijven. Het hele armorblok dat u in deze pagina plakt is die bundel.

De vingerafdruk is de hash van het primaire sleutelpakket — SHA-1 (20 bytes) voor v4-sleutels, SHA-256 (32 bytes) voor v6-sleutels — berekend over alleen het publieke deel. De sleutel-ID is gewoon de laatste 8 bytes van een v4-vingerafdruk (eerste 8 voor v5). Vingerafdrukken zijn wat u buiten de band vergelijkt om zeker te zijn dat niemand de sleutel heeft verwisseld op weg naar u; sleutel-ID's zijn een korte verwijzing voor sleutelservers en zijn niet botsingsbestendig tegen een vastberaden aanvaller.

Algoritme-IDNaamGebruikelijk gebruik in een sleutel
1RSAKlassieke duizendpoot; 2048–4096 bits, ondertekenen en/of versleutelen
19ECDSANIST-curven (P-256 enz.), ondertekenen
18ECDHCurve25519/P-256 sleutelovereenkomst, versleutelingssubsleutels
22EdDSAEd25519-ondertekening (de moderne standaard in GnuPG 2.4+)
25X25519Versleutelingssubsleutels gekoppeld aan Ed25519-primaire sleutels (v6-sleutels)

Een privésleutelblok bevat de geheime getallen na het publieke deel: een S2K-gebruiksoctet dat aangeeft hoe ze beschermd zijn (0 = onbeschermd, 254/255 = door wachtwoordzin afgeleide sleutel met een cijfer), daarna de geheime MPI's en een controlesom. Deze pagina toont die beschermingsmodus, maar vraagt nooit om een wachtwoordzin en probeert nooit het geheime materiaal te ontsleutelen.

Wat is een OpenPGP-pakket?

Onder de armor is elk OpenPGP-object een reeks pakketten. Elk begint met een tagbyte: het oude formaat stopt er een pakkettype van 4 bits en een lengtetype in, het nieuwe formaat (CTB, bit 6 gezet) gebruikt een type van 6 bits en lengtebytes die zelfs gegevens in gedeeltelijke stukken kunnen beschrijven. Veelvoorkomende tags: 6 = publieke sleutel, 5 = geheime sleutel, 14 = subsleutel, 13 = gebruikers-ID, 2 = handtekening, 4 = one-pass-handtekening, 11 = letterlijke gegevens, 8 = gecomprimeerde gegevens, 18 = versleutelde en MDC-beschermde gegevens. Deze pagina drukt de tag, het headerformaat, de lengte en een hexdump af voor elk pakket dat hij vindt, en geeft een fout met een bytepositie wanneer een pakketheader ongeldig is.

Handtekeningpakketten dragen hun metadata in gehashte en ongehashte subpakketgebieden. Alleen het gehashte gebied wordt door de handtekening zelf gedekt; het ongehashte gebied (historisch gebruikt voor de sleutel-ID van de uitgever) kan onderweg door iedereen vrij worden herschreven, dus lezers moeten het als aanwijzing behandelen, nooit als feit. De zelfhandtekening op een gebruikers-ID is wat de naam werkelijk aan de sleutel bindt; een sleutelpakket dat alleen los wordt geplakt, bewijst niets over wie het bezit.

ASCII-armor is de tekstomhulling: -----BEGIN PGP PUBLIC KEY BLOCK-----, optionele headers zoals Version: of Comment:, base64 van de pakketstroom, en een laatste regel =xxxx met een 24-bits CRC. Die CRC vangt alleen transportbeschadiging op — verander één base64-teken en deze pagina markeert het — maar het is geen handtekening en bewijst niets over auteurschap.

Veelgemaakte fouten
  • Een sleutel vertrouwen zonder de vingerafdrukken te vergelijken. Iedereen kan een sleutel met elke naam maken. De vergelijking van vingerafdrukken via een kanaal dat u al vertrouwt (persoonlijk, telefonisch) is de volledige authenticatiestap.
  • De armor-CRC verwarren met een handtekening. Een badge "CRC OK" betekent alleen dat de base64 de reis heeft overleefd, meer niet. Verificatie is een cryptografische bewerking die deze pagina bewust niet uitvoert.
  • Sleutel-ID's als identiteit gebruiken. 64-bits sleutel-ID's kunnen door een aanvaller met bescheiden rekenkracht worden vervalst (een "sleutel-ID-botsing"); citeer altijd volledige vingerafdrukken.
  • Echte privésleutels in webpagina's plakken. Zelfs een lokale pagina zonder upload zoals deze is een gewoonte die u niet wilt aanleren. De voorbeelden hier zijn wegwerpsleutels die voor de demo zijn gegenereerd.
  • Aannemen dat "PGP MESSAGE" versleuteld betekent. Het armorlabel zegt niets over de inhoud — het voorbeeldbericht op deze pagina is ondertekend maar niet versleuteld, en pakkettag 18 versus 11 is wat versleutelde van letterlijke gegevens echt onderscheidt.
  • V3-sleutels importeren. Versie 3-sleutels (ontwerp van vóór 1996, zwakke 16-bits sleutel-ID's) zijn sinds 2014 afgekeurd; deze inspecteur weigert ze bewust.
Veelgestelde vragen

Verifieert dit handtekeningen? Nee. Het parseert en toont. Handtekeningverificatie vereist de volledige hash-trailerconstructie van RFC 9580, de publieke sleutel van de ondertekenaar, en een beslissing of u die sleutel vertrouwt — het werk van GnuPG of een OpenPGP-bibliotheek.

Hoe verschilt dit van openpgp.js? openpgp.js is een volledige implementatie (versleutelen, ontsleutelen, ondertekenen, verifiëren) die u in uw app inbedt; deze pagina is een afhankelijkheidsvrije inspecteur voor het lezen en controleren van OpenPGP-structuren in de browser.

Kan het mijn GnuPG-export lezen? Ja — v4-, v5- en v6-sleutels, losse handtekeningen en berichten. Versie 3-sleutels worden met een opmerking geweigerd (sinds 2014 afgekeurd).

Waarom is er een hexinvoermodus? Ruwe OpenPGP-gegevens zijn binair; als u een hexdump van een sleutelring of een .gpg-bestand heeft, plak dan de hex en de parser behandelt die precies als de gedecodeerde bytes.

Wordt er iets geüpload? Nee. Parseren, vingerafdrukken en het genereren van het rapport gebeuren allemaal in dit tabblad; de pagina draait volledig in uw browser.