OpenPGP-kulcsvizsgáló és csomagelemző

Armor-OpenPGP-kulcs, aláírás vagy üzenet beilleszthető — vagy bináris .gpg fájl tölthető be —, és megtekinthető az ujjlenyomat, a kulcsazonosító, a felhasználói azonosítók, az alkulcsok, az aláírás-csomagok és a nyers csomagfa. Teljesen a böngészőben fut; semmi nem kerül feltöltésre.
Csak elemző. Ez az eszköz OpenPGP-adatokat dekódol és jelenít meg — kriptográfiai aláírás-ellenőrzést nem végez, nem fejt vissza, és jelmondatot sem kér. Az aláírások ellenőrzéséhez vagy visszafejtéshez a GnuPG (gpg --verify, gpg -d) használható a saját kulcskarikával. És mint minden eszköznél: a valódi privát kulcsok a kulcskarikába valók, nem egy böngészőlapra.
Minden armor-típust elfogad: PUBLIC KEY BLOCK, PRIVATE KEY BLOCK, MESSAGE, SIGNATURE, ARMORED FILE.
bináris kulcskarika-export / .sig / .gpg — helyben olvasva, soha nem töltve fel
Mit ellenőriz ez az eszköz — és mit szándékosan nem
Dekódolja az armort (címke, fejlécek, base64-adatok, a CRC-24 átviteli ellenőrző összeg), elemzi az összes csomagot a régi és az új fejlécformátumban, beolvassa a v4/v5/v6 kulcscsomagokat (algoritmus, MPI-méretek, létrehozási idő), kiszámítja a v4 ujjlenyomatokat (SHA-1) és a v6 ujjlenyomatokat (SHA-256), származtatja a kulcsazonosítókat, és listázza a felhasználói azonosítókat, az alkulcsokat és az aláírás-alcsomagokat. Nem ellenőrzi az aláírásokat (ahhoz a teljes RFC 9580 §5.2.4 hash-és-ellenőrzési gépezet és egy megbízható kulcskarika kell), nem fejt vissza, és nem tölt le kulcsokat kulcsszerverekről. Bármely kimenetet érdemes a GnuPG-vel keresztellenőrizni: a gpg --show-keys file.asc kiírja az ujjlenyomatot és a felhasználói azonosítókat, a gpg --list-packets file.asc pedig a csomagszerkezetet.
Minták ezen az oldalon — a négy Minta gomb egy valódi RSA-2048 OpenPGP v4 kulcsot illeszt be, amelyet kizárólag erre az oldalra generáltak (sehol nem használták). A privát kulcs minta szándékosan titkosítatlanul (S2K-használat 0) van tárolva, hogy az elemző meg tudja mutatni a titkos MPI-elrendezést; egy valódi exportált privát kulcs helyette a titkosítását és az S2K-származtatást mutatná.
Önteszt
Újrafuttatja az elemzőt a beágyazott mintakulcson, egy leválasztott aláíráson és egy aláírt üzeneten: armor-címkék, CRC-24 átmenet és szándékos sérülés, csomagcímke-sorozatok, v4 ujjlenyomat és kulcsazonosító független számításhoz képest, felhasználói azonosítók, alkulcs-ujjlenyomatok, titkoskulcs-felismerés, valamint negatív tesztek (szemét bemenet és csonka csomagok elutasítandók). Semmit nem küld sehová.
Az OpenPGP a nulláról magyarázva
Egy mondatban: Az OpenPGP nyílt szabvány (RFC 4880, 2024-ben az RFC 9580 frissítette) végpontok közötti titkosításhoz és digitális aláírásokhoz, leghíresebben az e-mailek védelmére használják — minden kis, címkézett bináris csomagokban utazik, amelyeket általában egy szövegbarát „armor” réteg vesz körül.
Mi az OpenPGP?

A PGP („Pretty Good Privacy”) 1991-ben jelent meg Phil Zimmermann-tól, olyan programként, amelyet bárki használhatott üzenetek titkosítására és aláírására. Az egyetlen gyártótól való függés elkerülésére az üzenetformátumot OpenPGP-ként szabványosították (RFC 2440 1998-ban, RFC 4880 2007-ben, RFC 9580 2024-ben). Ma a GnuPG a legelterjedtebb megvalósítás, és ugyanez a csomagformátum megjelenik az aláírt git-commitokban, a szoftvercsomagok aláírásában, a kulcsszervereken és az OPENPGPKEY DNS-rekordban is.

A modell végpontok közötti: a feladó és a címzett egy-egy személyes kulcspárt generál; ami a címzettnek titkosított, azt csak a címzett privát kulcsa fejtheti vissza, amely soha nem hagyja el a gépet. Egy központi tanúsítványhatóság (mint a TLS) helyett más emberek kulcsaiban való bizalom abból ered, hogy egymás kulcsait aláírják — ez a „bizalmi háló”. Az, hogy valaki ezt a hálót használja-e, vagy egyszerűen kívül összevet ujjlenyomatokat (telefonon, névjegykártyán), döntés kérdése; a formátum egyiket sem kényszeríti ki.

Mi az OpenPGP-kulcs?

Az OpenPGP „kulcs” valójában egy kis csomagköteg: egy elsődleges kulcscsomag (az identitás horgonya, általában aláírhat), egy vagy több felhasználói azonosító-csomag („Alice <alice@example.com>”), a névhez az elsődleges kulcsot kötő aláírások, és opcionálisan alkulcsok saját kötő aláírásokkal — jellemzően külön titkosító alkulcs, hogy az értékes elsődleges kulcs offline maradhasson. A teljes armor-blokk, amelyet ide beilleszt, ez a köteg.

Az ujjlenyomat az elsődleges kulcscsomag hash-e — SHA-1 (20 bájt) a v4 kulcsoknál, SHA-256 (32 bájt) a v6 kulcsoknál — kizárólag a nyilvános részen számolva. A kulcsazonosító csak a v4 ujjlenyomat utolsó 8 bájtja (v5-nél az első 8). Az ujjlenyomatokat kívül kell összevetni, hogy biztosak legyünk abban, senki nem cserélte ki a kulcsot az úton; a kulcsazonosítók rövid kulcsszerver-hivatkozások, és nem ütközésbiztosak egy elszánt támadóval szemben.

AlgoritmusazonosítóNévTipikus használat egy kulcsban
1RSAKlasszikus univerzális; 2048–4096 bit, aláírás és/vagy titkosítás
19ECDSANIST-görbék (P-256 stb.), aláírás
18ECDHCurve25519/P-256 kulcscsere, titkosító alkulcsok
22EdDSAEd25519-aláírás (a modern alapértelmezés a GnuPG 2,4+-ban)
25X25519Ed25519 elsődleges kulcsokkal párosított titkosító alkulcsok (v6 kulcsok)

A privát kulcs blokk a nyilvános rész után a titkos számokat hordozza: egy S2K-használati bájt jelzi, hogyan védettek (0 = nem védett, 254/255 = jelmondatból származtatott kulcs egy titkosítóval), majd a titkos MPI-k és egy ellenőrző összeg. Ez az oldal megmutatja ezt a védelmi módot, de soha nem kér jelmondatot, és nem kísérli meg visszafejteni a titkos anyagot.

Mi az OpenPGP-csomag?

Az armor alatt minden OpenPGP-objektum csomagok sorozata. Mindegyik egy címkebájttal kezdődik: a régi formátum egy 4 bites csomagtípust és egy hossztípust tömörít bele, az új formátum (CTB, 6. bit beállítva) 6 bites típust és olyan hosszbájtokat használ, amelyek részleges darabokban írt adatot is leírhatnak. Gyakori címkék: 6 = nyilvános kulcs, 5 = titkos kulcs, 14 = alkulcs, 13 = felhasználói azonosító, 2 = aláírás, 4 = egy-menetes aláírás, 11 = literális adat, 8 = tömörített adat, 18 = titkosított és MDC-védett adat. Ez az oldal minden talált csomagról kiírja a címkét, a fejlécformátumot, a hosszt és a hex-kiírást, és hibát jelez bájtpozícióval, ha egy csomagfejléc hibás.

Az aláírás-csomagok metaadataikat hash-elt és nem hash-elt alcsomag-területeken hordozzák. Csak a hash-elt terület kerül az aláírás hatálya alá; a nem hash-elt területet (történelmileg a kiállító kulcsazonosítójának tárolására használták) bárki szabadon átírhatja az átvitel során, ezért az olvasóknak tippként kell kezelniük, sosem tényként. Az, ami valójában a nevet a kulcshoz köti, a felhasználói azonosítón lévő aláírás, amely az elsődleges kulcsot tanúsítja; egyedül beillesztett kulcscsomag semmit nem bizonyít arról, kié.

Az ASCII-armor a szöveges burkolat: -----BEGIN PGP PUBLIC KEY BLOCK-----, opcionális fejlécek, mint a Version: vagy a Comment:, a csomagfolyam base64-je és egy záró =xxxx sor, amely 24 bites CRC-t tartalmaz. Ez a CRC csak az átviteli sérüléseket fogja meg — egy base64-karakter megváltoztatásakor az oldal jelzi —, de nem aláírás, és semmit nem bizonyít a szerzőségről.

Gyakori hibák
  • Kulcs megbízása ujjlenyomat-összevetés nélkül. Bárki generálhat kulcsot bármilyen névvel. Az ujjlenyomat összevetése olyan csatornán, amelyben már megbízunk (személyesen, telefonon), a teljes hitelesítési lépés.
  • Az armor CRC összetévesztése aláírással. A „CRC OK” jelvény csak annyit jelent, hogy a base64 átvészelte az utat, semmi többet. Az ellenőrzés kriptográfiai művelet, amelyet ez az oldal szándékosan nem végez.
  • Kulcsazonosítók identitásként való kezelése. A 64 bites kulcsazonosítókat mérsékelt számítási teljesítménnyel rendelkező támadó hamisíthatja („kulcsazonosító-ütközés”); mindig teljes ujjlenyomatot kell idézni.
  • Valódi privát kulcsok beillesztése weboldalakba. Még egy ilyen helyi, feltöltés nélküli oldal is olyan szokás, amelyet nem érdemes kialakítani. Az itteni minták eldobható kulcsok, a bemutatóhoz generálva.
  • Azt feltételezni, hogy a „PGP MESSAGE” titkosítottat jelent. Az armor címke semmit nem mond a tartalomról — az oldal mintaüzenete aláírt, de nyílt szövegű; a titkosítottat a 18-as és a 11-es csomagcímke különbözteti meg a literális adattól.
  • v3-as kulcsok importálása. A 3-as verziójú kulcsokat (1996 előtti tervezés, gyenge 16 bites kulcsazonosítók) 2014 óta elavultnak tekintik; ez a vizsgáló szándékosan elutasítja őket.
GYIK

Ellenőrzi az aláírásokat? Nem. Elemez és megjelenít. Az aláírás-ellenőrzéshez a teljes RFC 9580 hash-záró konstrukcióra, az aláíró nyilvános kulcsára és arra a döntésre van szükség, hogy megbízunk-e abban a kulcsban — ez a GnuPG vagy egy OpenPGP-könyvtár feladata.

Miben különbözik az openpgp.js-től? Az openpgp.js teljes megvalósítás (titkosítás, visszafejtés, aláírás, ellenőrzés), amelyet az alkalmazásba ágyaz; ez az oldal függőségmentes vizsgáló, amely az OpenPGP-szerkezetek böngészős olvasására és ellenőrzésére való.

Be tudja olvasni a GnuPG-exportot? Igen — v4, v5 és v6 kulcsokat, leválasztott aláírásokat és üzeneteket. A 3-as verziójú kulcsokat megjegyzéssel elutasítja (2014 óta elavult).

Miért van hex-bemeneti mód? A nyers OpenPGP-adatok bináris formátumúak; ha egy kulcskarika vagy egy .gpg fájl hex-kiírása van, a hexet beillesztve az elemző pontosan úgy kezeli, mint a dekódolt bájtokat.

Feltöltődik valami? Nem. Az elemzés, az ujjlenyomat-számítás és a jelentés-készítés mind ebben a lapon történik; az oldal teljes egészében a böngészőben fut.